From f47d3ca494099523ec6a4e03f22a6c81c355cc40 Mon Sep 17 00:00:00 2001 From: Spencer Alger Date: Wed, 17 Jun 2015 18:12:06 -0700 Subject: [PATCH 001/137] added planning doc --- src/kibana/plugins/PLAN.md | 151 +++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 src/kibana/plugins/PLAN.md diff --git a/src/kibana/plugins/PLAN.md b/src/kibana/plugins/PLAN.md new file mode 100644 index 0000000000000..72e011fb18a0e --- /dev/null +++ b/src/kibana/plugins/PLAN.md @@ -0,0 +1,151 @@ +# Plugins: updates including provide, apps, uses, and public + +This is a meta ticket describing our general intention for coming updates to the kibana plugins system. + +The story of a plugin starts in development. While developing a kibana plugin assets do not need to be organized in any specific way. The only requirement is a `kibana.plugin.js` file at the root of the source directory. This file describes where things are and the primary exports for this plugin. In the future, this file may describe things like development server setups, and maybe kibana plugins that this plugins requires. + + +Consider the following project structure + + +```sh +~/dev/my-kibana-plugin + kibana.config.js + package.json # [1] + node_modules + src/ + main.js # [2] + routes.js # [3] + public/ # [4] + pie/PieChart.js + table/ + table.css + table.js + scratchpad/ + controller.js + view.html + style.css + +# [1] your project will likely have npm dependencies that should be listed here +# [2] the default `main` file is main.js, but you can change this in kibana.config.js +# [3] your `main` file can require other files, or define things like routes inline, it's up to you +# [4] place a `public/` next to your `main` file to serve static assets +``` + + +From the structure of this project we can make a few guesses about what type of functionality it provides. `src/routes.js` and `src/api.js` probably extend the servers router, `pie/PieChart.js` and `table/table.js` probably define modules that we can require from the browser, but in order to know exactly what this plugin provides we should look at the `kibana.config.js` file. + +Here are the contents of the `kibana.config.js` file: + + +```js +module.exports = function (kibana) { + var _ = require('lodash'); + var Promise = require('bluebird'); + + return new kibana.Plugin({ + + // we define the globally unique id for our plugin. + // kibana server will fail to start if two plugins use + // the same id + id: 'my-kibana-plugin', + + // version numbers help users track which versions + // of plugin-x is compatible with plugin-y + version: '1.0.0', + + // an init function gives this plugin access to the + // hapi server, which we can extend freely + init: function (server, options) { + + // pass the server to the routes and api module + // so that they can extend it freely + require('./routes')(server); + require('./api')(server); + }, + + // the exports section defines the different types + // of modules that this plugin provides to other plugins. + // For now this only describes the modules exported for + // the front-end + exports: { + + // an app is the highest level ui-component that a plugin + // can export. apps get an icon on the app page and the option + // to define routes within the kibana chrome + app: { + + // These values define how the app will be represented in the kibana app switcher + title: 'Scratchpad', + description: 'Just a sample app for showing what plugins can do!' + icon: 'plugins/my-kibana-plugins/scratchpad/logo.png', + + // when you want to run your app, which module should we load? + main: 'plugins/my-kibana-plugins/scratchpad/controller.js', + + // what modules from other plugins does your app use? + uses: [ + 'plugins/*/favorites' + ] + }, + + // visualizations, fieldForamtters, and other module types are exposed + // by simply listing their module ids + visualizations: [ + 'plugins/my-kibana-plugins/pie/PieChart', + 'plugins/my-kibana-plugins/table/table' + ] + + } + }); +}; +``` + +As the comments in this file point out, there are many ways to customize a plugin and even building a comprehensive configuration (involving several types of exports and direct server interaction) is not terribly difficult to understand. + + +## loading an app + +An application is loaded by visiting the `/app/:pluginId` route. This route opens up the standard Kibana bootstrap.html file with a configuration that loads all of the modules listed in the apps `uses:` config, as well as the `main:` module file. At this point, the main module file will define it's routes with the angular router, bootstrap kicks off angular, and the standard angular launch process begins! :rocket: + + +## a note about routes + +While most plugins will likely provide ui components and things like visualizations, accessing api services like the `/_mget` and `/config` apis will change slightly. + +| method | current | new | +| ------ | ------- | --- | +| GET | `/` | `/app/:pluginId` | +| GET | `/elasticsearch/*`| `/api/:pluginId/elasticsearch/*` | + +Module ids used across plugins will not change though, and public directories will also remain unchanged + +``` +GET /plugins/:pluginId/js/index.js +GET /plugins/:pluginId/css/main.css +GET /plugins/:pluginId/imgs/logo.ong +``` + +## app main file + +Building apps in the browser won't change at all, the same modules that used to define routes, visualizations, etc. will still be used tomorrow. These apis are going to be used from the app's main file now though, which and access to a new `'chrome'` module will be provided for modifying kibana's navbar + +```js +require('chrome') +.setLogo() +.setBackgroundColor() +.setNav([ + { + name: 'Tab 1', + url: '/tab-1/', + order: -Infinity + } +]) + +require('routes').when('/', { + view: requrie('text!plugins/my-kibana-plugin/home.awesome.html') +}) +.otherwise({ + redirect: '/' +}) +``` \ No newline at end of file From 8d2e8816dc9c5b72eae9a2fa257a2df1cffef0fd Mon Sep 17 00:00:00 2001 From: Spencer Alger Date: Wed, 24 Jun 2015 20:51:54 -0700 Subject: [PATCH 002/137] [server] work out plugin organization, and app declaration --- .bowerrc | 3 - .node-version | 2 +- .travis.yml | 1 - bower.json | 7 - package.json | 2 + src/.jshintrc | 3 + src/{server => }/bin/kibana.bat | 2 +- src/{server => }/bin/kibana.sh | 2 +- src/{server => }/config/kibana.yml | 0 src/dev_server/dev_statics_plugin/index.js | 79 +++++++++++ .../dev_statics_plugin}/lib/amd_wrapper.js | 0 .../dev_statics_plugin}/lib/istanbul.js | 0 .../lib/kibana_src_filter.js | 0 .../dev_statics_plugin/package.json | 4 + src/dev_server/index.js | 26 ++++ src/kibana/components/setup/_setup_error.js | 18 --- src/kibana/components/setup/setup.js | 29 ---- .../setup/steps/check_es_version.js | 43 ------ .../components/setup/steps/check_for_es.js | 21 --- .../setup/steps/check_for_kibana_index.js | 17 --- .../setup/steps/create_kibana_index.js | 31 ----- src/kibana/index.html | 46 ------- src/{kibana => }/plugins/PLAN.md | 10 +- src/{kibana => }/plugins/README.txt | 0 src/plugins/elasticsearch/index.js | 43 ++++++ .../elasticsearch/lib/check_es_version.js | 0 .../plugins/elasticsearch/lib/create_agent.js | 0 .../elasticsearch/lib/create_kibana_index.js | 0 .../plugins/elasticsearch/lib/create_proxy.js | 0 .../plugins/elasticsearch/lib/es_bool.js | 0 .../elasticsearch/lib/expose_client.js | 0 .../plugins/elasticsearch/lib/health_check.js | 0 .../elasticsearch/lib/is_upgradeable.js | 0 .../plugins/elasticsearch/lib/map_uri.js | 0 .../elasticsearch/lib/migrate_config.js | 0 .../plugins/elasticsearch/lib/setup_error.js | 0 .../elasticsearch/lib/upgrade_config.js | 0 .../plugins/elasticsearch/lib/validate.js | 0 .../plugins/elasticsearch/lib/version_math.js | 0 src/plugins/elasticsearch/package.json | 4 + src/plugins/kbn-vislib-vis-types/index.js | 13 ++ src/plugins/kbn-vislib-vis-types/package.json | 4 + .../kbn-vislib-vis-types/public}/area.js | 0 .../controls/line_interpolation_option.html | 0 .../controls/line_interpolation_option.js | 0 .../controls/point_series_options.html | 0 .../public}/controls/point_series_options.js | 2 +- .../public}/controls/radius_ratio_option.html | 0 .../public}/controls/rows_or_columns.html | 0 .../controls/vislib_basic_options.html | 0 .../public}/controls/vislib_basic_options.js | 0 .../public}/editors/area.html | 0 .../public}/editors/histogram.html | 0 .../public}/editors/line.html | 0 .../public}/editors/pie.html | 0 .../public}/editors/tile_map.html | 0 .../kbn-vislib-vis-types/public}/histogram.js | 0 .../kbn-vislib-vis-types/public}/index.js | 0 .../kbn-vislib-vis-types/public}/line.js | 0 .../kbn-vislib-vis-types/public}/pie.js | 0 .../kbn-vislib-vis-types/public}/tileMap.js | 0 src/plugins/kibana/index.js | 20 +++ src/plugins/kibana/package.json | 4 + .../kibana/public}/.jshintrc | 2 +- .../kibana => plugins/kibana/public}/_apps.js | 0 .../kibana => plugins/kibana/public}/_init.js | 0 .../kibana/public}/_timepicker.html | 0 .../kibana/public}/_timepicker.js | 0 .../components/panel/lib/load_panel.js | 0 .../dashboard/components/panel/lib/search.js | 0 .../components/panel/lib/visualization.js | 0 .../dashboard/components/panel/panel.html | 0 .../dashboard/components/panel/panel.js | 0 .../public}/dashboard/directives/grid.js | 0 .../kibana/public}/dashboard/index.html | 0 .../kibana/public}/dashboard/index.js | 2 +- .../dashboard/partials/load_dashboard.html | 0 .../partials/pick_visualization.html | 0 .../dashboard/partials/save_dashboard.html | 0 .../public}/dashboard/partials/share.html | 0 .../dashboard/services/_saved_dashboard.js | 0 .../dashboard/services/saved_dashboards.js | 0 .../kibana/public}/dashboard/styles/main.less | 0 .../kibana/public}/discover/_hit_sort_fn.js | 0 .../field_chooser/discover_field.html | 0 .../field_chooser/discover_field.js | 4 +- .../field_chooser/field_chooser.html | 0 .../components/field_chooser/field_chooser.js | 6 +- .../lib/detail_views/string.html | 0 .../field_chooser/lib/field_calculator.js | 0 .../public}/discover/controllers/discover.js | 4 +- .../public}/discover/directives/timechart.js | 0 .../kibana/public}/discover/index.html | 0 .../kibana/public}/discover/index.js | 0 .../discover/partials/load_search.html | 0 .../discover/partials/save_search.html | 0 .../discover/saved_searches/_saved_search.js | 0 .../discover/saved_searches/saved_searches.js | 0 .../kibana/public}/discover/styles/main.less | 0 .../kibana/public}/doc/controllers/doc.js | 0 .../kibana/public}/doc/index.html | 0 .../kibana/public}/doc/index.js | 0 .../kibana => plugins/kibana/public}/index.js | 26 ---- .../kibana/public}/kibana.html | 0 .../kibana/public/settings/public}/app.html | 0 .../kibana/public/settings/public}/index.js | 2 +- .../settings/public}/saved_object_registry.js | 0 .../public}/sections/about/barcode.svg | 0 .../public}/sections/about/index.html | 0 .../settings/public}/sections/about/index.js | 0 .../sections/advanced/advanced_row.html | 0 .../public}/sections/advanced/advanced_row.js | 0 .../public}/sections/advanced/index.html | 0 .../public}/sections/advanced/index.js | 0 .../sections/advanced/lib/get_val_type.js | 0 .../public/settings/public}/sections/index.js | 0 .../public}/sections/indices/_create.html | 0 .../public}/sections/indices/_create.js | 4 +- .../public}/sections/indices/_date_scripts.js | 0 .../public}/sections/indices/_edit.html | 0 .../public}/sections/indices/_edit.js | 0 .../sections/indices/_field_controls.html | 0 .../sections/indices/_field_editor.html | 0 .../public}/sections/indices/_field_editor.js | 0 .../public}/sections/indices/_field_name.html | 0 .../sections/indices/_field_popularity.html | 0 .../public}/sections/indices/_field_type.html | 0 .../public}/sections/indices/_field_types.js | 0 .../sections/indices/_index_header.html | 0 .../public}/sections/indices/_index_header.js | 0 .../sections/indices/_indexed_fields.html | 0 .../sections/indices/_indexed_fields.js | 0 .../sections/indices/_refresh_kibana_index.js | 0 .../sections/indices/_scripted_fields.html | 0 .../sections/indices/_scripted_fields.js | 0 .../public}/sections/indices/index.html | 0 .../public}/sections/indices/index.js | 0 .../public}/sections/objects/_objects.html | 0 .../public}/sections/objects/_objects.js | 2 +- .../public}/sections/objects/_view.html | 0 .../public}/sections/objects/_view.js | 0 .../public}/sections/objects/index.js | 2 +- .../public/settings/public}/styles/main.less | 0 .../visualize/editor/add_bucket_agg.js | 0 .../visualize/editor/advanced_toggle.html | 0 .../kibana/public}/visualize/editor/agg.html | 0 .../kibana/public}/visualize/editor/agg.js | 0 .../public}/visualize/editor/agg_add.html | 0 .../public}/visualize/editor/agg_add.js | 0 .../public}/visualize/editor/agg_filter.js | 2 +- .../public}/visualize/editor/agg_group.html | 0 .../public}/visualize/editor/agg_group.js | 0 .../public}/visualize/editor/agg_param.js | 0 .../public}/visualize/editor/agg_params.html | 0 .../public}/visualize/editor/agg_params.js | 2 +- .../public}/visualize/editor/agg_select.html | 0 .../public}/visualize/editor/editor.html | 0 .../kibana/public}/visualize/editor/editor.js | 4 +- .../visualize/editor/nesting_indicator.js | 0 .../public}/visualize/editor/panels/load.html | 0 .../public}/visualize/editor/panels/save.html | 0 .../visualize/editor/panels/share.html | 0 .../public}/visualize/editor/sidebar.html | 0 .../public}/visualize/editor/sidebar.js | 0 .../visualize/editor/styles/editor.less | 0 .../public}/visualize/editor/vis_options.html | 0 .../public}/visualize/editor/vis_options.js | 0 .../kibana/public}/visualize/index.js | 0 .../saved_visualizations/_saved_vis.js | 0 .../saved_visualizations.js | 0 .../kibana/public}/visualize/styles/main.less | 0 .../public}/visualize/wizard/step_1.html | 0 .../public}/visualize/wizard/step_2.html | 0 .../kibana/public}/visualize/wizard/wizard.js | 2 +- src/plugins/markdown-vis/index.js | 13 ++ src/plugins/markdown-vis/package.json | 4 + .../markdown-vis/public}/index.js | 0 .../markdown-vis/public}/markdown_vis.html | 0 .../markdown-vis/public}/markdown_vis.js | 0 .../markdown-vis/public}/markdown_vis.less | 0 .../public}/markdown_vis_controller.js | 0 .../public}/markdown_vis_params.html | 0 src/plugins/metric-vis/index.js | 13 ++ src/plugins/metric-vis/package.json | 4 + .../metric-vis/public}/index.js | 0 .../metric-vis/public}/metric_vis.html | 0 .../metric-vis/public}/metric_vis.js | 0 .../metric-vis/public}/metric_vis.less | 0 .../public}/metric_vis_controller.js | 0 .../metric-vis/public}/metric_vis_params.html | 0 src/plugins/status/index.js | 61 +++++++++ src/{server => }/plugins/status/lib/series.js | 0 src/plugins/status/package.json | 4 + .../plugins/status/public/index.html | 0 src/plugins/table-vis/index.js | 11 ++ src/plugins/table-vis/package.json | 4 + .../table-vis/public}/index.js | 0 .../table-vis/public}/table_vis.html | 0 .../table-vis/public}/table_vis.js | 0 .../table-vis/public}/table_vis.less | 0 .../table-vis/public}/table_vis_controller.js | 0 .../table-vis/public}/table_vis_params.html | 0 .../table-vis/public}/table_vis_params.js | 0 src/plugins/ui/bower.json | 37 ++++++ src/plugins/ui/index.js | 125 ++++++++++++++++++ src/plugins/ui/package.json | 4 + .../ui/public/bootstrap.js} | 0 src/plugins/ui/public/chrome.js | 87 ++++++++++++ .../agg_response/geo_json/_tooltip.html | 0 .../geo_json/_tooltip_formatter.js | 0 .../agg_response/geo_json/geo_json.js | 0 .../agg_response/geo_json/rowsToFeatures.js | 0 .../hierarchical/_array_to_linked_list.js | 0 .../agg_response/hierarchical/_build_split.js | 0 .../hierarchical/_collect_branch.js | 0 .../hierarchical/_collect_keys.js | 0 .../hierarchical/_create_raw_data.js | 0 .../hierarchical/_extract_buckets.js | 0 .../_hierarchical_tooltip_formatter.js | 0 .../agg_response/hierarchical/_tooltip.html | 0 .../hierarchical/_transform_aggregation.js | 0 .../hierarchical/build_hierarchical_data.js | 0 .../public}/components/agg_response/index.js | 0 .../agg_response/point_series/_add_to_siri.js | 0 .../point_series/_fake_x_aspect.js | 0 .../agg_response/point_series/_get_aspects.js | 0 .../agg_response/point_series/_get_point.js | 0 .../agg_response/point_series/_get_series.js | 0 .../agg_response/point_series/_init_x_axis.js | 0 .../agg_response/point_series/_init_y_axis.js | 0 .../point_series/_ordered_date_axis.js | 0 .../agg_response/point_series/_tooltip.html | 0 .../point_series/_tooltip_formatter.js | 0 .../agg_response/point_series/point_series.js | 0 .../agg_response/tabify/_buckets.js | 0 .../agg_response/tabify/_get_columns.js | 0 .../agg_response/tabify/_response_writer.js | 0 .../components/agg_response/tabify/_table.js | 0 .../agg_response/tabify/_table_group.js | 0 .../components/agg_response/tabify/tabify.js | 0 .../components/agg_table/agg_table.html | 0 .../public}/components/agg_table/agg_table.js | 2 +- .../components/agg_table/agg_table.less | 0 .../components/agg_table/agg_table_group.html | 0 .../components/agg_table/agg_table_group.js | 2 +- .../ui/public}/components/agg_types/README.md | 0 .../components/agg_types/_agg_params.js | 2 +- .../public}/components/agg_types/_agg_type.js | 0 .../agg_types/buckets/_bucket_agg_type.js | 0 .../buckets/_bucket_count_between.js | 0 .../agg_types/buckets/_interval_options.js | 2 +- .../buckets/create_filter/date_histogram.js | 0 .../buckets/create_filter/date_range.js | 0 .../buckets/create_filter/filters.js | 0 .../buckets/create_filter/histogram.js | 0 .../buckets/create_filter/ip_range.js | 0 .../agg_types/buckets/create_filter/range.js | 0 .../agg_types/buckets/create_filter/terms.js | 0 .../agg_types/buckets/date_histogram.js | 2 +- .../agg_types/buckets/date_range.js | 2 +- .../components/agg_types/buckets/filters.js | 0 .../components/agg_types/buckets/geo_hash.js | 0 .../components/agg_types/buckets/histogram.js | 0 .../components/agg_types/buckets/ip_range.js | 4 +- .../components/agg_types/buckets/range.js | 0 .../agg_types/buckets/significant_terms.js | 0 .../components/agg_types/buckets/terms.js | 0 .../agg_types/controls/date_ranges.html | 0 .../agg_types/controls/extended_bounds.html | 0 .../components/agg_types/controls/field.html | 0 .../agg_types/controls/filters.html | 0 .../agg_types/controls/interval.html | 0 .../agg_types/controls/ip_ranges.html | 0 .../agg_types/controls/min_doc_count.html | 0 .../agg_types/controls/order_agg.html | 0 .../agg_types/controls/order_and_size.html | 0 .../agg_types/controls/percentile_ranks.html | 0 .../agg_types/controls/percentiles.html | 0 .../agg_types/controls/precision.html | 0 .../components/agg_types/controls/ranges.html | 0 .../agg_types/controls/raw_json.html | 0 .../controls/regular_expression.html | 0 .../components/agg_types/controls/string.html | 0 .../ui/public}/components/agg_types/index.js | 0 .../metrics/_get_response_agg_config.js | 0 .../agg_types/metrics/_metric_agg_type.js | 0 .../components/agg_types/metrics/avg.js | 0 .../agg_types/metrics/cardinality.js | 0 .../components/agg_types/metrics/count.js | 0 .../components/agg_types/metrics/max.js | 0 .../components/agg_types/metrics/min.js | 0 .../agg_types/metrics/percentile_ranks.js | 0 .../agg_types/metrics/percentiles.js | 0 .../agg_types/metrics/std_deviation.js | 0 .../components/agg_types/metrics/sum.js | 0 .../components/agg_types/param_types/base.js | 0 .../components/agg_types/param_types/field.js | 0 .../agg_types/param_types/optioned.js | 0 .../agg_types/param_types/raw_json.js | 0 .../components/agg_types/param_types/regex.js | 0 .../agg_types/param_types/string.js | 0 .../ui/public}/components/bind.js | 0 .../public}/components/bound_to_config_obj.js | 0 .../components/clipboard/clipboard.html | 0 .../public}/components/clipboard/clipboard.js | 0 .../collapsible_sidebar.js | 0 .../collapsible_sidebar.less | 0 .../public}/components/comma_list_filter.js | 0 .../compile_recursive_directive.js | 0 .../components/config/_delayed_updater.js | 0 .../ui/public}/components/config/_vals.js | 0 .../ui/public}/components/config/config.js | 0 .../ui/public}/components/config/defaults.js | 0 .../components/config/migrations/_empty_ | 0 .../components/courier/_error_handlers.js | 0 .../courier/_redirect_when_missing.js | 0 .../components/courier/_request_queue.js | 0 .../ui/public}/components/courier/courier.js | 4 +- .../courier/data_source/_abstract.js | 0 .../courier/data_source/_decorate_query.js | 0 .../courier/data_source/_doc_send_to_es.js | 0 .../data_source/_normalize_sort_request.js | 0 .../data_source/_root_search_source.js | 0 .../courier/data_source/doc_source.js | 0 .../courier/data_source/search_source.js | 0 .../components/courier/fetch/_call_client.js | 0 .../courier/fetch/_call_response_handlers.js | 0 .../courier/fetch/_continue_incomplete.js | 0 .../components/courier/fetch/_fetch_these.js | 0 .../courier/fetch/_for_each_strategy.js | 0 .../components/courier/fetch/_is_request.js | 0 .../fetch/_merge_duplicate_requests.js | 0 .../components/courier/fetch/_notifier.js | 0 .../components/courier/fetch/_req_status.js | 0 .../public}/components/courier/fetch/fetch.js | 0 .../courier/fetch/request/_error_handler.js | 0 .../fetch/request/_segmented_handle.js | 2 +- .../components/courier/fetch/request/doc.js | 0 .../courier/fetch/request/request.js | 0 .../courier/fetch/request/search.js | 0 .../courier/fetch/request/segmented.js | 0 .../components/courier/fetch/strategy/doc.js | 0 .../courier/fetch/strategy/search.js | 0 .../components/courier/looper/_looper.js | 0 .../public}/components/courier/looper/doc.js | 0 .../components/courier/looper/search.js | 0 .../courier/saved_object/saved_object.js | 0 .../ui/public/components}/debounce.js | 0 .../doc_table/components/table_header.html | 0 .../doc_table/components/table_header.js | 2 +- .../doc_table/components/table_row.js | 6 +- .../doc_table/components/table_row/cell.html | 0 .../components/table_row/details.html | 0 .../doc_table/components/table_row/open.html | 0 .../components/doc_table/doc_table.html | 0 .../public}/components/doc_table/doc_table.js | 6 +- .../components/doc_table/doc_table.less | 0 .../components/doc_table/lib/get_sort.js | 0 .../public}/components/doc_title/doc_title.js | 0 .../components/doc_viewer/doc_viewer.html | 0 .../components/doc_viewer/doc_viewer.js | 0 .../components/doc_viewer/doc_viewer.less | 0 .../ui/public}/components/elastic_textarea.js | 0 .../ui/public/components}/es.js | 0 .../ui/public/components}/events.js | 0 .../components/fancy_forms/fancy_forms.js | 0 .../components/fancy_forms/kbn_form.js | 0 .../components/fancy_forms/kbn_model.js | 0 .../components/field_editor/field_editor.html | 0 .../components/field_editor/field_editor.js | 0 .../field_editor/scripting_info.html | 0 .../field_editor/scripting_warning.html | 0 .../field_format_editor.js | 0 .../field_format_editor/numeral/numeral.html | 0 .../field_format_editor/numeral/numeral.js | 0 .../field_format_editor/pattern/pattern.html | 0 .../field_format_editor/pattern/pattern.js | 0 .../field_format_editor/samples/samples.html | 0 .../field_format_editor/samples/samples.js | 0 .../components/filter_bar/filter_bar.html | 0 .../components/filter_bar/filter_bar.js | 0 .../components/filter_bar/filter_bar.less | 0 .../filter_bar/filter_bar_click_handler.js | 0 .../filter_bar/lib/changeTimeFilter.js | 0 .../filter_bar/lib/compareFilters.js | 0 .../components/filter_bar/lib/dedupFilters.js | 0 .../filter_bar/lib/extractTimeFilter.js | 0 .../filter_bar/lib/filterAppliedAndUnwrap.js | 0 .../lib/filterOutTimeBasedFilter.js | 0 .../filter_bar/lib/generateMappingChain.js | 0 .../filter_bar/lib/mapAndFlattenFilters.js | 0 .../components/filter_bar/lib/mapDefault.js | 0 .../components/filter_bar/lib/mapExists.js | 0 .../components/filter_bar/lib/mapFilter.js | 0 .../lib/mapFlattenAndWrapFilters.js | 0 .../filter_bar/lib/mapGeoBoundingBox.js | 0 .../components/filter_bar/lib/mapMissing.js | 0 .../filter_bar/lib/mapQueryString.js | 0 .../components/filter_bar/lib/mapRange.js | 0 .../components/filter_bar/lib/mapScript.js | 0 .../components/filter_bar/lib/mapTerms.js | 0 .../components/filter_bar/lib/onlyDisabled.js | 0 .../filter_bar/lib/onlyStateChanged.js | 0 .../components/filter_bar/lib/remapFilters.js | 0 .../components/filter_bar/lib/uniqFilters.js | 0 .../components/filter_bar/push_filter.js | 0 .../components/filter_bar/query_filter.js | 2 +- .../filter_manager/filter_manager.js | 0 .../components/filter_manager/lib/phrase.js | 0 .../components/filter_manager/lib/query.js | 0 .../components/filter_manager/lib/range.js | 0 .../ui/public}/components/fixedScroll.js | 0 .../public}/components/highlight/highlight.js | 0 .../components/highlight/highlight_tags.js | 0 .../index_patterns/_cast_mapping_type.js | 0 .../components/index_patterns/_ensure_some.js | 0 .../components/index_patterns/_field.js | 0 .../_field_format/FieldFormat.js | 0 .../_field_format/contentTypes.js | 0 .../components/index_patterns/_field_list.js | 0 .../components/index_patterns/_field_types.js | 0 .../components/index_patterns/_flatten_hit.js | 0 .../components/index_patterns/_format_hit.js | 0 .../index_patterns/_get_computed_fields.js | 0 .../components/index_patterns/_get_ids.js | 0 .../index_patterns/_index_pattern.js | 0 .../components/index_patterns/_intervals.js | 0 .../components/index_patterns/_local_cache.js | 0 .../components/index_patterns/_map_field.js | 0 .../components/index_patterns/_mapper.js | 0 .../index_patterns/_object.tmpl.html | 0 .../index_patterns/_pattern_cache.js | 0 .../index_patterns/_pattern_to_wildcard.js | 0 .../_transform_mapping_into_fields.js | 0 .../index_patterns/index_patterns.js | 2 +- .../components}/indexed_array/_inflector.js | 0 .../components}/indexed_array/_path_getter.js | 0 .../public/components}/indexed_array/index.js | 0 .../ui/public}/components/listen.js | 0 .../ui/public}/components/notify/_errors.js | 0 .../ui/public}/components/notify/_notifier.js | 0 .../public}/components/notify/directives.js | 0 .../ui/public}/components/notify/notify.js | 0 .../components/notify/partials/fatal.html | 0 .../notify/partials/fatal_splash_screen.html | 0 .../components/notify/partials/toaster.html | 0 .../components/number_list/number_list.html | 0 .../components/number_list/number_list.js | 0 .../number_list/number_list_input.js | 0 .../paginated_table/paginated_table.html | 0 .../paginated_table/paginated_table.js | 0 .../components/persisted_log/persisted_log.js | 0 .../ui/public/components}/private.js | 0 .../ui/public/components}/promises.js | 0 .../ui/public}/components/reflow_watcher.js | 2 +- .../public/components}/registry/_registry.js | 0 .../ui/public/components}/registry/apps.js | 0 .../components}/registry/field_formats.js | 0 .../public/components}/registry/spy_modes.js | 0 .../public/components}/registry/vis_types.js | 0 .../ui/public/components}/require.config.js | 1 + .../ui/public/components}/routes/_setup.js | 0 .../public/components}/routes/_work_queue.js | 0 .../routes/_wrap_route_with_prep.js | 0 .../ui/public/components}/routes/index.js | 2 +- .../state_management/_state_sync.js | 0 .../components/state_management/app_state.js | 0 .../state_management/global_state.js | 0 .../components/state_management/state.js | 2 +- .../ui/public}/components/storage/storage.js | 0 .../ui/public}/components/stringify/.jshintrc | 0 .../components/stringify/editors/date.html | 0 .../components/stringify/editors/string.html | 0 .../components/stringify/editors/url.html | 0 .../public}/components/stringify/icons/cv.png | Bin .../public}/components/stringify/icons/de.png | Bin .../stringify/icons/flag-icon.LICENSE | 0 .../public}/components/stringify/icons/go.png | Bin .../public}/components/stringify/icons/ne.png | Bin .../public}/components/stringify/icons/ni.png | Bin .../components/stringify/icons/stop.png | Bin .../public}/components/stringify/icons/us.png | Bin .../public}/components/stringify/register.js | 0 .../components/stringify/types/Bytes.js | 0 .../components/stringify/types/Date.js | 0 .../public}/components/stringify/types/Ip.js | 0 .../components/stringify/types/Number.js | 0 .../components/stringify/types/Percent.js | 0 .../components/stringify/types/Source.js | 0 .../components/stringify/types/String.js | 0 .../public}/components/stringify/types/Url.js | 0 .../components/stringify/types/_Numeral.js | 0 .../components/stringify/types/_source.html | 0 .../style_compile/style_compile.css.tmpl | 0 .../components/style_compile/style_compile.js | 0 .../template_vis_type/TemplateRenderbot.js | 0 .../template_vis_type/TemplateVisType.js | 0 .../time_buckets/calc_auto_interval.js | 0 .../time_buckets/calc_es_interval.js | 0 .../components/time_buckets/time_buckets.js | 0 .../timefilter/lib/diff_interval.js | 0 .../components/timefilter/lib/diff_time.js | 0 .../components/timefilter/timefilter.js | 2 +- .../components/timepicker/quick_ranges.js | 0 .../timepicker/refresh_intervals.js | 0 .../components/timepicker/time_units.js | 0 .../components/timepicker/timepicker.html | 0 .../components/timepicker/timepicker.js | 4 +- .../public}/components/tooltip/tooltip.html | 0 .../ui/public}/components/tooltip/tooltip.js | 0 .../ui/public}/components/typeahead/_input.js | 0 .../ui/public}/components/typeahead/_items.js | 0 .../typeahead/partials/typeahead-items.html | 0 .../public}/components/typeahead/typeahead.js | 0 .../components/typeahead/typeahead.less | 0 .../ui/public}/components/url/url.js | 4 +- .../components/validateDateInterval.js | 0 .../validate_query/lib/from_user.js | 0 .../components/validate_query/lib/to_user.js | 0 .../validate_query/validate_query.js | 2 +- .../ui/public}/components/vis/AggConfig.js | 0 .../public}/components/vis/AggConfigResult.js | 0 .../ui/public}/components/vis/AggConfigs.js | 0 .../ui/public}/components/vis/Renderbot.js | 0 .../ui/public}/components/vis/Schemas.js | 0 .../ui/public}/components/vis/VisType.js | 0 .../ui/public}/components/vis/vis.js | 0 .../vislib/components/color/color.js | 0 .../vislib/components/color/color_palette.js | 0 .../vislib/components/color/seed_colors.js | 0 .../vislib/components/labels/data_array.js | 0 .../components/labels/flatten_series.js | 0 .../vislib/components/labels/labels.js | 0 .../vislib/components/labels/uniq_labels.js | 0 .../components/tooltip/_position_tooltip.js | 0 .../vislib/components/tooltip/tooltip.js | 0 .../components/zero_injection/flatten_data.js | 0 .../components/zero_injection/inject_zeros.js | 0 .../zero_injection/ordered_x_keys.js | 0 .../components/zero_injection/uniq_keys.js | 0 .../zero_injection/zero_fill_data_array.js | 0 .../zero_injection/zero_filled_array.js | 0 .../ui/public}/components/vislib/index.js | 2 +- .../components/vislib/lib/_data_label.js | 0 .../components/vislib/lib/_error_handler.js | 0 .../public}/components/vislib/lib/alerts.js | 0 .../components/vislib/lib/axis_title.js | 0 .../components/vislib/lib/chart_title.js | 0 .../ui/public}/components/vislib/lib/data.js | 0 .../public}/components/vislib/lib/dispatch.js | 0 .../components/vislib/lib/handler/handler.js | 0 .../vislib/lib/handler/handler_types.js | 0 .../vislib/lib/handler/types/pie.js | 0 .../vislib/lib/handler/types/point_series.js | 0 .../vislib/lib/handler/types/tile_map.js | 0 .../components/vislib/lib/layout/layout.js | 0 .../vislib/lib/layout/layout_types.js | 0 .../layout/splits/column_chart/chart_split.js | 0 .../splits/column_chart/chart_title_split.js | 0 .../splits/column_chart/x_axis_split.js | 0 .../splits/column_chart/y_axis_split.js | 0 .../layout/splits/pie_chart/chart_split.js | 0 .../splits/pie_chart/chart_title_split.js | 0 .../lib/layout/splits/tile_map/map_split.js | 0 .../vislib/lib/layout/types/column_layout.js | 0 .../vislib/lib/layout/types/map_layout.js | 0 .../vislib/lib/layout/types/pie_layout.js | 0 .../public}/components/vislib/lib/legend.js | 0 .../components/vislib/lib/resize_checker.js | 2 +- .../public}/components/vislib/lib/x_axis.js | 0 .../public}/components/vislib/lib/y_axis.js | 0 .../vislib/partials/legend_header.html | 0 .../vislib/partials/touchdown.tmpl.html | 0 .../components/vislib/styles/_alerts.less | 0 .../components/vislib/styles/_error.less | 0 .../components/vislib/styles/_layout.less | 0 .../components/vislib/styles/_legend.less | 0 .../components/vislib/styles/_svg.less | 0 .../components/vislib/styles/_tilemap.less | 0 .../components/vislib/styles/_tooltip.less | 0 .../components/vislib/styles/main.less | 0 .../ui/public}/components/vislib/vis.js | 2 +- .../vislib/visualizations/_chart.js | 0 .../visualizations/_point_series_chart.js | 0 .../vislib/visualizations/area_chart.js | 0 .../vislib/visualizations/column_chart.js | 0 .../vislib/visualizations/line_chart.js | 0 .../vislib/visualizations/pie_chart.js | 0 .../vislib/visualizations/tile_map.js | 0 .../vislib/visualizations/time_marker.js | 0 .../vislib/visualizations/vis_types.js | 0 .../vislib_vis_type/VislibRenderbot.js | 0 .../vislib_vis_type/VislibVisType.js | 0 .../vislib_vis_type/buildChartData.js | 0 .../visualize/spy/_req_resp_stats.html | 0 .../visualize/spy/_req_resp_stats.js | 0 .../components/visualize/spy/_spy.html | 0 .../components/visualize/spy/_table.html | 0 .../components/visualize/spy/_table.js | 0 .../public}/components/visualize/spy/spy.js | 0 .../components/visualize/visualize.html | 0 .../public}/components/visualize/visualize.js | 0 .../components/visualize/visualize.less | 0 .../ui/public}/components/watch_multi.js | 0 .../directives/auto_select_if_only_one.js | 0 .../ui/public}/directives/click_focus.js | 0 .../ui/public}/directives/config.js | 2 +- .../ui/public}/directives/confirm_click.js | 0 .../ui/public}/directives/css_truncate.js | 0 .../ui/public}/directives/field_name.js | 2 +- .../ui/public}/directives/file_upload.js | 0 .../ui/public}/directives/inequality.js | 0 .../ui/public}/directives/infinite_scroll.js | 0 .../ui/public}/directives/info.js | 4 +- .../ui/public}/directives/input_datetime.js | 0 .../ui/public}/directives/input_focus.js | 0 .../public}/directives/input_whole_number.js | 0 .../ui/public}/directives/paginate.js | 4 +- .../ui/public}/directives/pretty_duration.js | 0 .../ui/public}/directives/rows.js | 0 .../public}/directives/saved_object_finder.js | 2 +- .../ui/public}/directives/spinner.js | 0 .../ui/public}/directives/truncated.js | 0 .../public}/directives/validate_cidr_mask.js | 0 .../public}/directives/validate_date_math.js | 0 .../public}/directives/validate_index_name.js | 0 .../ui/public}/directives/validate_ip.js | 0 .../ui/public}/directives/validate_json.js | 0 .../ui/public}/errors.js | 0 .../ui/public}/filters/_prop_filter.js | 0 .../ui/public}/filters/field_type.js | 2 +- .../ui/public}/filters/label.js | 0 .../ui/public}/filters/match_any.js | 0 .../ui/public}/filters/moment.js | 0 .../ui/public}/filters/rison.js | 0 .../ui/public}/filters/short_dots.js | 0 .../ui/public}/filters/start_from.js | 0 .../ui/public}/filters/trust_as_html.js | 0 .../ui/public}/filters/unique.js | 0 .../ui/public}/filters/uriescape.js | 0 .../ui/public}/images/initial_load.gif | Bin .../ui/public/images/logo.png} | Bin .../utils => plugins/ui/public}/modules.js | 0 .../ui/public}/partials/global_config.html | 0 .../ui/public}/partials/info.html | 0 .../ui/public}/partials/nav_config.html | 0 .../public}/partials/paginate_controls.html | 0 .../public}/partials/saved_object_finder.html | 0 .../public}/partials/truncate_by_height.html | 0 src/plugins/ui/public/require.config.js | 76 +++++++++++ .../ui/public}/styles/_bootstrap.less | 0 .../ui/public}/styles/_callout.less | 0 .../ui/public}/styles/_control_group.less | 0 .../ui/public}/styles/_font_icons.less | 0 .../ui/public}/styles/_glyphicons.less | 0 .../ui/public}/styles/_hintbox.less | 0 .../ui/public}/styles/_input.less | 0 .../ui/public}/styles/_mixins.less | 0 .../ui/public}/styles/_navbar.less | 0 .../ui/public}/styles/_notify.less | 0 .../ui/public}/styles/_pagination.less | 0 .../ui/public}/styles/_sidebar.less | 0 .../ui/public}/styles/_spinner.less | 0 .../ui/public}/styles/_table.less | 0 .../ui/public}/styles/_truncate.less | 0 .../ui/public}/styles/_variables.less | 0 .../ui/public}/styles/main.less | 4 +- .../ui/public}/styles/theme/_theme.less | 0 .../ui/public}/styles/theme/_variables.less | 0 .../ui/public}/styles/theme/elk.ico | Bin .../ui/public}/utils/BaseObject.js | 0 .../ui/public}/utils/SimpleEmitter.js | 0 .../ui/public}/utils/add_word_breaks.js | 0 .../ui/public}/utils/brush_event.js | 0 .../ui/public}/utils/cidr_mask.js | 0 .../ui/public}/utils/config_template.js | 0 .../ui/public}/utils/date_range.js | 0 .../ui/public}/utils/datemath.js | 0 .../ui/public}/utils/decode_geo_hash.js | 0 .../ui/public}/utils/diff_object.js | 0 .../ui/public}/utils/diff_time_picker_vals.js | 0 .../ui/public}/utils/esBool.js | 0 .../ui/public}/utils/ipv4_address.js | 0 .../ui/public}/utils/key_map.js | 0 .../public}/utils/lodash-mixins/collection.js | 0 .../public}/utils/lodash-mixins/function.js | 0 .../ui/public}/utils/lodash-mixins/index.js | 0 .../ui/public}/utils/lodash-mixins/lang.js | 0 .../ui/public}/utils/lodash-mixins/object.js | 0 .../ui/public}/utils/lodash-mixins/oop.js | 0 .../ui/public}/utils/lodash-mixins/string.js | 0 .../ui/public}/utils/mapping_setup.js | 0 .../ui/public}/utils/no_white_space.js | 0 .../ui/public}/utils/obj_define.js | 0 .../ui/public}/utils/ordinal_suffix.js | 0 .../ui/public}/utils/parse_interval.js | 0 .../ui/public}/utils/query_string.js | 0 .../ui/public}/utils/range.js | 0 .../ui/public}/utils/rison.js | 0 .../ui/public}/utils/sequencer.js | 0 .../ui/public}/utils/slugify_id.js | 0 .../ui/public}/utils/supports.js | 0 .../ui/public}/utils/versionmath.js | 0 src/plugins/ui/views/chrome.jade | 36 +++++ src/plugins/vis-debug-spy/index.js | 9 ++ src/plugins/vis-debug-spy/package.json | 4 + .../vis-debug-spy/public}/index.js | 0 .../vis-debug-spy/public}/vis_debug.html | 0 .../vis-debug-spy/public}/vis_debug.js | 0 src/server/bin/kibana.js | 67 ---------- src/server/cli/index.js | 57 ++++++++ src/server/cli/readYamlConfig.js | 43 ++++++ src/server/{lib => }/config/config.js | 6 +- .../explode_by.js => config/explodeBy.js} | 0 .../flatten_with.js => config/flattenWith.js} | 0 src/server/config/index.js | 10 ++ src/server/{lib => }/config/override.js | 6 +- src/server/{lib => }/config/schema.js | 24 +--- src/server/connections/index.js | 11 ++ src/server/fe-exports/FeApp.js | 21 +++ .../file.js => fe-exports/FeExport.js} | 0 src/server/fe-exports/FeExportsCollection.js | 70 ++++++++++ src/server/fe-exports/index.js | 10 ++ src/server/index.js | 96 +++++++------- src/server/lib/config/check_path.js | 10 -- src/server/lib/config/index.js | 6 - src/server/lib/extend_hapi.js | 4 - src/server/lib/get_status.js | 4 - src/server/lib/load_settings_from_yaml.js | 29 ---- .../lib/plugins/add_statics_for_public.js | 18 --- src/server/lib/plugins/check_dependencies.js | 18 --- src/server/lib/plugins/list_plugins.js | 27 ---- src/server/lib/plugins/load_kibana_plugins.js | 21 --- src/server/lib/plugins/plugin.js | 18 --- .../lib/plugins/register_plugin_configs.js | 22 --- src/server/lib/plugins/register_plugins.js | 104 --------------- src/server/lib/plugins/require_plugins.js | 31 ----- src/server/lib/plugins/validate_plugin.js | 3 - src/server/lib/run_setup_tasks.js | 6 - src/server/lib/set_status.js | 4 - src/server/lib/start.js | 61 --------- src/server/lib/status/index.js | 19 --- src/server/lib/status/log_status_change.js | 7 - src/server/lib/write_pid_file.js | 16 --- .../logging/good_reporters/_event_to_json.js | 19 ++- .../logging/good_reporters/console.js | 0 src/server/logging/good_reporters/file.js | 0 src/server/{lib => }/logging/index.js | 4 +- src/server/pid/index.js | 46 +++++++ src/server/plugins/Plugin.js | 77 +++++++++++ src/server/plugins/PluginApi.js | 11 ++ src/server/plugins/config/index.js | 24 ---- src/server/plugins/elasticsearch/index.js | 47 ------- src/server/plugins/index.js | 34 +++++ src/server/plugins/load.js | 8 ++ src/server/plugins/scan.js | 33 +++++ src/server/plugins/static/index.js | 16 --- src/server/plugins/status/index.js | 60 --------- src/server/status/KbnStatus.js | 28 ++++ .../status.js => status/PluginStatus.js} | 21 ++- src/server/status/index.js | 5 + src/server/utils/closestPackageJson.js | 35 +++++ tasks/config/mocha.js | 39 +++--- tasks/kibana_server.js | 17 ++- tasks/maybe_start_kibana.js | 4 +- tasks/utils/dev_server.js | 12 -- tasks/utils/dev_statics/index.js | 83 ------------ tasks/utils/server-config.js | 1 - test/unit/server/lib/config/check_path.js | 18 --- test/unit/server/lib/config/schema.js | 27 ---- .../discover/directives/discover_field.js | 2 +- .../discover/directives/field_calculator.js | 2 +- .../apps/discover/directives/field_chooser.js | 2 +- .../specs/components/agg_types/_agg_type.js | 2 +- .../search_source/normalize_sort_request.js | 2 +- .../specs/components/doc_table/doc_table.js | 2 +- .../specs/components/doc_viewer/doc_viewer.js | 2 +- .../components/filter_bar/query_filter.js | 2 +- test/unit/specs/components/listen/listen.js | 2 +- test/unit/specs/components/reflow_watcher.js | 2 +- .../directives/auto_select_if_only_one.js | 2 +- test/unit/specs/directives/confirm-click.js | 2 +- test/unit/specs/directives/inequality.js | 2 +- test/unit/specs/directives/input_focus.js | 2 +- .../specs/directives/input_whole_number.js | 2 +- .../specs/directives/validate_cidr_mask.js | 2 +- .../specs/directives/validate_date_math.js | 2 +- .../specs/directives/validate_index_name.js | 2 +- test/unit/specs/directives/validate_ip.js | 2 +- test/unit/specs/directives/validate_json.js | 2 +- test/unit/specs/factories/base_object.js | 2 +- test/unit/specs/factories/events.js | 4 +- test/unit/specs/filters/field_type.js | 2 +- test/unit/specs/filters/moment.js | 2 +- test/unit/specs/filters/short_dots.js | 2 +- test/unit/specs/filters/start_from.js | 2 +- test/unit/specs/state_management/state.js | 4 +- test/unit/specs/utils/routes/_work_queue.js | 2 +- .../utils/routes/_wrap_route_with_prep.js | 2 +- test/unit/specs/vislib/lib/resize_checker.js | 2 +- 800 files changed, 1405 insertions(+), 1254 deletions(-) delete mode 100644 .bowerrc create mode 100644 src/.jshintrc rename src/{server => }/bin/kibana.bat (88%) rename src/{server => }/bin/kibana.sh (94%) rename src/{server => }/config/kibana.yml (100%) create mode 100644 src/dev_server/dev_statics_plugin/index.js rename {tasks/utils/dev_statics => src/dev_server/dev_statics_plugin}/lib/amd_wrapper.js (100%) rename {tasks/utils/dev_statics => src/dev_server/dev_statics_plugin}/lib/istanbul.js (100%) rename {tasks/utils/dev_statics => src/dev_server/dev_statics_plugin}/lib/kibana_src_filter.js (100%) create mode 100644 src/dev_server/dev_statics_plugin/package.json create mode 100644 src/dev_server/index.js delete mode 100644 src/kibana/components/setup/_setup_error.js delete mode 100644 src/kibana/components/setup/setup.js delete mode 100644 src/kibana/components/setup/steps/check_es_version.js delete mode 100644 src/kibana/components/setup/steps/check_for_es.js delete mode 100644 src/kibana/components/setup/steps/check_for_kibana_index.js delete mode 100644 src/kibana/components/setup/steps/create_kibana_index.js delete mode 100644 src/kibana/index.html rename src/{kibana => }/plugins/PLAN.md (95%) rename src/{kibana => }/plugins/README.txt (100%) create mode 100644 src/plugins/elasticsearch/index.js rename src/{server => }/plugins/elasticsearch/lib/check_es_version.js (100%) rename src/{server => }/plugins/elasticsearch/lib/create_agent.js (100%) rename src/{server => }/plugins/elasticsearch/lib/create_kibana_index.js (100%) rename src/{server => }/plugins/elasticsearch/lib/create_proxy.js (100%) rename src/{server => }/plugins/elasticsearch/lib/es_bool.js (100%) rename src/{server => }/plugins/elasticsearch/lib/expose_client.js (100%) rename src/{server => }/plugins/elasticsearch/lib/health_check.js (100%) rename src/{server => }/plugins/elasticsearch/lib/is_upgradeable.js (100%) rename src/{server => }/plugins/elasticsearch/lib/map_uri.js (100%) rename src/{server => }/plugins/elasticsearch/lib/migrate_config.js (100%) rename src/{server => }/plugins/elasticsearch/lib/setup_error.js (100%) rename src/{server => }/plugins/elasticsearch/lib/upgrade_config.js (100%) rename src/{server => }/plugins/elasticsearch/lib/validate.js (100%) rename src/{server => }/plugins/elasticsearch/lib/version_math.js (100%) create mode 100644 src/plugins/elasticsearch/package.json create mode 100644 src/plugins/kbn-vislib-vis-types/index.js create mode 100644 src/plugins/kbn-vislib-vis-types/package.json rename src/{kibana/plugins/kbn_vislib_vis_types => plugins/kbn-vislib-vis-types/public}/area.js (100%) rename src/{kibana/plugins/kbn_vislib_vis_types => plugins/kbn-vislib-vis-types/public}/controls/line_interpolation_option.html (100%) rename src/{kibana/plugins/kbn_vislib_vis_types => plugins/kbn-vislib-vis-types/public}/controls/line_interpolation_option.js (100%) rename src/{kibana/plugins/kbn_vislib_vis_types => plugins/kbn-vislib-vis-types/public}/controls/point_series_options.html (100%) rename src/{kibana/plugins/kbn_vislib_vis_types => plugins/kbn-vislib-vis-types/public}/controls/point_series_options.js (90%) rename src/{kibana/plugins/kbn_vislib_vis_types => plugins/kbn-vislib-vis-types/public}/controls/radius_ratio_option.html (100%) rename src/{kibana/plugins/kbn_vislib_vis_types => plugins/kbn-vislib-vis-types/public}/controls/rows_or_columns.html (100%) rename src/{kibana/plugins/kbn_vislib_vis_types => plugins/kbn-vislib-vis-types/public}/controls/vislib_basic_options.html (100%) rename src/{kibana/plugins/kbn_vislib_vis_types => plugins/kbn-vislib-vis-types/public}/controls/vislib_basic_options.js (100%) rename src/{kibana/plugins/kbn_vislib_vis_types => plugins/kbn-vislib-vis-types/public}/editors/area.html (100%) rename src/{kibana/plugins/kbn_vislib_vis_types => plugins/kbn-vislib-vis-types/public}/editors/histogram.html (100%) rename src/{kibana/plugins/kbn_vislib_vis_types => plugins/kbn-vislib-vis-types/public}/editors/line.html (100%) rename src/{kibana/plugins/kbn_vislib_vis_types => plugins/kbn-vislib-vis-types/public}/editors/pie.html (100%) rename src/{kibana/plugins/kbn_vislib_vis_types => plugins/kbn-vislib-vis-types/public}/editors/tile_map.html (100%) rename src/{kibana/plugins/kbn_vislib_vis_types => plugins/kbn-vislib-vis-types/public}/histogram.js (100%) rename src/{kibana/plugins/kbn_vislib_vis_types => plugins/kbn-vislib-vis-types/public}/index.js (100%) rename src/{kibana/plugins/kbn_vislib_vis_types => plugins/kbn-vislib-vis-types/public}/line.js (100%) rename src/{kibana/plugins/kbn_vislib_vis_types => plugins/kbn-vislib-vis-types/public}/pie.js (100%) rename src/{kibana/plugins/kbn_vislib_vis_types => plugins/kbn-vislib-vis-types/public}/tileMap.js (100%) create mode 100644 src/plugins/kibana/index.js create mode 100644 src/plugins/kibana/package.json rename src/{kibana => plugins/kibana/public}/.jshintrc (95%) rename src/{kibana/plugins/kibana => plugins/kibana/public}/_apps.js (100%) rename src/{kibana/plugins/kibana => plugins/kibana/public}/_init.js (100%) rename src/{kibana/plugins/kibana => plugins/kibana/public}/_timepicker.html (100%) rename src/{kibana/plugins/kibana => plugins/kibana/public}/_timepicker.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/dashboard/components/panel/lib/load_panel.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/dashboard/components/panel/lib/search.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/dashboard/components/panel/lib/visualization.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/dashboard/components/panel/panel.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/dashboard/components/panel/panel.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/dashboard/directives/grid.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/dashboard/index.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/dashboard/index.js (99%) rename src/{kibana/plugins => plugins/kibana/public}/dashboard/partials/load_dashboard.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/dashboard/partials/pick_visualization.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/dashboard/partials/save_dashboard.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/dashboard/partials/share.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/dashboard/services/_saved_dashboard.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/dashboard/services/saved_dashboards.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/dashboard/styles/main.less (100%) rename src/{kibana/plugins => plugins/kibana/public}/discover/_hit_sort_fn.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/discover/components/field_chooser/discover_field.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/discover/components/field_chooser/discover_field.js (97%) rename src/{kibana/plugins => plugins/kibana/public}/discover/components/field_chooser/field_chooser.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/discover/components/field_chooser/field_chooser.js (98%) rename src/{kibana/plugins => plugins/kibana/public}/discover/components/field_chooser/lib/detail_views/string.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/discover/components/field_chooser/lib/field_calculator.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/discover/controllers/discover.js (99%) rename src/{kibana/plugins => plugins/kibana/public}/discover/directives/timechart.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/discover/index.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/discover/index.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/discover/partials/load_search.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/discover/partials/save_search.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/discover/saved_searches/_saved_search.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/discover/saved_searches/saved_searches.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/discover/styles/main.less (100%) rename src/{kibana/plugins => plugins/kibana/public}/doc/controllers/doc.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/doc/index.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/doc/index.js (100%) rename src/{kibana/plugins/kibana => plugins/kibana/public}/index.js (60%) rename src/{kibana/plugins/kibana => plugins/kibana/public}/kibana.html (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/app.html (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/index.js (96%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/saved_object_registry.js (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/about/barcode.svg (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/about/index.html (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/about/index.js (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/advanced/advanced_row.html (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/advanced/advanced_row.js (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/advanced/index.html (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/advanced/index.js (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/advanced/lib/get_val_type.js (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/index.js (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/_create.html (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/_create.js (98%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/_date_scripts.js (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/_edit.html (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/_edit.js (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/_field_controls.html (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/_field_editor.html (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/_field_editor.js (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/_field_name.html (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/_field_popularity.html (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/_field_type.html (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/_field_types.js (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/_index_header.html (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/_index_header.js (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/_indexed_fields.html (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/_indexed_fields.js (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/_refresh_kibana_index.js (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/_scripted_fields.html (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/_scripted_fields.js (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/index.html (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/indices/index.js (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/objects/_objects.html (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/objects/_objects.js (99%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/objects/_view.html (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/objects/_view.js (100%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/sections/objects/index.js (90%) rename src/{kibana/plugins/settings => plugins/kibana/public/settings/public}/styles/main.less (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/add_bucket_agg.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/advanced_toggle.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/agg.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/agg.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/agg_add.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/agg_add.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/agg_filter.js (75%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/agg_group.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/agg_group.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/agg_param.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/agg_params.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/agg_params.js (99%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/agg_select.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/editor.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/editor.js (99%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/nesting_indicator.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/panels/load.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/panels/save.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/panels/share.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/sidebar.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/sidebar.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/styles/editor.less (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/vis_options.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/editor/vis_options.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/index.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/saved_visualizations/_saved_vis.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/saved_visualizations/saved_visualizations.js (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/styles/main.less (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/wizard/step_1.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/wizard/step_2.html (100%) rename src/{kibana/plugins => plugins/kibana/public}/visualize/wizard/wizard.js (97%) create mode 100644 src/plugins/markdown-vis/index.js create mode 100644 src/plugins/markdown-vis/package.json rename src/{kibana/plugins/markdown_vis => plugins/markdown-vis/public}/index.js (100%) rename src/{kibana/plugins/markdown_vis => plugins/markdown-vis/public}/markdown_vis.html (100%) rename src/{kibana/plugins/markdown_vis => plugins/markdown-vis/public}/markdown_vis.js (100%) rename src/{kibana/plugins/markdown_vis => plugins/markdown-vis/public}/markdown_vis.less (100%) rename src/{kibana/plugins/markdown_vis => plugins/markdown-vis/public}/markdown_vis_controller.js (100%) rename src/{kibana/plugins/markdown_vis => plugins/markdown-vis/public}/markdown_vis_params.html (100%) create mode 100644 src/plugins/metric-vis/index.js create mode 100644 src/plugins/metric-vis/package.json rename src/{kibana/plugins/metric_vis => plugins/metric-vis/public}/index.js (100%) rename src/{kibana/plugins/metric_vis => plugins/metric-vis/public}/metric_vis.html (100%) rename src/{kibana/plugins/metric_vis => plugins/metric-vis/public}/metric_vis.js (100%) rename src/{kibana/plugins/metric_vis => plugins/metric-vis/public}/metric_vis.less (100%) rename src/{kibana/plugins/metric_vis => plugins/metric-vis/public}/metric_vis_controller.js (100%) rename src/{kibana/plugins/metric_vis => plugins/metric-vis/public}/metric_vis_params.html (100%) create mode 100644 src/plugins/status/index.js rename src/{server => }/plugins/status/lib/series.js (100%) create mode 100644 src/plugins/status/package.json rename src/{server => }/plugins/status/public/index.html (100%) create mode 100644 src/plugins/table-vis/index.js create mode 100644 src/plugins/table-vis/package.json rename src/{kibana/plugins/table_vis => plugins/table-vis/public}/index.js (100%) rename src/{kibana/plugins/table_vis => plugins/table-vis/public}/table_vis.html (100%) rename src/{kibana/plugins/table_vis => plugins/table-vis/public}/table_vis.js (100%) rename src/{kibana/plugins/table_vis => plugins/table-vis/public}/table_vis.less (100%) rename src/{kibana/plugins/table_vis => plugins/table-vis/public}/table_vis_controller.js (100%) rename src/{kibana/plugins/table_vis => plugins/table-vis/public}/table_vis_params.html (100%) rename src/{kibana/plugins/table_vis => plugins/table-vis/public}/table_vis_params.js (100%) create mode 100644 src/plugins/ui/bower.json create mode 100644 src/plugins/ui/index.js create mode 100644 src/plugins/ui/package.json rename src/{kibana/index.js => plugins/ui/public/bootstrap.js} (100%) create mode 100644 src/plugins/ui/public/chrome.js rename src/{kibana => plugins/ui/public}/components/agg_response/geo_json/_tooltip.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/geo_json/_tooltip_formatter.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/geo_json/geo_json.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/geo_json/rowsToFeatures.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/hierarchical/_array_to_linked_list.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/hierarchical/_build_split.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/hierarchical/_collect_branch.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/hierarchical/_collect_keys.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/hierarchical/_create_raw_data.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/hierarchical/_extract_buckets.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/hierarchical/_tooltip.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/hierarchical/_transform_aggregation.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/hierarchical/build_hierarchical_data.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/index.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/point_series/_add_to_siri.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/point_series/_fake_x_aspect.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/point_series/_get_aspects.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/point_series/_get_point.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/point_series/_get_series.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/point_series/_init_x_axis.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/point_series/_init_y_axis.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/point_series/_ordered_date_axis.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/point_series/_tooltip.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/point_series/_tooltip_formatter.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/point_series/point_series.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/tabify/_buckets.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/tabify/_get_columns.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/tabify/_response_writer.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/tabify/_table.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/tabify/_table_group.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_response/tabify/tabify.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_table/agg_table.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_table/agg_table.js (98%) rename src/{kibana => plugins/ui/public}/components/agg_table/agg_table.less (100%) rename src/{kibana => plugins/ui/public}/components/agg_table/agg_table_group.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_table/agg_table_group.js (95%) rename src/{kibana => plugins/ui/public}/components/agg_types/README.md (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/_agg_params.js (98%) rename src/{kibana => plugins/ui/public}/components/agg_types/_agg_type.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/buckets/_bucket_agg_type.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/buckets/_bucket_count_between.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/buckets/_interval_options.js (95%) rename src/{kibana => plugins/ui/public}/components/agg_types/buckets/create_filter/date_histogram.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/buckets/create_filter/date_range.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/buckets/create_filter/filters.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/buckets/create_filter/histogram.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/buckets/create_filter/ip_range.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/buckets/create_filter/range.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/buckets/create_filter/terms.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/buckets/date_histogram.js (99%) rename src/{kibana => plugins/ui/public}/components/agg_types/buckets/date_range.js (96%) rename src/{kibana => plugins/ui/public}/components/agg_types/buckets/filters.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/buckets/geo_hash.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/buckets/histogram.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/buckets/ip_range.js (93%) rename src/{kibana => plugins/ui/public}/components/agg_types/buckets/range.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/buckets/significant_terms.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/buckets/terms.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/controls/date_ranges.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/controls/extended_bounds.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/controls/field.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/controls/filters.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/controls/interval.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/controls/ip_ranges.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/controls/min_doc_count.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/controls/order_agg.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/controls/order_and_size.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/controls/percentile_ranks.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/controls/percentiles.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/controls/precision.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/controls/ranges.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/controls/raw_json.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/controls/regular_expression.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/controls/string.html (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/index.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/metrics/_get_response_agg_config.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/metrics/_metric_agg_type.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/metrics/avg.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/metrics/cardinality.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/metrics/count.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/metrics/max.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/metrics/min.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/metrics/percentile_ranks.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/metrics/percentiles.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/metrics/std_deviation.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/metrics/sum.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/param_types/base.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/param_types/field.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/param_types/optioned.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/param_types/raw_json.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/param_types/regex.js (100%) rename src/{kibana => plugins/ui/public}/components/agg_types/param_types/string.js (100%) rename src/{kibana => plugins/ui/public}/components/bind.js (100%) rename src/{kibana => plugins/ui/public}/components/bound_to_config_obj.js (100%) rename src/{kibana => plugins/ui/public}/components/clipboard/clipboard.html (100%) rename src/{kibana => plugins/ui/public}/components/clipboard/clipboard.js (100%) rename src/{kibana => plugins/ui/public}/components/collapsible_sidebar/collapsible_sidebar.js (100%) rename src/{kibana => plugins/ui/public}/components/collapsible_sidebar/collapsible_sidebar.less (100%) rename src/{kibana => plugins/ui/public}/components/comma_list_filter.js (100%) rename src/{kibana/services => plugins/ui/public/components}/compile_recursive_directive.js (100%) rename src/{kibana => plugins/ui/public}/components/config/_delayed_updater.js (100%) rename src/{kibana => plugins/ui/public}/components/config/_vals.js (100%) rename src/{kibana => plugins/ui/public}/components/config/config.js (100%) rename src/{kibana => plugins/ui/public}/components/config/defaults.js (100%) rename src/{kibana => plugins/ui/public}/components/config/migrations/_empty_ (100%) rename src/{kibana => plugins/ui/public}/components/courier/_error_handlers.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/_redirect_when_missing.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/_request_queue.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/courier.js (98%) rename src/{kibana => plugins/ui/public}/components/courier/data_source/_abstract.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/data_source/_decorate_query.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/data_source/_doc_send_to_es.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/data_source/_normalize_sort_request.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/data_source/_root_search_source.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/data_source/doc_source.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/data_source/search_source.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/fetch/_call_client.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/fetch/_call_response_handlers.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/fetch/_continue_incomplete.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/fetch/_fetch_these.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/fetch/_for_each_strategy.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/fetch/_is_request.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/fetch/_merge_duplicate_requests.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/fetch/_notifier.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/fetch/_req_status.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/fetch/fetch.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/fetch/request/_error_handler.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/fetch/request/_segmented_handle.js (94%) rename src/{kibana => plugins/ui/public}/components/courier/fetch/request/doc.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/fetch/request/request.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/fetch/request/search.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/fetch/request/segmented.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/fetch/strategy/doc.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/fetch/strategy/search.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/looper/_looper.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/looper/doc.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/looper/search.js (100%) rename src/{kibana => plugins/ui/public}/components/courier/saved_object/saved_object.js (100%) rename src/{kibana/services => plugins/ui/public/components}/debounce.js (100%) rename src/{kibana => plugins/ui/public}/components/doc_table/components/table_header.html (100%) rename src/{kibana => plugins/ui/public}/components/doc_table/components/table_header.js (98%) rename src/{kibana => plugins/ui/public}/components/doc_table/components/table_row.js (97%) rename src/{kibana => plugins/ui/public}/components/doc_table/components/table_row/cell.html (100%) rename src/{kibana => plugins/ui/public}/components/doc_table/components/table_row/details.html (100%) rename src/{kibana => plugins/ui/public}/components/doc_table/components/table_row/open.html (100%) rename src/{kibana => plugins/ui/public}/components/doc_table/doc_table.html (100%) rename src/{kibana => plugins/ui/public}/components/doc_table/doc_table.js (97%) rename src/{kibana => plugins/ui/public}/components/doc_table/doc_table.less (100%) rename src/{kibana => plugins/ui/public}/components/doc_table/lib/get_sort.js (100%) rename src/{kibana => plugins/ui/public}/components/doc_title/doc_title.js (100%) rename src/{kibana => plugins/ui/public}/components/doc_viewer/doc_viewer.html (100%) rename src/{kibana => plugins/ui/public}/components/doc_viewer/doc_viewer.js (100%) rename src/{kibana => plugins/ui/public}/components/doc_viewer/doc_viewer.less (100%) rename src/{kibana => plugins/ui/public}/components/elastic_textarea.js (100%) rename src/{kibana/services => plugins/ui/public/components}/es.js (100%) rename src/{kibana/factories => plugins/ui/public/components}/events.js (100%) rename src/{kibana => plugins/ui/public}/components/fancy_forms/fancy_forms.js (100%) rename src/{kibana => plugins/ui/public}/components/fancy_forms/kbn_form.js (100%) rename src/{kibana => plugins/ui/public}/components/fancy_forms/kbn_model.js (100%) rename src/{kibana => plugins/ui/public}/components/field_editor/field_editor.html (100%) rename src/{kibana => plugins/ui/public}/components/field_editor/field_editor.js (100%) rename src/{kibana => plugins/ui/public}/components/field_editor/scripting_info.html (100%) rename src/{kibana => plugins/ui/public}/components/field_editor/scripting_warning.html (100%) rename src/{kibana => plugins/ui/public}/components/field_format_editor/field_format_editor.js (100%) rename src/{kibana => plugins/ui/public}/components/field_format_editor/numeral/numeral.html (100%) rename src/{kibana => plugins/ui/public}/components/field_format_editor/numeral/numeral.js (100%) rename src/{kibana => plugins/ui/public}/components/field_format_editor/pattern/pattern.html (100%) rename src/{kibana => plugins/ui/public}/components/field_format_editor/pattern/pattern.js (100%) rename src/{kibana => plugins/ui/public}/components/field_format_editor/samples/samples.html (100%) rename src/{kibana => plugins/ui/public}/components/field_format_editor/samples/samples.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/filter_bar.html (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/filter_bar.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/filter_bar.less (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/filter_bar_click_handler.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/changeTimeFilter.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/compareFilters.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/dedupFilters.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/extractTimeFilter.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/filterAppliedAndUnwrap.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/filterOutTimeBasedFilter.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/generateMappingChain.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/mapAndFlattenFilters.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/mapDefault.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/mapExists.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/mapFilter.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/mapFlattenAndWrapFilters.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/mapGeoBoundingBox.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/mapMissing.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/mapQueryString.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/mapRange.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/mapScript.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/mapTerms.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/onlyDisabled.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/onlyStateChanged.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/remapFilters.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/lib/uniqFilters.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/push_filter.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_bar/query_filter.js (99%) rename src/{kibana => plugins/ui/public}/components/filter_manager/filter_manager.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_manager/lib/phrase.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_manager/lib/query.js (100%) rename src/{kibana => plugins/ui/public}/components/filter_manager/lib/range.js (100%) rename src/{kibana => plugins/ui/public}/components/fixedScroll.js (100%) rename src/{kibana => plugins/ui/public}/components/highlight/highlight.js (100%) rename src/{kibana => plugins/ui/public}/components/highlight/highlight_tags.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_cast_mapping_type.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_ensure_some.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_field.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_field_format/FieldFormat.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_field_format/contentTypes.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_field_list.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_field_types.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_flatten_hit.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_format_hit.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_get_computed_fields.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_get_ids.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_index_pattern.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_intervals.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_local_cache.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_map_field.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_mapper.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_object.tmpl.html (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_pattern_cache.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_pattern_to_wildcard.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/_transform_mapping_into_fields.js (100%) rename src/{kibana => plugins/ui/public}/components/index_patterns/index_patterns.js (97%) rename src/{kibana/utils => plugins/ui/public/components}/indexed_array/_inflector.js (100%) rename src/{kibana/utils => plugins/ui/public/components}/indexed_array/_path_getter.js (100%) rename src/{kibana/utils => plugins/ui/public/components}/indexed_array/index.js (100%) rename src/{kibana => plugins/ui/public}/components/listen.js (100%) rename src/{kibana => plugins/ui/public}/components/notify/_errors.js (100%) rename src/{kibana => plugins/ui/public}/components/notify/_notifier.js (100%) rename src/{kibana => plugins/ui/public}/components/notify/directives.js (100%) rename src/{kibana => plugins/ui/public}/components/notify/notify.js (100%) rename src/{kibana => plugins/ui/public}/components/notify/partials/fatal.html (100%) rename src/{kibana => plugins/ui/public}/components/notify/partials/fatal_splash_screen.html (100%) rename src/{kibana => plugins/ui/public}/components/notify/partials/toaster.html (100%) rename src/{kibana => plugins/ui/public}/components/number_list/number_list.html (100%) rename src/{kibana => plugins/ui/public}/components/number_list/number_list.js (100%) rename src/{kibana => plugins/ui/public}/components/number_list/number_list_input.js (100%) rename src/{kibana => plugins/ui/public}/components/paginated_table/paginated_table.html (100%) rename src/{kibana => plugins/ui/public}/components/paginated_table/paginated_table.js (100%) rename src/{kibana => plugins/ui/public}/components/persisted_log/persisted_log.js (100%) rename src/{kibana/services => plugins/ui/public/components}/private.js (100%) rename src/{kibana/services => plugins/ui/public/components}/promises.js (100%) rename src/{kibana => plugins/ui/public}/components/reflow_watcher.js (96%) rename src/{kibana => plugins/ui/public/components}/registry/_registry.js (100%) rename src/{kibana => plugins/ui/public/components}/registry/apps.js (100%) rename src/{kibana => plugins/ui/public/components}/registry/field_formats.js (100%) rename src/{kibana => plugins/ui/public/components}/registry/spy_modes.js (100%) rename src/{kibana => plugins/ui/public/components}/registry/vis_types.js (100%) rename src/{kibana => plugins/ui/public/components}/require.config.js (98%) rename src/{kibana/utils => plugins/ui/public/components}/routes/_setup.js (100%) rename src/{kibana/utils => plugins/ui/public/components}/routes/_work_queue.js (100%) rename src/{kibana/utils => plugins/ui/public/components}/routes/_wrap_route_with_prep.js (100%) rename src/{kibana/utils => plugins/ui/public/components}/routes/index.js (97%) rename src/{kibana => plugins/ui/public}/components/state_management/_state_sync.js (100%) rename src/{kibana => plugins/ui/public}/components/state_management/app_state.js (100%) rename src/{kibana => plugins/ui/public}/components/state_management/global_state.js (100%) rename src/{kibana => plugins/ui/public}/components/state_management/state.js (98%) rename src/{kibana => plugins/ui/public}/components/storage/storage.js (100%) rename src/{kibana => plugins/ui/public}/components/stringify/.jshintrc (100%) rename src/{kibana => plugins/ui/public}/components/stringify/editors/date.html (100%) rename src/{kibana => plugins/ui/public}/components/stringify/editors/string.html (100%) rename src/{kibana => plugins/ui/public}/components/stringify/editors/url.html (100%) rename src/{kibana => plugins/ui/public}/components/stringify/icons/cv.png (100%) rename src/{kibana => plugins/ui/public}/components/stringify/icons/de.png (100%) rename src/{kibana => plugins/ui/public}/components/stringify/icons/flag-icon.LICENSE (100%) rename src/{kibana => plugins/ui/public}/components/stringify/icons/go.png (100%) rename src/{kibana => plugins/ui/public}/components/stringify/icons/ne.png (100%) rename src/{kibana => plugins/ui/public}/components/stringify/icons/ni.png (100%) rename src/{kibana => plugins/ui/public}/components/stringify/icons/stop.png (100%) rename src/{kibana => plugins/ui/public}/components/stringify/icons/us.png (100%) rename src/{kibana => plugins/ui/public}/components/stringify/register.js (100%) rename src/{kibana => plugins/ui/public}/components/stringify/types/Bytes.js (100%) rename src/{kibana => plugins/ui/public}/components/stringify/types/Date.js (100%) rename src/{kibana => plugins/ui/public}/components/stringify/types/Ip.js (100%) rename src/{kibana => plugins/ui/public}/components/stringify/types/Number.js (100%) rename src/{kibana => plugins/ui/public}/components/stringify/types/Percent.js (100%) rename src/{kibana => plugins/ui/public}/components/stringify/types/Source.js (100%) rename src/{kibana => plugins/ui/public}/components/stringify/types/String.js (100%) rename src/{kibana => plugins/ui/public}/components/stringify/types/Url.js (100%) rename src/{kibana => plugins/ui/public}/components/stringify/types/_Numeral.js (100%) rename src/{kibana => plugins/ui/public}/components/stringify/types/_source.html (100%) rename src/{kibana => plugins/ui/public}/components/style_compile/style_compile.css.tmpl (100%) rename src/{kibana => plugins/ui/public}/components/style_compile/style_compile.js (100%) rename src/{kibana => plugins/ui/public}/components/template_vis_type/TemplateRenderbot.js (100%) rename src/{kibana => plugins/ui/public}/components/template_vis_type/TemplateVisType.js (100%) rename src/{kibana => plugins/ui/public}/components/time_buckets/calc_auto_interval.js (100%) rename src/{kibana => plugins/ui/public}/components/time_buckets/calc_es_interval.js (100%) rename src/{kibana => plugins/ui/public}/components/time_buckets/time_buckets.js (100%) rename src/{kibana => plugins/ui/public}/components/timefilter/lib/diff_interval.js (100%) rename src/{kibana => plugins/ui/public}/components/timefilter/lib/diff_time.js (100%) rename src/{kibana => plugins/ui/public}/components/timefilter/timefilter.js (98%) rename src/{kibana => plugins/ui/public}/components/timepicker/quick_ranges.js (100%) rename src/{kibana => plugins/ui/public}/components/timepicker/refresh_intervals.js (100%) rename src/{kibana => plugins/ui/public}/components/timepicker/time_units.js (100%) rename src/{kibana => plugins/ui/public}/components/timepicker/timepicker.html (100%) rename src/{kibana => plugins/ui/public}/components/timepicker/timepicker.js (98%) rename src/{kibana => plugins/ui/public}/components/tooltip/tooltip.html (100%) rename src/{kibana => plugins/ui/public}/components/tooltip/tooltip.js (100%) rename src/{kibana => plugins/ui/public}/components/typeahead/_input.js (100%) rename src/{kibana => plugins/ui/public}/components/typeahead/_items.js (100%) rename src/{kibana => plugins/ui/public}/components/typeahead/partials/typeahead-items.html (100%) rename src/{kibana => plugins/ui/public}/components/typeahead/typeahead.js (100%) rename src/{kibana => plugins/ui/public}/components/typeahead/typeahead.less (100%) rename src/{kibana => plugins/ui/public}/components/url/url.js (98%) rename src/{kibana => plugins/ui/public}/components/validateDateInterval.js (100%) rename src/{kibana => plugins/ui/public}/components/validate_query/lib/from_user.js (100%) rename src/{kibana => plugins/ui/public}/components/validate_query/lib/to_user.js (100%) rename src/{kibana => plugins/ui/public}/components/validate_query/validate_query.js (99%) rename src/{kibana => plugins/ui/public}/components/vis/AggConfig.js (100%) rename src/{kibana => plugins/ui/public}/components/vis/AggConfigResult.js (100%) rename src/{kibana => plugins/ui/public}/components/vis/AggConfigs.js (100%) rename src/{kibana => plugins/ui/public}/components/vis/Renderbot.js (100%) rename src/{kibana => plugins/ui/public}/components/vis/Schemas.js (100%) rename src/{kibana => plugins/ui/public}/components/vis/VisType.js (100%) rename src/{kibana => plugins/ui/public}/components/vis/vis.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/components/color/color.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/components/color/color_palette.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/components/color/seed_colors.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/components/labels/data_array.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/components/labels/flatten_series.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/components/labels/labels.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/components/labels/uniq_labels.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/components/tooltip/_position_tooltip.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/components/tooltip/tooltip.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/components/zero_injection/flatten_data.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/components/zero_injection/inject_zeros.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/components/zero_injection/ordered_x_keys.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/components/zero_injection/uniq_keys.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/components/zero_injection/zero_fill_data_array.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/components/zero_injection/zero_filled_array.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/index.js (94%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/_data_label.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/_error_handler.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/alerts.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/axis_title.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/chart_title.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/data.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/dispatch.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/handler/handler.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/handler/handler_types.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/handler/types/pie.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/handler/types/point_series.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/handler/types/tile_map.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/layout/layout.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/layout/layout_types.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/layout/splits/column_chart/chart_split.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/layout/splits/column_chart/chart_title_split.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/layout/splits/column_chart/x_axis_split.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/layout/splits/column_chart/y_axis_split.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/layout/splits/pie_chart/chart_split.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/layout/splits/tile_map/map_split.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/layout/types/column_layout.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/layout/types/map_layout.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/layout/types/pie_layout.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/legend.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/resize_checker.js (98%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/x_axis.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/lib/y_axis.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/partials/legend_header.html (100%) rename src/{kibana => plugins/ui/public}/components/vislib/partials/touchdown.tmpl.html (100%) rename src/{kibana => plugins/ui/public}/components/vislib/styles/_alerts.less (100%) rename src/{kibana => plugins/ui/public}/components/vislib/styles/_error.less (100%) rename src/{kibana => plugins/ui/public}/components/vislib/styles/_layout.less (100%) rename src/{kibana => plugins/ui/public}/components/vislib/styles/_legend.less (100%) rename src/{kibana => plugins/ui/public}/components/vislib/styles/_svg.less (100%) rename src/{kibana => plugins/ui/public}/components/vislib/styles/_tilemap.less (100%) rename src/{kibana => plugins/ui/public}/components/vislib/styles/_tooltip.less (100%) rename src/{kibana => plugins/ui/public}/components/vislib/styles/main.less (100%) rename src/{kibana => plugins/ui/public}/components/vislib/vis.js (98%) rename src/{kibana => plugins/ui/public}/components/vislib/visualizations/_chart.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/visualizations/_point_series_chart.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/visualizations/area_chart.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/visualizations/column_chart.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/visualizations/line_chart.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/visualizations/pie_chart.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/visualizations/tile_map.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/visualizations/time_marker.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib/visualizations/vis_types.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib_vis_type/VislibRenderbot.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib_vis_type/VislibVisType.js (100%) rename src/{kibana => plugins/ui/public}/components/vislib_vis_type/buildChartData.js (100%) rename src/{kibana => plugins/ui/public}/components/visualize/spy/_req_resp_stats.html (100%) rename src/{kibana => plugins/ui/public}/components/visualize/spy/_req_resp_stats.js (100%) rename src/{kibana => plugins/ui/public}/components/visualize/spy/_spy.html (100%) rename src/{kibana => plugins/ui/public}/components/visualize/spy/_table.html (100%) rename src/{kibana => plugins/ui/public}/components/visualize/spy/_table.js (100%) rename src/{kibana => plugins/ui/public}/components/visualize/spy/spy.js (100%) rename src/{kibana => plugins/ui/public}/components/visualize/visualize.html (100%) rename src/{kibana => plugins/ui/public}/components/visualize/visualize.js (100%) rename src/{kibana => plugins/ui/public}/components/visualize/visualize.less (100%) rename src/{kibana => plugins/ui/public}/components/watch_multi.js (100%) rename src/{kibana => plugins/ui/public}/directives/auto_select_if_only_one.js (100%) rename src/{kibana => plugins/ui/public}/directives/click_focus.js (100%) rename src/{kibana => plugins/ui/public}/directives/config.js (98%) rename src/{kibana => plugins/ui/public}/directives/confirm_click.js (100%) rename src/{kibana => plugins/ui/public}/directives/css_truncate.js (100%) rename src/{kibana => plugins/ui/public}/directives/field_name.js (98%) rename src/{kibana => plugins/ui/public}/directives/file_upload.js (100%) rename src/{kibana => plugins/ui/public}/directives/inequality.js (100%) rename src/{kibana => plugins/ui/public}/directives/infinite_scroll.js (100%) rename src/{kibana => plugins/ui/public}/directives/info.js (86%) rename src/{kibana => plugins/ui/public}/directives/input_datetime.js (100%) rename src/{kibana => plugins/ui/public}/directives/input_focus.js (100%) rename src/{kibana => plugins/ui/public}/directives/input_whole_number.js (100%) rename src/{kibana => plugins/ui/public}/directives/paginate.js (98%) rename src/{kibana => plugins/ui/public}/directives/pretty_duration.js (100%) rename src/{kibana => plugins/ui/public}/directives/rows.js (100%) rename src/{kibana => plugins/ui/public}/directives/saved_object_finder.js (98%) rename src/{kibana => plugins/ui/public}/directives/spinner.js (100%) rename src/{kibana => plugins/ui/public}/directives/truncated.js (100%) rename src/{kibana => plugins/ui/public}/directives/validate_cidr_mask.js (100%) rename src/{kibana => plugins/ui/public}/directives/validate_date_math.js (100%) rename src/{kibana => plugins/ui/public}/directives/validate_index_name.js (100%) rename src/{kibana => plugins/ui/public}/directives/validate_ip.js (100%) rename src/{kibana => plugins/ui/public}/directives/validate_json.js (100%) rename src/{kibana/components => plugins/ui/public}/errors.js (100%) rename src/{kibana => plugins/ui/public}/filters/_prop_filter.js (100%) rename src/{kibana => plugins/ui/public}/filters/field_type.js (84%) rename src/{kibana => plugins/ui/public}/filters/label.js (100%) rename src/{kibana => plugins/ui/public}/filters/match_any.js (100%) rename src/{kibana => plugins/ui/public}/filters/moment.js (100%) rename src/{kibana => plugins/ui/public}/filters/rison.js (100%) rename src/{kibana => plugins/ui/public}/filters/short_dots.js (100%) rename src/{kibana => plugins/ui/public}/filters/start_from.js (100%) rename src/{kibana => plugins/ui/public}/filters/trust_as_html.js (100%) rename src/{kibana => plugins/ui/public}/filters/unique.js (100%) rename src/{kibana => plugins/ui/public}/filters/uriescape.js (100%) rename src/{kibana => plugins/ui/public}/images/initial_load.gif (100%) rename src/{kibana/images/no_border.png => plugins/ui/public/images/logo.png} (100%) rename src/{kibana/utils => plugins/ui/public}/modules.js (100%) rename src/{kibana => plugins/ui/public}/partials/global_config.html (100%) rename src/{kibana => plugins/ui/public}/partials/info.html (100%) rename src/{kibana => plugins/ui/public}/partials/nav_config.html (100%) rename src/{kibana => plugins/ui/public}/partials/paginate_controls.html (100%) rename src/{kibana => plugins/ui/public}/partials/saved_object_finder.html (100%) rename src/{kibana => plugins/ui/public}/partials/truncate_by_height.html (100%) create mode 100644 src/plugins/ui/public/require.config.js rename src/{kibana => plugins/ui/public}/styles/_bootstrap.less (100%) rename src/{kibana => plugins/ui/public}/styles/_callout.less (100%) rename src/{kibana => plugins/ui/public}/styles/_control_group.less (100%) rename src/{kibana => plugins/ui/public}/styles/_font_icons.less (100%) rename src/{kibana => plugins/ui/public}/styles/_glyphicons.less (100%) rename src/{kibana => plugins/ui/public}/styles/_hintbox.less (100%) rename src/{kibana => plugins/ui/public}/styles/_input.less (100%) rename src/{kibana => plugins/ui/public}/styles/_mixins.less (100%) rename src/{kibana => plugins/ui/public}/styles/_navbar.less (100%) rename src/{kibana => plugins/ui/public}/styles/_notify.less (100%) rename src/{kibana => plugins/ui/public}/styles/_pagination.less (100%) rename src/{kibana => plugins/ui/public}/styles/_sidebar.less (100%) rename src/{kibana => plugins/ui/public}/styles/_spinner.less (100%) rename src/{kibana => plugins/ui/public}/styles/_table.less (100%) rename src/{kibana => plugins/ui/public}/styles/_truncate.less (100%) rename src/{kibana => plugins/ui/public}/styles/_variables.less (100%) rename src/{kibana => plugins/ui/public}/styles/main.less (98%) rename src/{kibana => plugins/ui/public}/styles/theme/_theme.less (100%) rename src/{kibana => plugins/ui/public}/styles/theme/_variables.less (100%) rename src/{kibana => plugins/ui/public}/styles/theme/elk.ico (100%) rename src/{kibana => plugins/ui/public}/utils/BaseObject.js (100%) rename src/{kibana => plugins/ui/public}/utils/SimpleEmitter.js (100%) rename src/{kibana => plugins/ui/public}/utils/add_word_breaks.js (100%) rename src/{kibana => plugins/ui/public}/utils/brush_event.js (100%) rename src/{kibana => plugins/ui/public}/utils/cidr_mask.js (100%) rename src/{kibana => plugins/ui/public}/utils/config_template.js (100%) rename src/{kibana => plugins/ui/public}/utils/date_range.js (100%) rename src/{kibana => plugins/ui/public}/utils/datemath.js (100%) rename src/{kibana => plugins/ui/public}/utils/decode_geo_hash.js (100%) rename src/{kibana => plugins/ui/public}/utils/diff_object.js (100%) rename src/{kibana => plugins/ui/public}/utils/diff_time_picker_vals.js (100%) rename src/{kibana => plugins/ui/public}/utils/esBool.js (100%) rename src/{kibana => plugins/ui/public}/utils/ipv4_address.js (100%) rename src/{kibana => plugins/ui/public}/utils/key_map.js (100%) rename src/{kibana => plugins/ui/public}/utils/lodash-mixins/collection.js (100%) rename src/{kibana => plugins/ui/public}/utils/lodash-mixins/function.js (100%) rename src/{kibana => plugins/ui/public}/utils/lodash-mixins/index.js (100%) rename src/{kibana => plugins/ui/public}/utils/lodash-mixins/lang.js (100%) rename src/{kibana => plugins/ui/public}/utils/lodash-mixins/object.js (100%) rename src/{kibana => plugins/ui/public}/utils/lodash-mixins/oop.js (100%) rename src/{kibana => plugins/ui/public}/utils/lodash-mixins/string.js (100%) rename src/{kibana => plugins/ui/public}/utils/mapping_setup.js (100%) rename src/{kibana => plugins/ui/public}/utils/no_white_space.js (100%) rename src/{kibana => plugins/ui/public}/utils/obj_define.js (100%) rename src/{kibana => plugins/ui/public}/utils/ordinal_suffix.js (100%) rename src/{kibana => plugins/ui/public}/utils/parse_interval.js (100%) rename src/{kibana => plugins/ui/public}/utils/query_string.js (100%) rename src/{kibana => plugins/ui/public}/utils/range.js (100%) rename src/{kibana => plugins/ui/public}/utils/rison.js (100%) rename src/{kibana => plugins/ui/public}/utils/sequencer.js (100%) rename src/{kibana => plugins/ui/public}/utils/slugify_id.js (100%) rename src/{kibana => plugins/ui/public}/utils/supports.js (100%) rename src/{kibana => plugins/ui/public}/utils/versionmath.js (100%) create mode 100644 src/plugins/ui/views/chrome.jade create mode 100644 src/plugins/vis-debug-spy/index.js create mode 100644 src/plugins/vis-debug-spy/package.json rename src/{kibana/plugins/vis_debug_spy => plugins/vis-debug-spy/public}/index.js (100%) rename src/{kibana/plugins/vis_debug_spy => plugins/vis-debug-spy/public}/vis_debug.html (100%) rename src/{kibana/plugins/vis_debug_spy => plugins/vis-debug-spy/public}/vis_debug.js (100%) delete mode 100755 src/server/bin/kibana.js create mode 100644 src/server/cli/index.js create mode 100644 src/server/cli/readYamlConfig.js rename src/server/{lib => }/config/config.js (96%) rename src/server/{lib/config/explode_by.js => config/explodeBy.js} (100%) rename src/server/{lib/config/flatten_with.js => config/flattenWith.js} (100%) create mode 100644 src/server/config/index.js rename src/server/{lib => }/config/override.js (60%) rename src/server/{lib => }/config/schema.js (63%) create mode 100644 src/server/connections/index.js create mode 100644 src/server/fe-exports/FeApp.js rename src/server/{lib/logging/good_reporters/file.js => fe-exports/FeExport.js} (100%) create mode 100644 src/server/fe-exports/FeExportsCollection.js create mode 100644 src/server/fe-exports/index.js delete mode 100644 src/server/lib/config/check_path.js delete mode 100644 src/server/lib/config/index.js delete mode 100644 src/server/lib/extend_hapi.js delete mode 100644 src/server/lib/get_status.js delete mode 100644 src/server/lib/load_settings_from_yaml.js delete mode 100644 src/server/lib/plugins/add_statics_for_public.js delete mode 100644 src/server/lib/plugins/check_dependencies.js delete mode 100644 src/server/lib/plugins/list_plugins.js delete mode 100644 src/server/lib/plugins/load_kibana_plugins.js delete mode 100644 src/server/lib/plugins/plugin.js delete mode 100644 src/server/lib/plugins/register_plugin_configs.js delete mode 100644 src/server/lib/plugins/register_plugins.js delete mode 100644 src/server/lib/plugins/require_plugins.js delete mode 100644 src/server/lib/plugins/validate_plugin.js delete mode 100644 src/server/lib/run_setup_tasks.js delete mode 100644 src/server/lib/set_status.js delete mode 100644 src/server/lib/start.js delete mode 100644 src/server/lib/status/index.js delete mode 100644 src/server/lib/status/log_status_change.js delete mode 100644 src/server/lib/write_pid_file.js rename src/server/{lib => }/logging/good_reporters/_event_to_json.js (85%) rename src/server/{lib => }/logging/good_reporters/console.js (100%) create mode 100644 src/server/logging/good_reporters/file.js rename src/server/{lib => }/logging/index.js (94%) create mode 100644 src/server/pid/index.js create mode 100644 src/server/plugins/Plugin.js create mode 100644 src/server/plugins/PluginApi.js delete mode 100644 src/server/plugins/config/index.js delete mode 100644 src/server/plugins/elasticsearch/index.js create mode 100644 src/server/plugins/index.js create mode 100644 src/server/plugins/load.js create mode 100644 src/server/plugins/scan.js delete mode 100644 src/server/plugins/static/index.js delete mode 100644 src/server/plugins/status/index.js create mode 100644 src/server/status/KbnStatus.js rename src/server/{lib/status/status.js => status/PluginStatus.js} (58%) create mode 100644 src/server/status/index.js create mode 100644 src/server/utils/closestPackageJson.js delete mode 100644 tasks/utils/dev_server.js delete mode 100644 tasks/utils/dev_statics/index.js delete mode 100644 tasks/utils/server-config.js delete mode 100644 test/unit/server/lib/config/check_path.js delete mode 100644 test/unit/server/lib/config/schema.js diff --git a/.bowerrc b/.bowerrc deleted file mode 100644 index d31fab554b4e0..0000000000000 --- a/.bowerrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "directory": "./src/kibana/bower_components" -} diff --git a/.node-version b/.node-version index 62ed67b9cef40..66448f8e23989 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -0.10.x \ No newline at end of file +iojs-2 diff --git a/.travis.yml b/.travis.yml index b0af355f2743c..2d8dd363c2e9e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,6 @@ cache: directories: - esvm - node_modules - - src/kibana/bower_components before_cache: - rm -rf esvm/*/logs esvm/data_dir notifications: diff --git a/bower.json b/bower.json index d0b9af70ded27..82a56fe97fcac 100644 --- a/bower.json +++ b/bower.json @@ -11,13 +11,6 @@ ], "license": "Apache 2.0", "homepage": "http://www.elastic.co/products/kibana", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ], "dependencies": { "angular": "1.2.28", "angular-bindonce": "0.3.3", diff --git a/package.json b/package.json index 2bf4dc17520e3..7804b790c33f7 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "ansicolors": "^0.3.2", "bluebird": "^2.9.27", "body-parser": "^1.10.1", + "boom": "^2.8.0", "bunyan": "^1.2.3", "commander": "^2.6.0", "compression": "^1.3.0", @@ -60,6 +61,7 @@ "js-yaml": "^3.2.5", "lodash": "^3.9.3", "json-stringify-safe": "^5.0.1", + "minimatch": "^2.0.8", "moment": "^2.10.3", "numeral": "^1.5.3", "request": "^2.40.0", diff --git a/src/.jshintrc b/src/.jshintrc new file mode 100644 index 0000000000000..b32ced0507e91 --- /dev/null +++ b/src/.jshintrc @@ -0,0 +1,3 @@ +{ + "extends": "../.jshintrc.node" +} diff --git a/src/server/bin/kibana.bat b/src/bin/kibana.bat similarity index 88% rename from src/server/bin/kibana.bat rename to src/bin/kibana.bat index 64849f8d12d99..7181de9a35755 100644 --- a/src/server/bin/kibana.bat +++ b/src/bin/kibana.bat @@ -6,7 +6,7 @@ set SCRIPT_DIR=%~dp0 for %%I in ("%SCRIPT_DIR%..") do set DIR=%%~dpfI set NODE=%DIR%\node\node.exe -set SERVER=%DIR%\src\bin\kibana.js +set SERVER=%DIR%\src\server\cli set NODE_ENV="production" set CONFIG_PATH=%DIR%\config\kibana.yml diff --git a/src/server/bin/kibana.sh b/src/bin/kibana.sh similarity index 94% rename from src/server/bin/kibana.sh rename to src/bin/kibana.sh index 67d8f992da683..da5516bb2014e 100644 --- a/src/server/bin/kibana.sh +++ b/src/bin/kibana.sh @@ -15,7 +15,7 @@ done DIR=$(dirname "${SCRIPT}")/.. NODE=${DIR}/node/bin/node -SERVER=${DIR}/src/bin/kibana.js +SERVER=${DIR}/src/server/cli CONFIG_PATH="${DIR}/config/kibana.yml" NODE_ENV="production" exec "${NODE}" ${SERVER} ${@} diff --git a/src/server/config/kibana.yml b/src/config/kibana.yml similarity index 100% rename from src/server/config/kibana.yml rename to src/config/kibana.yml diff --git a/src/dev_server/dev_statics_plugin/index.js b/src/dev_server/dev_statics_plugin/index.js new file mode 100644 index 0000000000000..cf44510142575 --- /dev/null +++ b/src/dev_server/dev_statics_plugin/index.js @@ -0,0 +1,79 @@ +module.exports = function (kibana) { + var path = require('path'); + var glob = require('glob'); + var join = path.join; + var rel = join.bind(null, __dirname); + + var ROOT = rel('../../../'); + var SRC = join(ROOT, 'src'); + var NODE_MODULES = join(ROOT, 'node_modules'); + var APP = join(SRC, 'kibana'); + var TEST = join(ROOT, 'test'); + var istanbul = require('./lib/istanbul'); + var amdWrapper = require('./lib/amd_wrapper'); + var kibanaSrcFilter = require('./lib/kibana_src_filter'); + + return new kibana.Plugin({ + require: ['marvel'], + init: function (server, options) { + server.ext('onPreHandler', istanbul({ root: SRC, displayRoot: SRC, filter: kibanaSrcFilter })); + server.ext('onPreHandler', istanbul({ root: APP, displayRoot: SRC, filter: kibanaSrcFilter })); + + server.route({ + path: '/test/{paths*}', + method: 'GET', + handler: { + directory: { + path: TEST + } + } + }); + + server.route({ + path: '/amd-wrap/{paths*}', + method: 'GET', + handler: amdWrapper({ root: ROOT }) + }); + + server.route({ + path: '/src/{paths*}', + method: 'GET', + handler: { + directory: { + path: SRC + } + } + }); + + server.route({ + path: '/node_modules/{paths*}', + method: 'GET', + handler: { + directory: { + path: NODE_MODULES + } + } + }); + + server.route({ + path: '/specs', + method: 'GET', + handler: function (request, reply) { + var unit = join(ROOT, '/test/unit/'); + glob(join(unit, 'specs/**/*.js'), function (er, files) { + var moduleIds = files + .filter(function (filename) { + return path.basename(filename).charAt(0) !== '_'; + }) + .map(function (filename) { + return path.relative(unit, filename).replace(/\\/g, '/').replace(/\.js$/, ''); + }); + + return reply(moduleIds); + }); + } + }); + } + }); + +}; diff --git a/tasks/utils/dev_statics/lib/amd_wrapper.js b/src/dev_server/dev_statics_plugin/lib/amd_wrapper.js similarity index 100% rename from tasks/utils/dev_statics/lib/amd_wrapper.js rename to src/dev_server/dev_statics_plugin/lib/amd_wrapper.js diff --git a/tasks/utils/dev_statics/lib/istanbul.js b/src/dev_server/dev_statics_plugin/lib/istanbul.js similarity index 100% rename from tasks/utils/dev_statics/lib/istanbul.js rename to src/dev_server/dev_statics_plugin/lib/istanbul.js diff --git a/tasks/utils/dev_statics/lib/kibana_src_filter.js b/src/dev_server/dev_statics_plugin/lib/kibana_src_filter.js similarity index 100% rename from tasks/utils/dev_statics/lib/kibana_src_filter.js rename to src/dev_server/dev_statics_plugin/lib/kibana_src_filter.js diff --git a/src/dev_server/dev_statics_plugin/package.json b/src/dev_server/dev_statics_plugin/package.json new file mode 100644 index 0000000000000..2e6adfb8c3e9b --- /dev/null +++ b/src/dev_server/dev_statics_plugin/package.json @@ -0,0 +1,4 @@ +{ + "name": "dev_statics", + "version": "1.0.0" +} diff --git a/src/dev_server/index.js b/src/dev_server/index.js new file mode 100644 index 0000000000000..d434256e50ecc --- /dev/null +++ b/src/dev_server/index.js @@ -0,0 +1,26 @@ +var _ = require('lodash'); +var join = require('path').join; + +var KbnServer = require('../server'); + +function run(grunt) { + var opt = grunt ? _.bindKey(grunt, 'option') : _.noop; + + return (new KbnServer({ + 'logging.quiet': opt('debug') && opt('verbose'), + 'kibana.server.port': opt('port') || 5601, + 'kibana.pluginPaths': [ + join(__dirname, 'dev_statics_plugin') + ], + 'kibana.pluginScanDirs': [ + join(__dirname, '..', 'plugins') + ] + })) + .listen(); +} + +if (require.main === module) { + run().done(); +} else { + module.exports = run; +} diff --git a/src/kibana/components/setup/_setup_error.js b/src/kibana/components/setup/_setup_error.js deleted file mode 100644 index 0c30cb6b64391..0000000000000 --- a/src/kibana/components/setup/_setup_error.js +++ /dev/null @@ -1,18 +0,0 @@ -define(function (require) { - return function SetupErrorFactory(configFile) { - var _ = require('lodash'); - - function SetupError(template, err) { - // don't override other setup errors - if (err && err instanceof SetupError) return err; - - var err2 = new Error(_.template(template)({ configFile: configFile })); - if (err) { - err2.origError = err; - if (err.stack) err2.stack = err.stack; - } - return err2; - } - return SetupError; - }; -}); diff --git a/src/kibana/components/setup/setup.js b/src/kibana/components/setup/setup.js deleted file mode 100644 index af5e88beb5b35..0000000000000 --- a/src/kibana/components/setup/setup.js +++ /dev/null @@ -1,29 +0,0 @@ -define(function (require) { - var _ = require('lodash'); - var $ = require('jquery'); - - require('components/notify/notify'); - - require('modules').get('components/setup', ['kibana', 'kibana/notify', 'kibana/config']) - .service('kbnSetup', function (Private, Promise, Notifier, es, configFile) { - // setup steps - var checkForEs = Private(require('components/setup/steps/check_for_es')); - var checkEsVersion = Private(require('components/setup/steps/check_es_version')); - var checkForKibanaIndex = Private(require('components/setup/steps/check_for_kibana_index')); - var createKibanaIndex = Private(require('components/setup/steps/create_kibana_index')); - - var notify = new Notifier({ location: 'Setup' }); - - return _.once(function () { - var complete = notify.lifecycle('bootstrap'); - - return checkForEs() - .then(checkEsVersion) - .then(checkForKibanaIndex) - .then(function (exists) { - if (!exists) return createKibanaIndex(); - }) - .then(complete, complete.failure); - }); - }); -}); \ No newline at end of file diff --git a/src/kibana/components/setup/steps/check_es_version.js b/src/kibana/components/setup/steps/check_es_version.js deleted file mode 100644 index 54534043d4c69..0000000000000 --- a/src/kibana/components/setup/steps/check_es_version.js +++ /dev/null @@ -1,43 +0,0 @@ -define(function (require) { - return function CheckEsVersionFn(Private, es, configFile, Notifier, minimumElasticsearchVersion) { - - var _ = require('lodash'); - var versionmath = require('utils/versionmath'); - var esBool = require('utils/esBool'); - var notify = new Notifier({ - location: 'Setup: Elasticsearch version check' - }); - - return notify.timed(function checkEsVersion() { - var SetupError = Private(require('components/setup/_setup_error')); - - return es.nodes.info() - .then(function (info) { - var badNodes = _.filter(info.nodes, function (node) { - // remove client nodes (Logstash) - var isClient = _.get(node, 'attributes.client'); - if (isClient != null && esBool(isClient) === true) { - return false; - } - - // remove nodes that are gte the min version - var v = node.version.split('-')[0]; - return !versionmath.gte(minimumElasticsearchVersion, v); - }); - - if (!badNodes.length) return true; - - var badNodeNames = badNodes.map(function (node) { - return 'Elasticsearch v' + node.version + ' @ ' + node.http_address + ' (' + node.ip + ')'; - }); - - throw SetupError( - 'This version of Kibana requires Elasticsearch ' + - minimumElasticsearchVersion + ' or higher on all nodes. ' + - 'I found the following incompatible nodes in your cluster: \n\n' + - badNodeNames.join('\n') - ); - }); - }); - }; -}); \ No newline at end of file diff --git a/src/kibana/components/setup/steps/check_for_es.js b/src/kibana/components/setup/steps/check_for_es.js deleted file mode 100644 index 951f52543281e..0000000000000 --- a/src/kibana/components/setup/steps/check_for_es.js +++ /dev/null @@ -1,21 +0,0 @@ -define(function (require) { - return function checkForEsFunction(Private, Notifier, es, configFile) { - var SetupError = Private(require('components/setup/_setup_error')); - var notify = new Notifier({ location: 'Setup: Elasticsearch check' }); - - return function checkForES() { - var complete = notify.lifecycle('es check'); - return es.info({ - method: 'GET' - }) - .catch(function (err) { - if (err.body && err.body.message) { - throw new SetupError(err.body.message, err); - } else { - throw new SetupError('Unknown error while connecting to Elasticsearch', err); - } - }) - .then(complete, complete.failure); - }; - }; -}); \ No newline at end of file diff --git a/src/kibana/components/setup/steps/check_for_kibana_index.js b/src/kibana/components/setup/steps/check_for_kibana_index.js deleted file mode 100644 index ca962e372cd59..0000000000000 --- a/src/kibana/components/setup/steps/check_for_kibana_index.js +++ /dev/null @@ -1,17 +0,0 @@ -define(function (require) { - return function CheckForKibanaIndexFn(Private, es, Notifier, configFile) { - var SetupError = Private(require('components/setup/_setup_error')); - var notify = new Notifier({ location: 'Setup: Kibana index check' }); - - return function checkForKibana() { - var complete = notify.lifecycle('kibana index check'); - return es.indices.exists({ - index: configFile.kibana_index - }) - .catch(function (err) { - throw new SetupError('Unable to check for Kibana index "<%= configFile.kibana_index %>"', err); - }) - .then(complete, complete.failure); - }; - }; -}); diff --git a/src/kibana/components/setup/steps/create_kibana_index.js b/src/kibana/components/setup/steps/create_kibana_index.js deleted file mode 100644 index 840984c57f07d..0000000000000 --- a/src/kibana/components/setup/steps/create_kibana_index.js +++ /dev/null @@ -1,31 +0,0 @@ -define(function (require) { - return function CreateKibanaIndexFn(Private, es, configFile, Notifier) { - return function createKibanaIndex() { - var notify = new Notifier({ location: 'Setup: Kibana Index Creation' }); - var complete = notify.lifecycle('kibana index creation'); - var SetupError = Private(require('components/setup/_setup_error')); - - return es.indices.create({ - index: configFile.kibana_index, - body: { - settings: { - number_of_shards : 1 - } - } - }) - .catch(function (err) { - throw new SetupError('Unable to create Kibana index "<%= configFile.kibana_index %>"', err); - }) - .then(function () { - return es.cluster.health({ - waitForStatus: 'yellow', - index: configFile.kibana_index - }) - .catch(function (err) { - throw new SetupError('Waiting for Kibana index "<%= configFile.kibana_index %>" to come online failed', err); - }); - }) - .then(complete, complete.failure); - }; - }; -}); diff --git a/src/kibana/index.html b/src/kibana/index.html deleted file mode 100644 index 9ae799f865355..0000000000000 --- a/src/kibana/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - Kibana 4 - - - - - - - - - - - - - - - diff --git a/src/kibana/plugins/PLAN.md b/src/plugins/PLAN.md similarity index 95% rename from src/kibana/plugins/PLAN.md rename to src/plugins/PLAN.md index 72e011fb18a0e..8e8394683171a 100644 --- a/src/kibana/plugins/PLAN.md +++ b/src/plugins/PLAN.md @@ -81,17 +81,19 @@ module.exports = function (kibana) { icon: 'plugins/my-kibana-plugins/scratchpad/logo.png', // when you want to run your app, which module should we load? - main: 'plugins/my-kibana-plugins/scratchpad/controller.js', + main: 'plugins/my-kibana-plugins/scratchpad/controller', // what modules from other plugins does your app use? uses: [ - 'plugins/*/favorites' + 'visTypes', + 'spyModes', + 'fieldFormats' ] }, - // visualizations, fieldForamtters, and other module types are exposed + // visTypes, fieldForamtters, and other module types are exposed // by simply listing their module ids - visualizations: [ + visTypes: [ 'plugins/my-kibana-plugins/pie/PieChart', 'plugins/my-kibana-plugins/table/table' ] diff --git a/src/kibana/plugins/README.txt b/src/plugins/README.txt similarity index 100% rename from src/kibana/plugins/README.txt rename to src/plugins/README.txt diff --git a/src/plugins/elasticsearch/index.js b/src/plugins/elasticsearch/index.js new file mode 100644 index 0000000000000..0d0cd534a4d7a --- /dev/null +++ b/src/plugins/elasticsearch/index.js @@ -0,0 +1,43 @@ +module.exports = function (kibana) { + var healthCheck = require('./lib/health_check'); + var exposeClient = require('./lib/expose_client'); + var createProxy = require('./lib/create_proxy'); + + return new kibana.Plugin({ + init: function (server, options) { + var config = server.config(); + + // Expose the client to the server + exposeClient(server); + + + createProxy(server, 'GET', '/elasticsearch/{paths*}'); + createProxy(server, 'POST', '/elasticsearch/_mget'); + createProxy(server, 'POST', '/elasticsearch/_msearch'); + + function noBulkCheck(request, reply) { + if (/\/_bulk/.test(request.path)) { + return reply({ + error: 'You can not send _bulk requests to this interface.' + }).code(400).takeover(); + } + return reply.continue(); + } + + createProxy( + server, + ['PUT', 'POST', 'DELETE'], + '/elasticsearch/' + config.get('kibana.index') + '/{paths*}', + { + prefix: '/' + config.get('kibana.index'), + config: { pre: [ noBulkCheck ] } + } + ); + + // Set up the health check service and start it. + healthCheck(this, server).start(); + + } + }); + +}; diff --git a/src/server/plugins/elasticsearch/lib/check_es_version.js b/src/plugins/elasticsearch/lib/check_es_version.js similarity index 100% rename from src/server/plugins/elasticsearch/lib/check_es_version.js rename to src/plugins/elasticsearch/lib/check_es_version.js diff --git a/src/server/plugins/elasticsearch/lib/create_agent.js b/src/plugins/elasticsearch/lib/create_agent.js similarity index 100% rename from src/server/plugins/elasticsearch/lib/create_agent.js rename to src/plugins/elasticsearch/lib/create_agent.js diff --git a/src/server/plugins/elasticsearch/lib/create_kibana_index.js b/src/plugins/elasticsearch/lib/create_kibana_index.js similarity index 100% rename from src/server/plugins/elasticsearch/lib/create_kibana_index.js rename to src/plugins/elasticsearch/lib/create_kibana_index.js diff --git a/src/server/plugins/elasticsearch/lib/create_proxy.js b/src/plugins/elasticsearch/lib/create_proxy.js similarity index 100% rename from src/server/plugins/elasticsearch/lib/create_proxy.js rename to src/plugins/elasticsearch/lib/create_proxy.js diff --git a/src/server/plugins/elasticsearch/lib/es_bool.js b/src/plugins/elasticsearch/lib/es_bool.js similarity index 100% rename from src/server/plugins/elasticsearch/lib/es_bool.js rename to src/plugins/elasticsearch/lib/es_bool.js diff --git a/src/server/plugins/elasticsearch/lib/expose_client.js b/src/plugins/elasticsearch/lib/expose_client.js similarity index 100% rename from src/server/plugins/elasticsearch/lib/expose_client.js rename to src/plugins/elasticsearch/lib/expose_client.js diff --git a/src/server/plugins/elasticsearch/lib/health_check.js b/src/plugins/elasticsearch/lib/health_check.js similarity index 100% rename from src/server/plugins/elasticsearch/lib/health_check.js rename to src/plugins/elasticsearch/lib/health_check.js diff --git a/src/server/plugins/elasticsearch/lib/is_upgradeable.js b/src/plugins/elasticsearch/lib/is_upgradeable.js similarity index 100% rename from src/server/plugins/elasticsearch/lib/is_upgradeable.js rename to src/plugins/elasticsearch/lib/is_upgradeable.js diff --git a/src/server/plugins/elasticsearch/lib/map_uri.js b/src/plugins/elasticsearch/lib/map_uri.js similarity index 100% rename from src/server/plugins/elasticsearch/lib/map_uri.js rename to src/plugins/elasticsearch/lib/map_uri.js diff --git a/src/server/plugins/elasticsearch/lib/migrate_config.js b/src/plugins/elasticsearch/lib/migrate_config.js similarity index 100% rename from src/server/plugins/elasticsearch/lib/migrate_config.js rename to src/plugins/elasticsearch/lib/migrate_config.js diff --git a/src/server/plugins/elasticsearch/lib/setup_error.js b/src/plugins/elasticsearch/lib/setup_error.js similarity index 100% rename from src/server/plugins/elasticsearch/lib/setup_error.js rename to src/plugins/elasticsearch/lib/setup_error.js diff --git a/src/server/plugins/elasticsearch/lib/upgrade_config.js b/src/plugins/elasticsearch/lib/upgrade_config.js similarity index 100% rename from src/server/plugins/elasticsearch/lib/upgrade_config.js rename to src/plugins/elasticsearch/lib/upgrade_config.js diff --git a/src/server/plugins/elasticsearch/lib/validate.js b/src/plugins/elasticsearch/lib/validate.js similarity index 100% rename from src/server/plugins/elasticsearch/lib/validate.js rename to src/plugins/elasticsearch/lib/validate.js diff --git a/src/server/plugins/elasticsearch/lib/version_math.js b/src/plugins/elasticsearch/lib/version_math.js similarity index 100% rename from src/server/plugins/elasticsearch/lib/version_math.js rename to src/plugins/elasticsearch/lib/version_math.js diff --git a/src/plugins/elasticsearch/package.json b/src/plugins/elasticsearch/package.json new file mode 100644 index 0000000000000..7f441251c3036 --- /dev/null +++ b/src/plugins/elasticsearch/package.json @@ -0,0 +1,4 @@ +{ + "name": "elasticsearch", + "version": "1.0.0" +} diff --git a/src/plugins/kbn-vislib-vis-types/index.js b/src/plugins/kbn-vislib-vis-types/index.js new file mode 100644 index 0000000000000..c6308ea47d940 --- /dev/null +++ b/src/plugins/kbn-vislib-vis-types/index.js @@ -0,0 +1,13 @@ +module.exports = function (kibana) { + + return new kibana.Plugin({ + + exports: { + visTypes: [ + 'plugins/kbn-vislib-vis-types/index' + ] + } + + }); + +}; diff --git a/src/plugins/kbn-vislib-vis-types/package.json b/src/plugins/kbn-vislib-vis-types/package.json new file mode 100644 index 0000000000000..9c819cd5d4538 --- /dev/null +++ b/src/plugins/kbn-vislib-vis-types/package.json @@ -0,0 +1,4 @@ +{ + "name": "kbn-vislib-vis-types", + "version": "1.0.0" +} diff --git a/src/kibana/plugins/kbn_vislib_vis_types/area.js b/src/plugins/kbn-vislib-vis-types/public/area.js similarity index 100% rename from src/kibana/plugins/kbn_vislib_vis_types/area.js rename to src/plugins/kbn-vislib-vis-types/public/area.js diff --git a/src/kibana/plugins/kbn_vislib_vis_types/controls/line_interpolation_option.html b/src/plugins/kbn-vislib-vis-types/public/controls/line_interpolation_option.html similarity index 100% rename from src/kibana/plugins/kbn_vislib_vis_types/controls/line_interpolation_option.html rename to src/plugins/kbn-vislib-vis-types/public/controls/line_interpolation_option.html diff --git a/src/kibana/plugins/kbn_vislib_vis_types/controls/line_interpolation_option.js b/src/plugins/kbn-vislib-vis-types/public/controls/line_interpolation_option.js similarity index 100% rename from src/kibana/plugins/kbn_vislib_vis_types/controls/line_interpolation_option.js rename to src/plugins/kbn-vislib-vis-types/public/controls/line_interpolation_option.js diff --git a/src/kibana/plugins/kbn_vislib_vis_types/controls/point_series_options.html b/src/plugins/kbn-vislib-vis-types/public/controls/point_series_options.html similarity index 100% rename from src/kibana/plugins/kbn_vislib_vis_types/controls/point_series_options.html rename to src/plugins/kbn-vislib-vis-types/public/controls/point_series_options.html diff --git a/src/kibana/plugins/kbn_vislib_vis_types/controls/point_series_options.js b/src/plugins/kbn-vislib-vis-types/public/controls/point_series_options.js similarity index 90% rename from src/kibana/plugins/kbn_vislib_vis_types/controls/point_series_options.js rename to src/plugins/kbn-vislib-vis-types/public/controls/point_series_options.js index bd5a2dab59b29..62f38622642a3 100644 --- a/src/kibana/plugins/kbn_vislib_vis_types/controls/point_series_options.js +++ b/src/plugins/kbn-vislib-vis-types/public/controls/point_series_options.js @@ -2,7 +2,7 @@ define(function (require) { var _ = require('lodash'); var $ = require('jquery'); var module = require('modules').get('kibana'); - require('directives/inequality'); + require('ui/directives/inequality'); module.directive('pointSeriesOptions', function ($parse, $compile) { return { diff --git a/src/kibana/plugins/kbn_vislib_vis_types/controls/radius_ratio_option.html b/src/plugins/kbn-vislib-vis-types/public/controls/radius_ratio_option.html similarity index 100% rename from src/kibana/plugins/kbn_vislib_vis_types/controls/radius_ratio_option.html rename to src/plugins/kbn-vislib-vis-types/public/controls/radius_ratio_option.html diff --git a/src/kibana/plugins/kbn_vislib_vis_types/controls/rows_or_columns.html b/src/plugins/kbn-vislib-vis-types/public/controls/rows_or_columns.html similarity index 100% rename from src/kibana/plugins/kbn_vislib_vis_types/controls/rows_or_columns.html rename to src/plugins/kbn-vislib-vis-types/public/controls/rows_or_columns.html diff --git a/src/kibana/plugins/kbn_vislib_vis_types/controls/vislib_basic_options.html b/src/plugins/kbn-vislib-vis-types/public/controls/vislib_basic_options.html similarity index 100% rename from src/kibana/plugins/kbn_vislib_vis_types/controls/vislib_basic_options.html rename to src/plugins/kbn-vislib-vis-types/public/controls/vislib_basic_options.html diff --git a/src/kibana/plugins/kbn_vislib_vis_types/controls/vislib_basic_options.js b/src/plugins/kbn-vislib-vis-types/public/controls/vislib_basic_options.js similarity index 100% rename from src/kibana/plugins/kbn_vislib_vis_types/controls/vislib_basic_options.js rename to src/plugins/kbn-vislib-vis-types/public/controls/vislib_basic_options.js diff --git a/src/kibana/plugins/kbn_vislib_vis_types/editors/area.html b/src/plugins/kbn-vislib-vis-types/public/editors/area.html similarity index 100% rename from src/kibana/plugins/kbn_vislib_vis_types/editors/area.html rename to src/plugins/kbn-vislib-vis-types/public/editors/area.html diff --git a/src/kibana/plugins/kbn_vislib_vis_types/editors/histogram.html b/src/plugins/kbn-vislib-vis-types/public/editors/histogram.html similarity index 100% rename from src/kibana/plugins/kbn_vislib_vis_types/editors/histogram.html rename to src/plugins/kbn-vislib-vis-types/public/editors/histogram.html diff --git a/src/kibana/plugins/kbn_vislib_vis_types/editors/line.html b/src/plugins/kbn-vislib-vis-types/public/editors/line.html similarity index 100% rename from src/kibana/plugins/kbn_vislib_vis_types/editors/line.html rename to src/plugins/kbn-vislib-vis-types/public/editors/line.html diff --git a/src/kibana/plugins/kbn_vislib_vis_types/editors/pie.html b/src/plugins/kbn-vislib-vis-types/public/editors/pie.html similarity index 100% rename from src/kibana/plugins/kbn_vislib_vis_types/editors/pie.html rename to src/plugins/kbn-vislib-vis-types/public/editors/pie.html diff --git a/src/kibana/plugins/kbn_vislib_vis_types/editors/tile_map.html b/src/plugins/kbn-vislib-vis-types/public/editors/tile_map.html similarity index 100% rename from src/kibana/plugins/kbn_vislib_vis_types/editors/tile_map.html rename to src/plugins/kbn-vislib-vis-types/public/editors/tile_map.html diff --git a/src/kibana/plugins/kbn_vislib_vis_types/histogram.js b/src/plugins/kbn-vislib-vis-types/public/histogram.js similarity index 100% rename from src/kibana/plugins/kbn_vislib_vis_types/histogram.js rename to src/plugins/kbn-vislib-vis-types/public/histogram.js diff --git a/src/kibana/plugins/kbn_vislib_vis_types/index.js b/src/plugins/kbn-vislib-vis-types/public/index.js similarity index 100% rename from src/kibana/plugins/kbn_vislib_vis_types/index.js rename to src/plugins/kbn-vislib-vis-types/public/index.js diff --git a/src/kibana/plugins/kbn_vislib_vis_types/line.js b/src/plugins/kbn-vislib-vis-types/public/line.js similarity index 100% rename from src/kibana/plugins/kbn_vislib_vis_types/line.js rename to src/plugins/kbn-vislib-vis-types/public/line.js diff --git a/src/kibana/plugins/kbn_vislib_vis_types/pie.js b/src/plugins/kbn-vislib-vis-types/public/pie.js similarity index 100% rename from src/kibana/plugins/kbn_vislib_vis_types/pie.js rename to src/plugins/kbn-vislib-vis-types/public/pie.js diff --git a/src/kibana/plugins/kbn_vislib_vis_types/tileMap.js b/src/plugins/kbn-vislib-vis-types/public/tileMap.js similarity index 100% rename from src/kibana/plugins/kbn_vislib_vis_types/tileMap.js rename to src/plugins/kbn-vislib-vis-types/public/tileMap.js diff --git a/src/plugins/kibana/index.js b/src/plugins/kibana/index.js new file mode 100644 index 0000000000000..5d1a6e05ce73b --- /dev/null +++ b/src/plugins/kibana/index.js @@ -0,0 +1,20 @@ +module.exports = function (kibana) { + + return new kibana.Plugin({ + + exports: { + app: { + title: 'Kibana', + description: 'the kibana you know and love', + icon: 'images/logo.png', + main: 'plugins/kibana/index', + uses: [ + 'visualizations', + 'spyModes' + ] + } + } + + }); + +}; diff --git a/src/plugins/kibana/package.json b/src/plugins/kibana/package.json new file mode 100644 index 0000000000000..4ff821e670ce7 --- /dev/null +++ b/src/plugins/kibana/package.json @@ -0,0 +1,4 @@ +{ + "name": "kibana", + "version": "1.0.0" +} diff --git a/src/kibana/.jshintrc b/src/plugins/kibana/public/.jshintrc similarity index 95% rename from src/kibana/.jshintrc rename to src/plugins/kibana/public/.jshintrc index 01e95284c83cc..483b2410e7ba7 100644 --- a/src/kibana/.jshintrc +++ b/src/plugins/kibana/public/.jshintrc @@ -1,3 +1,3 @@ { "extends": "../../.jshintrc.browser" -} \ No newline at end of file +} diff --git a/src/kibana/plugins/kibana/_apps.js b/src/plugins/kibana/public/_apps.js similarity index 100% rename from src/kibana/plugins/kibana/_apps.js rename to src/plugins/kibana/public/_apps.js diff --git a/src/kibana/plugins/kibana/_init.js b/src/plugins/kibana/public/_init.js similarity index 100% rename from src/kibana/plugins/kibana/_init.js rename to src/plugins/kibana/public/_init.js diff --git a/src/kibana/plugins/kibana/_timepicker.html b/src/plugins/kibana/public/_timepicker.html similarity index 100% rename from src/kibana/plugins/kibana/_timepicker.html rename to src/plugins/kibana/public/_timepicker.html diff --git a/src/kibana/plugins/kibana/_timepicker.js b/src/plugins/kibana/public/_timepicker.js similarity index 100% rename from src/kibana/plugins/kibana/_timepicker.js rename to src/plugins/kibana/public/_timepicker.js diff --git a/src/kibana/plugins/dashboard/components/panel/lib/load_panel.js b/src/plugins/kibana/public/dashboard/components/panel/lib/load_panel.js similarity index 100% rename from src/kibana/plugins/dashboard/components/panel/lib/load_panel.js rename to src/plugins/kibana/public/dashboard/components/panel/lib/load_panel.js diff --git a/src/kibana/plugins/dashboard/components/panel/lib/search.js b/src/plugins/kibana/public/dashboard/components/panel/lib/search.js similarity index 100% rename from src/kibana/plugins/dashboard/components/panel/lib/search.js rename to src/plugins/kibana/public/dashboard/components/panel/lib/search.js diff --git a/src/kibana/plugins/dashboard/components/panel/lib/visualization.js b/src/plugins/kibana/public/dashboard/components/panel/lib/visualization.js similarity index 100% rename from src/kibana/plugins/dashboard/components/panel/lib/visualization.js rename to src/plugins/kibana/public/dashboard/components/panel/lib/visualization.js diff --git a/src/kibana/plugins/dashboard/components/panel/panel.html b/src/plugins/kibana/public/dashboard/components/panel/panel.html similarity index 100% rename from src/kibana/plugins/dashboard/components/panel/panel.html rename to src/plugins/kibana/public/dashboard/components/panel/panel.html diff --git a/src/kibana/plugins/dashboard/components/panel/panel.js b/src/plugins/kibana/public/dashboard/components/panel/panel.js similarity index 100% rename from src/kibana/plugins/dashboard/components/panel/panel.js rename to src/plugins/kibana/public/dashboard/components/panel/panel.js diff --git a/src/kibana/plugins/dashboard/directives/grid.js b/src/plugins/kibana/public/dashboard/directives/grid.js similarity index 100% rename from src/kibana/plugins/dashboard/directives/grid.js rename to src/plugins/kibana/public/dashboard/directives/grid.js diff --git a/src/kibana/plugins/dashboard/index.html b/src/plugins/kibana/public/dashboard/index.html similarity index 100% rename from src/kibana/plugins/dashboard/index.html rename to src/plugins/kibana/public/dashboard/index.html diff --git a/src/kibana/plugins/dashboard/index.js b/src/plugins/kibana/public/dashboard/index.js similarity index 99% rename from src/kibana/plugins/dashboard/index.js rename to src/plugins/kibana/public/dashboard/index.js index 1dfe49852be9c..4455289e54cb9 100644 --- a/src/kibana/plugins/dashboard/index.js +++ b/src/plugins/kibana/public/dashboard/index.js @@ -4,7 +4,7 @@ define(function (require) { var angular = require('angular'); var ConfigTemplate = require('utils/config_template'); - require('directives/config'); + require('ui/directives/config'); require('components/courier/courier'); require('components/config/config'); require('components/notify/notify'); diff --git a/src/kibana/plugins/dashboard/partials/load_dashboard.html b/src/plugins/kibana/public/dashboard/partials/load_dashboard.html similarity index 100% rename from src/kibana/plugins/dashboard/partials/load_dashboard.html rename to src/plugins/kibana/public/dashboard/partials/load_dashboard.html diff --git a/src/kibana/plugins/dashboard/partials/pick_visualization.html b/src/plugins/kibana/public/dashboard/partials/pick_visualization.html similarity index 100% rename from src/kibana/plugins/dashboard/partials/pick_visualization.html rename to src/plugins/kibana/public/dashboard/partials/pick_visualization.html diff --git a/src/kibana/plugins/dashboard/partials/save_dashboard.html b/src/plugins/kibana/public/dashboard/partials/save_dashboard.html similarity index 100% rename from src/kibana/plugins/dashboard/partials/save_dashboard.html rename to src/plugins/kibana/public/dashboard/partials/save_dashboard.html diff --git a/src/kibana/plugins/dashboard/partials/share.html b/src/plugins/kibana/public/dashboard/partials/share.html similarity index 100% rename from src/kibana/plugins/dashboard/partials/share.html rename to src/plugins/kibana/public/dashboard/partials/share.html diff --git a/src/kibana/plugins/dashboard/services/_saved_dashboard.js b/src/plugins/kibana/public/dashboard/services/_saved_dashboard.js similarity index 100% rename from src/kibana/plugins/dashboard/services/_saved_dashboard.js rename to src/plugins/kibana/public/dashboard/services/_saved_dashboard.js diff --git a/src/kibana/plugins/dashboard/services/saved_dashboards.js b/src/plugins/kibana/public/dashboard/services/saved_dashboards.js similarity index 100% rename from src/kibana/plugins/dashboard/services/saved_dashboards.js rename to src/plugins/kibana/public/dashboard/services/saved_dashboards.js diff --git a/src/kibana/plugins/dashboard/styles/main.less b/src/plugins/kibana/public/dashboard/styles/main.less similarity index 100% rename from src/kibana/plugins/dashboard/styles/main.less rename to src/plugins/kibana/public/dashboard/styles/main.less diff --git a/src/kibana/plugins/discover/_hit_sort_fn.js b/src/plugins/kibana/public/discover/_hit_sort_fn.js similarity index 100% rename from src/kibana/plugins/discover/_hit_sort_fn.js rename to src/plugins/kibana/public/discover/_hit_sort_fn.js diff --git a/src/kibana/plugins/discover/components/field_chooser/discover_field.html b/src/plugins/kibana/public/discover/components/field_chooser/discover_field.html similarity index 100% rename from src/kibana/plugins/discover/components/field_chooser/discover_field.html rename to src/plugins/kibana/public/discover/components/field_chooser/discover_field.html diff --git a/src/kibana/plugins/discover/components/field_chooser/discover_field.js b/src/plugins/kibana/public/discover/components/field_chooser/discover_field.js similarity index 97% rename from src/kibana/plugins/discover/components/field_chooser/discover_field.js rename to src/plugins/kibana/public/discover/components/field_chooser/discover_field.js index c846f33744222..710f5485486b0 100644 --- a/src/kibana/plugins/discover/components/field_chooser/discover_field.js +++ b/src/plugins/kibana/public/discover/components/field_chooser/discover_field.js @@ -4,8 +4,8 @@ define(function (require) { var html = require('text!plugins/discover/components/field_chooser/discover_field.html'); var _ = require('lodash'); - require('directives/css_truncate'); - require('directives/field_name'); + require('ui/directives/css_truncate'); + require('ui/directives/field_name'); app.directive('discoverField', function ($compile) { diff --git a/src/kibana/plugins/discover/components/field_chooser/field_chooser.html b/src/plugins/kibana/public/discover/components/field_chooser/field_chooser.html similarity index 100% rename from src/kibana/plugins/discover/components/field_chooser/field_chooser.html rename to src/plugins/kibana/public/discover/components/field_chooser/field_chooser.html diff --git a/src/kibana/plugins/discover/components/field_chooser/field_chooser.js b/src/plugins/kibana/public/discover/components/field_chooser/field_chooser.js similarity index 98% rename from src/kibana/plugins/discover/components/field_chooser/field_chooser.js rename to src/plugins/kibana/public/discover/components/field_chooser/field_chooser.js index f9813c5b46026..76360e72c4d3c 100644 --- a/src/kibana/plugins/discover/components/field_chooser/field_chooser.js +++ b/src/plugins/kibana/public/discover/components/field_chooser/field_chooser.js @@ -1,9 +1,9 @@ define(function (require) { var app = require('modules').get('apps/discover'); - require('directives/css_truncate'); - require('directives/field_name'); - require('filters/unique'); + require('ui/directives/css_truncate'); + require('ui/directives/field_name'); + require('ui/filters/unique'); require('plugins/discover/components/field_chooser/discover_field'); app.directive('discFieldChooser', function ($location, globalState, config, $route, Private) { diff --git a/src/kibana/plugins/discover/components/field_chooser/lib/detail_views/string.html b/src/plugins/kibana/public/discover/components/field_chooser/lib/detail_views/string.html similarity index 100% rename from src/kibana/plugins/discover/components/field_chooser/lib/detail_views/string.html rename to src/plugins/kibana/public/discover/components/field_chooser/lib/detail_views/string.html diff --git a/src/kibana/plugins/discover/components/field_chooser/lib/field_calculator.js b/src/plugins/kibana/public/discover/components/field_chooser/lib/field_calculator.js similarity index 100% rename from src/kibana/plugins/discover/components/field_chooser/lib/field_calculator.js rename to src/plugins/kibana/public/discover/components/field_chooser/lib/field_calculator.js diff --git a/src/kibana/plugins/discover/controllers/discover.js b/src/plugins/kibana/public/discover/controllers/discover.js similarity index 99% rename from src/kibana/plugins/discover/controllers/discover.js rename to src/plugins/kibana/public/discover/controllers/discover.js index 4ee38200599d8..fa5c7db7e8860 100644 --- a/src/kibana/plugins/discover/controllers/discover.js +++ b/src/plugins/kibana/public/discover/controllers/discover.js @@ -11,9 +11,9 @@ define(function (require) { require('components/notify/notify'); require('components/timepicker/timepicker'); require('components/fixedScroll'); - require('directives/validate_json'); + require('ui/directives/validate_json'); require('components/validate_query/validate_query'); - require('filters/moment'); + require('ui/filters/moment'); require('components/courier/courier'); require('components/index_patterns/index_patterns'); require('components/state_management/app_state'); diff --git a/src/kibana/plugins/discover/directives/timechart.js b/src/plugins/kibana/public/discover/directives/timechart.js similarity index 100% rename from src/kibana/plugins/discover/directives/timechart.js rename to src/plugins/kibana/public/discover/directives/timechart.js diff --git a/src/kibana/plugins/discover/index.html b/src/plugins/kibana/public/discover/index.html similarity index 100% rename from src/kibana/plugins/discover/index.html rename to src/plugins/kibana/public/discover/index.html diff --git a/src/kibana/plugins/discover/index.js b/src/plugins/kibana/public/discover/index.js similarity index 100% rename from src/kibana/plugins/discover/index.js rename to src/plugins/kibana/public/discover/index.js diff --git a/src/kibana/plugins/discover/partials/load_search.html b/src/plugins/kibana/public/discover/partials/load_search.html similarity index 100% rename from src/kibana/plugins/discover/partials/load_search.html rename to src/plugins/kibana/public/discover/partials/load_search.html diff --git a/src/kibana/plugins/discover/partials/save_search.html b/src/plugins/kibana/public/discover/partials/save_search.html similarity index 100% rename from src/kibana/plugins/discover/partials/save_search.html rename to src/plugins/kibana/public/discover/partials/save_search.html diff --git a/src/kibana/plugins/discover/saved_searches/_saved_search.js b/src/plugins/kibana/public/discover/saved_searches/_saved_search.js similarity index 100% rename from src/kibana/plugins/discover/saved_searches/_saved_search.js rename to src/plugins/kibana/public/discover/saved_searches/_saved_search.js diff --git a/src/kibana/plugins/discover/saved_searches/saved_searches.js b/src/plugins/kibana/public/discover/saved_searches/saved_searches.js similarity index 100% rename from src/kibana/plugins/discover/saved_searches/saved_searches.js rename to src/plugins/kibana/public/discover/saved_searches/saved_searches.js diff --git a/src/kibana/plugins/discover/styles/main.less b/src/plugins/kibana/public/discover/styles/main.less similarity index 100% rename from src/kibana/plugins/discover/styles/main.less rename to src/plugins/kibana/public/discover/styles/main.less diff --git a/src/kibana/plugins/doc/controllers/doc.js b/src/plugins/kibana/public/doc/controllers/doc.js similarity index 100% rename from src/kibana/plugins/doc/controllers/doc.js rename to src/plugins/kibana/public/doc/controllers/doc.js diff --git a/src/kibana/plugins/doc/index.html b/src/plugins/kibana/public/doc/index.html similarity index 100% rename from src/kibana/plugins/doc/index.html rename to src/plugins/kibana/public/doc/index.html diff --git a/src/kibana/plugins/doc/index.js b/src/plugins/kibana/public/doc/index.js similarity index 100% rename from src/kibana/plugins/doc/index.js rename to src/plugins/kibana/public/doc/index.js diff --git a/src/kibana/plugins/kibana/index.js b/src/plugins/kibana/public/index.js similarity index 60% rename from src/kibana/plugins/kibana/index.js rename to src/plugins/kibana/public/index.js index 4f1d6ca4ecad2..3e4ef11d98a78 100644 --- a/src/kibana/plugins/kibana/index.js +++ b/src/plugins/kibana/public/index.js @@ -1,30 +1,4 @@ define(function (require) { - // base angular components/directives we expect to be loaded - require('angular-bootstrap'); - require('services/private'); - require('components/config/config'); - require('components/courier/courier'); - require('components/filter_bar/filter_bar'); - require('components/notify/notify'); - require('components/persisted_log/persisted_log'); - require('components/state_management/app_state'); - require('components/storage/storage'); - require('components/url/url'); - require('components/doc_title/doc_title'); - require('components/tooltip/tooltip'); - require('components/style_compile/style_compile'); - require('components/watch_multi'); - require('components/bind'); - require('components/listen'); - require('components/fancy_forms/fancy_forms'); - require('components/stringify/register'); - require('directives/click_focus'); - require('directives/info'); - require('directives/spinner'); - require('directives/paginate'); - require('directives/pretty_duration'); - require('directives/rows'); - var Notifier = require('components/notify/_notifier'); // ensure that the kibana module requires ui.bootstrap diff --git a/src/kibana/plugins/kibana/kibana.html b/src/plugins/kibana/public/kibana.html similarity index 100% rename from src/kibana/plugins/kibana/kibana.html rename to src/plugins/kibana/public/kibana.html diff --git a/src/kibana/plugins/settings/app.html b/src/plugins/kibana/public/settings/public/app.html similarity index 100% rename from src/kibana/plugins/settings/app.html rename to src/plugins/kibana/public/settings/public/app.html diff --git a/src/kibana/plugins/settings/index.js b/src/plugins/kibana/public/settings/public/index.js similarity index 96% rename from src/kibana/plugins/settings/index.js rename to src/plugins/kibana/public/settings/public/index.js index 4d1b2a30b1a21..740547b928ec7 100644 --- a/src/kibana/plugins/settings/index.js +++ b/src/plugins/kibana/public/settings/public/index.js @@ -2,7 +2,7 @@ define(function (require, module, exports) { var _ = require('lodash'); require('css!plugins/settings/styles/main.css'); - require('filters/start_from'); + require('ui/filters/start_from'); require('routes') .when('/settings', { diff --git a/src/kibana/plugins/settings/saved_object_registry.js b/src/plugins/kibana/public/settings/public/saved_object_registry.js similarity index 100% rename from src/kibana/plugins/settings/saved_object_registry.js rename to src/plugins/kibana/public/settings/public/saved_object_registry.js diff --git a/src/kibana/plugins/settings/sections/about/barcode.svg b/src/plugins/kibana/public/settings/public/sections/about/barcode.svg similarity index 100% rename from src/kibana/plugins/settings/sections/about/barcode.svg rename to src/plugins/kibana/public/settings/public/sections/about/barcode.svg diff --git a/src/kibana/plugins/settings/sections/about/index.html b/src/plugins/kibana/public/settings/public/sections/about/index.html similarity index 100% rename from src/kibana/plugins/settings/sections/about/index.html rename to src/plugins/kibana/public/settings/public/sections/about/index.html diff --git a/src/kibana/plugins/settings/sections/about/index.js b/src/plugins/kibana/public/settings/public/sections/about/index.js similarity index 100% rename from src/kibana/plugins/settings/sections/about/index.js rename to src/plugins/kibana/public/settings/public/sections/about/index.js diff --git a/src/kibana/plugins/settings/sections/advanced/advanced_row.html b/src/plugins/kibana/public/settings/public/sections/advanced/advanced_row.html similarity index 100% rename from src/kibana/plugins/settings/sections/advanced/advanced_row.html rename to src/plugins/kibana/public/settings/public/sections/advanced/advanced_row.html diff --git a/src/kibana/plugins/settings/sections/advanced/advanced_row.js b/src/plugins/kibana/public/settings/public/sections/advanced/advanced_row.js similarity index 100% rename from src/kibana/plugins/settings/sections/advanced/advanced_row.js rename to src/plugins/kibana/public/settings/public/sections/advanced/advanced_row.js diff --git a/src/kibana/plugins/settings/sections/advanced/index.html b/src/plugins/kibana/public/settings/public/sections/advanced/index.html similarity index 100% rename from src/kibana/plugins/settings/sections/advanced/index.html rename to src/plugins/kibana/public/settings/public/sections/advanced/index.html diff --git a/src/kibana/plugins/settings/sections/advanced/index.js b/src/plugins/kibana/public/settings/public/sections/advanced/index.js similarity index 100% rename from src/kibana/plugins/settings/sections/advanced/index.js rename to src/plugins/kibana/public/settings/public/sections/advanced/index.js diff --git a/src/kibana/plugins/settings/sections/advanced/lib/get_val_type.js b/src/plugins/kibana/public/settings/public/sections/advanced/lib/get_val_type.js similarity index 100% rename from src/kibana/plugins/settings/sections/advanced/lib/get_val_type.js rename to src/plugins/kibana/public/settings/public/sections/advanced/lib/get_val_type.js diff --git a/src/kibana/plugins/settings/sections/index.js b/src/plugins/kibana/public/settings/public/sections/index.js similarity index 100% rename from src/kibana/plugins/settings/sections/index.js rename to src/plugins/kibana/public/settings/public/sections/index.js diff --git a/src/kibana/plugins/settings/sections/indices/_create.html b/src/plugins/kibana/public/settings/public/sections/indices/_create.html similarity index 100% rename from src/kibana/plugins/settings/sections/indices/_create.html rename to src/plugins/kibana/public/settings/public/sections/indices/_create.html diff --git a/src/kibana/plugins/settings/sections/indices/_create.js b/src/plugins/kibana/public/settings/public/sections/indices/_create.js similarity index 98% rename from src/kibana/plugins/settings/sections/indices/_create.js rename to src/plugins/kibana/public/settings/public/sections/indices/_create.js index adfac91aa1b2f..2e647c46f6672 100644 --- a/src/kibana/plugins/settings/sections/indices/_create.js +++ b/src/plugins/kibana/public/settings/public/sections/indices/_create.js @@ -3,8 +3,8 @@ define(function (require) { var moment = require('moment'); var errors = require('errors'); - require('directives/validate_index_name'); - require('directives/auto_select_if_only_one'); + require('ui/directives/validate_index_name'); + require('ui/directives/auto_select_if_only_one'); require('routes') .when('/settings/indices/', { diff --git a/src/kibana/plugins/settings/sections/indices/_date_scripts.js b/src/plugins/kibana/public/settings/public/sections/indices/_date_scripts.js similarity index 100% rename from src/kibana/plugins/settings/sections/indices/_date_scripts.js rename to src/plugins/kibana/public/settings/public/sections/indices/_date_scripts.js diff --git a/src/kibana/plugins/settings/sections/indices/_edit.html b/src/plugins/kibana/public/settings/public/sections/indices/_edit.html similarity index 100% rename from src/kibana/plugins/settings/sections/indices/_edit.html rename to src/plugins/kibana/public/settings/public/sections/indices/_edit.html diff --git a/src/kibana/plugins/settings/sections/indices/_edit.js b/src/plugins/kibana/public/settings/public/sections/indices/_edit.js similarity index 100% rename from src/kibana/plugins/settings/sections/indices/_edit.js rename to src/plugins/kibana/public/settings/public/sections/indices/_edit.js diff --git a/src/kibana/plugins/settings/sections/indices/_field_controls.html b/src/plugins/kibana/public/settings/public/sections/indices/_field_controls.html similarity index 100% rename from src/kibana/plugins/settings/sections/indices/_field_controls.html rename to src/plugins/kibana/public/settings/public/sections/indices/_field_controls.html diff --git a/src/kibana/plugins/settings/sections/indices/_field_editor.html b/src/plugins/kibana/public/settings/public/sections/indices/_field_editor.html similarity index 100% rename from src/kibana/plugins/settings/sections/indices/_field_editor.html rename to src/plugins/kibana/public/settings/public/sections/indices/_field_editor.html diff --git a/src/kibana/plugins/settings/sections/indices/_field_editor.js b/src/plugins/kibana/public/settings/public/sections/indices/_field_editor.js similarity index 100% rename from src/kibana/plugins/settings/sections/indices/_field_editor.js rename to src/plugins/kibana/public/settings/public/sections/indices/_field_editor.js diff --git a/src/kibana/plugins/settings/sections/indices/_field_name.html b/src/plugins/kibana/public/settings/public/sections/indices/_field_name.html similarity index 100% rename from src/kibana/plugins/settings/sections/indices/_field_name.html rename to src/plugins/kibana/public/settings/public/sections/indices/_field_name.html diff --git a/src/kibana/plugins/settings/sections/indices/_field_popularity.html b/src/plugins/kibana/public/settings/public/sections/indices/_field_popularity.html similarity index 100% rename from src/kibana/plugins/settings/sections/indices/_field_popularity.html rename to src/plugins/kibana/public/settings/public/sections/indices/_field_popularity.html diff --git a/src/kibana/plugins/settings/sections/indices/_field_type.html b/src/plugins/kibana/public/settings/public/sections/indices/_field_type.html similarity index 100% rename from src/kibana/plugins/settings/sections/indices/_field_type.html rename to src/plugins/kibana/public/settings/public/sections/indices/_field_type.html diff --git a/src/kibana/plugins/settings/sections/indices/_field_types.js b/src/plugins/kibana/public/settings/public/sections/indices/_field_types.js similarity index 100% rename from src/kibana/plugins/settings/sections/indices/_field_types.js rename to src/plugins/kibana/public/settings/public/sections/indices/_field_types.js diff --git a/src/kibana/plugins/settings/sections/indices/_index_header.html b/src/plugins/kibana/public/settings/public/sections/indices/_index_header.html similarity index 100% rename from src/kibana/plugins/settings/sections/indices/_index_header.html rename to src/plugins/kibana/public/settings/public/sections/indices/_index_header.html diff --git a/src/kibana/plugins/settings/sections/indices/_index_header.js b/src/plugins/kibana/public/settings/public/sections/indices/_index_header.js similarity index 100% rename from src/kibana/plugins/settings/sections/indices/_index_header.js rename to src/plugins/kibana/public/settings/public/sections/indices/_index_header.js diff --git a/src/kibana/plugins/settings/sections/indices/_indexed_fields.html b/src/plugins/kibana/public/settings/public/sections/indices/_indexed_fields.html similarity index 100% rename from src/kibana/plugins/settings/sections/indices/_indexed_fields.html rename to src/plugins/kibana/public/settings/public/sections/indices/_indexed_fields.html diff --git a/src/kibana/plugins/settings/sections/indices/_indexed_fields.js b/src/plugins/kibana/public/settings/public/sections/indices/_indexed_fields.js similarity index 100% rename from src/kibana/plugins/settings/sections/indices/_indexed_fields.js rename to src/plugins/kibana/public/settings/public/sections/indices/_indexed_fields.js diff --git a/src/kibana/plugins/settings/sections/indices/_refresh_kibana_index.js b/src/plugins/kibana/public/settings/public/sections/indices/_refresh_kibana_index.js similarity index 100% rename from src/kibana/plugins/settings/sections/indices/_refresh_kibana_index.js rename to src/plugins/kibana/public/settings/public/sections/indices/_refresh_kibana_index.js diff --git a/src/kibana/plugins/settings/sections/indices/_scripted_fields.html b/src/plugins/kibana/public/settings/public/sections/indices/_scripted_fields.html similarity index 100% rename from src/kibana/plugins/settings/sections/indices/_scripted_fields.html rename to src/plugins/kibana/public/settings/public/sections/indices/_scripted_fields.html diff --git a/src/kibana/plugins/settings/sections/indices/_scripted_fields.js b/src/plugins/kibana/public/settings/public/sections/indices/_scripted_fields.js similarity index 100% rename from src/kibana/plugins/settings/sections/indices/_scripted_fields.js rename to src/plugins/kibana/public/settings/public/sections/indices/_scripted_fields.js diff --git a/src/kibana/plugins/settings/sections/indices/index.html b/src/plugins/kibana/public/settings/public/sections/indices/index.html similarity index 100% rename from src/kibana/plugins/settings/sections/indices/index.html rename to src/plugins/kibana/public/settings/public/sections/indices/index.html diff --git a/src/kibana/plugins/settings/sections/indices/index.js b/src/plugins/kibana/public/settings/public/sections/indices/index.js similarity index 100% rename from src/kibana/plugins/settings/sections/indices/index.js rename to src/plugins/kibana/public/settings/public/sections/indices/index.js diff --git a/src/kibana/plugins/settings/sections/objects/_objects.html b/src/plugins/kibana/public/settings/public/sections/objects/_objects.html similarity index 100% rename from src/kibana/plugins/settings/sections/objects/_objects.html rename to src/plugins/kibana/public/settings/public/sections/objects/_objects.html diff --git a/src/kibana/plugins/settings/sections/objects/_objects.js b/src/plugins/kibana/public/settings/public/sections/objects/_objects.js similarity index 99% rename from src/kibana/plugins/settings/sections/objects/_objects.js rename to src/plugins/kibana/public/settings/public/sections/objects/_objects.js index c0a336e7b454e..06a0d69f6970f 100644 --- a/src/kibana/plugins/settings/sections/objects/_objects.js +++ b/src/plugins/kibana/public/settings/public/sections/objects/_objects.js @@ -5,7 +5,7 @@ define(function (require) { var registry = require('plugins/settings/saved_object_registry'); var objectIndexHTML = require('text!plugins/settings/sections/objects/_objects.html'); - require('directives/file_upload'); + require('ui/directives/file_upload'); require('routes') .when('/settings/objects', { diff --git a/src/kibana/plugins/settings/sections/objects/_view.html b/src/plugins/kibana/public/settings/public/sections/objects/_view.html similarity index 100% rename from src/kibana/plugins/settings/sections/objects/_view.html rename to src/plugins/kibana/public/settings/public/sections/objects/_view.html diff --git a/src/kibana/plugins/settings/sections/objects/_view.js b/src/plugins/kibana/public/settings/public/sections/objects/_view.js similarity index 100% rename from src/kibana/plugins/settings/sections/objects/_view.js rename to src/plugins/kibana/public/settings/public/sections/objects/_view.js diff --git a/src/kibana/plugins/settings/sections/objects/index.js b/src/plugins/kibana/public/settings/public/sections/objects/index.js similarity index 90% rename from src/kibana/plugins/settings/sections/objects/index.js rename to src/plugins/kibana/public/settings/public/sections/objects/index.js index ef85a416111be..899ff8bc09074 100644 --- a/src/kibana/plugins/settings/sections/objects/index.js +++ b/src/plugins/kibana/public/settings/public/sections/objects/index.js @@ -4,7 +4,7 @@ define(function (require) { require('angular-ui-ace'); require('angular-elastic'); - require('directives/confirm_click'); + require('ui/directives/confirm_click'); // add the module deps to this module require('modules').get('apps/settings', ['ui.ace', 'monospaced.elastic']); diff --git a/src/kibana/plugins/settings/styles/main.less b/src/plugins/kibana/public/settings/public/styles/main.less similarity index 100% rename from src/kibana/plugins/settings/styles/main.less rename to src/plugins/kibana/public/settings/public/styles/main.less diff --git a/src/kibana/plugins/visualize/editor/add_bucket_agg.js b/src/plugins/kibana/public/visualize/editor/add_bucket_agg.js similarity index 100% rename from src/kibana/plugins/visualize/editor/add_bucket_agg.js rename to src/plugins/kibana/public/visualize/editor/add_bucket_agg.js diff --git a/src/kibana/plugins/visualize/editor/advanced_toggle.html b/src/plugins/kibana/public/visualize/editor/advanced_toggle.html similarity index 100% rename from src/kibana/plugins/visualize/editor/advanced_toggle.html rename to src/plugins/kibana/public/visualize/editor/advanced_toggle.html diff --git a/src/kibana/plugins/visualize/editor/agg.html b/src/plugins/kibana/public/visualize/editor/agg.html similarity index 100% rename from src/kibana/plugins/visualize/editor/agg.html rename to src/plugins/kibana/public/visualize/editor/agg.html diff --git a/src/kibana/plugins/visualize/editor/agg.js b/src/plugins/kibana/public/visualize/editor/agg.js similarity index 100% rename from src/kibana/plugins/visualize/editor/agg.js rename to src/plugins/kibana/public/visualize/editor/agg.js diff --git a/src/kibana/plugins/visualize/editor/agg_add.html b/src/plugins/kibana/public/visualize/editor/agg_add.html similarity index 100% rename from src/kibana/plugins/visualize/editor/agg_add.html rename to src/plugins/kibana/public/visualize/editor/agg_add.html diff --git a/src/kibana/plugins/visualize/editor/agg_add.js b/src/plugins/kibana/public/visualize/editor/agg_add.js similarity index 100% rename from src/kibana/plugins/visualize/editor/agg_add.js rename to src/plugins/kibana/public/visualize/editor/agg_add.js diff --git a/src/kibana/plugins/visualize/editor/agg_filter.js b/src/plugins/kibana/public/visualize/editor/agg_filter.js similarity index 75% rename from src/kibana/plugins/visualize/editor/agg_filter.js rename to src/plugins/kibana/public/visualize/editor/agg_filter.js index bc0f5b6ac589d..0bbba2761a85f 100644 --- a/src/kibana/plugins/visualize/editor/agg_filter.js +++ b/src/plugins/kibana/public/visualize/editor/agg_filter.js @@ -1,6 +1,6 @@ define(function (require) { var _ = require('lodash'); - var propFilter = require('filters/_prop_filter'); + var propFilter = require('ui/filters/_prop_filter'); require('modules') .get('kibana') diff --git a/src/kibana/plugins/visualize/editor/agg_group.html b/src/plugins/kibana/public/visualize/editor/agg_group.html similarity index 100% rename from src/kibana/plugins/visualize/editor/agg_group.html rename to src/plugins/kibana/public/visualize/editor/agg_group.html diff --git a/src/kibana/plugins/visualize/editor/agg_group.js b/src/plugins/kibana/public/visualize/editor/agg_group.js similarity index 100% rename from src/kibana/plugins/visualize/editor/agg_group.js rename to src/plugins/kibana/public/visualize/editor/agg_group.js diff --git a/src/kibana/plugins/visualize/editor/agg_param.js b/src/plugins/kibana/public/visualize/editor/agg_param.js similarity index 100% rename from src/kibana/plugins/visualize/editor/agg_param.js rename to src/plugins/kibana/public/visualize/editor/agg_param.js diff --git a/src/kibana/plugins/visualize/editor/agg_params.html b/src/plugins/kibana/public/visualize/editor/agg_params.html similarity index 100% rename from src/kibana/plugins/visualize/editor/agg_params.html rename to src/plugins/kibana/public/visualize/editor/agg_params.html diff --git a/src/kibana/plugins/visualize/editor/agg_params.js b/src/plugins/kibana/public/visualize/editor/agg_params.js similarity index 99% rename from src/kibana/plugins/visualize/editor/agg_params.js rename to src/plugins/kibana/public/visualize/editor/agg_params.js index 8f6e34d855920..3498bc9b1a3e0 100644 --- a/src/kibana/plugins/visualize/editor/agg_params.js +++ b/src/plugins/kibana/public/visualize/editor/agg_params.js @@ -9,7 +9,7 @@ define(function (require) { var aggTypes = Private(require('components/agg_types/index')); var aggSelectHtml = require('text!plugins/visualize/editor/agg_select.html'); var advancedToggleHtml = require('text!plugins/visualize/editor/advanced_toggle.html'); - require('filters/match_any'); + require('ui/filters/match_any'); require('plugins/visualize/editor/agg_param'); var notify = new Notifier({ diff --git a/src/kibana/plugins/visualize/editor/agg_select.html b/src/plugins/kibana/public/visualize/editor/agg_select.html similarity index 100% rename from src/kibana/plugins/visualize/editor/agg_select.html rename to src/plugins/kibana/public/visualize/editor/agg_select.html diff --git a/src/kibana/plugins/visualize/editor/editor.html b/src/plugins/kibana/public/visualize/editor/editor.html similarity index 100% rename from src/kibana/plugins/visualize/editor/editor.html rename to src/plugins/kibana/public/visualize/editor/editor.html diff --git a/src/kibana/plugins/visualize/editor/editor.js b/src/plugins/kibana/public/visualize/editor/editor.js similarity index 99% rename from src/kibana/plugins/visualize/editor/editor.js rename to src/plugins/kibana/public/visualize/editor/editor.js index 88a84809f82ec..9cfcda1e1b686 100644 --- a/src/kibana/plugins/visualize/editor/editor.js +++ b/src/plugins/kibana/public/visualize/editor/editor.js @@ -5,12 +5,12 @@ define(function (require) { require('plugins/visualize/editor/agg_filter'); - require('directives/saved_object_finder'); + require('ui/directives/saved_object_finder'); require('components/visualize/visualize'); require('components/clipboard/clipboard'); require('components/comma_list_filter'); - require('filters/uriescape'); + require('ui/filters/uriescape'); require('routes') .when('/visualize/create', { diff --git a/src/kibana/plugins/visualize/editor/nesting_indicator.js b/src/plugins/kibana/public/visualize/editor/nesting_indicator.js similarity index 100% rename from src/kibana/plugins/visualize/editor/nesting_indicator.js rename to src/plugins/kibana/public/visualize/editor/nesting_indicator.js diff --git a/src/kibana/plugins/visualize/editor/panels/load.html b/src/plugins/kibana/public/visualize/editor/panels/load.html similarity index 100% rename from src/kibana/plugins/visualize/editor/panels/load.html rename to src/plugins/kibana/public/visualize/editor/panels/load.html diff --git a/src/kibana/plugins/visualize/editor/panels/save.html b/src/plugins/kibana/public/visualize/editor/panels/save.html similarity index 100% rename from src/kibana/plugins/visualize/editor/panels/save.html rename to src/plugins/kibana/public/visualize/editor/panels/save.html diff --git a/src/kibana/plugins/visualize/editor/panels/share.html b/src/plugins/kibana/public/visualize/editor/panels/share.html similarity index 100% rename from src/kibana/plugins/visualize/editor/panels/share.html rename to src/plugins/kibana/public/visualize/editor/panels/share.html diff --git a/src/kibana/plugins/visualize/editor/sidebar.html b/src/plugins/kibana/public/visualize/editor/sidebar.html similarity index 100% rename from src/kibana/plugins/visualize/editor/sidebar.html rename to src/plugins/kibana/public/visualize/editor/sidebar.html diff --git a/src/kibana/plugins/visualize/editor/sidebar.js b/src/plugins/kibana/public/visualize/editor/sidebar.js similarity index 100% rename from src/kibana/plugins/visualize/editor/sidebar.js rename to src/plugins/kibana/public/visualize/editor/sidebar.js diff --git a/src/kibana/plugins/visualize/editor/styles/editor.less b/src/plugins/kibana/public/visualize/editor/styles/editor.less similarity index 100% rename from src/kibana/plugins/visualize/editor/styles/editor.less rename to src/plugins/kibana/public/visualize/editor/styles/editor.less diff --git a/src/kibana/plugins/visualize/editor/vis_options.html b/src/plugins/kibana/public/visualize/editor/vis_options.html similarity index 100% rename from src/kibana/plugins/visualize/editor/vis_options.html rename to src/plugins/kibana/public/visualize/editor/vis_options.html diff --git a/src/kibana/plugins/visualize/editor/vis_options.js b/src/plugins/kibana/public/visualize/editor/vis_options.js similarity index 100% rename from src/kibana/plugins/visualize/editor/vis_options.js rename to src/plugins/kibana/public/visualize/editor/vis_options.js diff --git a/src/kibana/plugins/visualize/index.js b/src/plugins/kibana/public/visualize/index.js similarity index 100% rename from src/kibana/plugins/visualize/index.js rename to src/plugins/kibana/public/visualize/index.js diff --git a/src/kibana/plugins/visualize/saved_visualizations/_saved_vis.js b/src/plugins/kibana/public/visualize/saved_visualizations/_saved_vis.js similarity index 100% rename from src/kibana/plugins/visualize/saved_visualizations/_saved_vis.js rename to src/plugins/kibana/public/visualize/saved_visualizations/_saved_vis.js diff --git a/src/kibana/plugins/visualize/saved_visualizations/saved_visualizations.js b/src/plugins/kibana/public/visualize/saved_visualizations/saved_visualizations.js similarity index 100% rename from src/kibana/plugins/visualize/saved_visualizations/saved_visualizations.js rename to src/plugins/kibana/public/visualize/saved_visualizations/saved_visualizations.js diff --git a/src/kibana/plugins/visualize/styles/main.less b/src/plugins/kibana/public/visualize/styles/main.less similarity index 100% rename from src/kibana/plugins/visualize/styles/main.less rename to src/plugins/kibana/public/visualize/styles/main.less diff --git a/src/kibana/plugins/visualize/wizard/step_1.html b/src/plugins/kibana/public/visualize/wizard/step_1.html similarity index 100% rename from src/kibana/plugins/visualize/wizard/step_1.html rename to src/plugins/kibana/public/visualize/wizard/step_1.html diff --git a/src/kibana/plugins/visualize/wizard/step_2.html b/src/plugins/kibana/public/visualize/wizard/step_2.html similarity index 100% rename from src/kibana/plugins/visualize/wizard/step_2.html rename to src/plugins/kibana/public/visualize/wizard/step_2.html diff --git a/src/kibana/plugins/visualize/wizard/wizard.js b/src/plugins/kibana/public/visualize/wizard/wizard.js similarity index 97% rename from src/kibana/plugins/visualize/wizard/wizard.js rename to src/plugins/kibana/public/visualize/wizard/wizard.js index 9f993f4fbb0dc..20367099e5372 100644 --- a/src/kibana/plugins/visualize/wizard/wizard.js +++ b/src/plugins/kibana/public/visualize/wizard/wizard.js @@ -2,7 +2,7 @@ define(function (require) { var _ = require('lodash'); require('plugins/visualize/saved_visualizations/saved_visualizations'); - require('directives/saved_object_finder'); + require('ui/directives/saved_object_finder'); require('plugins/discover/saved_searches/saved_searches'); var templateStep = function (num, txt) { diff --git a/src/plugins/markdown-vis/index.js b/src/plugins/markdown-vis/index.js new file mode 100644 index 0000000000000..dc415628c2b5b --- /dev/null +++ b/src/plugins/markdown-vis/index.js @@ -0,0 +1,13 @@ +module.exports = function (kibana) { + + return new kibana.Plugin({ + + exports: { + visTypes: [ + 'plugins/markdown-vis/index' + ] + } + + }); + +}; diff --git a/src/plugins/markdown-vis/package.json b/src/plugins/markdown-vis/package.json new file mode 100644 index 0000000000000..998633ae404af --- /dev/null +++ b/src/plugins/markdown-vis/package.json @@ -0,0 +1,4 @@ +{ + "name": "markdown-vis", + "version": "1.0.0" +} diff --git a/src/kibana/plugins/markdown_vis/index.js b/src/plugins/markdown-vis/public/index.js similarity index 100% rename from src/kibana/plugins/markdown_vis/index.js rename to src/plugins/markdown-vis/public/index.js diff --git a/src/kibana/plugins/markdown_vis/markdown_vis.html b/src/plugins/markdown-vis/public/markdown_vis.html similarity index 100% rename from src/kibana/plugins/markdown_vis/markdown_vis.html rename to src/plugins/markdown-vis/public/markdown_vis.html diff --git a/src/kibana/plugins/markdown_vis/markdown_vis.js b/src/plugins/markdown-vis/public/markdown_vis.js similarity index 100% rename from src/kibana/plugins/markdown_vis/markdown_vis.js rename to src/plugins/markdown-vis/public/markdown_vis.js diff --git a/src/kibana/plugins/markdown_vis/markdown_vis.less b/src/plugins/markdown-vis/public/markdown_vis.less similarity index 100% rename from src/kibana/plugins/markdown_vis/markdown_vis.less rename to src/plugins/markdown-vis/public/markdown_vis.less diff --git a/src/kibana/plugins/markdown_vis/markdown_vis_controller.js b/src/plugins/markdown-vis/public/markdown_vis_controller.js similarity index 100% rename from src/kibana/plugins/markdown_vis/markdown_vis_controller.js rename to src/plugins/markdown-vis/public/markdown_vis_controller.js diff --git a/src/kibana/plugins/markdown_vis/markdown_vis_params.html b/src/plugins/markdown-vis/public/markdown_vis_params.html similarity index 100% rename from src/kibana/plugins/markdown_vis/markdown_vis_params.html rename to src/plugins/markdown-vis/public/markdown_vis_params.html diff --git a/src/plugins/metric-vis/index.js b/src/plugins/metric-vis/index.js new file mode 100644 index 0000000000000..03478e3047c9a --- /dev/null +++ b/src/plugins/metric-vis/index.js @@ -0,0 +1,13 @@ +module.exports = function (kibana) { + + return new kibana.Plugin({ + + exports: { + visTypes: [ + 'plugins/metric-vis/index' + ] + } + + }); + +}; diff --git a/src/plugins/metric-vis/package.json b/src/plugins/metric-vis/package.json new file mode 100644 index 0000000000000..a55cbf5786cee --- /dev/null +++ b/src/plugins/metric-vis/package.json @@ -0,0 +1,4 @@ +{ + "name": "metric-vis", + "version": "1.0.0" +} diff --git a/src/kibana/plugins/metric_vis/index.js b/src/plugins/metric-vis/public/index.js similarity index 100% rename from src/kibana/plugins/metric_vis/index.js rename to src/plugins/metric-vis/public/index.js diff --git a/src/kibana/plugins/metric_vis/metric_vis.html b/src/plugins/metric-vis/public/metric_vis.html similarity index 100% rename from src/kibana/plugins/metric_vis/metric_vis.html rename to src/plugins/metric-vis/public/metric_vis.html diff --git a/src/kibana/plugins/metric_vis/metric_vis.js b/src/plugins/metric-vis/public/metric_vis.js similarity index 100% rename from src/kibana/plugins/metric_vis/metric_vis.js rename to src/plugins/metric-vis/public/metric_vis.js diff --git a/src/kibana/plugins/metric_vis/metric_vis.less b/src/plugins/metric-vis/public/metric_vis.less similarity index 100% rename from src/kibana/plugins/metric_vis/metric_vis.less rename to src/plugins/metric-vis/public/metric_vis.less diff --git a/src/kibana/plugins/metric_vis/metric_vis_controller.js b/src/plugins/metric-vis/public/metric_vis_controller.js similarity index 100% rename from src/kibana/plugins/metric_vis/metric_vis_controller.js rename to src/plugins/metric-vis/public/metric_vis_controller.js diff --git a/src/kibana/plugins/metric_vis/metric_vis_params.html b/src/plugins/metric-vis/public/metric_vis_params.html similarity index 100% rename from src/kibana/plugins/metric_vis/metric_vis_params.html rename to src/plugins/metric-vis/public/metric_vis_params.html diff --git a/src/plugins/status/index.js b/src/plugins/status/index.js new file mode 100644 index 0000000000000..481381f61a035 --- /dev/null +++ b/src/plugins/status/index.js @@ -0,0 +1,61 @@ +module.exports = function (kibana) { + var status = kibana.status; + var Series = require('./lib/series'); + + return new kibana.Plugin({ + + init: function (server, options) { + + var config = server.config(); + + var fiveMinuteData = { + rss: new Series(60), + heapTotal: new Series(60), + heapUsed: new Series(60), + load: new Series(60), + delay: new Series(60), + concurrency: new Series(60), + responseTimeAvg: new Series(60), + responseTimeMax: new Series(60), + requests: new Series(60), + }; + + server.plugins.good.monitor.on('ops', function (event) { + var port = String(config.get('kibana.server.port')); + fiveMinuteData.rss.push(event.psmem.rss); + fiveMinuteData.heapTotal.push(event.psmem.heapTotal); + fiveMinuteData.heapUsed.push(event.psmem.heapUsed); + fiveMinuteData.load.push(event.osload); + fiveMinuteData.delay.push(event.psdelay); + fiveMinuteData.concurrency.push(parseInt(event.concurrents[port], 0)); + if (event.responseTimes[port]) { + var responseTimeAvg = event.responseTimes[port].avg; + if (isNaN(responseTimeAvg)) responseTimeAvg = 0; + fiveMinuteData.responseTimeAvg.push(responseTimeAvg); + fiveMinuteData.responseTimeMax.push(event.responseTimes[port].max); + } else { + fiveMinuteData.responseTimeAvg.push(0); + fiveMinuteData.responseTimeMax.push(0); + } + if (event.requests[port]) { + fiveMinuteData.requests.push(event.requests[port].total); + } else { + fiveMinuteData.requests.push(0); + } + }); + + server.route({ + method: 'GET', + path: '/status/health', + handler: function (request, reply) { + return reply({ + metrics: fiveMinuteData, + status: status + }); + } + }); + } + + }); + +}; diff --git a/src/server/plugins/status/lib/series.js b/src/plugins/status/lib/series.js similarity index 100% rename from src/server/plugins/status/lib/series.js rename to src/plugins/status/lib/series.js diff --git a/src/plugins/status/package.json b/src/plugins/status/package.json new file mode 100644 index 0000000000000..b637610ad6755 --- /dev/null +++ b/src/plugins/status/package.json @@ -0,0 +1,4 @@ +{ + "name": "status", + "version": "1.0.0" +} diff --git a/src/server/plugins/status/public/index.html b/src/plugins/status/public/index.html similarity index 100% rename from src/server/plugins/status/public/index.html rename to src/plugins/status/public/index.html diff --git a/src/plugins/table-vis/index.js b/src/plugins/table-vis/index.js new file mode 100644 index 0000000000000..c575271a5c140 --- /dev/null +++ b/src/plugins/table-vis/index.js @@ -0,0 +1,11 @@ +module.exports = function (kibana) { + + return new kibana.Plugin({ + exports: { + visTypes: [ + 'plugins/table-vis/index' + ] + } + }); + +}; diff --git a/src/plugins/table-vis/package.json b/src/plugins/table-vis/package.json new file mode 100644 index 0000000000000..54896618bade1 --- /dev/null +++ b/src/plugins/table-vis/package.json @@ -0,0 +1,4 @@ +{ + "name": "table-vis", + "version": "1.0.0" +} diff --git a/src/kibana/plugins/table_vis/index.js b/src/plugins/table-vis/public/index.js similarity index 100% rename from src/kibana/plugins/table_vis/index.js rename to src/plugins/table-vis/public/index.js diff --git a/src/kibana/plugins/table_vis/table_vis.html b/src/plugins/table-vis/public/table_vis.html similarity index 100% rename from src/kibana/plugins/table_vis/table_vis.html rename to src/plugins/table-vis/public/table_vis.html diff --git a/src/kibana/plugins/table_vis/table_vis.js b/src/plugins/table-vis/public/table_vis.js similarity index 100% rename from src/kibana/plugins/table_vis/table_vis.js rename to src/plugins/table-vis/public/table_vis.js diff --git a/src/kibana/plugins/table_vis/table_vis.less b/src/plugins/table-vis/public/table_vis.less similarity index 100% rename from src/kibana/plugins/table_vis/table_vis.less rename to src/plugins/table-vis/public/table_vis.less diff --git a/src/kibana/plugins/table_vis/table_vis_controller.js b/src/plugins/table-vis/public/table_vis_controller.js similarity index 100% rename from src/kibana/plugins/table_vis/table_vis_controller.js rename to src/plugins/table-vis/public/table_vis_controller.js diff --git a/src/kibana/plugins/table_vis/table_vis_params.html b/src/plugins/table-vis/public/table_vis_params.html similarity index 100% rename from src/kibana/plugins/table_vis/table_vis_params.html rename to src/plugins/table-vis/public/table_vis_params.html diff --git a/src/kibana/plugins/table_vis/table_vis_params.js b/src/plugins/table-vis/public/table_vis_params.js similarity index 100% rename from src/kibana/plugins/table_vis/table_vis_params.js rename to src/plugins/table-vis/public/table_vis_params.js diff --git a/src/plugins/ui/bower.json b/src/plugins/ui/bower.json new file mode 100644 index 0000000000000..a98ae2909e6b0 --- /dev/null +++ b/src/plugins/ui/bower.json @@ -0,0 +1,37 @@ +{ + "name": "ui", + "license": "Apache 2.0", + "dependencies": { + "angular": "1.2.28", + "angular-bindonce": "0.3.3", + "angular-bootstrap": "0.10.0", + "angular-elastic": "2.4.2", + "angular-mocks": "1.2.28", + "angular-route": "1.2.28", + "angular-ui-ace": "0.2.3", + "bluebird": "~2.9.27", + "bootstrap": "3.3.4", + "d3": "3.5.5", + "elasticsearch": "~5.0.0", + "Faker": "1.1.0", + "FileSaver": "babc6d9d8f", + "font-awesome": "4.3.0", + "gridster": "0.5.6", + "jquery": "2.1.4", + "leaflet": "0.7.3", + "Leaflet.heat": "Leaflet/Leaflet.heat#627ede7c11bbe43", + "lesshat": "3.0.2", + "lodash": "2.4.2", + "moment": "2.10.3", + "moment-timezone": "0.4.0", + "ng-clip": "0.2.6", + "require-css": "0.1.8", + "requirejs": "2.1.18", + "requirejs-text": "2.0.14", + "lodash-deep": "spenceralger/lodash-deep#1a7eca8344", + "marked": "0.3.3", + "numeral": "1.5.3", + "leaflet-draw": "0.2.4" + }, + "devDependencies": {} +} diff --git a/src/plugins/ui/index.js b/src/plugins/ui/index.js new file mode 100644 index 0000000000000..287a3c514a609 --- /dev/null +++ b/src/plugins/ui/index.js @@ -0,0 +1,125 @@ +module.exports = function (kibana) { + var _ = require('lodash'); + var join = require('path').join; + var Boom = require('boom'); + var exists = require('fs').existsSync; + var stat = require('fs').statSync; + var relative = require('path').relative; + var publicDir = join(__dirname, 'public'); + + return new kibana.Plugin({ + publicDir: false, // we will serve our own public fir + init: function (server) { + var config = server.config(); + + // setup jade for templates + server.views({ + path: join(__dirname, 'views'), + engines: { + jade: require('jade') + } + }); + + // redirect to the default app + server.route({ + path: '/', + method: 'GET', + handler: function (req, reply) { + return reply.redirect('/app/' + config.get('kibana.defaultAppId') + '/'); + } + }); + + // initialize the browser runtime for the app + server.route({ + path: '/app/{id}/', + method: 'GET', + handler: function (req, reply) { + var id = req.params.id; + var apps = server.getApps(); + + var app = apps[id]; + if (!app) return reply(Boom.notFound('Unkown app ' + id)); + + return reply.view('chrome', { + app: app, + version: kibana.package.version, + buildSha: _.get(kibana, 'package.build.sha', '@@buildSha'), + buildNumber: _.get(kibana, 'package.build.number', '@@buildNum'), + config: { + kibana_index: config.get('kibana.index'), + shard_timeout: config.get('elasticsearch.shardTimeout') + }, + }); + } + }); + + // initialize the browser runtime for the app + server.route({ + path: '/app/{id}/{filePath*}', + method: 'GET', + handler: function (req, reply) { + var id = req.params.id; + var apps = server.getApps(); + + var app = apps[id]; + if (!app) return reply(Boom.notFound('Unkown app ' + id)); + + return reply.file(join(app.publicDir, req.params.filePath)); + } + }); + + + server.route({ + path: '/bower_components/{path*}', + method: 'GET', + handler: { + directory: { + path: (function findBowerComponents() { + // find bower_components by searching up until reaching the kibana dir + var dir = __dirname; + + while (!exists(join(dir, 'bower_components'))) { + var prev = dir; + dir = join(dir, '..'); + + if (dir === prev || relative(kibana.rootDir, dir) === '..') { + throw new Error('unable to find bower_components'); + } + } + + return join(dir, 'bower_components'); + }()), + listing: true + } + } + }); + + + require('fs') + .readdirSync(publicDir) + .forEach(function (name) { + var path = join(publicDir, name); + + if (stat(path).isDirectory()) { + server.route({ + path: '/' + name + '/{path*}', + method: 'GET', + handler: { + directory: { + path: path + } + } + }); + } else { + server.route({ + path: '/' + name, + method: 'GET', + handler: { + file: path + } + }); + } + }); + } + }); +}; diff --git a/src/plugins/ui/package.json b/src/plugins/ui/package.json new file mode 100644 index 0000000000000..7cb7cf17345dc --- /dev/null +++ b/src/plugins/ui/package.json @@ -0,0 +1,4 @@ +{ + "name": "ui", + "version": "1.0.0" +} diff --git a/src/kibana/index.js b/src/plugins/ui/public/bootstrap.js similarity index 100% rename from src/kibana/index.js rename to src/plugins/ui/public/bootstrap.js diff --git a/src/plugins/ui/public/chrome.js b/src/plugins/ui/public/chrome.js new file mode 100644 index 0000000000000..4b58299198abc --- /dev/null +++ b/src/plugins/ui/public/chrome.js @@ -0,0 +1,87 @@ +define(function (require) { + require('angular-bootstrap'); + require('components/private'); + require('components/config/config'); + require('components/courier/courier'); + require('components/filter_bar/filter_bar'); + require('components/notify/notify'); + require('components/persisted_log/persisted_log'); + require('components/state_management/app_state'); + require('components/storage/storage'); + require('components/url/url'); + require('components/doc_title/doc_title'); + require('components/tooltip/tooltip'); + require('components/style_compile/style_compile'); + require('components/watch_multi'); + require('components/bind'); + require('components/listen'); + require('components/fancy_forms/fancy_forms'); + require('components/stringify/register'); + + require('modules') + .get('kibana', ['ui.bootstrap']) + .config(function ($tooltipProvider, kbnChromeProvider) { + $tooltipProvider.setTriggers({ 'mouseenter': 'mouseleave click' }); + }); + + function Chrome() { + var showCacheMessage = location.href.indexOf('?embed') < 0 && location.href.indexOf('&embed') < 0; + if (!showCacheMessage) document.getElementById('cache-message').style.display = 'none'; + } + + .controller('KibanaChromeController', function (Private, $rootScope, $injector, Promise, config, kbnSetup) { + return { + template: require('text!plugins/kibana/kibana.html'), + controllerAs: 'kibana', + controller: function ($scope) { + var _ = require('lodash'); + var notify = new Notifier({ location: 'Kibana' }); + + // run init functions before loading the mixins, so that we can ensure that + // the environment is ready for them to get and use their dependencies + self.ready = Promise.all([ kbnSetup(), config.init() ]) + .then(function () { + // load some "mixins" + var mixinLocals = { $scope: $scope, notify: notify }; + + $injector.invoke(require('plugins/kibana/_init'), self, mixinLocals); + // expose some globals + $rootScope.globalState = globalState; + + // and some local values + $scope.appEmbedded = $location.search().embed || false; + $scope.httpActive = $http.pendingRequests; + $scope.notifList = notify._notifs; + + // wait for the application to finish loading + $scope.$on('application.load', function () { + courier.start(); + }); + + $scope.apps.forEach(getShow); + + + function onRouteChange() { + var route = $location.path().split(/\//); + $scope.apps.forEach(function (app) { + if (app.active = app.id === route[1]) { + $rootScope.activeApp = app; + } + }); + + if (!$rootScope.activeApp || $scope.appEmbedded) return; + + // Record the last URL w/ state of the app, use for tab. + setLastPath($rootScope.activeApp, globalState.removeFromUrl($location.url())); + } + + $rootScope.$on('$routeChangeSuccess', onRouteChange); + $rootScope.$on('$routeUpdate', onRouteChange); + $injector.invoke(require('plugins/kibana/_timepicker'), self, mixinLocals); + + $scope.setupComplete = true; + }); + } + }; + }); +}); diff --git a/src/kibana/components/agg_response/geo_json/_tooltip.html b/src/plugins/ui/public/components/agg_response/geo_json/_tooltip.html similarity index 100% rename from src/kibana/components/agg_response/geo_json/_tooltip.html rename to src/plugins/ui/public/components/agg_response/geo_json/_tooltip.html diff --git a/src/kibana/components/agg_response/geo_json/_tooltip_formatter.js b/src/plugins/ui/public/components/agg_response/geo_json/_tooltip_formatter.js similarity index 100% rename from src/kibana/components/agg_response/geo_json/_tooltip_formatter.js rename to src/plugins/ui/public/components/agg_response/geo_json/_tooltip_formatter.js diff --git a/src/kibana/components/agg_response/geo_json/geo_json.js b/src/plugins/ui/public/components/agg_response/geo_json/geo_json.js similarity index 100% rename from src/kibana/components/agg_response/geo_json/geo_json.js rename to src/plugins/ui/public/components/agg_response/geo_json/geo_json.js diff --git a/src/kibana/components/agg_response/geo_json/rowsToFeatures.js b/src/plugins/ui/public/components/agg_response/geo_json/rowsToFeatures.js similarity index 100% rename from src/kibana/components/agg_response/geo_json/rowsToFeatures.js rename to src/plugins/ui/public/components/agg_response/geo_json/rowsToFeatures.js diff --git a/src/kibana/components/agg_response/hierarchical/_array_to_linked_list.js b/src/plugins/ui/public/components/agg_response/hierarchical/_array_to_linked_list.js similarity index 100% rename from src/kibana/components/agg_response/hierarchical/_array_to_linked_list.js rename to src/plugins/ui/public/components/agg_response/hierarchical/_array_to_linked_list.js diff --git a/src/kibana/components/agg_response/hierarchical/_build_split.js b/src/plugins/ui/public/components/agg_response/hierarchical/_build_split.js similarity index 100% rename from src/kibana/components/agg_response/hierarchical/_build_split.js rename to src/plugins/ui/public/components/agg_response/hierarchical/_build_split.js diff --git a/src/kibana/components/agg_response/hierarchical/_collect_branch.js b/src/plugins/ui/public/components/agg_response/hierarchical/_collect_branch.js similarity index 100% rename from src/kibana/components/agg_response/hierarchical/_collect_branch.js rename to src/plugins/ui/public/components/agg_response/hierarchical/_collect_branch.js diff --git a/src/kibana/components/agg_response/hierarchical/_collect_keys.js b/src/plugins/ui/public/components/agg_response/hierarchical/_collect_keys.js similarity index 100% rename from src/kibana/components/agg_response/hierarchical/_collect_keys.js rename to src/plugins/ui/public/components/agg_response/hierarchical/_collect_keys.js diff --git a/src/kibana/components/agg_response/hierarchical/_create_raw_data.js b/src/plugins/ui/public/components/agg_response/hierarchical/_create_raw_data.js similarity index 100% rename from src/kibana/components/agg_response/hierarchical/_create_raw_data.js rename to src/plugins/ui/public/components/agg_response/hierarchical/_create_raw_data.js diff --git a/src/kibana/components/agg_response/hierarchical/_extract_buckets.js b/src/plugins/ui/public/components/agg_response/hierarchical/_extract_buckets.js similarity index 100% rename from src/kibana/components/agg_response/hierarchical/_extract_buckets.js rename to src/plugins/ui/public/components/agg_response/hierarchical/_extract_buckets.js diff --git a/src/kibana/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js b/src/plugins/ui/public/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js similarity index 100% rename from src/kibana/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js rename to src/plugins/ui/public/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js diff --git a/src/kibana/components/agg_response/hierarchical/_tooltip.html b/src/plugins/ui/public/components/agg_response/hierarchical/_tooltip.html similarity index 100% rename from src/kibana/components/agg_response/hierarchical/_tooltip.html rename to src/plugins/ui/public/components/agg_response/hierarchical/_tooltip.html diff --git a/src/kibana/components/agg_response/hierarchical/_transform_aggregation.js b/src/plugins/ui/public/components/agg_response/hierarchical/_transform_aggregation.js similarity index 100% rename from src/kibana/components/agg_response/hierarchical/_transform_aggregation.js rename to src/plugins/ui/public/components/agg_response/hierarchical/_transform_aggregation.js diff --git a/src/kibana/components/agg_response/hierarchical/build_hierarchical_data.js b/src/plugins/ui/public/components/agg_response/hierarchical/build_hierarchical_data.js similarity index 100% rename from src/kibana/components/agg_response/hierarchical/build_hierarchical_data.js rename to src/plugins/ui/public/components/agg_response/hierarchical/build_hierarchical_data.js diff --git a/src/kibana/components/agg_response/index.js b/src/plugins/ui/public/components/agg_response/index.js similarity index 100% rename from src/kibana/components/agg_response/index.js rename to src/plugins/ui/public/components/agg_response/index.js diff --git a/src/kibana/components/agg_response/point_series/_add_to_siri.js b/src/plugins/ui/public/components/agg_response/point_series/_add_to_siri.js similarity index 100% rename from src/kibana/components/agg_response/point_series/_add_to_siri.js rename to src/plugins/ui/public/components/agg_response/point_series/_add_to_siri.js diff --git a/src/kibana/components/agg_response/point_series/_fake_x_aspect.js b/src/plugins/ui/public/components/agg_response/point_series/_fake_x_aspect.js similarity index 100% rename from src/kibana/components/agg_response/point_series/_fake_x_aspect.js rename to src/plugins/ui/public/components/agg_response/point_series/_fake_x_aspect.js diff --git a/src/kibana/components/agg_response/point_series/_get_aspects.js b/src/plugins/ui/public/components/agg_response/point_series/_get_aspects.js similarity index 100% rename from src/kibana/components/agg_response/point_series/_get_aspects.js rename to src/plugins/ui/public/components/agg_response/point_series/_get_aspects.js diff --git a/src/kibana/components/agg_response/point_series/_get_point.js b/src/plugins/ui/public/components/agg_response/point_series/_get_point.js similarity index 100% rename from src/kibana/components/agg_response/point_series/_get_point.js rename to src/plugins/ui/public/components/agg_response/point_series/_get_point.js diff --git a/src/kibana/components/agg_response/point_series/_get_series.js b/src/plugins/ui/public/components/agg_response/point_series/_get_series.js similarity index 100% rename from src/kibana/components/agg_response/point_series/_get_series.js rename to src/plugins/ui/public/components/agg_response/point_series/_get_series.js diff --git a/src/kibana/components/agg_response/point_series/_init_x_axis.js b/src/plugins/ui/public/components/agg_response/point_series/_init_x_axis.js similarity index 100% rename from src/kibana/components/agg_response/point_series/_init_x_axis.js rename to src/plugins/ui/public/components/agg_response/point_series/_init_x_axis.js diff --git a/src/kibana/components/agg_response/point_series/_init_y_axis.js b/src/plugins/ui/public/components/agg_response/point_series/_init_y_axis.js similarity index 100% rename from src/kibana/components/agg_response/point_series/_init_y_axis.js rename to src/plugins/ui/public/components/agg_response/point_series/_init_y_axis.js diff --git a/src/kibana/components/agg_response/point_series/_ordered_date_axis.js b/src/plugins/ui/public/components/agg_response/point_series/_ordered_date_axis.js similarity index 100% rename from src/kibana/components/agg_response/point_series/_ordered_date_axis.js rename to src/plugins/ui/public/components/agg_response/point_series/_ordered_date_axis.js diff --git a/src/kibana/components/agg_response/point_series/_tooltip.html b/src/plugins/ui/public/components/agg_response/point_series/_tooltip.html similarity index 100% rename from src/kibana/components/agg_response/point_series/_tooltip.html rename to src/plugins/ui/public/components/agg_response/point_series/_tooltip.html diff --git a/src/kibana/components/agg_response/point_series/_tooltip_formatter.js b/src/plugins/ui/public/components/agg_response/point_series/_tooltip_formatter.js similarity index 100% rename from src/kibana/components/agg_response/point_series/_tooltip_formatter.js rename to src/plugins/ui/public/components/agg_response/point_series/_tooltip_formatter.js diff --git a/src/kibana/components/agg_response/point_series/point_series.js b/src/plugins/ui/public/components/agg_response/point_series/point_series.js similarity index 100% rename from src/kibana/components/agg_response/point_series/point_series.js rename to src/plugins/ui/public/components/agg_response/point_series/point_series.js diff --git a/src/kibana/components/agg_response/tabify/_buckets.js b/src/plugins/ui/public/components/agg_response/tabify/_buckets.js similarity index 100% rename from src/kibana/components/agg_response/tabify/_buckets.js rename to src/plugins/ui/public/components/agg_response/tabify/_buckets.js diff --git a/src/kibana/components/agg_response/tabify/_get_columns.js b/src/plugins/ui/public/components/agg_response/tabify/_get_columns.js similarity index 100% rename from src/kibana/components/agg_response/tabify/_get_columns.js rename to src/plugins/ui/public/components/agg_response/tabify/_get_columns.js diff --git a/src/kibana/components/agg_response/tabify/_response_writer.js b/src/plugins/ui/public/components/agg_response/tabify/_response_writer.js similarity index 100% rename from src/kibana/components/agg_response/tabify/_response_writer.js rename to src/plugins/ui/public/components/agg_response/tabify/_response_writer.js diff --git a/src/kibana/components/agg_response/tabify/_table.js b/src/plugins/ui/public/components/agg_response/tabify/_table.js similarity index 100% rename from src/kibana/components/agg_response/tabify/_table.js rename to src/plugins/ui/public/components/agg_response/tabify/_table.js diff --git a/src/kibana/components/agg_response/tabify/_table_group.js b/src/plugins/ui/public/components/agg_response/tabify/_table_group.js similarity index 100% rename from src/kibana/components/agg_response/tabify/_table_group.js rename to src/plugins/ui/public/components/agg_response/tabify/_table_group.js diff --git a/src/kibana/components/agg_response/tabify/tabify.js b/src/plugins/ui/public/components/agg_response/tabify/tabify.js similarity index 100% rename from src/kibana/components/agg_response/tabify/tabify.js rename to src/plugins/ui/public/components/agg_response/tabify/tabify.js diff --git a/src/kibana/components/agg_table/agg_table.html b/src/plugins/ui/public/components/agg_table/agg_table.html similarity index 100% rename from src/kibana/components/agg_table/agg_table.html rename to src/plugins/ui/public/components/agg_table/agg_table.html diff --git a/src/kibana/components/agg_table/agg_table.js b/src/plugins/ui/public/components/agg_table/agg_table.js similarity index 98% rename from src/kibana/components/agg_table/agg_table.js rename to src/plugins/ui/public/components/agg_table/agg_table.js index 3e1e98256fb85..3259640c47243 100644 --- a/src/kibana/components/agg_table/agg_table.js +++ b/src/plugins/ui/public/components/agg_table/agg_table.js @@ -1,6 +1,6 @@ define(function (require) { require('components/paginated_table/paginated_table'); - require('services/compile_recursive_directive'); + require('components/compile_recursive_directive'); require('css!components/agg_table/agg_table.css'); require('modules') diff --git a/src/kibana/components/agg_table/agg_table.less b/src/plugins/ui/public/components/agg_table/agg_table.less similarity index 100% rename from src/kibana/components/agg_table/agg_table.less rename to src/plugins/ui/public/components/agg_table/agg_table.less diff --git a/src/kibana/components/agg_table/agg_table_group.html b/src/plugins/ui/public/components/agg_table/agg_table_group.html similarity index 100% rename from src/kibana/components/agg_table/agg_table_group.html rename to src/plugins/ui/public/components/agg_table/agg_table_group.html diff --git a/src/kibana/components/agg_table/agg_table_group.js b/src/plugins/ui/public/components/agg_table/agg_table_group.js similarity index 95% rename from src/kibana/components/agg_table/agg_table_group.js rename to src/plugins/ui/public/components/agg_table/agg_table_group.js index 949f0c0b5a35b..0de361ab51c8e 100644 --- a/src/kibana/components/agg_table/agg_table_group.js +++ b/src/plugins/ui/public/components/agg_table/agg_table_group.js @@ -1,5 +1,5 @@ define(function (require) { - require('services/compile_recursive_directive'); + require('components/compile_recursive_directive'); require('components/agg_table/agg_table'); require('modules') diff --git a/src/kibana/components/agg_types/README.md b/src/plugins/ui/public/components/agg_types/README.md similarity index 100% rename from src/kibana/components/agg_types/README.md rename to src/plugins/ui/public/components/agg_types/README.md diff --git a/src/kibana/components/agg_types/_agg_params.js b/src/plugins/ui/public/components/agg_types/_agg_params.js similarity index 98% rename from src/kibana/components/agg_types/_agg_params.js rename to src/plugins/ui/public/components/agg_types/_agg_params.js index b4a71b4cfc963..ddece7b292674 100644 --- a/src/kibana/components/agg_types/_agg_params.js +++ b/src/plugins/ui/public/components/agg_types/_agg_params.js @@ -1,6 +1,6 @@ define(function (require) { return function AggParamsFactory(Private) { - require('filters/label'); + require('ui/filters/label'); var _ = require('lodash'); var IndexedArray = require('utils/indexed_array/index'); diff --git a/src/kibana/components/agg_types/_agg_type.js b/src/plugins/ui/public/components/agg_types/_agg_type.js similarity index 100% rename from src/kibana/components/agg_types/_agg_type.js rename to src/plugins/ui/public/components/agg_types/_agg_type.js diff --git a/src/kibana/components/agg_types/buckets/_bucket_agg_type.js b/src/plugins/ui/public/components/agg_types/buckets/_bucket_agg_type.js similarity index 100% rename from src/kibana/components/agg_types/buckets/_bucket_agg_type.js rename to src/plugins/ui/public/components/agg_types/buckets/_bucket_agg_type.js diff --git a/src/kibana/components/agg_types/buckets/_bucket_count_between.js b/src/plugins/ui/public/components/agg_types/buckets/_bucket_count_between.js similarity index 100% rename from src/kibana/components/agg_types/buckets/_bucket_count_between.js rename to src/plugins/ui/public/components/agg_types/buckets/_bucket_count_between.js diff --git a/src/kibana/components/agg_types/buckets/_interval_options.js b/src/plugins/ui/public/components/agg_types/buckets/_interval_options.js similarity index 95% rename from src/kibana/components/agg_types/buckets/_interval_options.js rename to src/plugins/ui/public/components/agg_types/buckets/_interval_options.js index 48ed13c7a73b5..b42dac83adaf1 100644 --- a/src/kibana/components/agg_types/buckets/_interval_options.js +++ b/src/plugins/ui/public/components/agg_types/buckets/_interval_options.js @@ -1,7 +1,7 @@ define(function (require) { return function IntervalOptionsService(Private) { var moment = require('moment'); - require('directives/input_whole_number'); + require('ui/directives/input_whole_number'); // shorthand var ms = function (type) { return moment.duration(1, type).asMilliseconds(); }; diff --git a/src/kibana/components/agg_types/buckets/create_filter/date_histogram.js b/src/plugins/ui/public/components/agg_types/buckets/create_filter/date_histogram.js similarity index 100% rename from src/kibana/components/agg_types/buckets/create_filter/date_histogram.js rename to src/plugins/ui/public/components/agg_types/buckets/create_filter/date_histogram.js diff --git a/src/kibana/components/agg_types/buckets/create_filter/date_range.js b/src/plugins/ui/public/components/agg_types/buckets/create_filter/date_range.js similarity index 100% rename from src/kibana/components/agg_types/buckets/create_filter/date_range.js rename to src/plugins/ui/public/components/agg_types/buckets/create_filter/date_range.js diff --git a/src/kibana/components/agg_types/buckets/create_filter/filters.js b/src/plugins/ui/public/components/agg_types/buckets/create_filter/filters.js similarity index 100% rename from src/kibana/components/agg_types/buckets/create_filter/filters.js rename to src/plugins/ui/public/components/agg_types/buckets/create_filter/filters.js diff --git a/src/kibana/components/agg_types/buckets/create_filter/histogram.js b/src/plugins/ui/public/components/agg_types/buckets/create_filter/histogram.js similarity index 100% rename from src/kibana/components/agg_types/buckets/create_filter/histogram.js rename to src/plugins/ui/public/components/agg_types/buckets/create_filter/histogram.js diff --git a/src/kibana/components/agg_types/buckets/create_filter/ip_range.js b/src/plugins/ui/public/components/agg_types/buckets/create_filter/ip_range.js similarity index 100% rename from src/kibana/components/agg_types/buckets/create_filter/ip_range.js rename to src/plugins/ui/public/components/agg_types/buckets/create_filter/ip_range.js diff --git a/src/kibana/components/agg_types/buckets/create_filter/range.js b/src/plugins/ui/public/components/agg_types/buckets/create_filter/range.js similarity index 100% rename from src/kibana/components/agg_types/buckets/create_filter/range.js rename to src/plugins/ui/public/components/agg_types/buckets/create_filter/range.js diff --git a/src/kibana/components/agg_types/buckets/create_filter/terms.js b/src/plugins/ui/public/components/agg_types/buckets/create_filter/terms.js similarity index 100% rename from src/kibana/components/agg_types/buckets/create_filter/terms.js rename to src/plugins/ui/public/components/agg_types/buckets/create_filter/terms.js diff --git a/src/kibana/components/agg_types/buckets/date_histogram.js b/src/plugins/ui/public/components/agg_types/buckets/date_histogram.js similarity index 99% rename from src/kibana/components/agg_types/buckets/date_histogram.js rename to src/plugins/ui/public/components/agg_types/buckets/date_histogram.js index 33f0ea8c7b822..28fae6177c9e8 100644 --- a/src/kibana/components/agg_types/buckets/date_histogram.js +++ b/src/plugins/ui/public/components/agg_types/buckets/date_histogram.js @@ -21,7 +21,7 @@ define(function (require) { agg.buckets.setBounds(agg.fieldIsTimeField() && timefilter.getActiveBounds()); } - require('filters/field_type'); + require('ui/filters/field_type'); require('components/validateDateInterval'); return new BucketAggType({ diff --git a/src/kibana/components/agg_types/buckets/date_range.js b/src/plugins/ui/public/components/agg_types/buckets/date_range.js similarity index 96% rename from src/kibana/components/agg_types/buckets/date_range.js rename to src/plugins/ui/public/components/agg_types/buckets/date_range.js index e45024c9bf8ef..a322855f957eb 100644 --- a/src/kibana/components/agg_types/buckets/date_range.js +++ b/src/plugins/ui/public/components/agg_types/buckets/date_range.js @@ -1,7 +1,7 @@ define(function (require) { var moment = require('moment'); var dateRange = require('utils/date_range'); - require('directives/validate_date_math'); + require('ui/directives/validate_date_math'); return function DateRangeAggDefinition(Private, config) { var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type')); diff --git a/src/kibana/components/agg_types/buckets/filters.js b/src/plugins/ui/public/components/agg_types/buckets/filters.js similarity index 100% rename from src/kibana/components/agg_types/buckets/filters.js rename to src/plugins/ui/public/components/agg_types/buckets/filters.js diff --git a/src/kibana/components/agg_types/buckets/geo_hash.js b/src/plugins/ui/public/components/agg_types/buckets/geo_hash.js similarity index 100% rename from src/kibana/components/agg_types/buckets/geo_hash.js rename to src/plugins/ui/public/components/agg_types/buckets/geo_hash.js diff --git a/src/kibana/components/agg_types/buckets/histogram.js b/src/plugins/ui/public/components/agg_types/buckets/histogram.js similarity index 100% rename from src/kibana/components/agg_types/buckets/histogram.js rename to src/plugins/ui/public/components/agg_types/buckets/histogram.js diff --git a/src/kibana/components/agg_types/buckets/ip_range.js b/src/plugins/ui/public/components/agg_types/buckets/ip_range.js similarity index 93% rename from src/kibana/components/agg_types/buckets/ip_range.js rename to src/plugins/ui/public/components/agg_types/buckets/ip_range.js index 80d4f5491d6a4..38931a87a2ab4 100644 --- a/src/kibana/components/agg_types/buckets/ip_range.js +++ b/src/plugins/ui/public/components/agg_types/buckets/ip_range.js @@ -1,7 +1,7 @@ define(function (require) { var _ = require('lodash'); - require('directives/validate_ip'); - require('directives/validate_cidr_mask'); + require('ui/directives/validate_ip'); + require('ui/directives/validate_cidr_mask'); return function RangeAggDefinition(Private) { var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type')); diff --git a/src/kibana/components/agg_types/buckets/range.js b/src/plugins/ui/public/components/agg_types/buckets/range.js similarity index 100% rename from src/kibana/components/agg_types/buckets/range.js rename to src/plugins/ui/public/components/agg_types/buckets/range.js diff --git a/src/kibana/components/agg_types/buckets/significant_terms.js b/src/plugins/ui/public/components/agg_types/buckets/significant_terms.js similarity index 100% rename from src/kibana/components/agg_types/buckets/significant_terms.js rename to src/plugins/ui/public/components/agg_types/buckets/significant_terms.js diff --git a/src/kibana/components/agg_types/buckets/terms.js b/src/plugins/ui/public/components/agg_types/buckets/terms.js similarity index 100% rename from src/kibana/components/agg_types/buckets/terms.js rename to src/plugins/ui/public/components/agg_types/buckets/terms.js diff --git a/src/kibana/components/agg_types/controls/date_ranges.html b/src/plugins/ui/public/components/agg_types/controls/date_ranges.html similarity index 100% rename from src/kibana/components/agg_types/controls/date_ranges.html rename to src/plugins/ui/public/components/agg_types/controls/date_ranges.html diff --git a/src/kibana/components/agg_types/controls/extended_bounds.html b/src/plugins/ui/public/components/agg_types/controls/extended_bounds.html similarity index 100% rename from src/kibana/components/agg_types/controls/extended_bounds.html rename to src/plugins/ui/public/components/agg_types/controls/extended_bounds.html diff --git a/src/kibana/components/agg_types/controls/field.html b/src/plugins/ui/public/components/agg_types/controls/field.html similarity index 100% rename from src/kibana/components/agg_types/controls/field.html rename to src/plugins/ui/public/components/agg_types/controls/field.html diff --git a/src/kibana/components/agg_types/controls/filters.html b/src/plugins/ui/public/components/agg_types/controls/filters.html similarity index 100% rename from src/kibana/components/agg_types/controls/filters.html rename to src/plugins/ui/public/components/agg_types/controls/filters.html diff --git a/src/kibana/components/agg_types/controls/interval.html b/src/plugins/ui/public/components/agg_types/controls/interval.html similarity index 100% rename from src/kibana/components/agg_types/controls/interval.html rename to src/plugins/ui/public/components/agg_types/controls/interval.html diff --git a/src/kibana/components/agg_types/controls/ip_ranges.html b/src/plugins/ui/public/components/agg_types/controls/ip_ranges.html similarity index 100% rename from src/kibana/components/agg_types/controls/ip_ranges.html rename to src/plugins/ui/public/components/agg_types/controls/ip_ranges.html diff --git a/src/kibana/components/agg_types/controls/min_doc_count.html b/src/plugins/ui/public/components/agg_types/controls/min_doc_count.html similarity index 100% rename from src/kibana/components/agg_types/controls/min_doc_count.html rename to src/plugins/ui/public/components/agg_types/controls/min_doc_count.html diff --git a/src/kibana/components/agg_types/controls/order_agg.html b/src/plugins/ui/public/components/agg_types/controls/order_agg.html similarity index 100% rename from src/kibana/components/agg_types/controls/order_agg.html rename to src/plugins/ui/public/components/agg_types/controls/order_agg.html diff --git a/src/kibana/components/agg_types/controls/order_and_size.html b/src/plugins/ui/public/components/agg_types/controls/order_and_size.html similarity index 100% rename from src/kibana/components/agg_types/controls/order_and_size.html rename to src/plugins/ui/public/components/agg_types/controls/order_and_size.html diff --git a/src/kibana/components/agg_types/controls/percentile_ranks.html b/src/plugins/ui/public/components/agg_types/controls/percentile_ranks.html similarity index 100% rename from src/kibana/components/agg_types/controls/percentile_ranks.html rename to src/plugins/ui/public/components/agg_types/controls/percentile_ranks.html diff --git a/src/kibana/components/agg_types/controls/percentiles.html b/src/plugins/ui/public/components/agg_types/controls/percentiles.html similarity index 100% rename from src/kibana/components/agg_types/controls/percentiles.html rename to src/plugins/ui/public/components/agg_types/controls/percentiles.html diff --git a/src/kibana/components/agg_types/controls/precision.html b/src/plugins/ui/public/components/agg_types/controls/precision.html similarity index 100% rename from src/kibana/components/agg_types/controls/precision.html rename to src/plugins/ui/public/components/agg_types/controls/precision.html diff --git a/src/kibana/components/agg_types/controls/ranges.html b/src/plugins/ui/public/components/agg_types/controls/ranges.html similarity index 100% rename from src/kibana/components/agg_types/controls/ranges.html rename to src/plugins/ui/public/components/agg_types/controls/ranges.html diff --git a/src/kibana/components/agg_types/controls/raw_json.html b/src/plugins/ui/public/components/agg_types/controls/raw_json.html similarity index 100% rename from src/kibana/components/agg_types/controls/raw_json.html rename to src/plugins/ui/public/components/agg_types/controls/raw_json.html diff --git a/src/kibana/components/agg_types/controls/regular_expression.html b/src/plugins/ui/public/components/agg_types/controls/regular_expression.html similarity index 100% rename from src/kibana/components/agg_types/controls/regular_expression.html rename to src/plugins/ui/public/components/agg_types/controls/regular_expression.html diff --git a/src/kibana/components/agg_types/controls/string.html b/src/plugins/ui/public/components/agg_types/controls/string.html similarity index 100% rename from src/kibana/components/agg_types/controls/string.html rename to src/plugins/ui/public/components/agg_types/controls/string.html diff --git a/src/kibana/components/agg_types/index.js b/src/plugins/ui/public/components/agg_types/index.js similarity index 100% rename from src/kibana/components/agg_types/index.js rename to src/plugins/ui/public/components/agg_types/index.js diff --git a/src/kibana/components/agg_types/metrics/_get_response_agg_config.js b/src/plugins/ui/public/components/agg_types/metrics/_get_response_agg_config.js similarity index 100% rename from src/kibana/components/agg_types/metrics/_get_response_agg_config.js rename to src/plugins/ui/public/components/agg_types/metrics/_get_response_agg_config.js diff --git a/src/kibana/components/agg_types/metrics/_metric_agg_type.js b/src/plugins/ui/public/components/agg_types/metrics/_metric_agg_type.js similarity index 100% rename from src/kibana/components/agg_types/metrics/_metric_agg_type.js rename to src/plugins/ui/public/components/agg_types/metrics/_metric_agg_type.js diff --git a/src/kibana/components/agg_types/metrics/avg.js b/src/plugins/ui/public/components/agg_types/metrics/avg.js similarity index 100% rename from src/kibana/components/agg_types/metrics/avg.js rename to src/plugins/ui/public/components/agg_types/metrics/avg.js diff --git a/src/kibana/components/agg_types/metrics/cardinality.js b/src/plugins/ui/public/components/agg_types/metrics/cardinality.js similarity index 100% rename from src/kibana/components/agg_types/metrics/cardinality.js rename to src/plugins/ui/public/components/agg_types/metrics/cardinality.js diff --git a/src/kibana/components/agg_types/metrics/count.js b/src/plugins/ui/public/components/agg_types/metrics/count.js similarity index 100% rename from src/kibana/components/agg_types/metrics/count.js rename to src/plugins/ui/public/components/agg_types/metrics/count.js diff --git a/src/kibana/components/agg_types/metrics/max.js b/src/plugins/ui/public/components/agg_types/metrics/max.js similarity index 100% rename from src/kibana/components/agg_types/metrics/max.js rename to src/plugins/ui/public/components/agg_types/metrics/max.js diff --git a/src/kibana/components/agg_types/metrics/min.js b/src/plugins/ui/public/components/agg_types/metrics/min.js similarity index 100% rename from src/kibana/components/agg_types/metrics/min.js rename to src/plugins/ui/public/components/agg_types/metrics/min.js diff --git a/src/kibana/components/agg_types/metrics/percentile_ranks.js b/src/plugins/ui/public/components/agg_types/metrics/percentile_ranks.js similarity index 100% rename from src/kibana/components/agg_types/metrics/percentile_ranks.js rename to src/plugins/ui/public/components/agg_types/metrics/percentile_ranks.js diff --git a/src/kibana/components/agg_types/metrics/percentiles.js b/src/plugins/ui/public/components/agg_types/metrics/percentiles.js similarity index 100% rename from src/kibana/components/agg_types/metrics/percentiles.js rename to src/plugins/ui/public/components/agg_types/metrics/percentiles.js diff --git a/src/kibana/components/agg_types/metrics/std_deviation.js b/src/plugins/ui/public/components/agg_types/metrics/std_deviation.js similarity index 100% rename from src/kibana/components/agg_types/metrics/std_deviation.js rename to src/plugins/ui/public/components/agg_types/metrics/std_deviation.js diff --git a/src/kibana/components/agg_types/metrics/sum.js b/src/plugins/ui/public/components/agg_types/metrics/sum.js similarity index 100% rename from src/kibana/components/agg_types/metrics/sum.js rename to src/plugins/ui/public/components/agg_types/metrics/sum.js diff --git a/src/kibana/components/agg_types/param_types/base.js b/src/plugins/ui/public/components/agg_types/param_types/base.js similarity index 100% rename from src/kibana/components/agg_types/param_types/base.js rename to src/plugins/ui/public/components/agg_types/param_types/base.js diff --git a/src/kibana/components/agg_types/param_types/field.js b/src/plugins/ui/public/components/agg_types/param_types/field.js similarity index 100% rename from src/kibana/components/agg_types/param_types/field.js rename to src/plugins/ui/public/components/agg_types/param_types/field.js diff --git a/src/kibana/components/agg_types/param_types/optioned.js b/src/plugins/ui/public/components/agg_types/param_types/optioned.js similarity index 100% rename from src/kibana/components/agg_types/param_types/optioned.js rename to src/plugins/ui/public/components/agg_types/param_types/optioned.js diff --git a/src/kibana/components/agg_types/param_types/raw_json.js b/src/plugins/ui/public/components/agg_types/param_types/raw_json.js similarity index 100% rename from src/kibana/components/agg_types/param_types/raw_json.js rename to src/plugins/ui/public/components/agg_types/param_types/raw_json.js diff --git a/src/kibana/components/agg_types/param_types/regex.js b/src/plugins/ui/public/components/agg_types/param_types/regex.js similarity index 100% rename from src/kibana/components/agg_types/param_types/regex.js rename to src/plugins/ui/public/components/agg_types/param_types/regex.js diff --git a/src/kibana/components/agg_types/param_types/string.js b/src/plugins/ui/public/components/agg_types/param_types/string.js similarity index 100% rename from src/kibana/components/agg_types/param_types/string.js rename to src/plugins/ui/public/components/agg_types/param_types/string.js diff --git a/src/kibana/components/bind.js b/src/plugins/ui/public/components/bind.js similarity index 100% rename from src/kibana/components/bind.js rename to src/plugins/ui/public/components/bind.js diff --git a/src/kibana/components/bound_to_config_obj.js b/src/plugins/ui/public/components/bound_to_config_obj.js similarity index 100% rename from src/kibana/components/bound_to_config_obj.js rename to src/plugins/ui/public/components/bound_to_config_obj.js diff --git a/src/kibana/components/clipboard/clipboard.html b/src/plugins/ui/public/components/clipboard/clipboard.html similarity index 100% rename from src/kibana/components/clipboard/clipboard.html rename to src/plugins/ui/public/components/clipboard/clipboard.html diff --git a/src/kibana/components/clipboard/clipboard.js b/src/plugins/ui/public/components/clipboard/clipboard.js similarity index 100% rename from src/kibana/components/clipboard/clipboard.js rename to src/plugins/ui/public/components/clipboard/clipboard.js diff --git a/src/kibana/components/collapsible_sidebar/collapsible_sidebar.js b/src/plugins/ui/public/components/collapsible_sidebar/collapsible_sidebar.js similarity index 100% rename from src/kibana/components/collapsible_sidebar/collapsible_sidebar.js rename to src/plugins/ui/public/components/collapsible_sidebar/collapsible_sidebar.js diff --git a/src/kibana/components/collapsible_sidebar/collapsible_sidebar.less b/src/plugins/ui/public/components/collapsible_sidebar/collapsible_sidebar.less similarity index 100% rename from src/kibana/components/collapsible_sidebar/collapsible_sidebar.less rename to src/plugins/ui/public/components/collapsible_sidebar/collapsible_sidebar.less diff --git a/src/kibana/components/comma_list_filter.js b/src/plugins/ui/public/components/comma_list_filter.js similarity index 100% rename from src/kibana/components/comma_list_filter.js rename to src/plugins/ui/public/components/comma_list_filter.js diff --git a/src/kibana/services/compile_recursive_directive.js b/src/plugins/ui/public/components/compile_recursive_directive.js similarity index 100% rename from src/kibana/services/compile_recursive_directive.js rename to src/plugins/ui/public/components/compile_recursive_directive.js diff --git a/src/kibana/components/config/_delayed_updater.js b/src/plugins/ui/public/components/config/_delayed_updater.js similarity index 100% rename from src/kibana/components/config/_delayed_updater.js rename to src/plugins/ui/public/components/config/_delayed_updater.js diff --git a/src/kibana/components/config/_vals.js b/src/plugins/ui/public/components/config/_vals.js similarity index 100% rename from src/kibana/components/config/_vals.js rename to src/plugins/ui/public/components/config/_vals.js diff --git a/src/kibana/components/config/config.js b/src/plugins/ui/public/components/config/config.js similarity index 100% rename from src/kibana/components/config/config.js rename to src/plugins/ui/public/components/config/config.js diff --git a/src/kibana/components/config/defaults.js b/src/plugins/ui/public/components/config/defaults.js similarity index 100% rename from src/kibana/components/config/defaults.js rename to src/plugins/ui/public/components/config/defaults.js diff --git a/src/kibana/components/config/migrations/_empty_ b/src/plugins/ui/public/components/config/migrations/_empty_ similarity index 100% rename from src/kibana/components/config/migrations/_empty_ rename to src/plugins/ui/public/components/config/migrations/_empty_ diff --git a/src/kibana/components/courier/_error_handlers.js b/src/plugins/ui/public/components/courier/_error_handlers.js similarity index 100% rename from src/kibana/components/courier/_error_handlers.js rename to src/plugins/ui/public/components/courier/_error_handlers.js diff --git a/src/kibana/components/courier/_redirect_when_missing.js b/src/plugins/ui/public/components/courier/_redirect_when_missing.js similarity index 100% rename from src/kibana/components/courier/_redirect_when_missing.js rename to src/plugins/ui/public/components/courier/_redirect_when_missing.js diff --git a/src/kibana/components/courier/_request_queue.js b/src/plugins/ui/public/components/courier/_request_queue.js similarity index 100% rename from src/kibana/components/courier/_request_queue.js rename to src/plugins/ui/public/components/courier/_request_queue.js diff --git a/src/kibana/components/courier/courier.js b/src/plugins/ui/public/components/courier/courier.js similarity index 98% rename from src/kibana/components/courier/courier.js rename to src/plugins/ui/public/components/courier/courier.js index 5c073815ed7fc..1199844a84745 100644 --- a/src/kibana/components/courier/courier.js +++ b/src/plugins/ui/public/components/courier/courier.js @@ -2,8 +2,8 @@ define(function (require) { var errors = require('errors'); var _ = require('lodash'); - require('services/es'); - require('services/promises'); + require('components/es'); + require('components/promises'); require('components/index_patterns/index_patterns'); require('modules').get('kibana/courier') diff --git a/src/kibana/components/courier/data_source/_abstract.js b/src/plugins/ui/public/components/courier/data_source/_abstract.js similarity index 100% rename from src/kibana/components/courier/data_source/_abstract.js rename to src/plugins/ui/public/components/courier/data_source/_abstract.js diff --git a/src/kibana/components/courier/data_source/_decorate_query.js b/src/plugins/ui/public/components/courier/data_source/_decorate_query.js similarity index 100% rename from src/kibana/components/courier/data_source/_decorate_query.js rename to src/plugins/ui/public/components/courier/data_source/_decorate_query.js diff --git a/src/kibana/components/courier/data_source/_doc_send_to_es.js b/src/plugins/ui/public/components/courier/data_source/_doc_send_to_es.js similarity index 100% rename from src/kibana/components/courier/data_source/_doc_send_to_es.js rename to src/plugins/ui/public/components/courier/data_source/_doc_send_to_es.js diff --git a/src/kibana/components/courier/data_source/_normalize_sort_request.js b/src/plugins/ui/public/components/courier/data_source/_normalize_sort_request.js similarity index 100% rename from src/kibana/components/courier/data_source/_normalize_sort_request.js rename to src/plugins/ui/public/components/courier/data_source/_normalize_sort_request.js diff --git a/src/kibana/components/courier/data_source/_root_search_source.js b/src/plugins/ui/public/components/courier/data_source/_root_search_source.js similarity index 100% rename from src/kibana/components/courier/data_source/_root_search_source.js rename to src/plugins/ui/public/components/courier/data_source/_root_search_source.js diff --git a/src/kibana/components/courier/data_source/doc_source.js b/src/plugins/ui/public/components/courier/data_source/doc_source.js similarity index 100% rename from src/kibana/components/courier/data_source/doc_source.js rename to src/plugins/ui/public/components/courier/data_source/doc_source.js diff --git a/src/kibana/components/courier/data_source/search_source.js b/src/plugins/ui/public/components/courier/data_source/search_source.js similarity index 100% rename from src/kibana/components/courier/data_source/search_source.js rename to src/plugins/ui/public/components/courier/data_source/search_source.js diff --git a/src/kibana/components/courier/fetch/_call_client.js b/src/plugins/ui/public/components/courier/fetch/_call_client.js similarity index 100% rename from src/kibana/components/courier/fetch/_call_client.js rename to src/plugins/ui/public/components/courier/fetch/_call_client.js diff --git a/src/kibana/components/courier/fetch/_call_response_handlers.js b/src/plugins/ui/public/components/courier/fetch/_call_response_handlers.js similarity index 100% rename from src/kibana/components/courier/fetch/_call_response_handlers.js rename to src/plugins/ui/public/components/courier/fetch/_call_response_handlers.js diff --git a/src/kibana/components/courier/fetch/_continue_incomplete.js b/src/plugins/ui/public/components/courier/fetch/_continue_incomplete.js similarity index 100% rename from src/kibana/components/courier/fetch/_continue_incomplete.js rename to src/plugins/ui/public/components/courier/fetch/_continue_incomplete.js diff --git a/src/kibana/components/courier/fetch/_fetch_these.js b/src/plugins/ui/public/components/courier/fetch/_fetch_these.js similarity index 100% rename from src/kibana/components/courier/fetch/_fetch_these.js rename to src/plugins/ui/public/components/courier/fetch/_fetch_these.js diff --git a/src/kibana/components/courier/fetch/_for_each_strategy.js b/src/plugins/ui/public/components/courier/fetch/_for_each_strategy.js similarity index 100% rename from src/kibana/components/courier/fetch/_for_each_strategy.js rename to src/plugins/ui/public/components/courier/fetch/_for_each_strategy.js diff --git a/src/kibana/components/courier/fetch/_is_request.js b/src/plugins/ui/public/components/courier/fetch/_is_request.js similarity index 100% rename from src/kibana/components/courier/fetch/_is_request.js rename to src/plugins/ui/public/components/courier/fetch/_is_request.js diff --git a/src/kibana/components/courier/fetch/_merge_duplicate_requests.js b/src/plugins/ui/public/components/courier/fetch/_merge_duplicate_requests.js similarity index 100% rename from src/kibana/components/courier/fetch/_merge_duplicate_requests.js rename to src/plugins/ui/public/components/courier/fetch/_merge_duplicate_requests.js diff --git a/src/kibana/components/courier/fetch/_notifier.js b/src/plugins/ui/public/components/courier/fetch/_notifier.js similarity index 100% rename from src/kibana/components/courier/fetch/_notifier.js rename to src/plugins/ui/public/components/courier/fetch/_notifier.js diff --git a/src/kibana/components/courier/fetch/_req_status.js b/src/plugins/ui/public/components/courier/fetch/_req_status.js similarity index 100% rename from src/kibana/components/courier/fetch/_req_status.js rename to src/plugins/ui/public/components/courier/fetch/_req_status.js diff --git a/src/kibana/components/courier/fetch/fetch.js b/src/plugins/ui/public/components/courier/fetch/fetch.js similarity index 100% rename from src/kibana/components/courier/fetch/fetch.js rename to src/plugins/ui/public/components/courier/fetch/fetch.js diff --git a/src/kibana/components/courier/fetch/request/_error_handler.js b/src/plugins/ui/public/components/courier/fetch/request/_error_handler.js similarity index 100% rename from src/kibana/components/courier/fetch/request/_error_handler.js rename to src/plugins/ui/public/components/courier/fetch/request/_error_handler.js diff --git a/src/kibana/components/courier/fetch/request/_segmented_handle.js b/src/plugins/ui/public/components/courier/fetch/request/_segmented_handle.js similarity index 94% rename from src/kibana/components/courier/fetch/request/_segmented_handle.js rename to src/plugins/ui/public/components/courier/fetch/request/_segmented_handle.js index bc45848f11ed4..26351a2823b4e 100644 --- a/src/kibana/components/courier/fetch/request/_segmented_handle.js +++ b/src/plugins/ui/public/components/courier/fetch/request/_segmented_handle.js @@ -1,7 +1,7 @@ define(function (require) { return function CourierSegmentedReqHandle(Private) { var _ = require('lodash'); - var Events = Private(require('factories/events')); + var Events = Private(require('components/events')); /** diff --git a/src/kibana/components/courier/fetch/request/doc.js b/src/plugins/ui/public/components/courier/fetch/request/doc.js similarity index 100% rename from src/kibana/components/courier/fetch/request/doc.js rename to src/plugins/ui/public/components/courier/fetch/request/doc.js diff --git a/src/kibana/components/courier/fetch/request/request.js b/src/plugins/ui/public/components/courier/fetch/request/request.js similarity index 100% rename from src/kibana/components/courier/fetch/request/request.js rename to src/plugins/ui/public/components/courier/fetch/request/request.js diff --git a/src/kibana/components/courier/fetch/request/search.js b/src/plugins/ui/public/components/courier/fetch/request/search.js similarity index 100% rename from src/kibana/components/courier/fetch/request/search.js rename to src/plugins/ui/public/components/courier/fetch/request/search.js diff --git a/src/kibana/components/courier/fetch/request/segmented.js b/src/plugins/ui/public/components/courier/fetch/request/segmented.js similarity index 100% rename from src/kibana/components/courier/fetch/request/segmented.js rename to src/plugins/ui/public/components/courier/fetch/request/segmented.js diff --git a/src/kibana/components/courier/fetch/strategy/doc.js b/src/plugins/ui/public/components/courier/fetch/strategy/doc.js similarity index 100% rename from src/kibana/components/courier/fetch/strategy/doc.js rename to src/plugins/ui/public/components/courier/fetch/strategy/doc.js diff --git a/src/kibana/components/courier/fetch/strategy/search.js b/src/plugins/ui/public/components/courier/fetch/strategy/search.js similarity index 100% rename from src/kibana/components/courier/fetch/strategy/search.js rename to src/plugins/ui/public/components/courier/fetch/strategy/search.js diff --git a/src/kibana/components/courier/looper/_looper.js b/src/plugins/ui/public/components/courier/looper/_looper.js similarity index 100% rename from src/kibana/components/courier/looper/_looper.js rename to src/plugins/ui/public/components/courier/looper/_looper.js diff --git a/src/kibana/components/courier/looper/doc.js b/src/plugins/ui/public/components/courier/looper/doc.js similarity index 100% rename from src/kibana/components/courier/looper/doc.js rename to src/plugins/ui/public/components/courier/looper/doc.js diff --git a/src/kibana/components/courier/looper/search.js b/src/plugins/ui/public/components/courier/looper/search.js similarity index 100% rename from src/kibana/components/courier/looper/search.js rename to src/plugins/ui/public/components/courier/looper/search.js diff --git a/src/kibana/components/courier/saved_object/saved_object.js b/src/plugins/ui/public/components/courier/saved_object/saved_object.js similarity index 100% rename from src/kibana/components/courier/saved_object/saved_object.js rename to src/plugins/ui/public/components/courier/saved_object/saved_object.js diff --git a/src/kibana/services/debounce.js b/src/plugins/ui/public/components/debounce.js similarity index 100% rename from src/kibana/services/debounce.js rename to src/plugins/ui/public/components/debounce.js diff --git a/src/kibana/components/doc_table/components/table_header.html b/src/plugins/ui/public/components/doc_table/components/table_header.html similarity index 100% rename from src/kibana/components/doc_table/components/table_header.html rename to src/plugins/ui/public/components/doc_table/components/table_header.html diff --git a/src/kibana/components/doc_table/components/table_header.js b/src/plugins/ui/public/components/doc_table/components/table_header.js similarity index 98% rename from src/kibana/components/doc_table/components/table_header.js rename to src/plugins/ui/public/components/doc_table/components/table_header.js index 6141b34f8daed..844658cee2fcd 100644 --- a/src/kibana/components/doc_table/components/table_header.js +++ b/src/plugins/ui/public/components/doc_table/components/table_header.js @@ -2,7 +2,7 @@ define(function (require) { var _ = require('lodash'); var module = require('modules').get('app/discover'); - require('filters/short_dots'); + require('ui/filters/short_dots'); module.directive('kbnTableHeader', function (shortDotsFilter) { var headerHtml = require('text!components/doc_table/components/table_header.html'); diff --git a/src/kibana/components/doc_table/components/table_row.js b/src/plugins/ui/public/components/doc_table/components/table_row.js similarity index 97% rename from src/kibana/components/doc_table/components/table_row.js rename to src/plugins/ui/public/components/doc_table/components/table_row.js index 15952844b0038..68f03390bc969 100644 --- a/src/kibana/components/doc_table/components/table_row.js +++ b/src/plugins/ui/public/components/doc_table/components/table_row.js @@ -7,8 +7,8 @@ define(function (require) { require('components/highlight/highlight'); require('components/highlight/highlight_tags'); require('components/doc_viewer/doc_viewer'); - require('filters/trust_as_html'); - require('filters/short_dots'); + require('ui/filters/trust_as_html'); + require('ui/filters/short_dots'); // guesstimate at the minimum number of chars wide cells in the table should be @@ -27,7 +27,7 @@ define(function (require) { var openRowHtml = require('text!components/doc_table/components/table_row/open.html'); var detailsHtml = require('text!components/doc_table/components/table_row/details.html'); var cellTemplate = _.template(noWhiteSpace(require('text!components/doc_table/components/table_row/cell.html'))); - var truncateByHeightTemplate = _.template(noWhiteSpace(require('text!partials/truncate_by_height.html'))); + var truncateByHeightTemplate = _.template(noWhiteSpace(require('text!ui/partials/truncate_by_height.html'))); return { restrict: 'A', diff --git a/src/kibana/components/doc_table/components/table_row/cell.html b/src/plugins/ui/public/components/doc_table/components/table_row/cell.html similarity index 100% rename from src/kibana/components/doc_table/components/table_row/cell.html rename to src/plugins/ui/public/components/doc_table/components/table_row/cell.html diff --git a/src/kibana/components/doc_table/components/table_row/details.html b/src/plugins/ui/public/components/doc_table/components/table_row/details.html similarity index 100% rename from src/kibana/components/doc_table/components/table_row/details.html rename to src/plugins/ui/public/components/doc_table/components/table_row/details.html diff --git a/src/kibana/components/doc_table/components/table_row/open.html b/src/plugins/ui/public/components/doc_table/components/table_row/open.html similarity index 100% rename from src/kibana/components/doc_table/components/table_row/open.html rename to src/plugins/ui/public/components/doc_table/components/table_row/open.html diff --git a/src/kibana/components/doc_table/doc_table.html b/src/plugins/ui/public/components/doc_table/doc_table.html similarity index 100% rename from src/kibana/components/doc_table/doc_table.html rename to src/plugins/ui/public/components/doc_table/doc_table.html diff --git a/src/kibana/components/doc_table/doc_table.js b/src/plugins/ui/public/components/doc_table/doc_table.js similarity index 97% rename from src/kibana/components/doc_table/doc_table.js rename to src/plugins/ui/public/components/doc_table/doc_table.js index d2c04a69d24fc..ecbccb5fe5bbb 100644 --- a/src/kibana/components/doc_table/doc_table.js +++ b/src/plugins/ui/public/components/doc_table/doc_table.js @@ -5,8 +5,8 @@ define(function (require) { var getSort = require('components/doc_table/lib/get_sort'); require('css!components/doc_table/doc_table.css'); - require('directives/truncated'); - require('directives/infinite_scroll'); + require('ui/directives/truncated'); + require('ui/directives/infinite_scroll'); require('components/doc_table/components/table_header'); require('components/doc_table/components/table_row'); @@ -112,4 +112,4 @@ define(function (require) { } }; }); -}); \ No newline at end of file +}); diff --git a/src/kibana/components/doc_table/doc_table.less b/src/plugins/ui/public/components/doc_table/doc_table.less similarity index 100% rename from src/kibana/components/doc_table/doc_table.less rename to src/plugins/ui/public/components/doc_table/doc_table.less diff --git a/src/kibana/components/doc_table/lib/get_sort.js b/src/plugins/ui/public/components/doc_table/lib/get_sort.js similarity index 100% rename from src/kibana/components/doc_table/lib/get_sort.js rename to src/plugins/ui/public/components/doc_table/lib/get_sort.js diff --git a/src/kibana/components/doc_title/doc_title.js b/src/plugins/ui/public/components/doc_title/doc_title.js similarity index 100% rename from src/kibana/components/doc_title/doc_title.js rename to src/plugins/ui/public/components/doc_title/doc_title.js diff --git a/src/kibana/components/doc_viewer/doc_viewer.html b/src/plugins/ui/public/components/doc_viewer/doc_viewer.html similarity index 100% rename from src/kibana/components/doc_viewer/doc_viewer.html rename to src/plugins/ui/public/components/doc_viewer/doc_viewer.html diff --git a/src/kibana/components/doc_viewer/doc_viewer.js b/src/plugins/ui/public/components/doc_viewer/doc_viewer.js similarity index 100% rename from src/kibana/components/doc_viewer/doc_viewer.js rename to src/plugins/ui/public/components/doc_viewer/doc_viewer.js diff --git a/src/kibana/components/doc_viewer/doc_viewer.less b/src/plugins/ui/public/components/doc_viewer/doc_viewer.less similarity index 100% rename from src/kibana/components/doc_viewer/doc_viewer.less rename to src/plugins/ui/public/components/doc_viewer/doc_viewer.less diff --git a/src/kibana/components/elastic_textarea.js b/src/plugins/ui/public/components/elastic_textarea.js similarity index 100% rename from src/kibana/components/elastic_textarea.js rename to src/plugins/ui/public/components/elastic_textarea.js diff --git a/src/kibana/services/es.js b/src/plugins/ui/public/components/es.js similarity index 100% rename from src/kibana/services/es.js rename to src/plugins/ui/public/components/es.js diff --git a/src/kibana/factories/events.js b/src/plugins/ui/public/components/events.js similarity index 100% rename from src/kibana/factories/events.js rename to src/plugins/ui/public/components/events.js diff --git a/src/kibana/components/fancy_forms/fancy_forms.js b/src/plugins/ui/public/components/fancy_forms/fancy_forms.js similarity index 100% rename from src/kibana/components/fancy_forms/fancy_forms.js rename to src/plugins/ui/public/components/fancy_forms/fancy_forms.js diff --git a/src/kibana/components/fancy_forms/kbn_form.js b/src/plugins/ui/public/components/fancy_forms/kbn_form.js similarity index 100% rename from src/kibana/components/fancy_forms/kbn_form.js rename to src/plugins/ui/public/components/fancy_forms/kbn_form.js diff --git a/src/kibana/components/fancy_forms/kbn_model.js b/src/plugins/ui/public/components/fancy_forms/kbn_model.js similarity index 100% rename from src/kibana/components/fancy_forms/kbn_model.js rename to src/plugins/ui/public/components/fancy_forms/kbn_model.js diff --git a/src/kibana/components/field_editor/field_editor.html b/src/plugins/ui/public/components/field_editor/field_editor.html similarity index 100% rename from src/kibana/components/field_editor/field_editor.html rename to src/plugins/ui/public/components/field_editor/field_editor.html diff --git a/src/kibana/components/field_editor/field_editor.js b/src/plugins/ui/public/components/field_editor/field_editor.js similarity index 100% rename from src/kibana/components/field_editor/field_editor.js rename to src/plugins/ui/public/components/field_editor/field_editor.js diff --git a/src/kibana/components/field_editor/scripting_info.html b/src/plugins/ui/public/components/field_editor/scripting_info.html similarity index 100% rename from src/kibana/components/field_editor/scripting_info.html rename to src/plugins/ui/public/components/field_editor/scripting_info.html diff --git a/src/kibana/components/field_editor/scripting_warning.html b/src/plugins/ui/public/components/field_editor/scripting_warning.html similarity index 100% rename from src/kibana/components/field_editor/scripting_warning.html rename to src/plugins/ui/public/components/field_editor/scripting_warning.html diff --git a/src/kibana/components/field_format_editor/field_format_editor.js b/src/plugins/ui/public/components/field_format_editor/field_format_editor.js similarity index 100% rename from src/kibana/components/field_format_editor/field_format_editor.js rename to src/plugins/ui/public/components/field_format_editor/field_format_editor.js diff --git a/src/kibana/components/field_format_editor/numeral/numeral.html b/src/plugins/ui/public/components/field_format_editor/numeral/numeral.html similarity index 100% rename from src/kibana/components/field_format_editor/numeral/numeral.html rename to src/plugins/ui/public/components/field_format_editor/numeral/numeral.html diff --git a/src/kibana/components/field_format_editor/numeral/numeral.js b/src/plugins/ui/public/components/field_format_editor/numeral/numeral.js similarity index 100% rename from src/kibana/components/field_format_editor/numeral/numeral.js rename to src/plugins/ui/public/components/field_format_editor/numeral/numeral.js diff --git a/src/kibana/components/field_format_editor/pattern/pattern.html b/src/plugins/ui/public/components/field_format_editor/pattern/pattern.html similarity index 100% rename from src/kibana/components/field_format_editor/pattern/pattern.html rename to src/plugins/ui/public/components/field_format_editor/pattern/pattern.html diff --git a/src/kibana/components/field_format_editor/pattern/pattern.js b/src/plugins/ui/public/components/field_format_editor/pattern/pattern.js similarity index 100% rename from src/kibana/components/field_format_editor/pattern/pattern.js rename to src/plugins/ui/public/components/field_format_editor/pattern/pattern.js diff --git a/src/kibana/components/field_format_editor/samples/samples.html b/src/plugins/ui/public/components/field_format_editor/samples/samples.html similarity index 100% rename from src/kibana/components/field_format_editor/samples/samples.html rename to src/plugins/ui/public/components/field_format_editor/samples/samples.html diff --git a/src/kibana/components/field_format_editor/samples/samples.js b/src/plugins/ui/public/components/field_format_editor/samples/samples.js similarity index 100% rename from src/kibana/components/field_format_editor/samples/samples.js rename to src/plugins/ui/public/components/field_format_editor/samples/samples.js diff --git a/src/kibana/components/filter_bar/filter_bar.html b/src/plugins/ui/public/components/filter_bar/filter_bar.html similarity index 100% rename from src/kibana/components/filter_bar/filter_bar.html rename to src/plugins/ui/public/components/filter_bar/filter_bar.html diff --git a/src/kibana/components/filter_bar/filter_bar.js b/src/plugins/ui/public/components/filter_bar/filter_bar.js similarity index 100% rename from src/kibana/components/filter_bar/filter_bar.js rename to src/plugins/ui/public/components/filter_bar/filter_bar.js diff --git a/src/kibana/components/filter_bar/filter_bar.less b/src/plugins/ui/public/components/filter_bar/filter_bar.less similarity index 100% rename from src/kibana/components/filter_bar/filter_bar.less rename to src/plugins/ui/public/components/filter_bar/filter_bar.less diff --git a/src/kibana/components/filter_bar/filter_bar_click_handler.js b/src/plugins/ui/public/components/filter_bar/filter_bar_click_handler.js similarity index 100% rename from src/kibana/components/filter_bar/filter_bar_click_handler.js rename to src/plugins/ui/public/components/filter_bar/filter_bar_click_handler.js diff --git a/src/kibana/components/filter_bar/lib/changeTimeFilter.js b/src/plugins/ui/public/components/filter_bar/lib/changeTimeFilter.js similarity index 100% rename from src/kibana/components/filter_bar/lib/changeTimeFilter.js rename to src/plugins/ui/public/components/filter_bar/lib/changeTimeFilter.js diff --git a/src/kibana/components/filter_bar/lib/compareFilters.js b/src/plugins/ui/public/components/filter_bar/lib/compareFilters.js similarity index 100% rename from src/kibana/components/filter_bar/lib/compareFilters.js rename to src/plugins/ui/public/components/filter_bar/lib/compareFilters.js diff --git a/src/kibana/components/filter_bar/lib/dedupFilters.js b/src/plugins/ui/public/components/filter_bar/lib/dedupFilters.js similarity index 100% rename from src/kibana/components/filter_bar/lib/dedupFilters.js rename to src/plugins/ui/public/components/filter_bar/lib/dedupFilters.js diff --git a/src/kibana/components/filter_bar/lib/extractTimeFilter.js b/src/plugins/ui/public/components/filter_bar/lib/extractTimeFilter.js similarity index 100% rename from src/kibana/components/filter_bar/lib/extractTimeFilter.js rename to src/plugins/ui/public/components/filter_bar/lib/extractTimeFilter.js diff --git a/src/kibana/components/filter_bar/lib/filterAppliedAndUnwrap.js b/src/plugins/ui/public/components/filter_bar/lib/filterAppliedAndUnwrap.js similarity index 100% rename from src/kibana/components/filter_bar/lib/filterAppliedAndUnwrap.js rename to src/plugins/ui/public/components/filter_bar/lib/filterAppliedAndUnwrap.js diff --git a/src/kibana/components/filter_bar/lib/filterOutTimeBasedFilter.js b/src/plugins/ui/public/components/filter_bar/lib/filterOutTimeBasedFilter.js similarity index 100% rename from src/kibana/components/filter_bar/lib/filterOutTimeBasedFilter.js rename to src/plugins/ui/public/components/filter_bar/lib/filterOutTimeBasedFilter.js diff --git a/src/kibana/components/filter_bar/lib/generateMappingChain.js b/src/plugins/ui/public/components/filter_bar/lib/generateMappingChain.js similarity index 100% rename from src/kibana/components/filter_bar/lib/generateMappingChain.js rename to src/plugins/ui/public/components/filter_bar/lib/generateMappingChain.js diff --git a/src/kibana/components/filter_bar/lib/mapAndFlattenFilters.js b/src/plugins/ui/public/components/filter_bar/lib/mapAndFlattenFilters.js similarity index 100% rename from src/kibana/components/filter_bar/lib/mapAndFlattenFilters.js rename to src/plugins/ui/public/components/filter_bar/lib/mapAndFlattenFilters.js diff --git a/src/kibana/components/filter_bar/lib/mapDefault.js b/src/plugins/ui/public/components/filter_bar/lib/mapDefault.js similarity index 100% rename from src/kibana/components/filter_bar/lib/mapDefault.js rename to src/plugins/ui/public/components/filter_bar/lib/mapDefault.js diff --git a/src/kibana/components/filter_bar/lib/mapExists.js b/src/plugins/ui/public/components/filter_bar/lib/mapExists.js similarity index 100% rename from src/kibana/components/filter_bar/lib/mapExists.js rename to src/plugins/ui/public/components/filter_bar/lib/mapExists.js diff --git a/src/kibana/components/filter_bar/lib/mapFilter.js b/src/plugins/ui/public/components/filter_bar/lib/mapFilter.js similarity index 100% rename from src/kibana/components/filter_bar/lib/mapFilter.js rename to src/plugins/ui/public/components/filter_bar/lib/mapFilter.js diff --git a/src/kibana/components/filter_bar/lib/mapFlattenAndWrapFilters.js b/src/plugins/ui/public/components/filter_bar/lib/mapFlattenAndWrapFilters.js similarity index 100% rename from src/kibana/components/filter_bar/lib/mapFlattenAndWrapFilters.js rename to src/plugins/ui/public/components/filter_bar/lib/mapFlattenAndWrapFilters.js diff --git a/src/kibana/components/filter_bar/lib/mapGeoBoundingBox.js b/src/plugins/ui/public/components/filter_bar/lib/mapGeoBoundingBox.js similarity index 100% rename from src/kibana/components/filter_bar/lib/mapGeoBoundingBox.js rename to src/plugins/ui/public/components/filter_bar/lib/mapGeoBoundingBox.js diff --git a/src/kibana/components/filter_bar/lib/mapMissing.js b/src/plugins/ui/public/components/filter_bar/lib/mapMissing.js similarity index 100% rename from src/kibana/components/filter_bar/lib/mapMissing.js rename to src/plugins/ui/public/components/filter_bar/lib/mapMissing.js diff --git a/src/kibana/components/filter_bar/lib/mapQueryString.js b/src/plugins/ui/public/components/filter_bar/lib/mapQueryString.js similarity index 100% rename from src/kibana/components/filter_bar/lib/mapQueryString.js rename to src/plugins/ui/public/components/filter_bar/lib/mapQueryString.js diff --git a/src/kibana/components/filter_bar/lib/mapRange.js b/src/plugins/ui/public/components/filter_bar/lib/mapRange.js similarity index 100% rename from src/kibana/components/filter_bar/lib/mapRange.js rename to src/plugins/ui/public/components/filter_bar/lib/mapRange.js diff --git a/src/kibana/components/filter_bar/lib/mapScript.js b/src/plugins/ui/public/components/filter_bar/lib/mapScript.js similarity index 100% rename from src/kibana/components/filter_bar/lib/mapScript.js rename to src/plugins/ui/public/components/filter_bar/lib/mapScript.js diff --git a/src/kibana/components/filter_bar/lib/mapTerms.js b/src/plugins/ui/public/components/filter_bar/lib/mapTerms.js similarity index 100% rename from src/kibana/components/filter_bar/lib/mapTerms.js rename to src/plugins/ui/public/components/filter_bar/lib/mapTerms.js diff --git a/src/kibana/components/filter_bar/lib/onlyDisabled.js b/src/plugins/ui/public/components/filter_bar/lib/onlyDisabled.js similarity index 100% rename from src/kibana/components/filter_bar/lib/onlyDisabled.js rename to src/plugins/ui/public/components/filter_bar/lib/onlyDisabled.js diff --git a/src/kibana/components/filter_bar/lib/onlyStateChanged.js b/src/plugins/ui/public/components/filter_bar/lib/onlyStateChanged.js similarity index 100% rename from src/kibana/components/filter_bar/lib/onlyStateChanged.js rename to src/plugins/ui/public/components/filter_bar/lib/onlyStateChanged.js diff --git a/src/kibana/components/filter_bar/lib/remapFilters.js b/src/plugins/ui/public/components/filter_bar/lib/remapFilters.js similarity index 100% rename from src/kibana/components/filter_bar/lib/remapFilters.js rename to src/plugins/ui/public/components/filter_bar/lib/remapFilters.js diff --git a/src/kibana/components/filter_bar/lib/uniqFilters.js b/src/plugins/ui/public/components/filter_bar/lib/uniqFilters.js similarity index 100% rename from src/kibana/components/filter_bar/lib/uniqFilters.js rename to src/plugins/ui/public/components/filter_bar/lib/uniqFilters.js diff --git a/src/kibana/components/filter_bar/push_filter.js b/src/plugins/ui/public/components/filter_bar/push_filter.js similarity index 100% rename from src/kibana/components/filter_bar/push_filter.js rename to src/plugins/ui/public/components/filter_bar/push_filter.js diff --git a/src/kibana/components/filter_bar/query_filter.js b/src/plugins/ui/public/components/filter_bar/query_filter.js similarity index 99% rename from src/kibana/components/filter_bar/query_filter.js rename to src/plugins/ui/public/components/filter_bar/query_filter.js index ce92b3ac95b8e..d83af21f7de9a 100644 --- a/src/kibana/components/filter_bar/query_filter.js +++ b/src/plugins/ui/public/components/filter_bar/query_filter.js @@ -2,7 +2,7 @@ define(function (require) { var _ = require('lodash'); return function (Private, $rootScope, getAppState, globalState) { - var EventEmitter = Private(require('factories/events')); + var EventEmitter = Private(require('components/events')); var onlyDisabled = require('components/filter_bar/lib/onlyDisabled'); var onlyStateChanged = require('components/filter_bar/lib/onlyStateChanged'); var uniqFilters = require('components/filter_bar/lib/uniqFilters'); diff --git a/src/kibana/components/filter_manager/filter_manager.js b/src/plugins/ui/public/components/filter_manager/filter_manager.js similarity index 100% rename from src/kibana/components/filter_manager/filter_manager.js rename to src/plugins/ui/public/components/filter_manager/filter_manager.js diff --git a/src/kibana/components/filter_manager/lib/phrase.js b/src/plugins/ui/public/components/filter_manager/lib/phrase.js similarity index 100% rename from src/kibana/components/filter_manager/lib/phrase.js rename to src/plugins/ui/public/components/filter_manager/lib/phrase.js diff --git a/src/kibana/components/filter_manager/lib/query.js b/src/plugins/ui/public/components/filter_manager/lib/query.js similarity index 100% rename from src/kibana/components/filter_manager/lib/query.js rename to src/plugins/ui/public/components/filter_manager/lib/query.js diff --git a/src/kibana/components/filter_manager/lib/range.js b/src/plugins/ui/public/components/filter_manager/lib/range.js similarity index 100% rename from src/kibana/components/filter_manager/lib/range.js rename to src/plugins/ui/public/components/filter_manager/lib/range.js diff --git a/src/kibana/components/fixedScroll.js b/src/plugins/ui/public/components/fixedScroll.js similarity index 100% rename from src/kibana/components/fixedScroll.js rename to src/plugins/ui/public/components/fixedScroll.js diff --git a/src/kibana/components/highlight/highlight.js b/src/plugins/ui/public/components/highlight/highlight.js similarity index 100% rename from src/kibana/components/highlight/highlight.js rename to src/plugins/ui/public/components/highlight/highlight.js diff --git a/src/kibana/components/highlight/highlight_tags.js b/src/plugins/ui/public/components/highlight/highlight_tags.js similarity index 100% rename from src/kibana/components/highlight/highlight_tags.js rename to src/plugins/ui/public/components/highlight/highlight_tags.js diff --git a/src/kibana/components/index_patterns/_cast_mapping_type.js b/src/plugins/ui/public/components/index_patterns/_cast_mapping_type.js similarity index 100% rename from src/kibana/components/index_patterns/_cast_mapping_type.js rename to src/plugins/ui/public/components/index_patterns/_cast_mapping_type.js diff --git a/src/kibana/components/index_patterns/_ensure_some.js b/src/plugins/ui/public/components/index_patterns/_ensure_some.js similarity index 100% rename from src/kibana/components/index_patterns/_ensure_some.js rename to src/plugins/ui/public/components/index_patterns/_ensure_some.js diff --git a/src/kibana/components/index_patterns/_field.js b/src/plugins/ui/public/components/index_patterns/_field.js similarity index 100% rename from src/kibana/components/index_patterns/_field.js rename to src/plugins/ui/public/components/index_patterns/_field.js diff --git a/src/kibana/components/index_patterns/_field_format/FieldFormat.js b/src/plugins/ui/public/components/index_patterns/_field_format/FieldFormat.js similarity index 100% rename from src/kibana/components/index_patterns/_field_format/FieldFormat.js rename to src/plugins/ui/public/components/index_patterns/_field_format/FieldFormat.js diff --git a/src/kibana/components/index_patterns/_field_format/contentTypes.js b/src/plugins/ui/public/components/index_patterns/_field_format/contentTypes.js similarity index 100% rename from src/kibana/components/index_patterns/_field_format/contentTypes.js rename to src/plugins/ui/public/components/index_patterns/_field_format/contentTypes.js diff --git a/src/kibana/components/index_patterns/_field_list.js b/src/plugins/ui/public/components/index_patterns/_field_list.js similarity index 100% rename from src/kibana/components/index_patterns/_field_list.js rename to src/plugins/ui/public/components/index_patterns/_field_list.js diff --git a/src/kibana/components/index_patterns/_field_types.js b/src/plugins/ui/public/components/index_patterns/_field_types.js similarity index 100% rename from src/kibana/components/index_patterns/_field_types.js rename to src/plugins/ui/public/components/index_patterns/_field_types.js diff --git a/src/kibana/components/index_patterns/_flatten_hit.js b/src/plugins/ui/public/components/index_patterns/_flatten_hit.js similarity index 100% rename from src/kibana/components/index_patterns/_flatten_hit.js rename to src/plugins/ui/public/components/index_patterns/_flatten_hit.js diff --git a/src/kibana/components/index_patterns/_format_hit.js b/src/plugins/ui/public/components/index_patterns/_format_hit.js similarity index 100% rename from src/kibana/components/index_patterns/_format_hit.js rename to src/plugins/ui/public/components/index_patterns/_format_hit.js diff --git a/src/kibana/components/index_patterns/_get_computed_fields.js b/src/plugins/ui/public/components/index_patterns/_get_computed_fields.js similarity index 100% rename from src/kibana/components/index_patterns/_get_computed_fields.js rename to src/plugins/ui/public/components/index_patterns/_get_computed_fields.js diff --git a/src/kibana/components/index_patterns/_get_ids.js b/src/plugins/ui/public/components/index_patterns/_get_ids.js similarity index 100% rename from src/kibana/components/index_patterns/_get_ids.js rename to src/plugins/ui/public/components/index_patterns/_get_ids.js diff --git a/src/kibana/components/index_patterns/_index_pattern.js b/src/plugins/ui/public/components/index_patterns/_index_pattern.js similarity index 100% rename from src/kibana/components/index_patterns/_index_pattern.js rename to src/plugins/ui/public/components/index_patterns/_index_pattern.js diff --git a/src/kibana/components/index_patterns/_intervals.js b/src/plugins/ui/public/components/index_patterns/_intervals.js similarity index 100% rename from src/kibana/components/index_patterns/_intervals.js rename to src/plugins/ui/public/components/index_patterns/_intervals.js diff --git a/src/kibana/components/index_patterns/_local_cache.js b/src/plugins/ui/public/components/index_patterns/_local_cache.js similarity index 100% rename from src/kibana/components/index_patterns/_local_cache.js rename to src/plugins/ui/public/components/index_patterns/_local_cache.js diff --git a/src/kibana/components/index_patterns/_map_field.js b/src/plugins/ui/public/components/index_patterns/_map_field.js similarity index 100% rename from src/kibana/components/index_patterns/_map_field.js rename to src/plugins/ui/public/components/index_patterns/_map_field.js diff --git a/src/kibana/components/index_patterns/_mapper.js b/src/plugins/ui/public/components/index_patterns/_mapper.js similarity index 100% rename from src/kibana/components/index_patterns/_mapper.js rename to src/plugins/ui/public/components/index_patterns/_mapper.js diff --git a/src/kibana/components/index_patterns/_object.tmpl.html b/src/plugins/ui/public/components/index_patterns/_object.tmpl.html similarity index 100% rename from src/kibana/components/index_patterns/_object.tmpl.html rename to src/plugins/ui/public/components/index_patterns/_object.tmpl.html diff --git a/src/kibana/components/index_patterns/_pattern_cache.js b/src/plugins/ui/public/components/index_patterns/_pattern_cache.js similarity index 100% rename from src/kibana/components/index_patterns/_pattern_cache.js rename to src/plugins/ui/public/components/index_patterns/_pattern_cache.js diff --git a/src/kibana/components/index_patterns/_pattern_to_wildcard.js b/src/plugins/ui/public/components/index_patterns/_pattern_to_wildcard.js similarity index 100% rename from src/kibana/components/index_patterns/_pattern_to_wildcard.js rename to src/plugins/ui/public/components/index_patterns/_pattern_to_wildcard.js diff --git a/src/kibana/components/index_patterns/_transform_mapping_into_fields.js b/src/plugins/ui/public/components/index_patterns/_transform_mapping_into_fields.js similarity index 100% rename from src/kibana/components/index_patterns/_transform_mapping_into_fields.js rename to src/plugins/ui/public/components/index_patterns/_transform_mapping_into_fields.js diff --git a/src/kibana/components/index_patterns/index_patterns.js b/src/plugins/ui/public/components/index_patterns/index_patterns.js similarity index 97% rename from src/kibana/components/index_patterns/index_patterns.js rename to src/plugins/ui/public/components/index_patterns/index_patterns.js index ee48459cc57a4..16b0f375eb928 100644 --- a/src/kibana/components/index_patterns/index_patterns.js +++ b/src/plugins/ui/public/components/index_patterns/index_patterns.js @@ -1,6 +1,6 @@ define(function (require) { var module = require('modules').get('kibana/index_patterns'); - require('filters/short_dots'); + require('ui/filters/short_dots'); module.service('indexPatterns', function (configFile, es, Notifier, Private, Promise) { var self = this; diff --git a/src/kibana/utils/indexed_array/_inflector.js b/src/plugins/ui/public/components/indexed_array/_inflector.js similarity index 100% rename from src/kibana/utils/indexed_array/_inflector.js rename to src/plugins/ui/public/components/indexed_array/_inflector.js diff --git a/src/kibana/utils/indexed_array/_path_getter.js b/src/plugins/ui/public/components/indexed_array/_path_getter.js similarity index 100% rename from src/kibana/utils/indexed_array/_path_getter.js rename to src/plugins/ui/public/components/indexed_array/_path_getter.js diff --git a/src/kibana/utils/indexed_array/index.js b/src/plugins/ui/public/components/indexed_array/index.js similarity index 100% rename from src/kibana/utils/indexed_array/index.js rename to src/plugins/ui/public/components/indexed_array/index.js diff --git a/src/kibana/components/listen.js b/src/plugins/ui/public/components/listen.js similarity index 100% rename from src/kibana/components/listen.js rename to src/plugins/ui/public/components/listen.js diff --git a/src/kibana/components/notify/_errors.js b/src/plugins/ui/public/components/notify/_errors.js similarity index 100% rename from src/kibana/components/notify/_errors.js rename to src/plugins/ui/public/components/notify/_errors.js diff --git a/src/kibana/components/notify/_notifier.js b/src/plugins/ui/public/components/notify/_notifier.js similarity index 100% rename from src/kibana/components/notify/_notifier.js rename to src/plugins/ui/public/components/notify/_notifier.js diff --git a/src/kibana/components/notify/directives.js b/src/plugins/ui/public/components/notify/directives.js similarity index 100% rename from src/kibana/components/notify/directives.js rename to src/plugins/ui/public/components/notify/directives.js diff --git a/src/kibana/components/notify/notify.js b/src/plugins/ui/public/components/notify/notify.js similarity index 100% rename from src/kibana/components/notify/notify.js rename to src/plugins/ui/public/components/notify/notify.js diff --git a/src/kibana/components/notify/partials/fatal.html b/src/plugins/ui/public/components/notify/partials/fatal.html similarity index 100% rename from src/kibana/components/notify/partials/fatal.html rename to src/plugins/ui/public/components/notify/partials/fatal.html diff --git a/src/kibana/components/notify/partials/fatal_splash_screen.html b/src/plugins/ui/public/components/notify/partials/fatal_splash_screen.html similarity index 100% rename from src/kibana/components/notify/partials/fatal_splash_screen.html rename to src/plugins/ui/public/components/notify/partials/fatal_splash_screen.html diff --git a/src/kibana/components/notify/partials/toaster.html b/src/plugins/ui/public/components/notify/partials/toaster.html similarity index 100% rename from src/kibana/components/notify/partials/toaster.html rename to src/plugins/ui/public/components/notify/partials/toaster.html diff --git a/src/kibana/components/number_list/number_list.html b/src/plugins/ui/public/components/number_list/number_list.html similarity index 100% rename from src/kibana/components/number_list/number_list.html rename to src/plugins/ui/public/components/number_list/number_list.html diff --git a/src/kibana/components/number_list/number_list.js b/src/plugins/ui/public/components/number_list/number_list.js similarity index 100% rename from src/kibana/components/number_list/number_list.js rename to src/plugins/ui/public/components/number_list/number_list.js diff --git a/src/kibana/components/number_list/number_list_input.js b/src/plugins/ui/public/components/number_list/number_list_input.js similarity index 100% rename from src/kibana/components/number_list/number_list_input.js rename to src/plugins/ui/public/components/number_list/number_list_input.js diff --git a/src/kibana/components/paginated_table/paginated_table.html b/src/plugins/ui/public/components/paginated_table/paginated_table.html similarity index 100% rename from src/kibana/components/paginated_table/paginated_table.html rename to src/plugins/ui/public/components/paginated_table/paginated_table.html diff --git a/src/kibana/components/paginated_table/paginated_table.js b/src/plugins/ui/public/components/paginated_table/paginated_table.js similarity index 100% rename from src/kibana/components/paginated_table/paginated_table.js rename to src/plugins/ui/public/components/paginated_table/paginated_table.js diff --git a/src/kibana/components/persisted_log/persisted_log.js b/src/plugins/ui/public/components/persisted_log/persisted_log.js similarity index 100% rename from src/kibana/components/persisted_log/persisted_log.js rename to src/plugins/ui/public/components/persisted_log/persisted_log.js diff --git a/src/kibana/services/private.js b/src/plugins/ui/public/components/private.js similarity index 100% rename from src/kibana/services/private.js rename to src/plugins/ui/public/components/private.js diff --git a/src/kibana/services/promises.js b/src/plugins/ui/public/components/promises.js similarity index 100% rename from src/kibana/services/promises.js rename to src/plugins/ui/public/components/promises.js diff --git a/src/kibana/components/reflow_watcher.js b/src/plugins/ui/public/components/reflow_watcher.js similarity index 96% rename from src/kibana/components/reflow_watcher.js rename to src/plugins/ui/public/components/reflow_watcher.js index bc9e8a441e224..df22f8b9658cf 100644 --- a/src/kibana/components/reflow_watcher.js +++ b/src/plugins/ui/public/components/reflow_watcher.js @@ -4,7 +4,7 @@ define(function (require) { var $ = require('jquery'); var _ = require('lodash'); - var EventEmitter = Private(require('factories/events')); + var EventEmitter = Private(require('components/events')); var $body = $(document.body); var $window = $(window); diff --git a/src/kibana/registry/_registry.js b/src/plugins/ui/public/components/registry/_registry.js similarity index 100% rename from src/kibana/registry/_registry.js rename to src/plugins/ui/public/components/registry/_registry.js diff --git a/src/kibana/registry/apps.js b/src/plugins/ui/public/components/registry/apps.js similarity index 100% rename from src/kibana/registry/apps.js rename to src/plugins/ui/public/components/registry/apps.js diff --git a/src/kibana/registry/field_formats.js b/src/plugins/ui/public/components/registry/field_formats.js similarity index 100% rename from src/kibana/registry/field_formats.js rename to src/plugins/ui/public/components/registry/field_formats.js diff --git a/src/kibana/registry/spy_modes.js b/src/plugins/ui/public/components/registry/spy_modes.js similarity index 100% rename from src/kibana/registry/spy_modes.js rename to src/plugins/ui/public/components/registry/spy_modes.js diff --git a/src/kibana/registry/vis_types.js b/src/plugins/ui/public/components/registry/vis_types.js similarity index 100% rename from src/kibana/registry/vis_types.js rename to src/plugins/ui/public/components/registry/vis_types.js diff --git a/src/kibana/require.config.js b/src/plugins/ui/public/components/require.config.js similarity index 98% rename from src/kibana/require.config.js rename to src/plugins/ui/public/components/require.config.js index b3db4faf45ac0..ddaaf55d324d9 100644 --- a/src/kibana/require.config.js +++ b/src/plugins/ui/public/components/require.config.js @@ -7,6 +7,7 @@ require.config({ errors: 'components/errors', modules: 'utils/modules', lodash: 'utils/lodash-mixins/index', + registry: 'components/registry', // bower_components 'angular-bindonce': 'bower_components/angular-bindonce/bindonce', diff --git a/src/kibana/utils/routes/_setup.js b/src/plugins/ui/public/components/routes/_setup.js similarity index 100% rename from src/kibana/utils/routes/_setup.js rename to src/plugins/ui/public/components/routes/_setup.js diff --git a/src/kibana/utils/routes/_work_queue.js b/src/plugins/ui/public/components/routes/_work_queue.js similarity index 100% rename from src/kibana/utils/routes/_work_queue.js rename to src/plugins/ui/public/components/routes/_work_queue.js diff --git a/src/kibana/utils/routes/_wrap_route_with_prep.js b/src/plugins/ui/public/components/routes/_wrap_route_with_prep.js similarity index 100% rename from src/kibana/utils/routes/_wrap_route_with_prep.js rename to src/plugins/ui/public/components/routes/_wrap_route_with_prep.js diff --git a/src/kibana/utils/routes/index.js b/src/plugins/ui/public/components/routes/index.js similarity index 97% rename from src/kibana/utils/routes/index.js rename to src/plugins/ui/public/components/routes/index.js index 4009cea0fc900..656073e9e2cb4 100644 --- a/src/kibana/utils/routes/index.js +++ b/src/plugins/ui/public/components/routes/index.js @@ -3,7 +3,7 @@ define(function (require) { var wrapRouteWithPrep = require('utils/routes/_wrap_route_with_prep'); require('components/setup/setup'); - require('services/promises'); + require('components/promises'); function RouteManager() { var when = []; diff --git a/src/kibana/components/state_management/_state_sync.js b/src/plugins/ui/public/components/state_management/_state_sync.js similarity index 100% rename from src/kibana/components/state_management/_state_sync.js rename to src/plugins/ui/public/components/state_management/_state_sync.js diff --git a/src/kibana/components/state_management/app_state.js b/src/plugins/ui/public/components/state_management/app_state.js similarity index 100% rename from src/kibana/components/state_management/app_state.js rename to src/plugins/ui/public/components/state_management/app_state.js diff --git a/src/kibana/components/state_management/global_state.js b/src/plugins/ui/public/components/state_management/global_state.js similarity index 100% rename from src/kibana/components/state_management/global_state.js rename to src/plugins/ui/public/components/state_management/global_state.js diff --git a/src/kibana/components/state_management/state.js b/src/plugins/ui/public/components/state_management/state.js similarity index 98% rename from src/kibana/components/state_management/state.js rename to src/plugins/ui/public/components/state_management/state.js index 399e08de8d215..e826172b0938c 100644 --- a/src/kibana/components/state_management/state.js +++ b/src/plugins/ui/public/components/state_management/state.js @@ -6,7 +6,7 @@ define(function (require) { var qs = require('utils/query_string'); return function StateProvider(Notifier, Private, $rootScope, $location) { - var Events = Private(require('factories/events')); + var Events = Private(require('components/events')); _.class(State).inherits(Events); function State(urlParam, defaults) { diff --git a/src/kibana/components/storage/storage.js b/src/plugins/ui/public/components/storage/storage.js similarity index 100% rename from src/kibana/components/storage/storage.js rename to src/plugins/ui/public/components/storage/storage.js diff --git a/src/kibana/components/stringify/.jshintrc b/src/plugins/ui/public/components/stringify/.jshintrc similarity index 100% rename from src/kibana/components/stringify/.jshintrc rename to src/plugins/ui/public/components/stringify/.jshintrc diff --git a/src/kibana/components/stringify/editors/date.html b/src/plugins/ui/public/components/stringify/editors/date.html similarity index 100% rename from src/kibana/components/stringify/editors/date.html rename to src/plugins/ui/public/components/stringify/editors/date.html diff --git a/src/kibana/components/stringify/editors/string.html b/src/plugins/ui/public/components/stringify/editors/string.html similarity index 100% rename from src/kibana/components/stringify/editors/string.html rename to src/plugins/ui/public/components/stringify/editors/string.html diff --git a/src/kibana/components/stringify/editors/url.html b/src/plugins/ui/public/components/stringify/editors/url.html similarity index 100% rename from src/kibana/components/stringify/editors/url.html rename to src/plugins/ui/public/components/stringify/editors/url.html diff --git a/src/kibana/components/stringify/icons/cv.png b/src/plugins/ui/public/components/stringify/icons/cv.png similarity index 100% rename from src/kibana/components/stringify/icons/cv.png rename to src/plugins/ui/public/components/stringify/icons/cv.png diff --git a/src/kibana/components/stringify/icons/de.png b/src/plugins/ui/public/components/stringify/icons/de.png similarity index 100% rename from src/kibana/components/stringify/icons/de.png rename to src/plugins/ui/public/components/stringify/icons/de.png diff --git a/src/kibana/components/stringify/icons/flag-icon.LICENSE b/src/plugins/ui/public/components/stringify/icons/flag-icon.LICENSE similarity index 100% rename from src/kibana/components/stringify/icons/flag-icon.LICENSE rename to src/plugins/ui/public/components/stringify/icons/flag-icon.LICENSE diff --git a/src/kibana/components/stringify/icons/go.png b/src/plugins/ui/public/components/stringify/icons/go.png similarity index 100% rename from src/kibana/components/stringify/icons/go.png rename to src/plugins/ui/public/components/stringify/icons/go.png diff --git a/src/kibana/components/stringify/icons/ne.png b/src/plugins/ui/public/components/stringify/icons/ne.png similarity index 100% rename from src/kibana/components/stringify/icons/ne.png rename to src/plugins/ui/public/components/stringify/icons/ne.png diff --git a/src/kibana/components/stringify/icons/ni.png b/src/plugins/ui/public/components/stringify/icons/ni.png similarity index 100% rename from src/kibana/components/stringify/icons/ni.png rename to src/plugins/ui/public/components/stringify/icons/ni.png diff --git a/src/kibana/components/stringify/icons/stop.png b/src/plugins/ui/public/components/stringify/icons/stop.png similarity index 100% rename from src/kibana/components/stringify/icons/stop.png rename to src/plugins/ui/public/components/stringify/icons/stop.png diff --git a/src/kibana/components/stringify/icons/us.png b/src/plugins/ui/public/components/stringify/icons/us.png similarity index 100% rename from src/kibana/components/stringify/icons/us.png rename to src/plugins/ui/public/components/stringify/icons/us.png diff --git a/src/kibana/components/stringify/register.js b/src/plugins/ui/public/components/stringify/register.js similarity index 100% rename from src/kibana/components/stringify/register.js rename to src/plugins/ui/public/components/stringify/register.js diff --git a/src/kibana/components/stringify/types/Bytes.js b/src/plugins/ui/public/components/stringify/types/Bytes.js similarity index 100% rename from src/kibana/components/stringify/types/Bytes.js rename to src/plugins/ui/public/components/stringify/types/Bytes.js diff --git a/src/kibana/components/stringify/types/Date.js b/src/plugins/ui/public/components/stringify/types/Date.js similarity index 100% rename from src/kibana/components/stringify/types/Date.js rename to src/plugins/ui/public/components/stringify/types/Date.js diff --git a/src/kibana/components/stringify/types/Ip.js b/src/plugins/ui/public/components/stringify/types/Ip.js similarity index 100% rename from src/kibana/components/stringify/types/Ip.js rename to src/plugins/ui/public/components/stringify/types/Ip.js diff --git a/src/kibana/components/stringify/types/Number.js b/src/plugins/ui/public/components/stringify/types/Number.js similarity index 100% rename from src/kibana/components/stringify/types/Number.js rename to src/plugins/ui/public/components/stringify/types/Number.js diff --git a/src/kibana/components/stringify/types/Percent.js b/src/plugins/ui/public/components/stringify/types/Percent.js similarity index 100% rename from src/kibana/components/stringify/types/Percent.js rename to src/plugins/ui/public/components/stringify/types/Percent.js diff --git a/src/kibana/components/stringify/types/Source.js b/src/plugins/ui/public/components/stringify/types/Source.js similarity index 100% rename from src/kibana/components/stringify/types/Source.js rename to src/plugins/ui/public/components/stringify/types/Source.js diff --git a/src/kibana/components/stringify/types/String.js b/src/plugins/ui/public/components/stringify/types/String.js similarity index 100% rename from src/kibana/components/stringify/types/String.js rename to src/plugins/ui/public/components/stringify/types/String.js diff --git a/src/kibana/components/stringify/types/Url.js b/src/plugins/ui/public/components/stringify/types/Url.js similarity index 100% rename from src/kibana/components/stringify/types/Url.js rename to src/plugins/ui/public/components/stringify/types/Url.js diff --git a/src/kibana/components/stringify/types/_Numeral.js b/src/plugins/ui/public/components/stringify/types/_Numeral.js similarity index 100% rename from src/kibana/components/stringify/types/_Numeral.js rename to src/plugins/ui/public/components/stringify/types/_Numeral.js diff --git a/src/kibana/components/stringify/types/_source.html b/src/plugins/ui/public/components/stringify/types/_source.html similarity index 100% rename from src/kibana/components/stringify/types/_source.html rename to src/plugins/ui/public/components/stringify/types/_source.html diff --git a/src/kibana/components/style_compile/style_compile.css.tmpl b/src/plugins/ui/public/components/style_compile/style_compile.css.tmpl similarity index 100% rename from src/kibana/components/style_compile/style_compile.css.tmpl rename to src/plugins/ui/public/components/style_compile/style_compile.css.tmpl diff --git a/src/kibana/components/style_compile/style_compile.js b/src/plugins/ui/public/components/style_compile/style_compile.js similarity index 100% rename from src/kibana/components/style_compile/style_compile.js rename to src/plugins/ui/public/components/style_compile/style_compile.js diff --git a/src/kibana/components/template_vis_type/TemplateRenderbot.js b/src/plugins/ui/public/components/template_vis_type/TemplateRenderbot.js similarity index 100% rename from src/kibana/components/template_vis_type/TemplateRenderbot.js rename to src/plugins/ui/public/components/template_vis_type/TemplateRenderbot.js diff --git a/src/kibana/components/template_vis_type/TemplateVisType.js b/src/plugins/ui/public/components/template_vis_type/TemplateVisType.js similarity index 100% rename from src/kibana/components/template_vis_type/TemplateVisType.js rename to src/plugins/ui/public/components/template_vis_type/TemplateVisType.js diff --git a/src/kibana/components/time_buckets/calc_auto_interval.js b/src/plugins/ui/public/components/time_buckets/calc_auto_interval.js similarity index 100% rename from src/kibana/components/time_buckets/calc_auto_interval.js rename to src/plugins/ui/public/components/time_buckets/calc_auto_interval.js diff --git a/src/kibana/components/time_buckets/calc_es_interval.js b/src/plugins/ui/public/components/time_buckets/calc_es_interval.js similarity index 100% rename from src/kibana/components/time_buckets/calc_es_interval.js rename to src/plugins/ui/public/components/time_buckets/calc_es_interval.js diff --git a/src/kibana/components/time_buckets/time_buckets.js b/src/plugins/ui/public/components/time_buckets/time_buckets.js similarity index 100% rename from src/kibana/components/time_buckets/time_buckets.js rename to src/plugins/ui/public/components/time_buckets/time_buckets.js diff --git a/src/kibana/components/timefilter/lib/diff_interval.js b/src/plugins/ui/public/components/timefilter/lib/diff_interval.js similarity index 100% rename from src/kibana/components/timefilter/lib/diff_interval.js rename to src/plugins/ui/public/components/timefilter/lib/diff_interval.js diff --git a/src/kibana/components/timefilter/lib/diff_time.js b/src/plugins/ui/public/components/timefilter/lib/diff_time.js similarity index 100% rename from src/kibana/components/timefilter/lib/diff_time.js rename to src/plugins/ui/public/components/timefilter/lib/diff_time.js diff --git a/src/kibana/components/timefilter/timefilter.js b/src/plugins/ui/public/components/timefilter/timefilter.js similarity index 98% rename from src/kibana/components/timefilter/timefilter.js rename to src/plugins/ui/public/components/timefilter/timefilter.js index 6d8aa7444f47d..7414b6fa38f6e 100644 --- a/src/kibana/components/timefilter/timefilter.js +++ b/src/plugins/ui/public/components/timefilter/timefilter.js @@ -7,7 +7,7 @@ var angular = require('angular'); var moment = require('moment'); var datemath = require('utils/datemath'); - var Events = Private(require('factories/events')); + var Events = Private(require('components/events')); var diff = Private(require('utils/diff_time_picker_vals')); require('components/state_management/global_state'); diff --git a/src/kibana/components/timepicker/quick_ranges.js b/src/plugins/ui/public/components/timepicker/quick_ranges.js similarity index 100% rename from src/kibana/components/timepicker/quick_ranges.js rename to src/plugins/ui/public/components/timepicker/quick_ranges.js diff --git a/src/kibana/components/timepicker/refresh_intervals.js b/src/plugins/ui/public/components/timepicker/refresh_intervals.js similarity index 100% rename from src/kibana/components/timepicker/refresh_intervals.js rename to src/plugins/ui/public/components/timepicker/refresh_intervals.js diff --git a/src/kibana/components/timepicker/time_units.js b/src/plugins/ui/public/components/timepicker/time_units.js similarity index 100% rename from src/kibana/components/timepicker/time_units.js rename to src/plugins/ui/public/components/timepicker/time_units.js diff --git a/src/kibana/components/timepicker/timepicker.html b/src/plugins/ui/public/components/timepicker/timepicker.html similarity index 100% rename from src/kibana/components/timepicker/timepicker.html rename to src/plugins/ui/public/components/timepicker/timepicker.html diff --git a/src/kibana/components/timepicker/timepicker.js b/src/plugins/ui/public/components/timepicker/timepicker.js similarity index 98% rename from src/kibana/components/timepicker/timepicker.js rename to src/plugins/ui/public/components/timepicker/timepicker.js index cb7552f6075b1..ef43d18c1a39b 100644 --- a/src/kibana/components/timepicker/timepicker.js +++ b/src/plugins/ui/public/components/timepicker/timepicker.js @@ -5,8 +5,8 @@ define(function (require) { var datemath = require('utils/datemath'); var moment = require('moment'); - require('directives/input_datetime'); - require('directives/inequality'); + require('ui/directives/input_datetime'); + require('ui/directives/inequality'); require('components/timepicker/quick_ranges'); require('components/timepicker/refresh_intervals'); require('components/timepicker/time_units'); diff --git a/src/kibana/components/tooltip/tooltip.html b/src/plugins/ui/public/components/tooltip/tooltip.html similarity index 100% rename from src/kibana/components/tooltip/tooltip.html rename to src/plugins/ui/public/components/tooltip/tooltip.html diff --git a/src/kibana/components/tooltip/tooltip.js b/src/plugins/ui/public/components/tooltip/tooltip.js similarity index 100% rename from src/kibana/components/tooltip/tooltip.js rename to src/plugins/ui/public/components/tooltip/tooltip.js diff --git a/src/kibana/components/typeahead/_input.js b/src/plugins/ui/public/components/typeahead/_input.js similarity index 100% rename from src/kibana/components/typeahead/_input.js rename to src/plugins/ui/public/components/typeahead/_input.js diff --git a/src/kibana/components/typeahead/_items.js b/src/plugins/ui/public/components/typeahead/_items.js similarity index 100% rename from src/kibana/components/typeahead/_items.js rename to src/plugins/ui/public/components/typeahead/_items.js diff --git a/src/kibana/components/typeahead/partials/typeahead-items.html b/src/plugins/ui/public/components/typeahead/partials/typeahead-items.html similarity index 100% rename from src/kibana/components/typeahead/partials/typeahead-items.html rename to src/plugins/ui/public/components/typeahead/partials/typeahead-items.html diff --git a/src/kibana/components/typeahead/typeahead.js b/src/plugins/ui/public/components/typeahead/typeahead.js similarity index 100% rename from src/kibana/components/typeahead/typeahead.js rename to src/plugins/ui/public/components/typeahead/typeahead.js diff --git a/src/kibana/components/typeahead/typeahead.less b/src/plugins/ui/public/components/typeahead/typeahead.less similarity index 100% rename from src/kibana/components/typeahead/typeahead.less rename to src/plugins/ui/public/components/typeahead/typeahead.less diff --git a/src/kibana/components/url/url.js b/src/plugins/ui/public/components/url/url.js similarity index 98% rename from src/kibana/components/url/url.js rename to src/plugins/ui/public/components/url/url.js index 2cdc495ca68ab..efc56e2097db0 100644 --- a/src/kibana/components/url/url.js +++ b/src/plugins/ui/public/components/url/url.js @@ -1,8 +1,8 @@ define(function (require) { var _ = require('lodash'); - require('filters/uriescape'); - require('filters/rison'); + require('ui/filters/uriescape'); + require('ui/filters/rison'); require('modules').get('kibana/url') .service('kbnUrl', function (Private) { return Private(KbnUrlProvider); }); diff --git a/src/kibana/components/validateDateInterval.js b/src/plugins/ui/public/components/validateDateInterval.js similarity index 100% rename from src/kibana/components/validateDateInterval.js rename to src/plugins/ui/public/components/validateDateInterval.js diff --git a/src/kibana/components/validate_query/lib/from_user.js b/src/plugins/ui/public/components/validate_query/lib/from_user.js similarity index 100% rename from src/kibana/components/validate_query/lib/from_user.js rename to src/plugins/ui/public/components/validate_query/lib/from_user.js diff --git a/src/kibana/components/validate_query/lib/to_user.js b/src/plugins/ui/public/components/validate_query/lib/to_user.js similarity index 100% rename from src/kibana/components/validate_query/lib/to_user.js rename to src/plugins/ui/public/components/validate_query/lib/to_user.js diff --git a/src/kibana/components/validate_query/validate_query.js b/src/plugins/ui/public/components/validate_query/validate_query.js similarity index 99% rename from src/kibana/components/validate_query/validate_query.js rename to src/plugins/ui/public/components/validate_query/validate_query.js index 5e1254e01f74e..f6860ec67b8f7 100644 --- a/src/kibana/components/validate_query/validate_query.js +++ b/src/plugins/ui/public/components/validate_query/validate_query.js @@ -2,7 +2,7 @@ define(function (require) { var _ = require('lodash'); var $ = require('jquery'); - require('services/debounce'); + require('components/debounce'); require('modules') .get('kibana') diff --git a/src/kibana/components/vis/AggConfig.js b/src/plugins/ui/public/components/vis/AggConfig.js similarity index 100% rename from src/kibana/components/vis/AggConfig.js rename to src/plugins/ui/public/components/vis/AggConfig.js diff --git a/src/kibana/components/vis/AggConfigResult.js b/src/plugins/ui/public/components/vis/AggConfigResult.js similarity index 100% rename from src/kibana/components/vis/AggConfigResult.js rename to src/plugins/ui/public/components/vis/AggConfigResult.js diff --git a/src/kibana/components/vis/AggConfigs.js b/src/plugins/ui/public/components/vis/AggConfigs.js similarity index 100% rename from src/kibana/components/vis/AggConfigs.js rename to src/plugins/ui/public/components/vis/AggConfigs.js diff --git a/src/kibana/components/vis/Renderbot.js b/src/plugins/ui/public/components/vis/Renderbot.js similarity index 100% rename from src/kibana/components/vis/Renderbot.js rename to src/plugins/ui/public/components/vis/Renderbot.js diff --git a/src/kibana/components/vis/Schemas.js b/src/plugins/ui/public/components/vis/Schemas.js similarity index 100% rename from src/kibana/components/vis/Schemas.js rename to src/plugins/ui/public/components/vis/Schemas.js diff --git a/src/kibana/components/vis/VisType.js b/src/plugins/ui/public/components/vis/VisType.js similarity index 100% rename from src/kibana/components/vis/VisType.js rename to src/plugins/ui/public/components/vis/VisType.js diff --git a/src/kibana/components/vis/vis.js b/src/plugins/ui/public/components/vis/vis.js similarity index 100% rename from src/kibana/components/vis/vis.js rename to src/plugins/ui/public/components/vis/vis.js diff --git a/src/kibana/components/vislib/components/color/color.js b/src/plugins/ui/public/components/vislib/components/color/color.js similarity index 100% rename from src/kibana/components/vislib/components/color/color.js rename to src/plugins/ui/public/components/vislib/components/color/color.js diff --git a/src/kibana/components/vislib/components/color/color_palette.js b/src/plugins/ui/public/components/vislib/components/color/color_palette.js similarity index 100% rename from src/kibana/components/vislib/components/color/color_palette.js rename to src/plugins/ui/public/components/vislib/components/color/color_palette.js diff --git a/src/kibana/components/vislib/components/color/seed_colors.js b/src/plugins/ui/public/components/vislib/components/color/seed_colors.js similarity index 100% rename from src/kibana/components/vislib/components/color/seed_colors.js rename to src/plugins/ui/public/components/vislib/components/color/seed_colors.js diff --git a/src/kibana/components/vislib/components/labels/data_array.js b/src/plugins/ui/public/components/vislib/components/labels/data_array.js similarity index 100% rename from src/kibana/components/vislib/components/labels/data_array.js rename to src/plugins/ui/public/components/vislib/components/labels/data_array.js diff --git a/src/kibana/components/vislib/components/labels/flatten_series.js b/src/plugins/ui/public/components/vislib/components/labels/flatten_series.js similarity index 100% rename from src/kibana/components/vislib/components/labels/flatten_series.js rename to src/plugins/ui/public/components/vislib/components/labels/flatten_series.js diff --git a/src/kibana/components/vislib/components/labels/labels.js b/src/plugins/ui/public/components/vislib/components/labels/labels.js similarity index 100% rename from src/kibana/components/vislib/components/labels/labels.js rename to src/plugins/ui/public/components/vislib/components/labels/labels.js diff --git a/src/kibana/components/vislib/components/labels/uniq_labels.js b/src/plugins/ui/public/components/vislib/components/labels/uniq_labels.js similarity index 100% rename from src/kibana/components/vislib/components/labels/uniq_labels.js rename to src/plugins/ui/public/components/vislib/components/labels/uniq_labels.js diff --git a/src/kibana/components/vislib/components/tooltip/_position_tooltip.js b/src/plugins/ui/public/components/vislib/components/tooltip/_position_tooltip.js similarity index 100% rename from src/kibana/components/vislib/components/tooltip/_position_tooltip.js rename to src/plugins/ui/public/components/vislib/components/tooltip/_position_tooltip.js diff --git a/src/kibana/components/vislib/components/tooltip/tooltip.js b/src/plugins/ui/public/components/vislib/components/tooltip/tooltip.js similarity index 100% rename from src/kibana/components/vislib/components/tooltip/tooltip.js rename to src/plugins/ui/public/components/vislib/components/tooltip/tooltip.js diff --git a/src/kibana/components/vislib/components/zero_injection/flatten_data.js b/src/plugins/ui/public/components/vislib/components/zero_injection/flatten_data.js similarity index 100% rename from src/kibana/components/vislib/components/zero_injection/flatten_data.js rename to src/plugins/ui/public/components/vislib/components/zero_injection/flatten_data.js diff --git a/src/kibana/components/vislib/components/zero_injection/inject_zeros.js b/src/plugins/ui/public/components/vislib/components/zero_injection/inject_zeros.js similarity index 100% rename from src/kibana/components/vislib/components/zero_injection/inject_zeros.js rename to src/plugins/ui/public/components/vislib/components/zero_injection/inject_zeros.js diff --git a/src/kibana/components/vislib/components/zero_injection/ordered_x_keys.js b/src/plugins/ui/public/components/vislib/components/zero_injection/ordered_x_keys.js similarity index 100% rename from src/kibana/components/vislib/components/zero_injection/ordered_x_keys.js rename to src/plugins/ui/public/components/vislib/components/zero_injection/ordered_x_keys.js diff --git a/src/kibana/components/vislib/components/zero_injection/uniq_keys.js b/src/plugins/ui/public/components/vislib/components/zero_injection/uniq_keys.js similarity index 100% rename from src/kibana/components/vislib/components/zero_injection/uniq_keys.js rename to src/plugins/ui/public/components/vislib/components/zero_injection/uniq_keys.js diff --git a/src/kibana/components/vislib/components/zero_injection/zero_fill_data_array.js b/src/plugins/ui/public/components/vislib/components/zero_injection/zero_fill_data_array.js similarity index 100% rename from src/kibana/components/vislib/components/zero_injection/zero_fill_data_array.js rename to src/plugins/ui/public/components/vislib/components/zero_injection/zero_fill_data_array.js diff --git a/src/kibana/components/vislib/components/zero_injection/zero_filled_array.js b/src/plugins/ui/public/components/vislib/components/zero_injection/zero_filled_array.js similarity index 100% rename from src/kibana/components/vislib/components/zero_injection/zero_filled_array.js rename to src/plugins/ui/public/components/vislib/components/zero_injection/zero_filled_array.js diff --git a/src/kibana/components/vislib/index.js b/src/plugins/ui/public/components/vislib/index.js similarity index 94% rename from src/kibana/components/vislib/index.js rename to src/plugins/ui/public/components/vislib/index.js index 32bd67f1532fe..d3ecdc149d62f 100644 --- a/src/kibana/components/vislib/index.js +++ b/src/plugins/ui/public/components/vislib/index.js @@ -1,7 +1,7 @@ define(function (require) { var module = require('modules').get('kibana/vislib', ['kibana']); - require('services/private'); + require('components/private'); module.service('d3', function () { return require('d3'); diff --git a/src/kibana/components/vislib/lib/_data_label.js b/src/plugins/ui/public/components/vislib/lib/_data_label.js similarity index 100% rename from src/kibana/components/vislib/lib/_data_label.js rename to src/plugins/ui/public/components/vislib/lib/_data_label.js diff --git a/src/kibana/components/vislib/lib/_error_handler.js b/src/plugins/ui/public/components/vislib/lib/_error_handler.js similarity index 100% rename from src/kibana/components/vislib/lib/_error_handler.js rename to src/plugins/ui/public/components/vislib/lib/_error_handler.js diff --git a/src/kibana/components/vislib/lib/alerts.js b/src/plugins/ui/public/components/vislib/lib/alerts.js similarity index 100% rename from src/kibana/components/vislib/lib/alerts.js rename to src/plugins/ui/public/components/vislib/lib/alerts.js diff --git a/src/kibana/components/vislib/lib/axis_title.js b/src/plugins/ui/public/components/vislib/lib/axis_title.js similarity index 100% rename from src/kibana/components/vislib/lib/axis_title.js rename to src/plugins/ui/public/components/vislib/lib/axis_title.js diff --git a/src/kibana/components/vislib/lib/chart_title.js b/src/plugins/ui/public/components/vislib/lib/chart_title.js similarity index 100% rename from src/kibana/components/vislib/lib/chart_title.js rename to src/plugins/ui/public/components/vislib/lib/chart_title.js diff --git a/src/kibana/components/vislib/lib/data.js b/src/plugins/ui/public/components/vislib/lib/data.js similarity index 100% rename from src/kibana/components/vislib/lib/data.js rename to src/plugins/ui/public/components/vislib/lib/data.js diff --git a/src/kibana/components/vislib/lib/dispatch.js b/src/plugins/ui/public/components/vislib/lib/dispatch.js similarity index 100% rename from src/kibana/components/vislib/lib/dispatch.js rename to src/plugins/ui/public/components/vislib/lib/dispatch.js diff --git a/src/kibana/components/vislib/lib/handler/handler.js b/src/plugins/ui/public/components/vislib/lib/handler/handler.js similarity index 100% rename from src/kibana/components/vislib/lib/handler/handler.js rename to src/plugins/ui/public/components/vislib/lib/handler/handler.js diff --git a/src/kibana/components/vislib/lib/handler/handler_types.js b/src/plugins/ui/public/components/vislib/lib/handler/handler_types.js similarity index 100% rename from src/kibana/components/vislib/lib/handler/handler_types.js rename to src/plugins/ui/public/components/vislib/lib/handler/handler_types.js diff --git a/src/kibana/components/vislib/lib/handler/types/pie.js b/src/plugins/ui/public/components/vislib/lib/handler/types/pie.js similarity index 100% rename from src/kibana/components/vislib/lib/handler/types/pie.js rename to src/plugins/ui/public/components/vislib/lib/handler/types/pie.js diff --git a/src/kibana/components/vislib/lib/handler/types/point_series.js b/src/plugins/ui/public/components/vislib/lib/handler/types/point_series.js similarity index 100% rename from src/kibana/components/vislib/lib/handler/types/point_series.js rename to src/plugins/ui/public/components/vislib/lib/handler/types/point_series.js diff --git a/src/kibana/components/vislib/lib/handler/types/tile_map.js b/src/plugins/ui/public/components/vislib/lib/handler/types/tile_map.js similarity index 100% rename from src/kibana/components/vislib/lib/handler/types/tile_map.js rename to src/plugins/ui/public/components/vislib/lib/handler/types/tile_map.js diff --git a/src/kibana/components/vislib/lib/layout/layout.js b/src/plugins/ui/public/components/vislib/lib/layout/layout.js similarity index 100% rename from src/kibana/components/vislib/lib/layout/layout.js rename to src/plugins/ui/public/components/vislib/lib/layout/layout.js diff --git a/src/kibana/components/vislib/lib/layout/layout_types.js b/src/plugins/ui/public/components/vislib/lib/layout/layout_types.js similarity index 100% rename from src/kibana/components/vislib/lib/layout/layout_types.js rename to src/plugins/ui/public/components/vislib/lib/layout/layout_types.js diff --git a/src/kibana/components/vislib/lib/layout/splits/column_chart/chart_split.js b/src/plugins/ui/public/components/vislib/lib/layout/splits/column_chart/chart_split.js similarity index 100% rename from src/kibana/components/vislib/lib/layout/splits/column_chart/chart_split.js rename to src/plugins/ui/public/components/vislib/lib/layout/splits/column_chart/chart_split.js diff --git a/src/kibana/components/vislib/lib/layout/splits/column_chart/chart_title_split.js b/src/plugins/ui/public/components/vislib/lib/layout/splits/column_chart/chart_title_split.js similarity index 100% rename from src/kibana/components/vislib/lib/layout/splits/column_chart/chart_title_split.js rename to src/plugins/ui/public/components/vislib/lib/layout/splits/column_chart/chart_title_split.js diff --git a/src/kibana/components/vislib/lib/layout/splits/column_chart/x_axis_split.js b/src/plugins/ui/public/components/vislib/lib/layout/splits/column_chart/x_axis_split.js similarity index 100% rename from src/kibana/components/vislib/lib/layout/splits/column_chart/x_axis_split.js rename to src/plugins/ui/public/components/vislib/lib/layout/splits/column_chart/x_axis_split.js diff --git a/src/kibana/components/vislib/lib/layout/splits/column_chart/y_axis_split.js b/src/plugins/ui/public/components/vislib/lib/layout/splits/column_chart/y_axis_split.js similarity index 100% rename from src/kibana/components/vislib/lib/layout/splits/column_chart/y_axis_split.js rename to src/plugins/ui/public/components/vislib/lib/layout/splits/column_chart/y_axis_split.js diff --git a/src/kibana/components/vislib/lib/layout/splits/pie_chart/chart_split.js b/src/plugins/ui/public/components/vislib/lib/layout/splits/pie_chart/chart_split.js similarity index 100% rename from src/kibana/components/vislib/lib/layout/splits/pie_chart/chart_split.js rename to src/plugins/ui/public/components/vislib/lib/layout/splits/pie_chart/chart_split.js diff --git a/src/kibana/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js b/src/plugins/ui/public/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js similarity index 100% rename from src/kibana/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js rename to src/plugins/ui/public/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js diff --git a/src/kibana/components/vislib/lib/layout/splits/tile_map/map_split.js b/src/plugins/ui/public/components/vislib/lib/layout/splits/tile_map/map_split.js similarity index 100% rename from src/kibana/components/vislib/lib/layout/splits/tile_map/map_split.js rename to src/plugins/ui/public/components/vislib/lib/layout/splits/tile_map/map_split.js diff --git a/src/kibana/components/vislib/lib/layout/types/column_layout.js b/src/plugins/ui/public/components/vislib/lib/layout/types/column_layout.js similarity index 100% rename from src/kibana/components/vislib/lib/layout/types/column_layout.js rename to src/plugins/ui/public/components/vislib/lib/layout/types/column_layout.js diff --git a/src/kibana/components/vislib/lib/layout/types/map_layout.js b/src/plugins/ui/public/components/vislib/lib/layout/types/map_layout.js similarity index 100% rename from src/kibana/components/vislib/lib/layout/types/map_layout.js rename to src/plugins/ui/public/components/vislib/lib/layout/types/map_layout.js diff --git a/src/kibana/components/vislib/lib/layout/types/pie_layout.js b/src/plugins/ui/public/components/vislib/lib/layout/types/pie_layout.js similarity index 100% rename from src/kibana/components/vislib/lib/layout/types/pie_layout.js rename to src/plugins/ui/public/components/vislib/lib/layout/types/pie_layout.js diff --git a/src/kibana/components/vislib/lib/legend.js b/src/plugins/ui/public/components/vislib/lib/legend.js similarity index 100% rename from src/kibana/components/vislib/lib/legend.js rename to src/plugins/ui/public/components/vislib/lib/legend.js diff --git a/src/kibana/components/vislib/lib/resize_checker.js b/src/plugins/ui/public/components/vislib/lib/resize_checker.js similarity index 98% rename from src/kibana/components/vislib/lib/resize_checker.js rename to src/plugins/ui/public/components/vislib/lib/resize_checker.js index b9d7e2c8ab84c..353e3e39e6823 100644 --- a/src/kibana/components/vislib/lib/resize_checker.js +++ b/src/plugins/ui/public/components/vislib/lib/resize_checker.js @@ -3,7 +3,7 @@ define(function (require) { var $ = require('jquery'); var _ = require('lodash'); - var EventEmitter = Private(require('factories/events')); + var EventEmitter = Private(require('components/events')); var reflowWatcher = Private(require('components/reflow_watcher')); var sequencer = require('utils/sequencer'); diff --git a/src/kibana/components/vislib/lib/x_axis.js b/src/plugins/ui/public/components/vislib/lib/x_axis.js similarity index 100% rename from src/kibana/components/vislib/lib/x_axis.js rename to src/plugins/ui/public/components/vislib/lib/x_axis.js diff --git a/src/kibana/components/vislib/lib/y_axis.js b/src/plugins/ui/public/components/vislib/lib/y_axis.js similarity index 100% rename from src/kibana/components/vislib/lib/y_axis.js rename to src/plugins/ui/public/components/vislib/lib/y_axis.js diff --git a/src/kibana/components/vislib/partials/legend_header.html b/src/plugins/ui/public/components/vislib/partials/legend_header.html similarity index 100% rename from src/kibana/components/vislib/partials/legend_header.html rename to src/plugins/ui/public/components/vislib/partials/legend_header.html diff --git a/src/kibana/components/vislib/partials/touchdown.tmpl.html b/src/plugins/ui/public/components/vislib/partials/touchdown.tmpl.html similarity index 100% rename from src/kibana/components/vislib/partials/touchdown.tmpl.html rename to src/plugins/ui/public/components/vislib/partials/touchdown.tmpl.html diff --git a/src/kibana/components/vislib/styles/_alerts.less b/src/plugins/ui/public/components/vislib/styles/_alerts.less similarity index 100% rename from src/kibana/components/vislib/styles/_alerts.less rename to src/plugins/ui/public/components/vislib/styles/_alerts.less diff --git a/src/kibana/components/vislib/styles/_error.less b/src/plugins/ui/public/components/vislib/styles/_error.less similarity index 100% rename from src/kibana/components/vislib/styles/_error.less rename to src/plugins/ui/public/components/vislib/styles/_error.less diff --git a/src/kibana/components/vislib/styles/_layout.less b/src/plugins/ui/public/components/vislib/styles/_layout.less similarity index 100% rename from src/kibana/components/vislib/styles/_layout.less rename to src/plugins/ui/public/components/vislib/styles/_layout.less diff --git a/src/kibana/components/vislib/styles/_legend.less b/src/plugins/ui/public/components/vislib/styles/_legend.less similarity index 100% rename from src/kibana/components/vislib/styles/_legend.less rename to src/plugins/ui/public/components/vislib/styles/_legend.less diff --git a/src/kibana/components/vislib/styles/_svg.less b/src/plugins/ui/public/components/vislib/styles/_svg.less similarity index 100% rename from src/kibana/components/vislib/styles/_svg.less rename to src/plugins/ui/public/components/vislib/styles/_svg.less diff --git a/src/kibana/components/vislib/styles/_tilemap.less b/src/plugins/ui/public/components/vislib/styles/_tilemap.less similarity index 100% rename from src/kibana/components/vislib/styles/_tilemap.less rename to src/plugins/ui/public/components/vislib/styles/_tilemap.less diff --git a/src/kibana/components/vislib/styles/_tooltip.less b/src/plugins/ui/public/components/vislib/styles/_tooltip.less similarity index 100% rename from src/kibana/components/vislib/styles/_tooltip.less rename to src/plugins/ui/public/components/vislib/styles/_tooltip.less diff --git a/src/kibana/components/vislib/styles/main.less b/src/plugins/ui/public/components/vislib/styles/main.less similarity index 100% rename from src/kibana/components/vislib/styles/main.less rename to src/plugins/ui/public/components/vislib/styles/main.less diff --git a/src/kibana/components/vislib/vis.js b/src/plugins/ui/public/components/vislib/vis.js similarity index 98% rename from src/kibana/components/vislib/vis.js rename to src/plugins/ui/public/components/vislib/vis.js index ca3194cf82846..009afbfd7a316 100644 --- a/src/kibana/components/vislib/vis.js +++ b/src/plugins/ui/public/components/vislib/vis.js @@ -3,7 +3,7 @@ define(function (require) { var _ = require('lodash'); var ResizeChecker = Private(require('components/vislib/lib/resize_checker')); - var Events = Private(require('factories/events')); + var Events = Private(require('components/events')); var handlerTypes = Private(require('components/vislib/lib/handler/handler_types')); var chartTypes = Private(require('components/vislib/visualizations/vis_types')); var errors = require('errors'); diff --git a/src/kibana/components/vislib/visualizations/_chart.js b/src/plugins/ui/public/components/vislib/visualizations/_chart.js similarity index 100% rename from src/kibana/components/vislib/visualizations/_chart.js rename to src/plugins/ui/public/components/vislib/visualizations/_chart.js diff --git a/src/kibana/components/vislib/visualizations/_point_series_chart.js b/src/plugins/ui/public/components/vislib/visualizations/_point_series_chart.js similarity index 100% rename from src/kibana/components/vislib/visualizations/_point_series_chart.js rename to src/plugins/ui/public/components/vislib/visualizations/_point_series_chart.js diff --git a/src/kibana/components/vislib/visualizations/area_chart.js b/src/plugins/ui/public/components/vislib/visualizations/area_chart.js similarity index 100% rename from src/kibana/components/vislib/visualizations/area_chart.js rename to src/plugins/ui/public/components/vislib/visualizations/area_chart.js diff --git a/src/kibana/components/vislib/visualizations/column_chart.js b/src/plugins/ui/public/components/vislib/visualizations/column_chart.js similarity index 100% rename from src/kibana/components/vislib/visualizations/column_chart.js rename to src/plugins/ui/public/components/vislib/visualizations/column_chart.js diff --git a/src/kibana/components/vislib/visualizations/line_chart.js b/src/plugins/ui/public/components/vislib/visualizations/line_chart.js similarity index 100% rename from src/kibana/components/vislib/visualizations/line_chart.js rename to src/plugins/ui/public/components/vislib/visualizations/line_chart.js diff --git a/src/kibana/components/vislib/visualizations/pie_chart.js b/src/plugins/ui/public/components/vislib/visualizations/pie_chart.js similarity index 100% rename from src/kibana/components/vislib/visualizations/pie_chart.js rename to src/plugins/ui/public/components/vislib/visualizations/pie_chart.js diff --git a/src/kibana/components/vislib/visualizations/tile_map.js b/src/plugins/ui/public/components/vislib/visualizations/tile_map.js similarity index 100% rename from src/kibana/components/vislib/visualizations/tile_map.js rename to src/plugins/ui/public/components/vislib/visualizations/tile_map.js diff --git a/src/kibana/components/vislib/visualizations/time_marker.js b/src/plugins/ui/public/components/vislib/visualizations/time_marker.js similarity index 100% rename from src/kibana/components/vislib/visualizations/time_marker.js rename to src/plugins/ui/public/components/vislib/visualizations/time_marker.js diff --git a/src/kibana/components/vislib/visualizations/vis_types.js b/src/plugins/ui/public/components/vislib/visualizations/vis_types.js similarity index 100% rename from src/kibana/components/vislib/visualizations/vis_types.js rename to src/plugins/ui/public/components/vislib/visualizations/vis_types.js diff --git a/src/kibana/components/vislib_vis_type/VislibRenderbot.js b/src/plugins/ui/public/components/vislib_vis_type/VislibRenderbot.js similarity index 100% rename from src/kibana/components/vislib_vis_type/VislibRenderbot.js rename to src/plugins/ui/public/components/vislib_vis_type/VislibRenderbot.js diff --git a/src/kibana/components/vislib_vis_type/VislibVisType.js b/src/plugins/ui/public/components/vislib_vis_type/VislibVisType.js similarity index 100% rename from src/kibana/components/vislib_vis_type/VislibVisType.js rename to src/plugins/ui/public/components/vislib_vis_type/VislibVisType.js diff --git a/src/kibana/components/vislib_vis_type/buildChartData.js b/src/plugins/ui/public/components/vislib_vis_type/buildChartData.js similarity index 100% rename from src/kibana/components/vislib_vis_type/buildChartData.js rename to src/plugins/ui/public/components/vislib_vis_type/buildChartData.js diff --git a/src/kibana/components/visualize/spy/_req_resp_stats.html b/src/plugins/ui/public/components/visualize/spy/_req_resp_stats.html similarity index 100% rename from src/kibana/components/visualize/spy/_req_resp_stats.html rename to src/plugins/ui/public/components/visualize/spy/_req_resp_stats.html diff --git a/src/kibana/components/visualize/spy/_req_resp_stats.js b/src/plugins/ui/public/components/visualize/spy/_req_resp_stats.js similarity index 100% rename from src/kibana/components/visualize/spy/_req_resp_stats.js rename to src/plugins/ui/public/components/visualize/spy/_req_resp_stats.js diff --git a/src/kibana/components/visualize/spy/_spy.html b/src/plugins/ui/public/components/visualize/spy/_spy.html similarity index 100% rename from src/kibana/components/visualize/spy/_spy.html rename to src/plugins/ui/public/components/visualize/spy/_spy.html diff --git a/src/kibana/components/visualize/spy/_table.html b/src/plugins/ui/public/components/visualize/spy/_table.html similarity index 100% rename from src/kibana/components/visualize/spy/_table.html rename to src/plugins/ui/public/components/visualize/spy/_table.html diff --git a/src/kibana/components/visualize/spy/_table.js b/src/plugins/ui/public/components/visualize/spy/_table.js similarity index 100% rename from src/kibana/components/visualize/spy/_table.js rename to src/plugins/ui/public/components/visualize/spy/_table.js diff --git a/src/kibana/components/visualize/spy/spy.js b/src/plugins/ui/public/components/visualize/spy/spy.js similarity index 100% rename from src/kibana/components/visualize/spy/spy.js rename to src/plugins/ui/public/components/visualize/spy/spy.js diff --git a/src/kibana/components/visualize/visualize.html b/src/plugins/ui/public/components/visualize/visualize.html similarity index 100% rename from src/kibana/components/visualize/visualize.html rename to src/plugins/ui/public/components/visualize/visualize.html diff --git a/src/kibana/components/visualize/visualize.js b/src/plugins/ui/public/components/visualize/visualize.js similarity index 100% rename from src/kibana/components/visualize/visualize.js rename to src/plugins/ui/public/components/visualize/visualize.js diff --git a/src/kibana/components/visualize/visualize.less b/src/plugins/ui/public/components/visualize/visualize.less similarity index 100% rename from src/kibana/components/visualize/visualize.less rename to src/plugins/ui/public/components/visualize/visualize.less diff --git a/src/kibana/components/watch_multi.js b/src/plugins/ui/public/components/watch_multi.js similarity index 100% rename from src/kibana/components/watch_multi.js rename to src/plugins/ui/public/components/watch_multi.js diff --git a/src/kibana/directives/auto_select_if_only_one.js b/src/plugins/ui/public/directives/auto_select_if_only_one.js similarity index 100% rename from src/kibana/directives/auto_select_if_only_one.js rename to src/plugins/ui/public/directives/auto_select_if_only_one.js diff --git a/src/kibana/directives/click_focus.js b/src/plugins/ui/public/directives/click_focus.js similarity index 100% rename from src/kibana/directives/click_focus.js rename to src/plugins/ui/public/directives/click_focus.js diff --git a/src/kibana/directives/config.js b/src/plugins/ui/public/directives/config.js similarity index 98% rename from src/kibana/directives/config.js rename to src/plugins/ui/public/directives/config.js index 61bd4641acf8a..f7450864dcee8 100644 --- a/src/kibana/directives/config.js +++ b/src/plugins/ui/public/directives/config.js @@ -4,7 +4,7 @@ define(function (require) { var angular = require('angular'); var module = require('modules').get('kibana'); - require('directives/input_focus'); + require('ui/directives/input_focus'); /** * config directive diff --git a/src/kibana/directives/confirm_click.js b/src/plugins/ui/public/directives/confirm_click.js similarity index 100% rename from src/kibana/directives/confirm_click.js rename to src/plugins/ui/public/directives/confirm_click.js diff --git a/src/kibana/directives/css_truncate.js b/src/plugins/ui/public/directives/css_truncate.js similarity index 100% rename from src/kibana/directives/css_truncate.js rename to src/plugins/ui/public/directives/css_truncate.js diff --git a/src/kibana/directives/field_name.js b/src/plugins/ui/public/directives/field_name.js similarity index 98% rename from src/kibana/directives/field_name.js rename to src/plugins/ui/public/directives/field_name.js index 51ef43afe43b5..bff2670d6b35d 100644 --- a/src/kibana/directives/field_name.js +++ b/src/plugins/ui/public/directives/field_name.js @@ -1,6 +1,6 @@ define(function (require) { var module = require('modules').get('kibana'); - require('filters/short_dots'); + require('ui/filters/short_dots'); module.directive('fieldName', function ($compile, $rootScope, $filter) { return { diff --git a/src/kibana/directives/file_upload.js b/src/plugins/ui/public/directives/file_upload.js similarity index 100% rename from src/kibana/directives/file_upload.js rename to src/plugins/ui/public/directives/file_upload.js diff --git a/src/kibana/directives/inequality.js b/src/plugins/ui/public/directives/inequality.js similarity index 100% rename from src/kibana/directives/inequality.js rename to src/plugins/ui/public/directives/inequality.js diff --git a/src/kibana/directives/infinite_scroll.js b/src/plugins/ui/public/directives/infinite_scroll.js similarity index 100% rename from src/kibana/directives/infinite_scroll.js rename to src/plugins/ui/public/directives/infinite_scroll.js diff --git a/src/kibana/directives/info.js b/src/plugins/ui/public/directives/info.js similarity index 86% rename from src/kibana/directives/info.js rename to src/plugins/ui/public/directives/info.js index 36fae2fdfec4e..267f2579a9522 100644 --- a/src/kibana/directives/info.js +++ b/src/plugins/ui/public/directives/info.js @@ -1,5 +1,5 @@ define(function (require) { - var html = require('text!partials/info.html'); + var html = require('text!ui/partials/info.html'); require('modules') .get('kibana') @@ -16,4 +16,4 @@ define(function (require) { } }; }); -}); \ No newline at end of file +}); diff --git a/src/kibana/directives/input_datetime.js b/src/plugins/ui/public/directives/input_datetime.js similarity index 100% rename from src/kibana/directives/input_datetime.js rename to src/plugins/ui/public/directives/input_datetime.js diff --git a/src/kibana/directives/input_focus.js b/src/plugins/ui/public/directives/input_focus.js similarity index 100% rename from src/kibana/directives/input_focus.js rename to src/plugins/ui/public/directives/input_focus.js diff --git a/src/kibana/directives/input_whole_number.js b/src/plugins/ui/public/directives/input_whole_number.js similarity index 100% rename from src/kibana/directives/input_whole_number.js rename to src/plugins/ui/public/directives/input_whole_number.js diff --git a/src/kibana/directives/paginate.js b/src/plugins/ui/public/directives/paginate.js similarity index 98% rename from src/kibana/directives/paginate.js rename to src/plugins/ui/public/directives/paginate.js index d0a1e8ce2be77..1809537535b4c 100644 --- a/src/kibana/directives/paginate.js +++ b/src/plugins/ui/public/directives/paginate.js @@ -190,9 +190,9 @@ define(function (require) { // this directive is automatically added by paginate if not found within it's $el return { restrict: 'E', - template: require('text!partials/paginate_controls.html') + template: require('text!ui/partials/paginate_controls.html') }; }); -}); \ No newline at end of file +}); diff --git a/src/kibana/directives/pretty_duration.js b/src/plugins/ui/public/directives/pretty_duration.js similarity index 100% rename from src/kibana/directives/pretty_duration.js rename to src/plugins/ui/public/directives/pretty_duration.js diff --git a/src/kibana/directives/rows.js b/src/plugins/ui/public/directives/rows.js similarity index 100% rename from src/kibana/directives/rows.js rename to src/plugins/ui/public/directives/rows.js diff --git a/src/kibana/directives/saved_object_finder.js b/src/plugins/ui/public/directives/saved_object_finder.js similarity index 98% rename from src/kibana/directives/saved_object_finder.js rename to src/plugins/ui/public/directives/saved_object_finder.js index 46fb52e957b0d..ad6f49e1a4c50 100644 --- a/src/kibana/directives/saved_object_finder.js +++ b/src/plugins/ui/public/directives/saved_object_finder.js @@ -31,7 +31,7 @@ define(function (require) { // optional on-choose attr, sets the userOnChoose in our scope userOnChoose: '=?onChoose' }, - template: require('text!partials/saved_object_finder.html'), + template: require('text!ui/partials/saved_object_finder.html'), link: function ($scope, $el) { // the text input element var $input = $el.find('input[ng-model=filter]'); diff --git a/src/kibana/directives/spinner.js b/src/plugins/ui/public/directives/spinner.js similarity index 100% rename from src/kibana/directives/spinner.js rename to src/plugins/ui/public/directives/spinner.js diff --git a/src/kibana/directives/truncated.js b/src/plugins/ui/public/directives/truncated.js similarity index 100% rename from src/kibana/directives/truncated.js rename to src/plugins/ui/public/directives/truncated.js diff --git a/src/kibana/directives/validate_cidr_mask.js b/src/plugins/ui/public/directives/validate_cidr_mask.js similarity index 100% rename from src/kibana/directives/validate_cidr_mask.js rename to src/plugins/ui/public/directives/validate_cidr_mask.js diff --git a/src/kibana/directives/validate_date_math.js b/src/plugins/ui/public/directives/validate_date_math.js similarity index 100% rename from src/kibana/directives/validate_date_math.js rename to src/plugins/ui/public/directives/validate_date_math.js diff --git a/src/kibana/directives/validate_index_name.js b/src/plugins/ui/public/directives/validate_index_name.js similarity index 100% rename from src/kibana/directives/validate_index_name.js rename to src/plugins/ui/public/directives/validate_index_name.js diff --git a/src/kibana/directives/validate_ip.js b/src/plugins/ui/public/directives/validate_ip.js similarity index 100% rename from src/kibana/directives/validate_ip.js rename to src/plugins/ui/public/directives/validate_ip.js diff --git a/src/kibana/directives/validate_json.js b/src/plugins/ui/public/directives/validate_json.js similarity index 100% rename from src/kibana/directives/validate_json.js rename to src/plugins/ui/public/directives/validate_json.js diff --git a/src/kibana/components/errors.js b/src/plugins/ui/public/errors.js similarity index 100% rename from src/kibana/components/errors.js rename to src/plugins/ui/public/errors.js diff --git a/src/kibana/filters/_prop_filter.js b/src/plugins/ui/public/filters/_prop_filter.js similarity index 100% rename from src/kibana/filters/_prop_filter.js rename to src/plugins/ui/public/filters/_prop_filter.js diff --git a/src/kibana/filters/field_type.js b/src/plugins/ui/public/filters/field_type.js similarity index 84% rename from src/kibana/filters/field_type.js rename to src/plugins/ui/public/filters/field_type.js index 35179a3275266..e7b385f98466c 100644 --- a/src/kibana/filters/field_type.js +++ b/src/plugins/ui/public/filters/field_type.js @@ -3,7 +3,7 @@ // Or an array of types to get all fields of that type define(function (require) { var _ = require('lodash'); - var propFilter = require('filters/_prop_filter'); + var propFilter = require('ui/filters/_prop_filter'); require('modules') .get('kibana') diff --git a/src/kibana/filters/label.js b/src/plugins/ui/public/filters/label.js similarity index 100% rename from src/kibana/filters/label.js rename to src/plugins/ui/public/filters/label.js diff --git a/src/kibana/filters/match_any.js b/src/plugins/ui/public/filters/match_any.js similarity index 100% rename from src/kibana/filters/match_any.js rename to src/plugins/ui/public/filters/match_any.js diff --git a/src/kibana/filters/moment.js b/src/plugins/ui/public/filters/moment.js similarity index 100% rename from src/kibana/filters/moment.js rename to src/plugins/ui/public/filters/moment.js diff --git a/src/kibana/filters/rison.js b/src/plugins/ui/public/filters/rison.js similarity index 100% rename from src/kibana/filters/rison.js rename to src/plugins/ui/public/filters/rison.js diff --git a/src/kibana/filters/short_dots.js b/src/plugins/ui/public/filters/short_dots.js similarity index 100% rename from src/kibana/filters/short_dots.js rename to src/plugins/ui/public/filters/short_dots.js diff --git a/src/kibana/filters/start_from.js b/src/plugins/ui/public/filters/start_from.js similarity index 100% rename from src/kibana/filters/start_from.js rename to src/plugins/ui/public/filters/start_from.js diff --git a/src/kibana/filters/trust_as_html.js b/src/plugins/ui/public/filters/trust_as_html.js similarity index 100% rename from src/kibana/filters/trust_as_html.js rename to src/plugins/ui/public/filters/trust_as_html.js diff --git a/src/kibana/filters/unique.js b/src/plugins/ui/public/filters/unique.js similarity index 100% rename from src/kibana/filters/unique.js rename to src/plugins/ui/public/filters/unique.js diff --git a/src/kibana/filters/uriescape.js b/src/plugins/ui/public/filters/uriescape.js similarity index 100% rename from src/kibana/filters/uriescape.js rename to src/plugins/ui/public/filters/uriescape.js diff --git a/src/kibana/images/initial_load.gif b/src/plugins/ui/public/images/initial_load.gif similarity index 100% rename from src/kibana/images/initial_load.gif rename to src/plugins/ui/public/images/initial_load.gif diff --git a/src/kibana/images/no_border.png b/src/plugins/ui/public/images/logo.png similarity index 100% rename from src/kibana/images/no_border.png rename to src/plugins/ui/public/images/logo.png diff --git a/src/kibana/utils/modules.js b/src/plugins/ui/public/modules.js similarity index 100% rename from src/kibana/utils/modules.js rename to src/plugins/ui/public/modules.js diff --git a/src/kibana/partials/global_config.html b/src/plugins/ui/public/partials/global_config.html similarity index 100% rename from src/kibana/partials/global_config.html rename to src/plugins/ui/public/partials/global_config.html diff --git a/src/kibana/partials/info.html b/src/plugins/ui/public/partials/info.html similarity index 100% rename from src/kibana/partials/info.html rename to src/plugins/ui/public/partials/info.html diff --git a/src/kibana/partials/nav_config.html b/src/plugins/ui/public/partials/nav_config.html similarity index 100% rename from src/kibana/partials/nav_config.html rename to src/plugins/ui/public/partials/nav_config.html diff --git a/src/kibana/partials/paginate_controls.html b/src/plugins/ui/public/partials/paginate_controls.html similarity index 100% rename from src/kibana/partials/paginate_controls.html rename to src/plugins/ui/public/partials/paginate_controls.html diff --git a/src/kibana/partials/saved_object_finder.html b/src/plugins/ui/public/partials/saved_object_finder.html similarity index 100% rename from src/kibana/partials/saved_object_finder.html rename to src/plugins/ui/public/partials/saved_object_finder.html diff --git a/src/kibana/partials/truncate_by_height.html b/src/plugins/ui/public/partials/truncate_by_height.html similarity index 100% rename from src/kibana/partials/truncate_by_height.html rename to src/plugins/ui/public/partials/truncate_by_height.html diff --git a/src/plugins/ui/public/require.config.js b/src/plugins/ui/public/require.config.js new file mode 100644 index 0000000000000..2a4dd4e8700c6 --- /dev/null +++ b/src/plugins/ui/public/require.config.js @@ -0,0 +1,76 @@ +require.config({ + baseUrl: '../../', + paths: { + chrome: 'plugins/ui/chrome', + ui: 'plugins/ui/ui', + components: 'plugins/ui/components', + utils: 'plugins/ui/utils', + routes: 'plugins/ui/routes/index', + errors: 'plugins/ui/errors', + modules: 'plugins/ui/modules', + lodash: 'plugins/ui/mixins', + + // special utils + registry: 'components/registry', + + // bower_components + 'angular-bindonce': 'bower_components/angular-bindonce/bindonce', + 'angular-bootstrap': 'bower_components/angular-bootstrap/ui-bootstrap-tpls', + 'angular-elastic': 'bower_components/angular-elastic/elastic', + 'angular-route': 'bower_components/angular-route/angular-route', + 'angular-ui-ace': 'bower_components/angular-ui-ace/ui-ace', + ace: 'bower_components/ace-builds/src-noconflict/ace', + 'ace-json': 'bower_components/ace-builds/src-noconflict/mode-json', + angular: 'bower_components/angular/angular', + async: 'bower_components/async/lib/async', + bower_components: 'bower_components', + css: 'bower_components/require-css/css', + d3: 'bower_components/d3/d3', + elasticsearch: 'bower_components/elasticsearch/elasticsearch.angular', + faker: 'bower_components/Faker/faker', + file_saver: 'bower_components/FileSaver/FileSaver', + gridster: 'bower_components/gridster/dist/jquery.gridster', + 'leaflet-heat': 'bower_components/Leaflet.heat/dist/leaflet-heat', + jquery: 'bower_components/jquery/dist/jquery', + leaflet: 'bower_components/leaflet/dist/leaflet', + 'leaflet-draw': 'bower_components/leaflet-draw/dist/leaflet.draw', + lodash_src: 'bower_components/lodash/dist/lodash', + 'lodash-deep': 'bower_components/lodash-deep/factory', + moment: 'bower_components/moment/moment', + 'ng-clip': 'bower_components/ng-clip/src/ngClip', + text: 'bower_components/requirejs-text/text', + zeroclipboard: 'bower_components/zeroclipboard/dist/ZeroClipboard', + marked: 'bower_components/marked/lib/marked', + numeral: 'bower_components/numeral/numeral' + }, + shim: { + angular: { + deps: ['jquery'], + exports: 'angular' + }, + gridster: ['jquery', 'css!bower_components/gridster/dist/jquery.gridster.css'], + 'angular-route': ['angular'], + 'elasticsearch': ['angular'], + 'angular-bootstrap': ['angular'], + 'angular-bindonce': ['angular'], + 'ace-json': ['ace'], + 'angular-ui-ace': ['angular', 'ace', 'ace-json'], + 'ng-clip': ['angular', 'zeroclipboard'], + 'leaflet-heat': { + deps: ['leaflet'] + }, + file_saver: { + exports: 'saveAs' + }, + 'leaflet-draw': { + deps: ['leaflet', 'css!bower_components/leaflet-draw/dist/leaflet.draw.css'] + }, + leaflet: { + deps: ['css!bower_components/leaflet/dist/leaflet.css'] + }, + marked: { + exports: 'marked' + } + }, + waitSeconds: 60 +}); diff --git a/src/kibana/styles/_bootstrap.less b/src/plugins/ui/public/styles/_bootstrap.less similarity index 100% rename from src/kibana/styles/_bootstrap.less rename to src/plugins/ui/public/styles/_bootstrap.less diff --git a/src/kibana/styles/_callout.less b/src/plugins/ui/public/styles/_callout.less similarity index 100% rename from src/kibana/styles/_callout.less rename to src/plugins/ui/public/styles/_callout.less diff --git a/src/kibana/styles/_control_group.less b/src/plugins/ui/public/styles/_control_group.less similarity index 100% rename from src/kibana/styles/_control_group.less rename to src/plugins/ui/public/styles/_control_group.less diff --git a/src/kibana/styles/_font_icons.less b/src/plugins/ui/public/styles/_font_icons.less similarity index 100% rename from src/kibana/styles/_font_icons.less rename to src/plugins/ui/public/styles/_font_icons.less diff --git a/src/kibana/styles/_glyphicons.less b/src/plugins/ui/public/styles/_glyphicons.less similarity index 100% rename from src/kibana/styles/_glyphicons.less rename to src/plugins/ui/public/styles/_glyphicons.less diff --git a/src/kibana/styles/_hintbox.less b/src/plugins/ui/public/styles/_hintbox.less similarity index 100% rename from src/kibana/styles/_hintbox.less rename to src/plugins/ui/public/styles/_hintbox.less diff --git a/src/kibana/styles/_input.less b/src/plugins/ui/public/styles/_input.less similarity index 100% rename from src/kibana/styles/_input.less rename to src/plugins/ui/public/styles/_input.less diff --git a/src/kibana/styles/_mixins.less b/src/plugins/ui/public/styles/_mixins.less similarity index 100% rename from src/kibana/styles/_mixins.less rename to src/plugins/ui/public/styles/_mixins.less diff --git a/src/kibana/styles/_navbar.less b/src/plugins/ui/public/styles/_navbar.less similarity index 100% rename from src/kibana/styles/_navbar.less rename to src/plugins/ui/public/styles/_navbar.less diff --git a/src/kibana/styles/_notify.less b/src/plugins/ui/public/styles/_notify.less similarity index 100% rename from src/kibana/styles/_notify.less rename to src/plugins/ui/public/styles/_notify.less diff --git a/src/kibana/styles/_pagination.less b/src/plugins/ui/public/styles/_pagination.less similarity index 100% rename from src/kibana/styles/_pagination.less rename to src/plugins/ui/public/styles/_pagination.less diff --git a/src/kibana/styles/_sidebar.less b/src/plugins/ui/public/styles/_sidebar.less similarity index 100% rename from src/kibana/styles/_sidebar.less rename to src/plugins/ui/public/styles/_sidebar.less diff --git a/src/kibana/styles/_spinner.less b/src/plugins/ui/public/styles/_spinner.less similarity index 100% rename from src/kibana/styles/_spinner.less rename to src/plugins/ui/public/styles/_spinner.less diff --git a/src/kibana/styles/_table.less b/src/plugins/ui/public/styles/_table.less similarity index 100% rename from src/kibana/styles/_table.less rename to src/plugins/ui/public/styles/_table.less diff --git a/src/kibana/styles/_truncate.less b/src/plugins/ui/public/styles/_truncate.less similarity index 100% rename from src/kibana/styles/_truncate.less rename to src/plugins/ui/public/styles/_truncate.less diff --git a/src/kibana/styles/_variables.less b/src/plugins/ui/public/styles/_variables.less similarity index 100% rename from src/kibana/styles/_variables.less rename to src/plugins/ui/public/styles/_variables.less diff --git a/src/kibana/styles/main.less b/src/plugins/ui/public/styles/main.less similarity index 98% rename from src/kibana/styles/main.less rename to src/plugins/ui/public/styles/main.less index fe4e7e5551e72..ee0a91945db1b 100644 --- a/src/kibana/styles/main.less +++ b/src/plugins/ui/public/styles/main.less @@ -1,5 +1,5 @@ -@import "../bower_components/font-awesome/less/font-awesome.less"; -@import (reference) "lesshat.less"; +@import "font-awesome/less/font-awesome.less"; +@import (reference) "lesshat/build/lesshat.less"; // generic mixins @import (reference) "./_mixins.less"; diff --git a/src/kibana/styles/theme/_theme.less b/src/plugins/ui/public/styles/theme/_theme.less similarity index 100% rename from src/kibana/styles/theme/_theme.less rename to src/plugins/ui/public/styles/theme/_theme.less diff --git a/src/kibana/styles/theme/_variables.less b/src/plugins/ui/public/styles/theme/_variables.less similarity index 100% rename from src/kibana/styles/theme/_variables.less rename to src/plugins/ui/public/styles/theme/_variables.less diff --git a/src/kibana/styles/theme/elk.ico b/src/plugins/ui/public/styles/theme/elk.ico similarity index 100% rename from src/kibana/styles/theme/elk.ico rename to src/plugins/ui/public/styles/theme/elk.ico diff --git a/src/kibana/utils/BaseObject.js b/src/plugins/ui/public/utils/BaseObject.js similarity index 100% rename from src/kibana/utils/BaseObject.js rename to src/plugins/ui/public/utils/BaseObject.js diff --git a/src/kibana/utils/SimpleEmitter.js b/src/plugins/ui/public/utils/SimpleEmitter.js similarity index 100% rename from src/kibana/utils/SimpleEmitter.js rename to src/plugins/ui/public/utils/SimpleEmitter.js diff --git a/src/kibana/utils/add_word_breaks.js b/src/plugins/ui/public/utils/add_word_breaks.js similarity index 100% rename from src/kibana/utils/add_word_breaks.js rename to src/plugins/ui/public/utils/add_word_breaks.js diff --git a/src/kibana/utils/brush_event.js b/src/plugins/ui/public/utils/brush_event.js similarity index 100% rename from src/kibana/utils/brush_event.js rename to src/plugins/ui/public/utils/brush_event.js diff --git a/src/kibana/utils/cidr_mask.js b/src/plugins/ui/public/utils/cidr_mask.js similarity index 100% rename from src/kibana/utils/cidr_mask.js rename to src/plugins/ui/public/utils/cidr_mask.js diff --git a/src/kibana/utils/config_template.js b/src/plugins/ui/public/utils/config_template.js similarity index 100% rename from src/kibana/utils/config_template.js rename to src/plugins/ui/public/utils/config_template.js diff --git a/src/kibana/utils/date_range.js b/src/plugins/ui/public/utils/date_range.js similarity index 100% rename from src/kibana/utils/date_range.js rename to src/plugins/ui/public/utils/date_range.js diff --git a/src/kibana/utils/datemath.js b/src/plugins/ui/public/utils/datemath.js similarity index 100% rename from src/kibana/utils/datemath.js rename to src/plugins/ui/public/utils/datemath.js diff --git a/src/kibana/utils/decode_geo_hash.js b/src/plugins/ui/public/utils/decode_geo_hash.js similarity index 100% rename from src/kibana/utils/decode_geo_hash.js rename to src/plugins/ui/public/utils/decode_geo_hash.js diff --git a/src/kibana/utils/diff_object.js b/src/plugins/ui/public/utils/diff_object.js similarity index 100% rename from src/kibana/utils/diff_object.js rename to src/plugins/ui/public/utils/diff_object.js diff --git a/src/kibana/utils/diff_time_picker_vals.js b/src/plugins/ui/public/utils/diff_time_picker_vals.js similarity index 100% rename from src/kibana/utils/diff_time_picker_vals.js rename to src/plugins/ui/public/utils/diff_time_picker_vals.js diff --git a/src/kibana/utils/esBool.js b/src/plugins/ui/public/utils/esBool.js similarity index 100% rename from src/kibana/utils/esBool.js rename to src/plugins/ui/public/utils/esBool.js diff --git a/src/kibana/utils/ipv4_address.js b/src/plugins/ui/public/utils/ipv4_address.js similarity index 100% rename from src/kibana/utils/ipv4_address.js rename to src/plugins/ui/public/utils/ipv4_address.js diff --git a/src/kibana/utils/key_map.js b/src/plugins/ui/public/utils/key_map.js similarity index 100% rename from src/kibana/utils/key_map.js rename to src/plugins/ui/public/utils/key_map.js diff --git a/src/kibana/utils/lodash-mixins/collection.js b/src/plugins/ui/public/utils/lodash-mixins/collection.js similarity index 100% rename from src/kibana/utils/lodash-mixins/collection.js rename to src/plugins/ui/public/utils/lodash-mixins/collection.js diff --git a/src/kibana/utils/lodash-mixins/function.js b/src/plugins/ui/public/utils/lodash-mixins/function.js similarity index 100% rename from src/kibana/utils/lodash-mixins/function.js rename to src/plugins/ui/public/utils/lodash-mixins/function.js diff --git a/src/kibana/utils/lodash-mixins/index.js b/src/plugins/ui/public/utils/lodash-mixins/index.js similarity index 100% rename from src/kibana/utils/lodash-mixins/index.js rename to src/plugins/ui/public/utils/lodash-mixins/index.js diff --git a/src/kibana/utils/lodash-mixins/lang.js b/src/plugins/ui/public/utils/lodash-mixins/lang.js similarity index 100% rename from src/kibana/utils/lodash-mixins/lang.js rename to src/plugins/ui/public/utils/lodash-mixins/lang.js diff --git a/src/kibana/utils/lodash-mixins/object.js b/src/plugins/ui/public/utils/lodash-mixins/object.js similarity index 100% rename from src/kibana/utils/lodash-mixins/object.js rename to src/plugins/ui/public/utils/lodash-mixins/object.js diff --git a/src/kibana/utils/lodash-mixins/oop.js b/src/plugins/ui/public/utils/lodash-mixins/oop.js similarity index 100% rename from src/kibana/utils/lodash-mixins/oop.js rename to src/plugins/ui/public/utils/lodash-mixins/oop.js diff --git a/src/kibana/utils/lodash-mixins/string.js b/src/plugins/ui/public/utils/lodash-mixins/string.js similarity index 100% rename from src/kibana/utils/lodash-mixins/string.js rename to src/plugins/ui/public/utils/lodash-mixins/string.js diff --git a/src/kibana/utils/mapping_setup.js b/src/plugins/ui/public/utils/mapping_setup.js similarity index 100% rename from src/kibana/utils/mapping_setup.js rename to src/plugins/ui/public/utils/mapping_setup.js diff --git a/src/kibana/utils/no_white_space.js b/src/plugins/ui/public/utils/no_white_space.js similarity index 100% rename from src/kibana/utils/no_white_space.js rename to src/plugins/ui/public/utils/no_white_space.js diff --git a/src/kibana/utils/obj_define.js b/src/plugins/ui/public/utils/obj_define.js similarity index 100% rename from src/kibana/utils/obj_define.js rename to src/plugins/ui/public/utils/obj_define.js diff --git a/src/kibana/utils/ordinal_suffix.js b/src/plugins/ui/public/utils/ordinal_suffix.js similarity index 100% rename from src/kibana/utils/ordinal_suffix.js rename to src/plugins/ui/public/utils/ordinal_suffix.js diff --git a/src/kibana/utils/parse_interval.js b/src/plugins/ui/public/utils/parse_interval.js similarity index 100% rename from src/kibana/utils/parse_interval.js rename to src/plugins/ui/public/utils/parse_interval.js diff --git a/src/kibana/utils/query_string.js b/src/plugins/ui/public/utils/query_string.js similarity index 100% rename from src/kibana/utils/query_string.js rename to src/plugins/ui/public/utils/query_string.js diff --git a/src/kibana/utils/range.js b/src/plugins/ui/public/utils/range.js similarity index 100% rename from src/kibana/utils/range.js rename to src/plugins/ui/public/utils/range.js diff --git a/src/kibana/utils/rison.js b/src/plugins/ui/public/utils/rison.js similarity index 100% rename from src/kibana/utils/rison.js rename to src/plugins/ui/public/utils/rison.js diff --git a/src/kibana/utils/sequencer.js b/src/plugins/ui/public/utils/sequencer.js similarity index 100% rename from src/kibana/utils/sequencer.js rename to src/plugins/ui/public/utils/sequencer.js diff --git a/src/kibana/utils/slugify_id.js b/src/plugins/ui/public/utils/slugify_id.js similarity index 100% rename from src/kibana/utils/slugify_id.js rename to src/plugins/ui/public/utils/slugify_id.js diff --git a/src/kibana/utils/supports.js b/src/plugins/ui/public/utils/supports.js similarity index 100% rename from src/kibana/utils/supports.js rename to src/plugins/ui/public/utils/supports.js diff --git a/src/kibana/utils/versionmath.js b/src/plugins/ui/public/utils/versionmath.js similarity index 100% rename from src/kibana/utils/versionmath.js rename to src/plugins/ui/public/utils/versionmath.js diff --git a/src/plugins/ui/views/chrome.jade b/src/plugins/ui/views/chrome.jade new file mode 100644 index 0000000000000..474bd1beb1679 --- /dev/null +++ b/src/plugins/ui/views/chrome.jade @@ -0,0 +1,36 @@ +- var j = JSON.stringify + +doctype html +html(lang='en') + head + meta(charset='utf-8') + meta(http-equiv='X-UA-Compatible', content='IE=edge,chrome=1') + meta(name='viewport', content='width=device-width') + link(rel='shortcut icon', href='/styles/theme/elk.ico') + title + link(rel='stylesheet', href='/styles/main.css?_b=#{buildNumber}') + body(kbn-chrome='', ng-class="'application-' + activeApp.id") + .col-md-offset-4.col-md-4.page-header.initial-load + center + img(width='128', alt='Loading Kibana', src='/images/initial_load.gif') + h1 + strong Kibana + small#cache-message + | is loading. Give me a moment here. I'm loading a whole bunch of code. Don't worry, all this good stuff will be cached up for next time! + script. + window.KIBANA_VERSION = !{ j(version) }; + window.KIBANA_BUILD_NUM = !{ j(buildNumber) }; + window.KIBANA_BUILD_SHA = !{ j(buildSha) }; + window.KIBANA_CONFIG = !{ j(config) } + + script(src='/bower_components/requirejs/require.js?_b=#{buildNumber}') + script(src='/lib/require.config.js?_b=#{buildNumber}') + script. + if (window.KIBANA_BUILD_NUM.substr(0, 2) !== '@@') { + // only cache bust if this is really the build number + require.config({ urlArgs: '_b=' + window.KIBANA_BUILD_NUM }); + } + + require(!{ j(['chrome'].concat(app.useModuleIds() || [])) }, function () { + require(!{ j(app.mainModuleId()) }, function () {}); + }); diff --git a/src/plugins/vis-debug-spy/index.js b/src/plugins/vis-debug-spy/index.js new file mode 100644 index 0000000000000..512c4d14fc0d7 --- /dev/null +++ b/src/plugins/vis-debug-spy/index.js @@ -0,0 +1,9 @@ +module.exports = function (kibana) { + return new kibana.Plugin({ + exports: { + spyModes: [ + 'plugins/vis-debug-spy/index' + ] + } + }); +}; diff --git a/src/plugins/vis-debug-spy/package.json b/src/plugins/vis-debug-spy/package.json new file mode 100644 index 0000000000000..41fde4235d721 --- /dev/null +++ b/src/plugins/vis-debug-spy/package.json @@ -0,0 +1,4 @@ +{ + "name": "vis-debug-spy", + "version": "1.0.0" +} diff --git a/src/kibana/plugins/vis_debug_spy/index.js b/src/plugins/vis-debug-spy/public/index.js similarity index 100% rename from src/kibana/plugins/vis_debug_spy/index.js rename to src/plugins/vis-debug-spy/public/index.js diff --git a/src/kibana/plugins/vis_debug_spy/vis_debug.html b/src/plugins/vis-debug-spy/public/vis_debug.html similarity index 100% rename from src/kibana/plugins/vis_debug_spy/vis_debug.html rename to src/plugins/vis-debug-spy/public/vis_debug.html diff --git a/src/kibana/plugins/vis_debug_spy/vis_debug.js b/src/plugins/vis-debug-spy/public/vis_debug.js similarity index 100% rename from src/kibana/plugins/vis_debug_spy/vis_debug.js rename to src/plugins/vis-debug-spy/public/vis_debug.js diff --git a/src/server/bin/kibana.js b/src/server/bin/kibana.js deleted file mode 100755 index 323b5f8546961..0000000000000 --- a/src/server/bin/kibana.js +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env node - -var _ = require('lodash'); -var Kibana = require('../'); -var program = require('commander'); -var path = require('path'); -var writePidFile = require('../lib/write_pid_file'); -var loadSettingsFromYAML = require('../lib/load_settings_from_yaml'); -var settings = { 'logging.console.json': true }; - -var env = (process.env.NODE_ENV) ? process.env.NODE_ENV : 'development'; -var packagePath = path.resolve(__dirname, '..', '..', '..', 'package.json'); -if (env !== 'development') { - packagePath = path.resolve(__dirname, '..', 'package.json'); -} -var package = require(packagePath); - -program.description('Kibana is an open source (Apache Licensed), browser based analytics and search dashboard for Elasticsearch.'); -program.version(package.version); -program.option('-e, --elasticsearch ', 'Elasticsearch instance'); -program.option('-c, --config ', 'Path to the config file'); -program.option('-p, --port ', 'The port to bind to', parseInt); -program.option('-q, --quiet', 'Turns off logging'); -program.option('-H, --host ', 'The host to bind to'); -program.option('-l, --log-file ', 'The file to log to'); -program.option('--plugins ', 'Path to scan for plugins'); -program.parse(process.argv); - - -if (program.plugins) { - settings['kibana.externalPluginsFolder'] = program.plugins; -} - -if (program.elasticsearch) { - settings['elasticsearch.url'] = program.elasticsearch; -} - -if (program.port) { - settings['kibana.server.port'] = program.port; -} - -if (program.host) { - settings['kibana.server.host'] = program.host; -} - -if (program.quiet) { - settings['logging.quiet'] = program.quiet; -} - -if (program.logFile) { - settings['logging.file'] = program.logFile; -} - -var configPath = program.config || process.env.CONFIG_PATH; -if (configPath) { - settings = _.defaults(settings, loadSettingsFromYAML(configPath)); -} - - - -// Start the Kibana server with the settings fromt he CLI and YAML file -var kibana = new Kibana(settings); -kibana.listen() -.then(writePidFile) -.catch(function (err) { - process.exit(1); -}); diff --git a/src/server/cli/index.js b/src/server/cli/index.js new file mode 100644 index 0000000000000..b1042e12b70f0 --- /dev/null +++ b/src/server/cli/index.js @@ -0,0 +1,57 @@ +var _ = require('lodash'); +var KbnServer = require('../../'); +var program = require('commander'); +var package = require('./utils/closestPackageJson').getSync(); +var readYamlConfig = require('./readYamlConfig'); + +program.description('Kibana is an open source (Apache Licensed), browser based analytics and search dashboard for Elasticsearch.'); +program.version(package.version); +program.option('-e, --elasticsearch ', 'Elasticsearch instance'); +program.option('-c, --config ', 'Path to the config file'); +program.option('-p, --port ', 'The port to bind to', parseInt); +program.option('-q, --quiet', 'Turns off logging'); +program.option('-H, --host ', 'The host to bind to'); +program.option('-l, --log-file ', 'The file to log to'); +program.option('--plugin-dir ', 'A path to scan for plugins, this can be specified multiple times to specify multiple directories'); +program.option('--plugin-path ', 'A path to a plugin which should be included by the server, this can be specified multiple times to specify multiple paths'); +program.option('--plguins ', 'an alias for --plugin-dir'); +program.parse(process.argv); + +var settings = _.defaults(readYamlConfig(program.config || process.env.CONFIG_PATH), { + 'logging.console.json': true +}); + +if (program.elasticsearch) { + settings['elasticsearch.url'] = program.elasticsearch; +} + +if (program.port) { + settings['kibana.server.port'] = program.port; +} + +if (program.host) { + settings['kibana.server.host'] = program.host; +} + +if (program.quiet) { + settings['logging.quiet'] = program.quiet; +} + +if (program.logFile) { + settings['logging.file'] = program.logFile; +} + +if (program.plugins || program.pluginDir) { + settings['kibana.pluginScanDirs'] = [].concat(program.plugins, program.pluginDir).filter(Boolean); +} + +if (program.pluginPath) { + settings['kibana.pluginPaths'] = [].concat(program.pluginPath); +} + +// Start the KbnServer server with the settings fromt he CLI and YAML file +var kibana = new KbnServer(settings); +kibana.listen().catch(function (err) { + console.log(err.stack); + process.exit(1); +}); diff --git a/src/server/cli/readYamlConfig.js b/src/server/cli/readYamlConfig.js new file mode 100644 index 0000000000000..bcdc7eae8e0e5 --- /dev/null +++ b/src/server/cli/readYamlConfig.js @@ -0,0 +1,43 @@ +var _ = require('lodash'); +var fs = require('fs'); +var yaml = require('js-yaml'); + +var legacySettingMap = { + port: 'kibana.server.port', + host: 'kibana.server.host', + elasticsearch_url: 'elasticsearch.url', + elasticsearch_preserve_host: 'elasticsearch.preserveHost', + config_index: 'config.index', + config_elasticsearch_username: 'elasticsearch.username', + config_elasticsearch_password: 'elasticsearch.password', + config_elasticsearch_client_crt: 'elasticsearch.ssl.cert', + config_elasticsearch_client_key: 'elasticsearch.ssl.key', + ca: 'elasticsearch.ssl.ca', + verify_ssl: 'elasticsearch.ssl.verify', + default_app_id: 'kibana.defaultAppId', + ping_timeout: 'elastcsearch.pingTimeout', + request_timeout: 'elastcsearch.requestTimeout', + shard_timeout: 'elastcsearch.shardTimeout', + startup_timeout: 'elastcsearch.startupTimeout', + ssl_cert_file: 'kibana.server.ssl.cert', + ssl_key_file: 'kibana.server.ssl.key', + pid_file: 'config.server.pidFile', + log_file: 'logging.file', + bundled_plugin_ids: 'kibana.bundledPluginIds' +}; + +module.exports = function (path) { + if (!path) return {}; + + var file = yaml.safeLoad(fs.readFileSync(path, 'utf8')); + + // transform legeacy options into new namespaced versions + return _.transform(file, function (config, val, key) { + if (legacySettingMap.hasOwnProperty(key)) { + key = legacySettingMap[key]; + } + + _.set(config, key, val); + }, {}); +}; + diff --git a/src/server/lib/config/config.js b/src/server/config/config.js similarity index 96% rename from src/server/lib/config/config.js rename to src/server/config/config.js index 32ffdf943bdc9..cab358cbb69d3 100644 --- a/src/server/lib/config/config.js +++ b/src/server/config/config.js @@ -3,10 +3,10 @@ var Joi = require('joi'); var _ = require('lodash'); var override = require('./override'); -function Config(schema, config) { - config = config || {}; +function Config(schema, defaults) { this.schema = schema || Joi.object({}).default(); - this.reset(config); + this.config = {}; + this.set(defaults || {}); } Config.prototype.extendSchema = function (key, schema) { diff --git a/src/server/lib/config/explode_by.js b/src/server/config/explodeBy.js similarity index 100% rename from src/server/lib/config/explode_by.js rename to src/server/config/explodeBy.js diff --git a/src/server/lib/config/flatten_with.js b/src/server/config/flattenWith.js similarity index 100% rename from src/server/lib/config/flatten_with.js rename to src/server/config/flattenWith.js diff --git a/src/server/config/index.js b/src/server/config/index.js new file mode 100644 index 0000000000000..8a4d4a509e175 --- /dev/null +++ b/src/server/config/index.js @@ -0,0 +1,10 @@ +var _ = require('lodash'); +var Config = require('./config'); +var schema = require('./schema'); + +module.exports = function (kibana) { + var server = kibana.server; + var settings = kibana.settings; + + server.decorate('server', 'config', _.constant(new Config(schema, settings))); +}; diff --git a/src/server/lib/config/override.js b/src/server/config/override.js similarity index 60% rename from src/server/lib/config/override.js rename to src/server/config/override.js index cebd160f197b9..a14ccb980706c 100644 --- a/src/server/lib/config/override.js +++ b/src/server/config/override.js @@ -1,6 +1,6 @@ -var _ = require('lodash'); -var flattenWith = require('./flatten_with'); -var explodeBy = require('./explode_by'); +var _ = require('lodash'); +var flattenWith = require('./flattenWith'); +var explodeBy = require('./explodeBy'); module.exports = function (target, source) { var _target = flattenWith('.', target); diff --git a/src/server/lib/config/schema.js b/src/server/config/schema.js similarity index 63% rename from src/server/lib/config/schema.js rename to src/server/config/schema.js index 0c3235f687ebf..e0b691028c92d 100644 --- a/src/server/lib/config/schema.js +++ b/src/server/config/schema.js @@ -1,22 +1,6 @@ var Joi = require('joi'); var fs = require('fs'); var path = require('path'); -var checkPath = require('./check_path'); -var packagePath = path.resolve(__dirname, '..', '..', 'package.json'); - -// Check if the local public folder is present. This means we are running in -// the NPM module. If it's not there then we are running in the git root. -var publicFolder = path.resolve(__dirname, '..', '..', 'public'); -if (!checkPath(publicFolder)) publicFolder = path.resolve(__dirname, '..', '..', '..', 'kibana'); - -try { - fs.statSync(packagePath); -} catch (err) { - packagePath = path.resolve(__dirname, '..', '..', '..', '..', 'package.json'); -} - -var bundledPluginsFolder = path.resolve(publicFolder, 'plugins'); - module.exports = Joi.object({ kibana: Joi.object({ @@ -32,11 +16,9 @@ module.exports = Joi.object({ }).default() }).default(), index: Joi.string().default('.kibana'), - publicFolder: Joi.string().default(publicFolder), - externalPluginsFolder: Joi.alternatives().try(Joi.array().items(Joi.string()), Joi.string()), - bundledPluginsFolder: Joi.string().default(bundledPluginsFolder), - defaultAppId: Joi.string().default('discover'), - package: Joi.any().default(require(packagePath)), + pluginPaths: Joi.array().items(Joi.string()).default([]), + pluginScanDirs: Joi.array().items(Joi.string()).default([]), + defaultAppId: Joi.string().default('kibana'), buildNum: Joi.string().default('@@buildNum'), bundledPluginIds: Joi.array().items(Joi.string()) }).default(), diff --git a/src/server/connections/index.js b/src/server/connections/index.js new file mode 100644 index 0000000000000..ff8aa70a5e190 --- /dev/null +++ b/src/server/connections/index.js @@ -0,0 +1,11 @@ +module.exports = function (kibana) { + var server = kibana.server; + var config = server.config(); + + // Create a new connection + server.connection({ + host: config.get('kibana.server.host'), + port: config.get('kibana.server.port') + }); + +}; diff --git a/src/server/fe-exports/FeApp.js b/src/server/fe-exports/FeApp.js new file mode 100644 index 0000000000000..fe788269c314c --- /dev/null +++ b/src/server/fe-exports/FeApp.js @@ -0,0 +1,21 @@ +var _ = require('lodash'); +var join = require('path').join; + +function FeApp(feExports, plugin, spec) { + this.feExports = feExports; + this.spec = spec; + + this.id = spec.id || plugin.name; + this.publicDir = spec.publicDir || join(plugin.path, 'public'); + this.useModuleIds = _.once(this.useModuleIds); +} + +FeApp.prototype.mainModuleId = function () { + return this.spec.main; +}; + +FeApp.prototype.useModuleIds = function () { + return this.feExports.find(_.get(this, 'spec.uses', [])); +}; + +module.exports = FeApp; diff --git a/src/server/lib/logging/good_reporters/file.js b/src/server/fe-exports/FeExport.js similarity index 100% rename from src/server/lib/logging/good_reporters/file.js rename to src/server/fe-exports/FeExport.js diff --git a/src/server/fe-exports/FeExportsCollection.js b/src/server/fe-exports/FeExportsCollection.js new file mode 100644 index 0000000000000..7eaed64d61dfc --- /dev/null +++ b/src/server/fe-exports/FeExportsCollection.js @@ -0,0 +1,70 @@ +var _ = require('lodash'); +var minimatch = require('minimatch'); + +var FeApp = require('./FeApp'); +var FeExport = require('./FeExport'); + +function FeExportsCollection(kibana) { + this.kibana = kibana; + this.apps = {}; + this.aliases = {}; + this.getConsumer = _.memoize(this.getConsumer); +} + +FeExportsCollection.prototype.readExports = function (plugin, exports) { + var self = this; + var unkown = _(exports).keys().reject(self.getConsumer, self).value(); + if (unkown.length) { + throw new Error('unknown export types ' + unkown.join(', ') + ' in plugin ' + plugin.name); + } + + _.forOwn(exports, function (spec, type) { + self.getConsumer(type)(plugin, spec); + }); +}; + +FeExportsCollection.prototype.getConsumer = function (type) { + var self = this; + switch (type) { + case 'app': + return function (plugin, spec) { + var app = new FeApp(self, plugin, spec); + + if (self.apps[app.id]) { + throw new Error('Unable to create two apps with the id ' + app.id + '.'); + } + + self.apps[app.id] = app; + }; + case 'visTypes': + case 'fieldFormats': + case 'spyModes': + return function (plugin, spec) { + self.aliases[type] = _.union(spec, self.aliases[type] || []); + }; + case 'aliases': + return function (plugin, specs) { + _.forOwn(specs, function (spec, adhocType) { + self.aliases[adhocType] = _.union(spec, self.aliases[adhocType] || []); + }); + }; + } +}; + +FeExportsCollection.prototype.find = function (patterns) { + var aliases = this.aliases; + var names = _.keys(aliases); + var matcher = _.partialRight(minimatch.filter, { matchBase: true }); + + return _.chain(patterns) + .map(function (pattern) { + return names.filter(matcher(pattern)); + }) + .flattenDeep() + .map(function (name) { + return aliases[name]; + }) + .value(); +}; + +module.exports = FeExportsCollection; diff --git a/src/server/fe-exports/index.js b/src/server/fe-exports/index.js new file mode 100644 index 0000000000000..d99afea05c6d9 --- /dev/null +++ b/src/server/fe-exports/index.js @@ -0,0 +1,10 @@ +module.exports = function (kibana) { + var server = kibana.server; + var FeExportsCollection = require('./FeExportsCollection'); + + server.decorate('server', 'getApps', function () { + return kibana.feExports.apps; + }); + + kibana.feExports = new FeExportsCollection(); +}; diff --git a/src/server/index.js b/src/server/index.js index a0107a1288b6f..4292aabf49ed3 100644 --- a/src/server/index.js +++ b/src/server/index.js @@ -1,68 +1,62 @@ var _ = require('lodash'); var Promise = require('bluebird'); var Hapi = require('hapi'); -var requirePlugins = require('./lib/plugins/require_plugins'); -var extendHapi = require('./lib/extend_hapi'); -var join = require('path').join; +var dirname = require('path').dirname; -function Kibana(settings, plugins) { - plugins = plugins || []; - this.server = new Hapi.Server(); - - // Extend Hapi with Kibana - extendHapi(this.server); - - var config = this.server.config(); - if (settings) config.set(settings); - - // Load external plugins - this.plugins = []; - var externalPluginsFolder = config.get('kibana.externalPluginsFolder'); - if (externalPluginsFolder) { - this.plugins = _([externalPluginsFolder]) - .flatten() - .map(requirePlugins) - .flatten() - .value(); - } - - this.plugins = this.plugins.concat(plugins); +var packagePath = require('./utils/closestPackageJson').findSync(); +var rootDir = dirname(packagePath); +var package = require(packagePath); +function KbnServer(settings) { + this.version = package.version; + this.rootDir = rootDir; + this.server = new Hapi.Server(); + this.settings = settings || {}; + this.ready = _.constant(this.mixin( + require('./status'), + require('./config'), + require('./connections'), + require('./logging'), + require('./fe-exports'), + require('./plugins') + )); } -Kibana.prototype.listen = function () { - var config = this.server.config(); +KbnServer.prototype.mixin = function () { var self = this; - // Create a new connection - this.server.connection({ - host: config.get('kibana.server.host'), - port: config.get('kibana.server.port') - }); + return Promise.each(_.toArray(arguments), function (fn) { + return fn(self); + }) + .then(_.noop); +}; - return this.server.loadKibanaPlugins(this.plugins) +KbnServer.prototype.listen = function () { + var self = this; + var server = self.server; + var start = _.ary(Promise.promisify(server.start, server), 0); + + return self.ready() .then(function () { - // Start the server - return new Promise(function (resolve, reject) { - self.server.start(function (err) { - if (err) return reject(err); - self.server.log('server', 'Server running at ' + self.server.info.uri); - resolve(self.server); - }); - }); + return self.mixin(start, require('./pid')); }) - .catch(function (err) { - self.server.log('fatal', err); - console.log(err.stack); - return Promise.reject(err); - }); + .then( + function () { + server.log('server', 'Server running at ' + server.info.uri); + }, + function (err) { + server.log('fatal', err); + throw err; + } + ); }; -Kibana.Plugin = require('./lib/plugins/plugin'); -module.exports = Kibana; - if (require.main === module) { - var kibana = new Kibana(); - kibana.listen().catch(function (err) { + (new KbnServer()) + .listen() + .catch(function (err) { + console.log(err.stack); process.exit(1); }); +} else { + module.exports = KbnServer; } diff --git a/src/server/lib/config/check_path.js b/src/server/lib/config/check_path.js deleted file mode 100644 index bd649fec1e27a..0000000000000 --- a/src/server/lib/config/check_path.js +++ /dev/null @@ -1,10 +0,0 @@ -var fs = require('fs'); -module.exports = function checkPath(path) { - try { - fs.statSync(path); - return true; - } catch (err) { - return false; - } -}; - diff --git a/src/server/lib/config/index.js b/src/server/lib/config/index.js deleted file mode 100644 index 6d3b2b9507db9..0000000000000 --- a/src/server/lib/config/index.js +++ /dev/null @@ -1,6 +0,0 @@ -var Config = require('./config'); -var schema = require('./schema'); -var config = new Config(schema); -module.exports = function () { - return config; -}; diff --git a/src/server/lib/extend_hapi.js b/src/server/lib/extend_hapi.js deleted file mode 100644 index 8e7505d03bd92..0000000000000 --- a/src/server/lib/extend_hapi.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = function (server) { - server.decorate('server', 'config', require('./config')); - server.decorate('server', 'loadKibanaPlugins', require('./plugins/load_kibana_plugins')); -}; diff --git a/src/server/lib/get_status.js b/src/server/lib/get_status.js deleted file mode 100644 index ed04cff1065b5..0000000000000 --- a/src/server/lib/get_status.js +++ /dev/null @@ -1,4 +0,0 @@ -var status = require('./status'); -module.exports = function (name) { - return status[name] || { state: 'red' }; -}; diff --git a/src/server/lib/load_settings_from_yaml.js b/src/server/lib/load_settings_from_yaml.js deleted file mode 100644 index e9b23f1078460..0000000000000 --- a/src/server/lib/load_settings_from_yaml.js +++ /dev/null @@ -1,29 +0,0 @@ -var fs = require('fs'); -var yaml = require('js-yaml'); -module.exports = function (path) { - var config = yaml.safeLoad(fs.readFileSync(path, 'utf8')); - var settings = {}; - if (config.port) settings['kibana.server.port'] = config.port; - if (config.host) settings['kibana.server.host'] = config.host; - if (config.elasticsearch_url) settings['elasticsearch.url'] = config.elasticsearch_url; - if (config.elasticsearch_preserve_host) settings['elasticsearch.preserveHost'] = config.elasticsearch_preserve_host; - if (config.config_index) settings['config.index'] = config.config_index; - if (config.config_elasticsearch_username) settings['elasticsearch.username'] = config.config_elasticsearch_username; - if (config.config_elasticsearch_password) settings['elasticsearch.password'] = config.config_elasticsearch_password; - if (config.config_elasticsearch_client_crt) settings['elasticsearch.ssl.cert'] = config.config_elasticsearch_client_crt; - if (config.config_elasticsearch_client_key) settings['elasticsearch.ssl.key'] = config.config_elasticsearch_client_key; - if (config.ca) settings['elasticsearch.ssl.ca'] = config.ca; - if (config.verify_ssl) settings['elasticsearch.ssl.verify'] = config.verify_ssl; - if (config.default_app_id) settings['kibana.defaultAppId'] = config.default_app_id; - if (config.ping_timeout) settings['elastcsearch.pingTimeout'] = config.ping_timeout; - if (config.request_timeout) settings['elastcsearch.requestTimeout'] = config.request_timeout; - if (config.shard_timeout) settings['elastcsearch.shardTimeout'] = config.shard_timeout; - if (config.startup_timeout) settings['elastcsearch.startupTimeout'] = config.startup_timeout; - if (config.ssl_cert_file) settings['kibana.server.ssl.cert'] = config.ssl_cert_file; - if (config.ssl_key_file) settings['kibana.server.ssl.key'] = config.ssl_key_file; - if (config.pid_file) settings['config.server.pidFile'] = config.pid_file; - if (config.log_file) settings['logging.file'] = config.log_file; - if (config.bundled_plugin_ids) settings['kibana.bundledPluginIds'] = config.bundled_plugin_ids; - return settings; -}; - diff --git a/src/server/lib/plugins/add_statics_for_public.js b/src/server/lib/plugins/add_statics_for_public.js deleted file mode 100644 index ed946bb24ba9d..0000000000000 --- a/src/server/lib/plugins/add_statics_for_public.js +++ /dev/null @@ -1,18 +0,0 @@ -var Promise = require('bluebird'); -module.exports = function (plugin) { - if (plugin.publicPath) { - plugin.server.route({ - config: { - id: plugin.name + ':public' - }, - method: 'GET', - path: '/' + plugin.name + '/{paths*}', - handler: { - directory: { - path: plugin.publicPath - } - } - }); - } - return Promise.resolve(plugin); -}; diff --git a/src/server/lib/plugins/check_dependencies.js b/src/server/lib/plugins/check_dependencies.js deleted file mode 100644 index be79aabb2b3c2..0000000000000 --- a/src/server/lib/plugins/check_dependencies.js +++ /dev/null @@ -1,18 +0,0 @@ -var _ = require('lodash'); -var checkDependencies = module.exports = function (name, deps, callStack) { - if (!deps[name]) throw new Error('Missing dependency: ' + name); - callStack = callStack || []; - if (_.contains(callStack, name)) { - callStack.push(name); - throw new Error('Circular dependency: ' + callStack.join(' -> ')); - } - for (var i = 0; i < deps[name].length; i++) { - var task = deps[name][i]; - if (!deps[task]) throw new Error('Missing dependency: ' + task); - if (deps[task].length) { - checkDependencies(task, deps, callStack.concat(name)); - } - } - return true; -}; - diff --git a/src/server/lib/plugins/list_plugins.js b/src/server/lib/plugins/list_plugins.js deleted file mode 100644 index 929c56af28af3..0000000000000 --- a/src/server/lib/plugins/list_plugins.js +++ /dev/null @@ -1,27 +0,0 @@ -var _ = require('lodash'); -var glob = require('glob'); -var path = require('path'); - -var plugins = function (dir) { - if (!dir) return []; - var files = glob.sync(path.join(dir, '*', 'index.js')) || []; - return files.map(function (file) { - return file.replace(dir, 'plugins').replace(/\.js$/, ''); - }); -}; - -var cache; - -module.exports = function (server) { - var config = server.config(); - if (!cache) { - var bundled_plugin_ids = config.get('kibana.bundledPluginIds') || []; - var bundled_plugins = plugins(config.get('kibana.bundledPluginsFolder')); - var external_plugins = _(server.plugins).map(function (plugin, name) { - return plugin.self && plugin.self.publicPlugins || []; - }).flatten().value(); - cache = bundled_plugin_ids.concat(bundled_plugins, external_plugins); - } - return cache; -}; - diff --git a/src/server/lib/plugins/load_kibana_plugins.js b/src/server/lib/plugins/load_kibana_plugins.js deleted file mode 100644 index bc8c190a37e12..0000000000000 --- a/src/server/lib/plugins/load_kibana_plugins.js +++ /dev/null @@ -1,21 +0,0 @@ -var Promise = require('bluebird'); -var registerPlugins = require('./register_plugins'); -var requirePlugins = require('./require_plugins'); -var logging = require('../logging/'); -var registerPluginConfigs = require('./register_plugin_configs'); - -module.exports = function (externalPlugins) { - // require all the internal plugins then concat witht the external - // plugins passed in from the start method. - var plugins = requirePlugins().concat(externalPlugins); - // setup logging then register the plugins - return logging(this) - // Setup the config schema for the plugins - .then(function (server) { - return registerPluginConfigs(server, plugins); - }) - // Register the plugins - .then(function (server) { - return registerPlugins(server, plugins); - }); -}; diff --git a/src/server/lib/plugins/plugin.js b/src/server/lib/plugins/plugin.js deleted file mode 100644 index 63a7049b23e8a..0000000000000 --- a/src/server/lib/plugins/plugin.js +++ /dev/null @@ -1,18 +0,0 @@ -var _ = require('lodash'); -var Promise = require('bluebird'); - -function Plugin(options) { - this.server = null; - this.status = null; - this.publicPath = null; - this.require = []; - this.init = function (server, options) { - return Promise.reject(new Error('You must override the init function for plugins')); - }; - this.config = function (Joi) { - return Joi.object({}).default(); - }; - _.assign(this, options); -} - -module.exports = Plugin; diff --git a/src/server/lib/plugins/register_plugin_configs.js b/src/server/lib/plugins/register_plugin_configs.js deleted file mode 100644 index 682889b18f43e..0000000000000 --- a/src/server/lib/plugins/register_plugin_configs.js +++ /dev/null @@ -1,22 +0,0 @@ -var Promise = require('bluebird'); -var Joi = require('joi'); -/** - * Execute the #config() call on each of the plugins and attach their schema's - * to the main config object under their namespace. - * @param {object} server Kibana server - * @param {array} plugins Plugins for Kibana - * @returns {Promise} - */ -module.exports = function (server, plugins) { - var config = server.config(); - return Promise.each(plugins, function (plugin) { - return Promise.resolve(plugin.config(Joi)).then(function (schema) { - var pluginSchema = {}; - if (schema) { - config.extendSchema(plugin.name, schema); - } - }); - }).then(function () { - return server; - }); -}; diff --git a/src/server/lib/plugins/register_plugins.js b/src/server/lib/plugins/register_plugins.js deleted file mode 100644 index 20deed50a0496..0000000000000 --- a/src/server/lib/plugins/register_plugins.js +++ /dev/null @@ -1,104 +0,0 @@ -var _ = require('lodash'); -var Promise = require('bluebird'); -var checkDependencies = require('./check_dependencies'); -var status = require('../status'); -var addStaticsForPublic = require('./add_statics_for_public'); - -/** - * Check to see if there are any circular dependencies for the task tree - * @param {array} plugins an array of plugins - * @returns {type} description - */ -function checkForCircularDependency(plugins) { - var deps = {}; - plugins.forEach(function (task) { - deps[task.name] = []; - if (task.require) deps[task.name] = task.require; - }); - return _(deps) - .keys() - .map(function (task) { - return checkDependencies(task, deps); - }) - .every(function (result) { - return result; - }); -} - -module.exports = function (server, plugins) { - var total = plugins.length; - var results = {}; - var running = {}; - var finished = false; - var todo = plugins.concat(); - - /** - * Checks to see if all the tasks are completed for an array of dependencies - * @param {array} tasks An array of plugin names - * @returns {boolean} if all the tasks are done this it will return true - */ - function allDone(tasks) { - var done = _.keys(results); - return tasks.every(function (dep) { - return _.contains(done, dep); - }); - } - - /** - * Register a plugin with the Kibana server - * - * This includes setting up the status object and setting the reference to - * the plugin's server - * - * @param {object} plugin The plugin to register - * @returns {Promise} - */ - function registerPlugin(plugin) { - var config = server.config(); - return new Promise(function (resolve, reject) { - var register = function (server, options, next) { - plugin.server = server; - plugin.server.expose('self', plugin); - status.createStatus(plugin); - Promise.try(plugin.init, [server, options], plugin).nodeify(next); - }; - register.attributes = { name: plugin.name }; - var options = config.get(plugin.name) || {}; - server.register({ register: register, options: options }, function (err) { - if (err) return reject(err); - // Only change the plugin status to green if the intial status has not - // been updated from yellow - Initializing - if (plugin.status.state === undefined) { - plugin.status.green('Ready'); - } - resolve(plugin); - }); - }); - } - - return new Promise(function (resolve, reject) { - // Check to see if we have a circular dependency - if (checkForCircularDependency(plugins)) { - (function runPending() { - plugins.forEach(function (plugin) { - // The running tasks are the same length as the results then we are - // done with all the plugin initalization tasks - if (_.keys(results).length === total) return resolve(results); - // If the current plugin is done or running the continue to the next one - if (results[plugin.name] || running[plugin.name]) return; - // If the current plugin doesn't have dependencies or all the dependencies - // are fullfilled then try running the plugin. - if (!plugin.require || (plugin.require && allDone(plugin.require))) { - running[plugin.name] = true; - registerPlugin(plugin) - .then(addStaticsForPublic) - .then(function () { - results[plugin.name] = true; - runPending(); - }).catch(reject); - } - }); - })(); - } - }); -}; diff --git a/src/server/lib/plugins/require_plugins.js b/src/server/lib/plugins/require_plugins.js deleted file mode 100644 index 5edbf4b32539e..0000000000000 --- a/src/server/lib/plugins/require_plugins.js +++ /dev/null @@ -1,31 +0,0 @@ -var path = require('path'); -var join = path.join; -var glob = require('glob'); -var Promise = require('bluebird'); -var checkPath = require('../config/check_path'); - -module.exports = function (globPath) { - globPath = globPath || join( __dirname, '..', '..', 'plugins', '*', 'index.js'); - return glob.sync(globPath).map(function (file) { - var module = require(file); - var regex = new RegExp('([^' + path.sep + ']+)' + path.sep + 'index.js'); - var matches = file.match(regex); - if (!module.name && matches) { - module.name = matches[1]; - } - - // has a public folder? - var publicPath = module.publicPath || join(path.dirname(file), 'public'); - if (checkPath(publicPath)) { - module.publicPath = publicPath; - if (!module.publicPlugins) { - module.publicPlugins = glob.sync(join(publicPath, 'plugins', '*', 'index.js')); - module.publicPlugins = module.publicPlugins.map(function (file) { - return file.replace(publicPath, module.name).replace(/\.js$/, ''); - }); - } - } - - return module; - }); -}; diff --git a/src/server/lib/plugins/validate_plugin.js b/src/server/lib/plugins/validate_plugin.js deleted file mode 100644 index 34d6234072d6d..0000000000000 --- a/src/server/lib/plugins/validate_plugin.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = function (plugin) { - return !!plugin.name; -}; diff --git a/src/server/lib/run_setup_tasks.js b/src/server/lib/run_setup_tasks.js deleted file mode 100644 index a110576e7c479..0000000000000 --- a/src/server/lib/run_setup_tasks.js +++ /dev/null @@ -1,6 +0,0 @@ -var Promise = require('bluebird'); -module.exports = function (server, tasks) { - return Promise.each(tasks, function (task) { - return task(server); - }); -}; diff --git a/src/server/lib/set_status.js b/src/server/lib/set_status.js deleted file mode 100644 index bf7457f90053a..0000000000000 --- a/src/server/lib/set_status.js +++ /dev/null @@ -1,4 +0,0 @@ -var status = require('./status'); -module.exports = function (name, color, message ) { - status[name] = { state: color, message: message }; -}; diff --git a/src/server/lib/start.js b/src/server/lib/start.js deleted file mode 100644 index e1fde4e1251d0..0000000000000 --- a/src/server/lib/start.js +++ /dev/null @@ -1,61 +0,0 @@ -var _ = require('lodash'); -var Promise = require('bluebird'); -var Hapi = require('hapi'); -var requirePlugins = require('./plugins/require_plugins'); -var validatePlugin = require('./plugins/validate_plugin'); -var extendHapi = require('./extend_hapi'); -var join = require('path').join; - - -module.exports = function (settings, plugins) { - // Plugin authors can use this to add plugins durring development - plugins = plugins || []; - - if (plugins.length && !plugins.every(validatePlugin)) { - return Promise.reject(new Error('Plugins must have a name attribute.')); - } - - // Initalize the Hapi server - var server = new Hapi.Server(); - - // Extend Hapi with Kibana - extendHapi(server); - - var config = server.config(); - if (settings) config.set(settings); - - // Create a new connection - server.connection({ - host: config.get('kibana.server.host'), - port: config.get('kibana.server.port') - }); - - // Load external plugins - var externalPlugins = []; - var externalPluginsFolder = config.get('kibana.externalPluginsFolder'); - if (externalPluginsFolder) { - externalPlugins = _([externalPluginsFolder]) - .flatten() - .map(requirePlugins) - .flatten() - .value(); - } - - // Load the plugins - return server.loadKibanaPlugins(externalPlugins.concat(plugins)) - .then(function () { - // Start the server - return new Promise(function (resolve, reject) { - server.start(function (err) { - if (err) return reject(err); - server.log('server', 'Server running at ' + server.info.uri); - resolve(server); - }); - }); - }) - .catch(function (err) { - server.log('fatal', err); - console.log(err.stack); - return Promise.reject(err); - }); -}; diff --git a/src/server/lib/status/index.js b/src/server/lib/status/index.js deleted file mode 100644 index a7b9a96cab41f..0000000000000 --- a/src/server/lib/status/index.js +++ /dev/null @@ -1,19 +0,0 @@ -var logStatusChange = require('./log_status_change'); -var Status = require('./status'); - -function SystemStatus() { - this.data = {}; -} - -SystemStatus.prototype.createStatus = function (plugin) { - plugin.status = new Status(plugin.name); - plugin.server.expose('status', plugin.status); - plugin.status.on('change', logStatusChange(plugin)); - this.data[plugin.name] = plugin.status; -}; - -SystemStatus.prototype.toJSON = function () { - return this.data; -}; - -module.exports = new SystemStatus(); diff --git a/src/server/lib/status/log_status_change.js b/src/server/lib/status/log_status_change.js deleted file mode 100644 index 1d606dacf099a..0000000000000 --- a/src/server/lib/status/log_status_change.js +++ /dev/null @@ -1,7 +0,0 @@ -var util = require('util'); -module.exports = function (plugin) { - return function (current, previous) { - var logMsg = util.format('[ %s ] Change status from %s to %s - %s', plugin.name, previous.state, current.state, current.message); - plugin.server.log('plugin', logMsg); - }; -}; diff --git a/src/server/lib/write_pid_file.js b/src/server/lib/write_pid_file.js deleted file mode 100644 index d7ac5bc74a472..0000000000000 --- a/src/server/lib/write_pid_file.js +++ /dev/null @@ -1,16 +0,0 @@ -var fs = require('fs'); -var Promise = require('bluebird'); -module.exports = function (server) { - return new Promise(function (resolve, reject) { - var config = server.config(); - var pidFile = config.get('kibana.server.pidFile'); - if (!pidFile) return resolve(server); - fs.writeFile(pidFile, process.pid, function (err) { - if (err) { - server.log('error', { err: err }); - return reject(err); - } - resolve(server); - }); - }); -}; diff --git a/src/server/lib/logging/good_reporters/_event_to_json.js b/src/server/logging/good_reporters/_event_to_json.js similarity index 85% rename from src/server/lib/logging/good_reporters/_event_to_json.js rename to src/server/logging/good_reporters/_event_to_json.js index 84d708ea3656b..6047f479a6072 100644 --- a/src/server/lib/logging/good_reporters/_event_to_json.js +++ b/src/server/logging/good_reporters/_event_to_json.js @@ -5,6 +5,8 @@ var numeral = require('numeral'); var ansicolors = require('ansicolors'); var stringify = require('json-stringify-safe'); var querystring = require('querystring'); +var format = require('util').format; +var inspect = require('util').inspect; function serializeError(err) { return { @@ -115,14 +117,17 @@ module.exports = function (name, event) { data.error = serializeError(event.error); data.url = event.url; } + else if (event.data instanceof Error) { + data.level = _.contains(event.tags, 'fatal') ? 'fatal' : 'error'; + data.message = event.data.message; + data.error = serializeError(event.data); + } + else if (_.isPlainObject(event.data) && event.data.message) { + _.assign(data, event.data); + data.message = _.template(event.data.message)(event.data); + } else { - if (event.data instanceof Error) { - data.level = _.contains(event.tags, 'fatal') ? 'fatal' : 'error'; - data.message = event.data.message; - data.error = serializeError(event.data); - } else { - data.message = event.data; - } + data.message = _.isString(event.data) ? event.data : inspect(event.data); } return data; }; diff --git a/src/server/lib/logging/good_reporters/console.js b/src/server/logging/good_reporters/console.js similarity index 100% rename from src/server/lib/logging/good_reporters/console.js rename to src/server/logging/good_reporters/console.js diff --git a/src/server/logging/good_reporters/file.js b/src/server/logging/good_reporters/file.js new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/src/server/lib/logging/index.js b/src/server/logging/index.js similarity index 94% rename from src/server/lib/logging/index.js rename to src/server/logging/index.js index 96ccc8e770fa9..81fd5b4f1113f 100644 --- a/src/server/lib/logging/index.js +++ b/src/server/logging/index.js @@ -5,7 +5,9 @@ var join = path.join; var Console = require('./good_reporters/console'); -module.exports = function (server) { +module.exports = function (kibana) { + var server = kibana.server; + return new Promise(function (resolve, reject) { var reporters = []; var config = server.config(); diff --git a/src/server/pid/index.js b/src/server/pid/index.js new file mode 100644 index 0000000000000..634cd0a6b7d36 --- /dev/null +++ b/src/server/pid/index.js @@ -0,0 +1,46 @@ +var _ = require('lodash'); +var Promise = require('bluebird'); +var writeFile = Promise.promisify(require('fs').writeFile); +var unlink = require('fs').unlinkSync; + +module.exports = Promise.method(function (kibana) { + var server = kibana.server; + var config = server.config(); + + var path = config.get('kibana.server.pidFile'); + var pid = String(process.pid); + if (!path) return; + + return writeFile(path, pid, { flag: 'wx' }) + .catch(function (err) { + if (err.code !== 'EEXIST') throw err; + + server.log(['pid', 'warn'], { + message: 'pid file already exists at <%= path %>', + path: path, + pid: pid + }); + + return writeFile(path, pid); + }) + .then(function () { + + server.log(['pid', 'debug'], { + message: 'wrote pid file to <%= path %>', + path: path, + pid: pid + }); + + var clean = _.once(function (code) { + unlink(path); + }); + + process.once('exit', clean); // for "natural" exits + process.once('SIGINT', function () { // for Ctrl-C exits + clean(); + + // resend SIGINT + process.kill(process.pid, 'SIGINT'); + }); + }); +}); diff --git a/src/server/plugins/Plugin.js b/src/server/plugins/Plugin.js new file mode 100644 index 0000000000000..1e93b62bbc368 --- /dev/null +++ b/src/server/plugins/Plugin.js @@ -0,0 +1,77 @@ +var _ = require('lodash'); +var inherits = require('util').inherits; +var Joi = require('joi'); +var Promise = require('bluebird'); +var join = require('path').join; + +function Plugin(kibana, path, package, opts) { + this._kibana = kibana; + this.package = package; + this.path = path; + + this.name = opts.name || package.name; + this.version = opts.version || package.version; + this.publicDir = _.get(opts, 'publicDir', join(path, 'public')); + this.externalInit = opts.init || _.noop; + this.getConfig = opts.config || _.noop; + + kibana.feExports.readExports(this, opts.exports); + + var readyCb; + var readyPromise = Promise.fromNode(function (cb) { readyCb = cb; }); + this.ready = _.constant(readyPromise); +} + +Plugin.scoped = function (kibana, path, package) { + function ScopedPlugin(opts) { + ScopedPlugin.super_.call(this, kibana, path, package, opts || {}); + } + inherits(ScopedPlugin, Plugin); + return ScopedPlugin; +}; + +Plugin.prototype.init = function () { + var self = this; + var name = self.name; + var version = self.version; + var server = this._kibana.server; + var status = this._kibana.status; + + var config = server.config(); + + return Promise.try(function () { + return self.getConfig(Joi); + }) + .then(function (schema) { + if (schema) config.extendSchema(name, schema); + }) + .then(function () { + return status.decoratePlugin(self); + }) + .then(function () { + + var register = function (server, options, next) { + server.expose('plugin', self); + Promise.try(self.externalInit, [server, options], self).nodeify(next); + }; + + register.attributes = { name: name, version: version }; + + return Promise.fromNode(function (cb) { + server.register({ + register: register, + options: config.has(name) ? config.get(name) : null + }, cb); + }); + + }) + .then(function () { + // Only change the plugin status to green if the + // intial status has not been updated + if (self.status.state === undefined) { + self.status.green('Ready'); + } + }); +}; + +module.exports = Plugin; diff --git a/src/server/plugins/PluginApi.js b/src/server/plugins/PluginApi.js new file mode 100644 index 0000000000000..a76bbab9b4813 --- /dev/null +++ b/src/server/plugins/PluginApi.js @@ -0,0 +1,11 @@ +var Plugin = require('./Plugin'); +var basename = require('path').basename; +var join = require('path').join; + +function PluginApi(kibana, pluginPath) { + this.rootDir = kibana.rootDir; + this.package = require(join(pluginPath, 'package.json')); + this.Plugin = Plugin.scoped(kibana, pluginPath, this.package); +} + +module.exports = PluginApi; diff --git a/src/server/plugins/config/index.js b/src/server/plugins/config/index.js deleted file mode 100644 index b771570d6fb91..0000000000000 --- a/src/server/plugins/config/index.js +++ /dev/null @@ -1,24 +0,0 @@ -var _ = require('lodash'); -var Promise = require('bluebird'); -var kibana = require('../../'); -var listPlugins = require('../../lib/plugins/list_plugins'); - -module.exports = new kibana.Plugin({ - init: function (server, options) { - - server.route({ - method: 'GET', - path: '/config', - handler: function (request, reply) { - var config = server.config(); - reply({ - kibana_index: config.get('kibana.index'), - default_app_id: config.get('kibana.defaultAppId'), - shard_timeout: config.get('elasticsearch.shardTimeout'), - plugins: listPlugins(server) - }); - } - }); - - } -}); diff --git a/src/server/plugins/elasticsearch/index.js b/src/server/plugins/elasticsearch/index.js deleted file mode 100644 index b95d86275ddc3..0000000000000 --- a/src/server/plugins/elasticsearch/index.js +++ /dev/null @@ -1,47 +0,0 @@ -var url = require('url'); -var http = require('http'); -var fs = require('fs'); -var resolve = require('url').resolve; -var querystring = require('querystring'); -var kibana = require('../../'); -var healthCheck = require('./lib/health_check'); -var exposeClient = require('./lib/expose_client'); -var createProxy = require('./lib/create_proxy'); - -module.exports = new kibana.Plugin({ - - init: function (server, options) { - var config = server.config(); - - // Expose the client to the server - exposeClient(server); - - - createProxy(server, 'GET', '/elasticsearch/{paths*}'); - createProxy(server, 'POST', '/elasticsearch/_mget'); - createProxy(server, 'POST', '/elasticsearch/_msearch'); - - function noBulkCheck(request, reply) { - if (/\/_bulk/.test(request.path)) { - return reply({ - error: 'You can not send _bulk requests to this interface.' - }).code(400).takeover(); - } - return reply.continue(); - } - - createProxy( - server, - ['PUT', 'POST', 'DELETE'], - '/elasticsearch/' + config.get('kibana.index') + '/{paths*}', - { - prefix: '/' + config.get('kibana.index'), - config: { pre: [ noBulkCheck ] } - } - ); - - // Set up the health check service and start it. - healthCheck(this, server).start(); - - } -}); diff --git a/src/server/plugins/index.js b/src/server/plugins/index.js new file mode 100644 index 0000000000000..fd2fa0de30b86 --- /dev/null +++ b/src/server/plugins/index.js @@ -0,0 +1,34 @@ +module.exports = function (kibana) { + var _ = require('lodash'); + var scan = require('./scan'); + var load = require('./load'); + var Promise = require('bluebird'); + var Boom = require('boom'); + var join = require('path').join; + + var server = kibana.server; + var config = server.config(); + + var scanDirs = [].concat(config.get('kibana.pluginScanDirs')); + var absolutePaths = [].concat(config.get('kibana.pluginPaths')); + + server.route({ + path: '/plugins/{id}/{path*}', + method: 'GET', + handler: function (req, reply) { + var id = req.params.id; + var path = req.params.path; + var plugin = _.get(server.plugins, [id, 'plugin']); + if (!plugin || !plugin.publicDir || !path) { + return reply(Boom.notFound()); + } + + return reply.file(join(plugin.publicDir, path)); + } + }); + + return Promise.try(scan, [server, scanDirs]) + .then(function (foundPaths) { + return load(kibana, _.union(foundPaths, absolutePaths)); + }); +}; diff --git a/src/server/plugins/load.js b/src/server/plugins/load.js new file mode 100644 index 0000000000000..9120ee6ed31d1 --- /dev/null +++ b/src/server/plugins/load.js @@ -0,0 +1,8 @@ +var Promise = require('bluebird'); +var PluginApi = require('./PluginApi'); + +module.exports = function (kibana, pluginPaths) { + return Promise.map(pluginPaths, function (pluginPath) { + return require(pluginPath)(new PluginApi(kibana, pluginPath)).init(); + }); +}; diff --git a/src/server/plugins/scan.js b/src/server/plugins/scan.js new file mode 100644 index 0000000000000..73f432d5948fb --- /dev/null +++ b/src/server/plugins/scan.js @@ -0,0 +1,33 @@ +var _ = require('lodash'); +var Promise = require('bluebird'); +var readdir = Promise.promisify(require('fs').readdir); +var stat = Promise.promisify(require('fs').stat); +var join = require('path').join; + +module.exports = function (server, includeDirs) { + return Promise.map(includeDirs, function (dir) { + server.log('plugin-scan', 'Scanning ' + dir + ' for plugins'); + + return readdir(dir).map(function (file) { + if (file === '.' || file === '..') return false; + var path = join(dir, file); + + return stat(path) + .then(function (stat) { + return stat.isDirectory() ? path : false; + }); + }); + }) + .then(_.flatten) + .then(_.compact) + .filter(function (dir) { + try { + require(dir); + server.log('plugin-scan', 'Found plugin at ' + dir); + return true; + } catch (e) { + server.log('plugin-scan', 'Skipping non-plugin directory at ' + dir); + return false; + } + }); +}; diff --git a/src/server/plugins/static/index.js b/src/server/plugins/static/index.js deleted file mode 100644 index a814fbc3744c5..0000000000000 --- a/src/server/plugins/static/index.js +++ /dev/null @@ -1,16 +0,0 @@ -var kibana = require('../../'); - -module.exports = new kibana.Plugin({ - init: function (server, options) { - var config = server.config(); - server.route({ - method: 'GET', - path: '/{param*}', - handler: { - directory: { - path: config.get('kibana.publicFolder') - } - } - }); - } -}); diff --git a/src/server/plugins/status/index.js b/src/server/plugins/status/index.js deleted file mode 100644 index 7b8922cf87dd3..0000000000000 --- a/src/server/plugins/status/index.js +++ /dev/null @@ -1,60 +0,0 @@ -var join = require('path').join; -var kibana = require('../../'); -var status = require('../../lib/status'); -var Series = require('./lib/series'); - -module.exports = new kibana.Plugin({ - - init: function (server, options) { - - var config = server.config(); - - var fiveMinuteData = { - rss: new Series(60), - heapTotal: new Series(60), - heapUsed: new Series(60), - load: new Series(60), - delay: new Series(60), - concurrency: new Series(60), - responseTimeAvg: new Series(60), - responseTimeMax: new Series(60), - requests: new Series(60), - }; - - server.plugins.good.monitor.on('ops', function (event) { - var port = String(config.get('kibana.server.port')); - fiveMinuteData.rss.push(event.psmem.rss); - fiveMinuteData.heapTotal.push(event.psmem.heapTotal); - fiveMinuteData.heapUsed.push(event.psmem.heapUsed); - fiveMinuteData.load.push(event.osload); - fiveMinuteData.delay.push(event.psdelay); - fiveMinuteData.concurrency.push(parseInt(event.concurrents[port], 0)); - if (event.responseTimes[port]) { - var responseTimeAvg = event.responseTimes[port].avg; - if (isNaN(responseTimeAvg)) responseTimeAvg = 0; - fiveMinuteData.responseTimeAvg.push(responseTimeAvg); - fiveMinuteData.responseTimeMax.push(event.responseTimes[port].max); - } else { - fiveMinuteData.responseTimeAvg.push(0); - fiveMinuteData.responseTimeMax.push(0); - } - if (event.requests[port]) { - fiveMinuteData.requests.push(event.requests[port].total); - } else { - fiveMinuteData.requests.push(0); - } - }); - - server.route({ - method: 'GET', - path: '/status/health', - handler: function (request, reply) { - return reply({ - metrics: fiveMinuteData, - status: status - }); - } - }); - } - -}); diff --git a/src/server/status/KbnStatus.js b/src/server/status/KbnStatus.js new file mode 100644 index 0000000000000..1a932d228a45f --- /dev/null +++ b/src/server/status/KbnStatus.js @@ -0,0 +1,28 @@ +var PluginStatus = require('./PluginStatus'); + +function KbnStatus(server) { + this.server = server; + this.perPlugin = {}; +} + +KbnStatus.prototype.decoratePlugin = function (plugin) { + var name = plugin.name; + var server = this.server; + var status = plugin.status = this.perPlugin[name] = new PluginStatus(name); + + status.on('change', function (current, previous) { + server.log(['plugin', 'status'], { + message: '[ <%= name %> ] Change status from <%= prev %> to <%= cur %> - <%= curMsg %>', + name: name, + prev: previous.state, + cur: current.state, + curMsg: current.message + }); + }); +}; + +KbnStatus.prototype.toJSON = function () { + return this.perPlugin; +}; + +module.exports = KbnStatus; diff --git a/src/server/lib/status/status.js b/src/server/status/PluginStatus.js similarity index 58% rename from src/server/lib/status/status.js rename to src/server/status/PluginStatus.js index 1c934d73f6ed0..d352a92e31175 100644 --- a/src/server/lib/status/status.js +++ b/src/server/status/PluginStatus.js @@ -1,16 +1,19 @@ var util = require('util'); var EventEmitter = require('events').EventEmitter; -util.inherits(Status, EventEmitter); -function Status(name) { +util.inherits(PluginStatus, EventEmitter); +function PluginStatus(name) { + PluginStatus.super_.call(this); + this.name = name; this.state = undefined; this.message = 'uninitialized'; - EventEmitter.call(this); - var self = this; } -function createStatusFn(color) { +PluginStatus.prototype.green = makeStatusUpdateFn('green'); +PluginStatus.prototype.yellow = makeStatusUpdateFn('yellow'); +PluginStatus.prototype.red = makeStatusUpdateFn('red'); +function makeStatusUpdateFn(color) { return function (message) { var previous = { state: this.state, @@ -24,12 +27,8 @@ function createStatusFn(color) { }; } -Status.prototype.green = createStatusFn('green'); -Status.prototype.yellow = createStatusFn('yellow'); -Status.prototype.red = createStatusFn('red'); - -Status.prototype.toJSON = function () { +PluginStatus.prototype.toJSON = function () { return { state: this.state, message: this.message }; }; -module.exports = Status; +module.exports = PluginStatus; diff --git a/src/server/status/index.js b/src/server/status/index.js new file mode 100644 index 0000000000000..b562ba1f6e11f --- /dev/null +++ b/src/server/status/index.js @@ -0,0 +1,5 @@ +var KbnStatus = require('./KbnStatus'); + +module.exports = function (kibana) { + kibana.status = new KbnStatus(kibana.server); +}; diff --git a/src/server/utils/closestPackageJson.js b/src/server/utils/closestPackageJson.js new file mode 100644 index 0000000000000..ced048430953a --- /dev/null +++ b/src/server/utils/closestPackageJson.js @@ -0,0 +1,35 @@ +var join = require('path').join; +var existsSync = require('fs').existsSync; + +var packageDir; + +function packagePath() { + return join(packageDir, 'package.json'); +} + +function findSync() { + if (packageDir) return packagePath(); + + packageDir = __dirname; + while (!existsSync(packagePath())) { + var prev = packageDir; + packageDir = join(packageDir, '..'); + + if (prev === packageDir) { + // if going up a directory doesn't work, we + // are already at the root of the filesystem + + packageDir = null; + throw new Error('unable to find package.json'); + } + } + + return packagePath(); +} + +function getSync() { + return require(findSync()); +} + +exports.getSync = getSync; +exports.findSync = findSync; diff --git a/tasks/config/mocha.js b/tasks/config/mocha.js index 82ccec936629a..3fbb871a55cd2 100644 --- a/tasks/config/mocha.js +++ b/tasks/config/mocha.js @@ -1,23 +1,24 @@ -var config = require('../utils/server-config'); -var unitTestUrl = require('util').format('http://localhost:%d/test/unit/', config.get('kibana.server.port')); - -module.exports = { - options: { - log: true, - logErrors: true, - run: false, - page: { - settings: { - viewportSize: { - width: 2400, - height: 1250 +module.exports = function (grunt) { + return { + options: { + log: true, + logErrors: true, + run: false, + page: { + settings: { + viewportSize: { + width: 2400, + height: 1250 + } } } + }, + unit: { + options: { + urls: [ + 'http://localhost:' + (grunt.option('port') || '5601') + '/test/unit/' + ] + } } - }, - unit: { - options: { - urls: [ unitTestUrl ] - } - } + }; }; diff --git a/tasks/kibana_server.js b/tasks/kibana_server.js index b5cc1280340bc..b818e991c9071 100644 --- a/tasks/kibana_server.js +++ b/tasks/kibana_server.js @@ -1,17 +1,16 @@ module.exports = function (grunt) { - grunt.registerTask('kibana_server', function (keepalive) { - var done = this.async(); + var _ = require('lodash'); - require('./utils/dev_server')({ - 'logging.quiet': !grunt.option('debug') && !grunt.option('verbose'), - 'kibana.server.port': grunt.option('port') - }) + grunt.registerTask('kibana_server', function (keepalive) { + require('./utils/dev_server')(grunt) .then(function (server) { grunt.log.ok('Server started: ' + server.info.uri); - if (keepalive !== 'keepalive') done(); + if (keepalive) { + // return a never resolving promise + return new Promise(_.noop); + } }) - .catch(done); - + .nodeify(this.async()); }); }; diff --git a/tasks/maybe_start_kibana.js b/tasks/maybe_start_kibana.js index 6bbeccefc036b..89d372e545cc7 100644 --- a/tasks/maybe_start_kibana.js +++ b/tasks/maybe_start_kibana.js @@ -1,6 +1,4 @@ module.exports = function (grunt) { - var config = require('./utils/server-config'); - var maybeStartServer = function (options) { return function () { var http = require('http'); @@ -53,7 +51,7 @@ module.exports = function (grunt) { grunt.registerTask('maybe_start_kibana', maybeStartServer({ name: 'kibana-server', - port: grunt.option('port') || config.get('kibana.server.port'), + port: grunt.option('port') || 5601, tasks: ['kibana_server'] })); }; diff --git a/tasks/utils/dev_server.js b/tasks/utils/dev_server.js deleted file mode 100644 index e318fe4961d67..0000000000000 --- a/tasks/utils/dev_server.js +++ /dev/null @@ -1,12 +0,0 @@ -var Kibana = require('../../'); -var devStatics = require('./dev_statics'); - -module.exports = function (settings) { - var kibana = new Kibana(settings || {}, [devStatics]); - return kibana.listen(); -}; - - -if (require.main === module) { - module.exports(); -} diff --git a/tasks/utils/dev_statics/index.js b/tasks/utils/dev_statics/index.js deleted file mode 100644 index cceb463091438..0000000000000 --- a/tasks/utils/dev_statics/index.js +++ /dev/null @@ -1,83 +0,0 @@ -var root = require('requirefrom')(''); -var kibana = root(''); -var path = require('path'); -var glob = require('glob'); -var join = path.join; -var rel = join.bind(null, __dirname); -var ROOT = rel('../../../'); -var SRC = join(ROOT, 'src'); -var NODE_MODULES = join(ROOT, 'node_modules'); -var APP = join(SRC, 'kibana'); -var TEST = join(ROOT, 'test'); -var istanbul = require('./lib/istanbul'); -var amdWrapper = require('./lib/amd_wrapper'); -var kibanaSrcFilter = require('./lib/kibana_src_filter'); - -module.exports = new kibana.Plugin({ - name: 'dev_statics', - - init: function (server, options) { - - - server.ext('onPreHandler', istanbul({ root: SRC, displayRoot: SRC, filter: kibanaSrcFilter })); - server.ext('onPreHandler', istanbul({ root: APP, displayRoot: SRC, filter: kibanaSrcFilter })); - - server.route({ - path: '/test/{paths*}', - method: 'GET', - handler: { - directory: { - path: TEST - } - } - }); - - server.route({ - path: '/amd-wrap/{paths*}', - method: 'GET', - handler: amdWrapper({ root: ROOT }) - }); - - server.route({ - path: '/src/{paths*}', - method: 'GET', - handler: { - directory: { - path: SRC - } - } - }); - - server.route({ - path: '/node_modules/{paths*}', - method: 'GET', - handler: { - directory: { - path: NODE_MODULES - } - } - }); - - server.route({ - path: '/specs', - method: 'GET', - handler: function (request, reply) { - var unit = join(ROOT, '/test/unit/'); - glob(join(unit, 'specs/**/*.js'), function (er, files) { - var moduleIds = files - .filter(function (filename) { - return path.basename(filename).charAt(0) !== '_'; - }) - .map(function (filename) { - return path.relative(unit, filename).replace(/\\/g, '/').replace(/\.js$/, ''); - }); - - return reply(moduleIds); - }); - } - }); - - - } - -}); diff --git a/tasks/utils/server-config.js b/tasks/utils/server-config.js deleted file mode 100644 index 2a2b21d949dc7..0000000000000 --- a/tasks/utils/server-config.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../../src/server/lib/config')(); diff --git a/test/unit/server/lib/config/check_path.js b/test/unit/server/lib/config/check_path.js deleted file mode 100644 index 134a5e105acbd..0000000000000 --- a/test/unit/server/lib/config/check_path.js +++ /dev/null @@ -1,18 +0,0 @@ -var root = require('requirefrom')(''); -var checkPath = root('src/server/lib/config/check_path'); -var expect = require('expect.js'); -var path = require('path'); -var _ = require('lodash'); - -describe('checkPath(path)', function () { - - it('should return true for files that exist', function () { - expect(checkPath(__dirname)).to.be(true); - }); - - it('should return true for files that exist', function () { - expect(checkPath(path.join(__dirname, 'something_fake'))).to.be(false); - }); - -}); - diff --git a/test/unit/server/lib/config/schema.js b/test/unit/server/lib/config/schema.js deleted file mode 100644 index 4cc33686908dc..0000000000000 --- a/test/unit/server/lib/config/schema.js +++ /dev/null @@ -1,27 +0,0 @@ -var root = require('requirefrom')(''); -var schema = root('src/server/lib/config/schema'); -var expect = require('expect.js'); -var Joi = require('joi'); -var package = root('./package.json'); -var path = require('path'); - -describe('lib/config/schema', function () { - - describe('defaults', function () { - - it('should resolve the package.json', function () { - var results = Joi.validate({}, schema); - expect(results.value.kibana.package).to.eql(package); - }); - - it('should resolve the publicFolder', function () { - var results = Joi.validate({}, schema); - var publicFolder = path.resolve(__dirname, '..', '..', '..', '..', '..', 'src', 'kibana'); - expect(results.value.kibana.publicFolder).to.eql(publicFolder); - }); - - }); - -}); - - diff --git a/test/unit/specs/apps/discover/directives/discover_field.js b/test/unit/specs/apps/discover/directives/discover_field.js index ade8c41187479..104f2bb3e7504 100644 --- a/test/unit/specs/apps/discover/directives/discover_field.js +++ b/test/unit/specs/apps/discover/directives/discover_field.js @@ -5,7 +5,7 @@ define(function (require) { var sinon = require('test_utils/auto_release_sinon'); // Load the kibana app dependencies. - require('services/private'); + require('components/private'); require('plugins/discover/components/field_chooser/discover_field'); var $parentScope, $scope, indexPattern; diff --git a/test/unit/specs/apps/discover/directives/field_calculator.js b/test/unit/specs/apps/discover/directives/field_calculator.js index c0366aa6f67da..3132876d0a96c 100644 --- a/test/unit/specs/apps/discover/directives/field_calculator.js +++ b/test/unit/specs/apps/discover/directives/field_calculator.js @@ -3,7 +3,7 @@ define(function (require) { var fieldCalculator = require('plugins/discover/components/field_chooser/lib/field_calculator'); // Load the kibana app dependencies. - require('services/private'); + require('components/private'); var indexPattern; diff --git a/test/unit/specs/apps/discover/directives/field_chooser.js b/test/unit/specs/apps/discover/directives/field_chooser.js index 59177855cee24..9726facc78e1c 100644 --- a/test/unit/specs/apps/discover/directives/field_chooser.js +++ b/test/unit/specs/apps/discover/directives/field_chooser.js @@ -5,7 +5,7 @@ define(function (require) { var sinon = require('test_utils/auto_release_sinon'); // Load the kibana app dependencies. - require('services/private'); + require('components/private'); require('plugins/discover/components/field_chooser/field_chooser'); var $parentScope; diff --git a/test/unit/specs/components/agg_types/_agg_type.js b/test/unit/specs/components/agg_types/_agg_type.js index 25a2db9c8bab4..125735b0e5dc8 100644 --- a/test/unit/specs/components/agg_types/_agg_type.js +++ b/test/unit/specs/components/agg_types/_agg_type.js @@ -9,7 +9,7 @@ define(function (require) { var fieldFormat; var Vis; - require('services/private'); + require('components/private'); beforeEach(module('kibana')); beforeEach(inject(function (Private) { diff --git a/test/unit/specs/components/courier/search_source/normalize_sort_request.js b/test/unit/specs/components/courier/search_source/normalize_sort_request.js index a46a3583d68e6..9e8c68caa748d 100644 --- a/test/unit/specs/components/courier/search_source/normalize_sort_request.js +++ b/test/unit/specs/components/courier/search_source/normalize_sort_request.js @@ -1,6 +1,6 @@ define(function (require) { describe('SearchSource#normalizeSortRequest', function () { - require('services/private'); + require('components/private'); require('angular').module('normalizeSortRequest', ['kibana']); var normalizeSortRequest; diff --git a/test/unit/specs/components/doc_table/doc_table.js b/test/unit/specs/components/doc_table/doc_table.js index 7714fe8a81080..88b0ec3999c11 100644 --- a/test/unit/specs/components/doc_table/doc_table.js +++ b/test/unit/specs/components/doc_table/doc_table.js @@ -6,7 +6,7 @@ define(function (require) { var searchResponse = require('fixtures/search_response'); // Load the kibana app dependencies. - require('services/private'); + require('components/private'); require('components/doc_table/doc_table'); diff --git a/test/unit/specs/components/doc_viewer/doc_viewer.js b/test/unit/specs/components/doc_viewer/doc_viewer.js index 6e826d3550c74..9d663c0a369d8 100644 --- a/test/unit/specs/components/doc_viewer/doc_viewer.js +++ b/test/unit/specs/components/doc_viewer/doc_viewer.js @@ -19,7 +19,7 @@ define(function (require) { }; // Load the kibana app dependencies. - require('services/private'); + require('components/private'); require('components/doc_viewer/doc_viewer'); diff --git a/test/unit/specs/components/filter_bar/query_filter.js b/test/unit/specs/components/filter_bar/query_filter.js index 529121ce46b3f..2fd12cbe4aea9 100644 --- a/test/unit/specs/components/filter_bar/query_filter.js +++ b/test/unit/specs/components/filter_bar/query_filter.js @@ -12,7 +12,7 @@ define(function (require) { inject(function (_$rootScope_, Private) { $rootScope = _$rootScope_; queryFilter = Private(require('components/filter_bar/query_filter')); - EventEmitter = Private(require('factories/events')); + EventEmitter = Private(require('components/events')); }); }); diff --git a/test/unit/specs/components/listen/listen.js b/test/unit/specs/components/listen/listen.js index 06c7691a522e6..d8940c2d7fe6e 100644 --- a/test/unit/specs/components/listen/listen.js +++ b/test/unit/specs/components/listen/listen.js @@ -10,7 +10,7 @@ define(function (require) { beforeEach(module('kibana')); beforeEach(inject(function ($injector, Private) { $rootScope = $injector.get('$rootScope'); - Events = Private(require('factories/events')); + Events = Private(require('components/events')); })); it('exposes the $listen method on all scopes', function () { diff --git a/test/unit/specs/components/reflow_watcher.js b/test/unit/specs/components/reflow_watcher.js index 6243ff23a65e0..2bccffddbccb2 100644 --- a/test/unit/specs/components/reflow_watcher.js +++ b/test/unit/specs/components/reflow_watcher.js @@ -22,7 +22,7 @@ define(function (require) { beforeEach(module('kibana')); beforeEach(inject(function (Private, $injector) { $rootScope = $injector.get('$rootScope'); - EventEmitter = Private(require('factories/events')); + EventEmitter = Private(require('components/events')); // stub jQuery's $.on method while creating the reflowWatcher $onStub = sinon.stub($.fn, 'on'); diff --git a/test/unit/specs/directives/auto_select_if_only_one.js b/test/unit/specs/directives/auto_select_if_only_one.js index bae3314aafa42..4bb987e3c38fd 100644 --- a/test/unit/specs/directives/auto_select_if_only_one.js +++ b/test/unit/specs/directives/auto_select_if_only_one.js @@ -1,6 +1,6 @@ define(function (require) { var angular = require('angular'); - require('directives/auto_select_if_only_one'); + require('ui/directives/auto_select_if_only_one'); describe('Auto-select if only one directive', function () { var $compile, $rootScope; diff --git a/test/unit/specs/directives/confirm-click.js b/test/unit/specs/directives/confirm-click.js index 37eeb352fd02e..7fcb2658a92c0 100644 --- a/test/unit/specs/directives/confirm-click.js +++ b/test/unit/specs/directives/confirm-click.js @@ -3,7 +3,7 @@ define(function (require) { var $ = require('jquery'); var sinon = require('sinon/sinon'); - require('directives/confirm_click'); + require('ui/directives/confirm_click'); // Load the kibana app dependencies. require('angular-route'); diff --git a/test/unit/specs/directives/inequality.js b/test/unit/specs/directives/inequality.js index 3e4c580abf3d7..386f732102c10 100644 --- a/test/unit/specs/directives/inequality.js +++ b/test/unit/specs/directives/inequality.js @@ -1,6 +1,6 @@ define(function (require) { var angular = require('angular'); - require('directives/inequality'); + require('ui/directives/inequality'); describe('greater_than model validator directive', function () { var $compile, $rootScope; diff --git a/test/unit/specs/directives/input_focus.js b/test/unit/specs/directives/input_focus.js index 77c2d7be39cdd..2b01d117460e5 100644 --- a/test/unit/specs/directives/input_focus.js +++ b/test/unit/specs/directives/input_focus.js @@ -1,7 +1,7 @@ define(function (require) { var angular = require('angular'); var $ = require('jquery'); - require('directives/input_focus'); + require('ui/directives/input_focus'); describe('Input focus directive', function () { var $compile, $rootScope, $timeout, element; diff --git a/test/unit/specs/directives/input_whole_number.js b/test/unit/specs/directives/input_whole_number.js index 07c0226ec4df1..9264da83d2bef 100644 --- a/test/unit/specs/directives/input_whole_number.js +++ b/test/unit/specs/directives/input_whole_number.js @@ -1,6 +1,6 @@ define(function (require) { var angular = require('angular'); - require('directives/input_whole_number'); + require('ui/directives/input_whole_number'); describe('Whole number input directive', function () { var $compile, $rootScope; diff --git a/test/unit/specs/directives/validate_cidr_mask.js b/test/unit/specs/directives/validate_cidr_mask.js index 9ea4472bf046e..69cbbf854acf3 100644 --- a/test/unit/specs/directives/validate_cidr_mask.js +++ b/test/unit/specs/directives/validate_cidr_mask.js @@ -1,6 +1,6 @@ define(function (require) { var angular = require('angular'); - require('directives/validate_cidr_mask'); + require('ui/directives/validate_cidr_mask'); describe('Validate CIDR mask directive', function () { var $compile, $rootScope; diff --git a/test/unit/specs/directives/validate_date_math.js b/test/unit/specs/directives/validate_date_math.js index 4ab0aaa45f1fa..a06f4fe730b05 100644 --- a/test/unit/specs/directives/validate_date_math.js +++ b/test/unit/specs/directives/validate_date_math.js @@ -1,6 +1,6 @@ define(function (require) { var angular = require('angular'); - require('directives/validate_date_math'); + require('ui/directives/validate_date_math'); describe('Validate date math directive', function () { var $compile, $rootScope; diff --git a/test/unit/specs/directives/validate_index_name.js b/test/unit/specs/directives/validate_index_name.js index da1b5eede0e72..cdac4b87a3053 100644 --- a/test/unit/specs/directives/validate_index_name.js +++ b/test/unit/specs/directives/validate_index_name.js @@ -2,7 +2,7 @@ define(function (require) { var angular = require('angular'); // Load the kibana app dependencies. - require('directives/validate_index_name'); + require('ui/directives/validate_index_name'); describe('Validate index name directive', function () { var $compile, $rootScope; diff --git a/test/unit/specs/directives/validate_ip.js b/test/unit/specs/directives/validate_ip.js index afb04d90c71cb..1780e76dfc790 100644 --- a/test/unit/specs/directives/validate_ip.js +++ b/test/unit/specs/directives/validate_ip.js @@ -1,6 +1,6 @@ define(function (require) { var angular = require('angular'); - require('directives/validate_ip'); + require('ui/directives/validate_ip'); describe('Validate IP directive', function () { var $compile, $rootScope; diff --git a/test/unit/specs/directives/validate_json.js b/test/unit/specs/directives/validate_json.js index e8da03ff87617..49aa7e23812a9 100644 --- a/test/unit/specs/directives/validate_json.js +++ b/test/unit/specs/directives/validate_json.js @@ -2,7 +2,7 @@ define(function (require) { var angular = require('angular'); // Load the kibana app dependencies. - require('directives/validate_json'); + require('ui/directives/validate_json'); var $parentScope; var $elemScope; diff --git a/test/unit/specs/factories/base_object.js b/test/unit/specs/factories/base_object.js index bb655bf992f53..9399c93477aaa 100644 --- a/test/unit/specs/factories/base_object.js +++ b/test/unit/specs/factories/base_object.js @@ -2,7 +2,7 @@ define(function (require) { var angular = require('angular'); var _ = require('lodash'); var sinon = require('sinon/sinon'); - require('services/private'); + require('components/private'); describe('Base Object', function () { diff --git a/test/unit/specs/factories/events.js b/test/unit/specs/factories/events.js index 88d5d5ed6b156..1e5c650415ef7 100644 --- a/test/unit/specs/factories/events.js +++ b/test/unit/specs/factories/events.js @@ -2,7 +2,7 @@ define(function (require) { var angular = require('angular'); var _ = require('lodash'); var sinon = require('test_utils/auto_release_sinon'); - require('services/private'); + require('components/private'); describe('Events', function () { require('test_utils/no_digest_promises').activateForSuite(); @@ -19,7 +19,7 @@ define(function (require) { $rootScope = $injector.get('$rootScope'); Notifier = $injector.get('Notifier'); Promise = $injector.get('Promise'); - Events = Private(require('factories/events')); + Events = Private(require('components/events')); }); }); diff --git a/test/unit/specs/filters/field_type.js b/test/unit/specs/filters/field_type.js index 675fb4877e5b6..0d3444c3ed0a3 100644 --- a/test/unit/specs/filters/field_type.js +++ b/test/unit/specs/filters/field_type.js @@ -5,7 +5,7 @@ define(function (require) { // Load the kibana app dependencies. require('angular-route'); require('plugins/discover/index'); - require('filters/field_type'); + require('ui/filters/field_type'); var filter, types; diff --git a/test/unit/specs/filters/moment.js b/test/unit/specs/filters/moment.js index b4053eb382ae3..36e3fb1065bd4 100644 --- a/test/unit/specs/filters/moment.js +++ b/test/unit/specs/filters/moment.js @@ -5,7 +5,7 @@ define(function (require) { // Load the kibana app dependencies. require('angular-route'); - require('filters/moment'); + require('ui/filters/moment'); var filter, config; var anchor = '2014-01-01T06:06:06.666'; diff --git a/test/unit/specs/filters/short_dots.js b/test/unit/specs/filters/short_dots.js index b537b1ff5f61d..bbb85d54cc068 100644 --- a/test/unit/specs/filters/short_dots.js +++ b/test/unit/specs/filters/short_dots.js @@ -5,7 +5,7 @@ define(function (require) { // Load the kibana app dependencies. require('angular-route'); require('plugins/discover/index'); - require('filters/short_dots'); + require('ui/filters/short_dots'); var filter, config; diff --git a/test/unit/specs/filters/start_from.js b/test/unit/specs/filters/start_from.js index 3bb08373e0317..6432cf52e39a0 100644 --- a/test/unit/specs/filters/start_from.js +++ b/test/unit/specs/filters/start_from.js @@ -3,7 +3,7 @@ define(function (require) { // Load the kibana app dependencies. require('angular-route'); - require('filters/start_from'); + require('ui/filters/start_from'); var filter; diff --git a/test/unit/specs/state_management/state.js b/test/unit/specs/state_management/state.js index 2156d9a04f918..cc2bc7199f731 100644 --- a/test/unit/specs/state_management/state.js +++ b/test/unit/specs/state_management/state.js @@ -1,7 +1,7 @@ define(function (require) { var _ = require('lodash'); var sinon = require('sinon/sinon'); - require('services/private'); + require('components/private'); describe('State Management', function () { var $rootScope, $location, State, Events; @@ -13,7 +13,7 @@ define(function (require) { $location = _$location_; $rootScope = _$rootScope_; State = Private(require('components/state_management/state')); - Events = Private(require('factories/events')); + Events = Private(require('components/events')); }); }); diff --git a/test/unit/specs/utils/routes/_work_queue.js b/test/unit/specs/utils/routes/_work_queue.js index 2d8fbc625a229..1fe0318cccec8 100644 --- a/test/unit/specs/utils/routes/_work_queue.js +++ b/test/unit/specs/utils/routes/_work_queue.js @@ -3,7 +3,7 @@ define(function (require) { var _ = require('lodash'); var WorkQueue = require('utils/routes/_work_queue'); var sinon = require('test_utils/auto_release_sinon'); - require('services/promises'); + require('components/promises'); require('angular').module('UtilsRouteWorkQueueTests', ['kibana']); return function () { diff --git a/test/unit/specs/utils/routes/_wrap_route_with_prep.js b/test/unit/specs/utils/routes/_wrap_route_with_prep.js index 5de58c1e9fe40..8c98ef08bb16d 100644 --- a/test/unit/specs/utils/routes/_wrap_route_with_prep.js +++ b/test/unit/specs/utils/routes/_wrap_route_with_prep.js @@ -6,7 +6,7 @@ define(function (require) { var _ = require('lodash'); var stub = require('test_utils/auto_release_sinon').stub; - require('services/private'); + require('components/private'); var routes; diff --git a/test/unit/specs/vislib/lib/resize_checker.js b/test/unit/specs/vislib/lib/resize_checker.js index 5f7542c405eaa..4ca5260d48721 100644 --- a/test/unit/specs/vislib/lib/resize_checker.js +++ b/test/unit/specs/vislib/lib/resize_checker.js @@ -18,7 +18,7 @@ define(function (require) { beforeEach(inject(function (Private) { window.DISABLE_RESIZE_CHECKER = false; ResizeChecker = Private(require('components/vislib/lib/resize_checker')); - EventEmitter = Private(require('factories/events')); + EventEmitter = Private(require('components/events')); reflowWatcher = Private(require('components/reflow_watcher')); reflowSpies.on = sinon.spy(reflowWatcher, 'on'); reflowSpies.off = sinon.spy(reflowWatcher, 'off'); From 40e2bd562f266dc8859e3f697d59262ac2087072 Mon Sep 17 00:00:00 2001 From: Spencer Alger Date: Thu, 25 Jun 2015 03:07:05 -0700 Subject: [PATCH 003/137] updated 'always included' list --- src/plugins/kbn-vislib-vis-types/package.json | 4 - .../index.js | 0 src/plugins/kbn_vislib_vis_types/package.json | 4 + .../public/area.js | 0 .../controls/line_interpolation_option.html | 0 .../controls/line_interpolation_option.js | 0 .../public/controls/point_series_options.html | 0 .../public/controls/point_series_options.js | 2 +- .../public/controls/radius_ratio_option.html | 0 .../public/controls/rows_or_columns.html | 0 .../public/controls/vislib_basic_options.html | 0 .../public/controls/vislib_basic_options.js | 0 .../public/editors/area.html | 0 .../public/editors/histogram.html | 0 .../public/editors/line.html | 0 .../public/editors/pie.html | 0 .../public/editors/tile_map.html | 0 .../public/histogram.js | 0 .../public/index.js | 0 .../public/line.js | 0 .../public/pie.js | 0 .../public/tileMap.js | 0 src/plugins/kibana/public/.jshintrc | 2 +- src/plugins/kibana/public/dashboard/index.js | 4 +- .../dashboard/services/saved_dashboards.js | 4 +- .../field_chooser/discover_field.js | 4 +- .../components/field_chooser/field_chooser.js | 6 +- .../public/discover/controllers/discover.js | 6 +- .../discover/saved_searches/saved_searches.js | 4 +- src/plugins/kibana/public/index.js | 4 +- .../kibana/public/settings/public/index.js | 2 +- .../public/sections/indices/_create.js | 4 +- .../sections/indices/_refresh_kibana_index.js | 4 +- .../public/sections/objects/_objects.js | 12 +- .../settings/public/sections/objects/_view.js | 10 +- .../settings/public/sections/objects/index.js | 2 +- .../public/visualize/editor/agg_filter.js | 2 +- .../public/visualize/editor/agg_params.js | 4 +- .../kibana/public/visualize/editor/editor.js | 4 +- .../saved_visualizations.js | 4 +- .../kibana/public/visualize/wizard/wizard.js | 2 +- src/plugins/markdown-vis/package.json | 4 - .../{markdown-vis => markdown_vis}/index.js | 0 src/plugins/markdown_vis/package.json | 4 + .../public/index.js | 0 .../public/markdown_vis.html | 0 .../public/markdown_vis.js | 0 .../public/markdown_vis.less | 0 .../public/markdown_vis_controller.js | 0 .../public/markdown_vis_params.html | 0 .../{metric-vis => metric_vis}/index.js | 0 .../{metric-vis => metric_vis}/package.json | 2 +- .../public/index.js | 0 .../public/metric_vis.html | 0 .../public/metric_vis.js | 0 .../public/metric_vis.less | 0 .../public/metric_vis_controller.js | 0 .../public/metric_vis_params.html | 0 src/plugins/{table-vis => table_vis}/index.js | 0 .../{table-vis => table_vis}/package.json | 2 +- .../{table-vis => table_vis}/public/index.js | 0 .../public/table_vis.html | 0 .../public/table_vis.js | 0 .../public/table_vis.less | 0 .../public/table_vis_controller.js | 0 .../public/table_vis_params.html | 0 .../public/table_vis_params.js | 0 src/plugins/ui/index.js | 6 +- src/plugins/ui/public/.jshintrc | 3 + src/plugins/ui/public/bootstrap.js | 115 ++++++++++-------- .../components/agg_types/_agg_params.js | 4 +- .../agg_types/buckets/_interval_options.js | 2 +- .../agg_types/buckets/date_histogram.js | 2 +- .../agg_types/buckets/date_range.js | 2 +- .../components/agg_types/buckets/ip_range.js | 4 +- .../ui/public/components/agg_types/index.js | 2 +- .../agg_types/param_types/optioned.js | 2 +- .../ui/public/{ => components}/chrome.js | 36 +----- .../ui/public/components/config/config.js | 22 +--- .../components/courier/fetch/_call_client.js | 6 +- .../courier/fetch/strategy/search.js | 2 +- .../courier/saved_object/saved_object.js | 10 +- .../doc_table/components/table_header.js | 2 +- .../doc_table/components/table_row.js | 6 +- .../public/components/doc_table/doc_table.js | 4 +- .../ui/public/{ => components}/errors.js | 0 src/plugins/ui/public/components/es.js | 4 +- .../index_patterns/_cast_mapping_type.js | 2 +- .../_field_format/contentTypes.js | 1 + .../components/index_patterns/_field_list.js | 2 +- .../components/index_patterns/_field_types.js | 2 +- .../components/index_patterns/_get_ids.js | 4 +- .../index_patterns/_index_pattern.js | 4 +- .../components/index_patterns/_intervals.js | 2 +- .../components/index_patterns/_mapper.js | 4 +- .../_transform_mapping_into_fields.js | 4 +- .../index_patterns/index_patterns.js | 6 +- .../public/components/indexed_array/index.js | 4 +- .../ui/public/{ => components}/modules.js | 0 .../ui/public/components/require.config.js | 71 ----------- .../ui/public/components/routes/_setup.js | 3 +- .../routes/_wrap_route_with_prep.js | 6 +- .../ui/public/components/routes/index.js | 5 +- .../components/timepicker/timepicker.js | 4 +- src/plugins/ui/public/components/url/url.js | 4 +- .../validate_query/validate_query.js | 4 +- .../ui/public/components/vis/AggConfigs.js | 2 +- .../ui/public/components/vis/Schemas.js | 2 +- .../collapsible_sidebar.js | 0 .../collapsible_sidebar.less | 0 .../clipboard/clipboard.html | 0 .../clipboard/clipboard.js | 0 src/plugins/ui/public/directives/config.js | 2 +- .../ui/public/directives/field_name.js | 2 +- src/plugins/ui/public/directives/info.js | 2 +- src/plugins/ui/public/directives/paginate.js | 2 +- .../public/directives/saved_object_finder.js | 2 +- .../commaList.js} | 0 src/plugins/ui/public/filters/field_type.js | 2 +- .../{components => }/registry/_registry.js | 2 +- .../public/{components => }/registry/apps.js | 0 .../registry/field_formats.js | 0 .../{components => }/registry/spy_modes.js | 0 .../{components => }/registry/vis_types.js | 0 src/plugins/ui/public/require.config.js | 19 +-- src/plugins/ui/public/utils/mapping_setup.js | 6 +- src/plugins/ui/views/chrome.jade | 25 +++- src/plugins/vis-debug-spy/package.json | 4 - .../{vis-debug-spy => vis_debug_spy}/index.js | 2 +- src/plugins/vis_debug_spy/package.json | 4 + .../public/index.js | 0 .../public/vis_debug.html | 0 .../public/vis_debug.js | 0 src/server/fe-exports/FeExportsCollection.js | 6 +- test/unit/specs/components/config.js | 6 - .../index_pattern/_index_pattern.js | 2 +- test/unit/specs/components/vis/_AggConfigs.js | 2 +- .../directives/auto_select_if_only_one.js | 2 +- test/unit/specs/directives/confirm-click.js | 2 +- test/unit/specs/directives/inequality.js | 2 +- test/unit/specs/directives/input_focus.js | 2 +- .../specs/directives/input_whole_number.js | 2 +- .../specs/directives/validate_cidr_mask.js | 2 +- .../specs/directives/validate_date_math.js | 2 +- .../specs/directives/validate_index_name.js | 2 +- test/unit/specs/directives/validate_ip.js | 2 +- test/unit/specs/directives/validate_json.js | 2 +- test/unit/specs/directives/validate_query.js | 4 +- test/unit/specs/filters/field_type.js | 2 +- test/unit/specs/filters/moment.js | 2 +- test/unit/specs/filters/short_dots.js | 2 +- test/unit/specs/filters/start_from.js | 2 +- .../specs/utils/indexed_array/_inflector.js | 2 +- .../specs/utils/indexed_array/_path_getter.js | 2 +- test/unit/specs/utils/indexed_array/index.js | 2 +- test/unit/specs/utils/routes/_work_queue.js | 4 +- .../utils/routes/_wrap_route_with_prep.js | 6 +- test/utils/stub_index_pattern.js | 2 +- 158 files changed, 262 insertions(+), 354 deletions(-) delete mode 100644 src/plugins/kbn-vislib-vis-types/package.json rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/index.js (100%) create mode 100644 src/plugins/kbn_vislib_vis_types/package.json rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/public/area.js (100%) rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/public/controls/line_interpolation_option.html (100%) rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/public/controls/line_interpolation_option.js (100%) rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/public/controls/point_series_options.html (100%) rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/public/controls/point_series_options.js (90%) rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/public/controls/radius_ratio_option.html (100%) rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/public/controls/rows_or_columns.html (100%) rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/public/controls/vislib_basic_options.html (100%) rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/public/controls/vislib_basic_options.js (100%) rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/public/editors/area.html (100%) rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/public/editors/histogram.html (100%) rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/public/editors/line.html (100%) rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/public/editors/pie.html (100%) rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/public/editors/tile_map.html (100%) rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/public/histogram.js (100%) rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/public/index.js (100%) rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/public/line.js (100%) rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/public/pie.js (100%) rename src/plugins/{kbn-vislib-vis-types => kbn_vislib_vis_types}/public/tileMap.js (100%) delete mode 100644 src/plugins/markdown-vis/package.json rename src/plugins/{markdown-vis => markdown_vis}/index.js (100%) create mode 100644 src/plugins/markdown_vis/package.json rename src/plugins/{markdown-vis => markdown_vis}/public/index.js (100%) rename src/plugins/{markdown-vis => markdown_vis}/public/markdown_vis.html (100%) rename src/plugins/{markdown-vis => markdown_vis}/public/markdown_vis.js (100%) rename src/plugins/{markdown-vis => markdown_vis}/public/markdown_vis.less (100%) rename src/plugins/{markdown-vis => markdown_vis}/public/markdown_vis_controller.js (100%) rename src/plugins/{markdown-vis => markdown_vis}/public/markdown_vis_params.html (100%) rename src/plugins/{metric-vis => metric_vis}/index.js (100%) rename src/plugins/{metric-vis => metric_vis}/package.json (51%) rename src/plugins/{metric-vis => metric_vis}/public/index.js (100%) rename src/plugins/{metric-vis => metric_vis}/public/metric_vis.html (100%) rename src/plugins/{metric-vis => metric_vis}/public/metric_vis.js (100%) rename src/plugins/{metric-vis => metric_vis}/public/metric_vis.less (100%) rename src/plugins/{metric-vis => metric_vis}/public/metric_vis_controller.js (100%) rename src/plugins/{metric-vis => metric_vis}/public/metric_vis_params.html (100%) rename src/plugins/{table-vis => table_vis}/index.js (100%) rename src/plugins/{table-vis => table_vis}/package.json (52%) rename src/plugins/{table-vis => table_vis}/public/index.js (100%) rename src/plugins/{table-vis => table_vis}/public/table_vis.html (100%) rename src/plugins/{table-vis => table_vis}/public/table_vis.js (100%) rename src/plugins/{table-vis => table_vis}/public/table_vis.less (100%) rename src/plugins/{table-vis => table_vis}/public/table_vis_controller.js (100%) rename src/plugins/{table-vis => table_vis}/public/table_vis_params.html (100%) rename src/plugins/{table-vis => table_vis}/public/table_vis_params.js (100%) create mode 100644 src/plugins/ui/public/.jshintrc rename src/plugins/ui/public/{ => components}/chrome.js (61%) rename src/plugins/ui/public/{ => components}/errors.js (100%) rename src/plugins/ui/public/{ => components}/modules.js (100%) delete mode 100644 src/plugins/ui/public/components/require.config.js rename src/plugins/ui/public/{components => directive}/collapsible_sidebar/collapsible_sidebar.js (100%) rename src/plugins/ui/public/{components => directive}/collapsible_sidebar/collapsible_sidebar.less (100%) rename src/plugins/ui/public/{components => directives}/clipboard/clipboard.html (100%) rename src/plugins/ui/public/{components => directives}/clipboard/clipboard.js (100%) rename src/plugins/ui/public/{components/comma_list_filter.js => filters/commaList.js} (100%) rename src/plugins/ui/public/{components => }/registry/_registry.js (97%) rename src/plugins/ui/public/{components => }/registry/apps.js (100%) rename src/plugins/ui/public/{components => }/registry/field_formats.js (100%) rename src/plugins/ui/public/{components => }/registry/spy_modes.js (100%) rename src/plugins/ui/public/{components => }/registry/vis_types.js (100%) delete mode 100644 src/plugins/vis-debug-spy/package.json rename src/plugins/{vis-debug-spy => vis_debug_spy}/index.js (76%) create mode 100644 src/plugins/vis_debug_spy/package.json rename src/plugins/{vis-debug-spy => vis_debug_spy}/public/index.js (100%) rename src/plugins/{vis-debug-spy => vis_debug_spy}/public/vis_debug.html (100%) rename src/plugins/{vis-debug-spy => vis_debug_spy}/public/vis_debug.js (100%) diff --git a/src/plugins/kbn-vislib-vis-types/package.json b/src/plugins/kbn-vislib-vis-types/package.json deleted file mode 100644 index 9c819cd5d4538..0000000000000 --- a/src/plugins/kbn-vislib-vis-types/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "kbn-vislib-vis-types", - "version": "1.0.0" -} diff --git a/src/plugins/kbn-vislib-vis-types/index.js b/src/plugins/kbn_vislib_vis_types/index.js similarity index 100% rename from src/plugins/kbn-vislib-vis-types/index.js rename to src/plugins/kbn_vislib_vis_types/index.js diff --git a/src/plugins/kbn_vislib_vis_types/package.json b/src/plugins/kbn_vislib_vis_types/package.json new file mode 100644 index 0000000000000..fc8863542cc4a --- /dev/null +++ b/src/plugins/kbn_vislib_vis_types/package.json @@ -0,0 +1,4 @@ +{ + "name": "kbn_vislib_vis_types", + "version": "1.0.0" +} diff --git a/src/plugins/kbn-vislib-vis-types/public/area.js b/src/plugins/kbn_vislib_vis_types/public/area.js similarity index 100% rename from src/plugins/kbn-vislib-vis-types/public/area.js rename to src/plugins/kbn_vislib_vis_types/public/area.js diff --git a/src/plugins/kbn-vislib-vis-types/public/controls/line_interpolation_option.html b/src/plugins/kbn_vislib_vis_types/public/controls/line_interpolation_option.html similarity index 100% rename from src/plugins/kbn-vislib-vis-types/public/controls/line_interpolation_option.html rename to src/plugins/kbn_vislib_vis_types/public/controls/line_interpolation_option.html diff --git a/src/plugins/kbn-vislib-vis-types/public/controls/line_interpolation_option.js b/src/plugins/kbn_vislib_vis_types/public/controls/line_interpolation_option.js similarity index 100% rename from src/plugins/kbn-vislib-vis-types/public/controls/line_interpolation_option.js rename to src/plugins/kbn_vislib_vis_types/public/controls/line_interpolation_option.js diff --git a/src/plugins/kbn-vislib-vis-types/public/controls/point_series_options.html b/src/plugins/kbn_vislib_vis_types/public/controls/point_series_options.html similarity index 100% rename from src/plugins/kbn-vislib-vis-types/public/controls/point_series_options.html rename to src/plugins/kbn_vislib_vis_types/public/controls/point_series_options.html diff --git a/src/plugins/kbn-vislib-vis-types/public/controls/point_series_options.js b/src/plugins/kbn_vislib_vis_types/public/controls/point_series_options.js similarity index 90% rename from src/plugins/kbn-vislib-vis-types/public/controls/point_series_options.js rename to src/plugins/kbn_vislib_vis_types/public/controls/point_series_options.js index 62f38622642a3..bd5a2dab59b29 100644 --- a/src/plugins/kbn-vislib-vis-types/public/controls/point_series_options.js +++ b/src/plugins/kbn_vislib_vis_types/public/controls/point_series_options.js @@ -2,7 +2,7 @@ define(function (require) { var _ = require('lodash'); var $ = require('jquery'); var module = require('modules').get('kibana'); - require('ui/directives/inequality'); + require('directives/inequality'); module.directive('pointSeriesOptions', function ($parse, $compile) { return { diff --git a/src/plugins/kbn-vislib-vis-types/public/controls/radius_ratio_option.html b/src/plugins/kbn_vislib_vis_types/public/controls/radius_ratio_option.html similarity index 100% rename from src/plugins/kbn-vislib-vis-types/public/controls/radius_ratio_option.html rename to src/plugins/kbn_vislib_vis_types/public/controls/radius_ratio_option.html diff --git a/src/plugins/kbn-vislib-vis-types/public/controls/rows_or_columns.html b/src/plugins/kbn_vislib_vis_types/public/controls/rows_or_columns.html similarity index 100% rename from src/plugins/kbn-vislib-vis-types/public/controls/rows_or_columns.html rename to src/plugins/kbn_vislib_vis_types/public/controls/rows_or_columns.html diff --git a/src/plugins/kbn-vislib-vis-types/public/controls/vislib_basic_options.html b/src/plugins/kbn_vislib_vis_types/public/controls/vislib_basic_options.html similarity index 100% rename from src/plugins/kbn-vislib-vis-types/public/controls/vislib_basic_options.html rename to src/plugins/kbn_vislib_vis_types/public/controls/vislib_basic_options.html diff --git a/src/plugins/kbn-vislib-vis-types/public/controls/vislib_basic_options.js b/src/plugins/kbn_vislib_vis_types/public/controls/vislib_basic_options.js similarity index 100% rename from src/plugins/kbn-vislib-vis-types/public/controls/vislib_basic_options.js rename to src/plugins/kbn_vislib_vis_types/public/controls/vislib_basic_options.js diff --git a/src/plugins/kbn-vislib-vis-types/public/editors/area.html b/src/plugins/kbn_vislib_vis_types/public/editors/area.html similarity index 100% rename from src/plugins/kbn-vislib-vis-types/public/editors/area.html rename to src/plugins/kbn_vislib_vis_types/public/editors/area.html diff --git a/src/plugins/kbn-vislib-vis-types/public/editors/histogram.html b/src/plugins/kbn_vislib_vis_types/public/editors/histogram.html similarity index 100% rename from src/plugins/kbn-vislib-vis-types/public/editors/histogram.html rename to src/plugins/kbn_vislib_vis_types/public/editors/histogram.html diff --git a/src/plugins/kbn-vislib-vis-types/public/editors/line.html b/src/plugins/kbn_vislib_vis_types/public/editors/line.html similarity index 100% rename from src/plugins/kbn-vislib-vis-types/public/editors/line.html rename to src/plugins/kbn_vislib_vis_types/public/editors/line.html diff --git a/src/plugins/kbn-vislib-vis-types/public/editors/pie.html b/src/plugins/kbn_vislib_vis_types/public/editors/pie.html similarity index 100% rename from src/plugins/kbn-vislib-vis-types/public/editors/pie.html rename to src/plugins/kbn_vislib_vis_types/public/editors/pie.html diff --git a/src/plugins/kbn-vislib-vis-types/public/editors/tile_map.html b/src/plugins/kbn_vislib_vis_types/public/editors/tile_map.html similarity index 100% rename from src/plugins/kbn-vislib-vis-types/public/editors/tile_map.html rename to src/plugins/kbn_vislib_vis_types/public/editors/tile_map.html diff --git a/src/plugins/kbn-vislib-vis-types/public/histogram.js b/src/plugins/kbn_vislib_vis_types/public/histogram.js similarity index 100% rename from src/plugins/kbn-vislib-vis-types/public/histogram.js rename to src/plugins/kbn_vislib_vis_types/public/histogram.js diff --git a/src/plugins/kbn-vislib-vis-types/public/index.js b/src/plugins/kbn_vislib_vis_types/public/index.js similarity index 100% rename from src/plugins/kbn-vislib-vis-types/public/index.js rename to src/plugins/kbn_vislib_vis_types/public/index.js diff --git a/src/plugins/kbn-vislib-vis-types/public/line.js b/src/plugins/kbn_vislib_vis_types/public/line.js similarity index 100% rename from src/plugins/kbn-vislib-vis-types/public/line.js rename to src/plugins/kbn_vislib_vis_types/public/line.js diff --git a/src/plugins/kbn-vislib-vis-types/public/pie.js b/src/plugins/kbn_vislib_vis_types/public/pie.js similarity index 100% rename from src/plugins/kbn-vislib-vis-types/public/pie.js rename to src/plugins/kbn_vislib_vis_types/public/pie.js diff --git a/src/plugins/kbn-vislib-vis-types/public/tileMap.js b/src/plugins/kbn_vislib_vis_types/public/tileMap.js similarity index 100% rename from src/plugins/kbn-vislib-vis-types/public/tileMap.js rename to src/plugins/kbn_vislib_vis_types/public/tileMap.js diff --git a/src/plugins/kibana/public/.jshintrc b/src/plugins/kibana/public/.jshintrc index 483b2410e7ba7..04baeaf2ad6cf 100644 --- a/src/plugins/kibana/public/.jshintrc +++ b/src/plugins/kibana/public/.jshintrc @@ -1,3 +1,3 @@ { - "extends": "../../.jshintrc.browser" + "extends": "../../../../.jshintrc.browser" } diff --git a/src/plugins/kibana/public/dashboard/index.js b/src/plugins/kibana/public/dashboard/index.js index 4455289e54cb9..9bf6b545fbae9 100644 --- a/src/plugins/kibana/public/dashboard/index.js +++ b/src/plugins/kibana/public/dashboard/index.js @@ -4,7 +4,7 @@ define(function (require) { var angular = require('angular'); var ConfigTemplate = require('utils/config_template'); - require('ui/directives/config'); + require('directives/config'); require('components/courier/courier'); require('components/config/config'); require('components/notify/notify'); @@ -49,7 +49,7 @@ define(function (require) { app.directive('dashboardApp', function (Notifier, courier, AppState, timefilter, kbnUrl) { return { - controller: function ($scope, $route, $routeParams, $location, configFile, Private, getAppState) { + controller: function ($scope, $route, $routeParams, $location, Private, getAppState) { var queryFilter = Private(require('components/filter_bar/query_filter')); var notify = new Notifier({ diff --git a/src/plugins/kibana/public/dashboard/services/saved_dashboards.js b/src/plugins/kibana/public/dashboard/services/saved_dashboards.js index 41cb1f0ccdb0a..a0a558b74035e 100644 --- a/src/plugins/kibana/public/dashboard/services/saved_dashboards.js +++ b/src/plugins/kibana/public/dashboard/services/saved_dashboards.js @@ -13,7 +13,7 @@ define(function (require) { }); // This is the only thing that gets injected into controllers - module.service('savedDashboards', function (Promise, SavedDashboard, config, es, kbnUrl) { + module.service('savedDashboards', function (Promise, SavedDashboard, kbnIndex, es, kbnUrl) { this.type = SavedDashboard.type; this.Class = SavedDashboard; @@ -54,7 +54,7 @@ define(function (require) { } return es.search({ - index: config.file.kibana_index, + index: kbnIndex, type: 'dashboard', body: body, size: 100 diff --git a/src/plugins/kibana/public/discover/components/field_chooser/discover_field.js b/src/plugins/kibana/public/discover/components/field_chooser/discover_field.js index 710f5485486b0..c846f33744222 100644 --- a/src/plugins/kibana/public/discover/components/field_chooser/discover_field.js +++ b/src/plugins/kibana/public/discover/components/field_chooser/discover_field.js @@ -4,8 +4,8 @@ define(function (require) { var html = require('text!plugins/discover/components/field_chooser/discover_field.html'); var _ = require('lodash'); - require('ui/directives/css_truncate'); - require('ui/directives/field_name'); + require('directives/css_truncate'); + require('directives/field_name'); app.directive('discoverField', function ($compile) { diff --git a/src/plugins/kibana/public/discover/components/field_chooser/field_chooser.js b/src/plugins/kibana/public/discover/components/field_chooser/field_chooser.js index 76360e72c4d3c..f9813c5b46026 100644 --- a/src/plugins/kibana/public/discover/components/field_chooser/field_chooser.js +++ b/src/plugins/kibana/public/discover/components/field_chooser/field_chooser.js @@ -1,9 +1,9 @@ define(function (require) { var app = require('modules').get('apps/discover'); - require('ui/directives/css_truncate'); - require('ui/directives/field_name'); - require('ui/filters/unique'); + require('directives/css_truncate'); + require('directives/field_name'); + require('filters/unique'); require('plugins/discover/components/field_chooser/discover_field'); app.directive('discFieldChooser', function ($location, globalState, config, $route, Private) { diff --git a/src/plugins/kibana/public/discover/controllers/discover.js b/src/plugins/kibana/public/discover/controllers/discover.js index fa5c7db7e8860..4dd7c761e3ba3 100644 --- a/src/plugins/kibana/public/discover/controllers/discover.js +++ b/src/plugins/kibana/public/discover/controllers/discover.js @@ -8,12 +8,14 @@ define(function (require) { var datemath = require('utils/datemath'); + require('components/doc_table/doc_table'); + require('components/visualize/visualize'); require('components/notify/notify'); require('components/timepicker/timepicker'); require('components/fixedScroll'); - require('ui/directives/validate_json'); + require('directives/validate_json'); require('components/validate_query/validate_query'); - require('ui/filters/moment'); + require('filters/moment'); require('components/courier/courier'); require('components/index_patterns/index_patterns'); require('components/state_management/app_state'); diff --git a/src/plugins/kibana/public/discover/saved_searches/saved_searches.js b/src/plugins/kibana/public/discover/saved_searches/saved_searches.js index de55db9cb3fce..5c0a60aec1ea9 100644 --- a/src/plugins/kibana/public/discover/saved_searches/saved_searches.js +++ b/src/plugins/kibana/public/discover/saved_searches/saved_searches.js @@ -15,7 +15,7 @@ define(function (require) { title: 'searches' }); - module.service('savedSearches', function (Promise, config, configFile, es, createNotifier, SavedSearch, kbnUrl) { + module.service('savedSearches', function (Promise, config, kbnIndex, es, createNotifier, SavedSearch, kbnUrl) { var notify = createNotifier({ @@ -58,7 +58,7 @@ define(function (require) { } return es.search({ - index: configFile.kibana_index, + index: kbnIndex, type: 'search', body: body, size: 100 diff --git a/src/plugins/kibana/public/index.js b/src/plugins/kibana/public/index.js index 3e4ef11d98a78..22b0113ac3637 100644 --- a/src/plugins/kibana/public/index.js +++ b/src/plugins/kibana/public/index.js @@ -7,7 +7,7 @@ define(function (require) { .config(function ($tooltipProvider) { $tooltipProvider.setTriggers({ 'mouseenter': 'mouseleave click' }); }) - .directive('kibana', function (Private, $rootScope, $injector, Promise, config, kbnSetup) { + .directive('kibana', function (Private, $rootScope, $injector, Promise, config) { return { template: require('text!plugins/kibana/kibana.html'), controllerAs: 'kibana', @@ -23,7 +23,7 @@ define(function (require) { // run init functions before loading the mixins, so that we can ensure that // the environment is ready for them to get and use their dependencies - self.ready = Promise.all([ kbnSetup(), config.init() ]) + self.ready = Promise.all([ config.init() ]) .then(function () { // load some "mixins" var mixinLocals = { $scope: $scope, notify: notify }; diff --git a/src/plugins/kibana/public/settings/public/index.js b/src/plugins/kibana/public/settings/public/index.js index 740547b928ec7..4d1b2a30b1a21 100644 --- a/src/plugins/kibana/public/settings/public/index.js +++ b/src/plugins/kibana/public/settings/public/index.js @@ -2,7 +2,7 @@ define(function (require, module, exports) { var _ = require('lodash'); require('css!plugins/settings/styles/main.css'); - require('ui/filters/start_from'); + require('filters/start_from'); require('routes') .when('/settings', { diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_create.js b/src/plugins/kibana/public/settings/public/sections/indices/_create.js index 2e647c46f6672..adfac91aa1b2f 100644 --- a/src/plugins/kibana/public/settings/public/sections/indices/_create.js +++ b/src/plugins/kibana/public/settings/public/sections/indices/_create.js @@ -3,8 +3,8 @@ define(function (require) { var moment = require('moment'); var errors = require('errors'); - require('ui/directives/validate_index_name'); - require('ui/directives/auto_select_if_only_one'); + require('directives/validate_index_name'); + require('directives/auto_select_if_only_one'); require('routes') .when('/settings/indices/', { diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_refresh_kibana_index.js b/src/plugins/kibana/public/settings/public/sections/indices/_refresh_kibana_index.js index 0c49bc9c26865..190cc961815d2 100644 --- a/src/plugins/kibana/public/settings/public/sections/indices/_refresh_kibana_index.js +++ b/src/plugins/kibana/public/settings/public/sections/indices/_refresh_kibana_index.js @@ -1,8 +1,8 @@ define(function (require) { - return function RefreshKibanaIndexFn(es, configFile) { + return function RefreshKibanaIndexFn(es, kbnIndex) { return function () { return es.indices.refresh({ - index: configFile.kibana_index + index: kbnIndex }); }; }; diff --git a/src/plugins/kibana/public/settings/public/sections/objects/_objects.js b/src/plugins/kibana/public/settings/public/sections/objects/_objects.js index 06a0d69f6970f..570e8e31b3c43 100644 --- a/src/plugins/kibana/public/settings/public/sections/objects/_objects.js +++ b/src/plugins/kibana/public/settings/public/sections/objects/_objects.js @@ -5,7 +5,7 @@ define(function (require) { var registry = require('plugins/settings/saved_object_registry'); var objectIndexHTML = require('text!plugins/settings/sections/objects/_objects.html'); - require('ui/directives/file_upload'); + require('directives/file_upload'); require('routes') .when('/settings/objects', { @@ -13,7 +13,7 @@ define(function (require) { }); require('modules').get('apps/settings') - .directive('kbnSettingsObjects', function (config, Notifier, Private, kbnUrl) { + .directive('kbnSettingsObjects', function (kbnIndex, Notifier, Private, kbnUrl) { return { restrict: 'E', controller: function ($scope, $injector, $q, AppState, es) { @@ -98,7 +98,7 @@ define(function (require) { function retrieveAndExportDocs(objs) { es.mget({ - index: config.file.kibana_index, + index: kbnIndex, body: {docs: objs.map(transformToMget)} }) .then(function (response) { @@ -125,7 +125,7 @@ define(function (require) { } return es.mget({ - index: config.file.kibana_index, + index: kbnIndex, body: {docs: docs.map(_.partialRight(_.pick, '_id', '_type'))} }) .then(function (response) { @@ -133,7 +133,7 @@ define(function (require) { var confirmMessage = 'The following objects will be overwritten:\n\n'; if (existingDocs.length === 0 || window.confirm(confirmMessage + _.pluck(existingDocs, '_id').join('\n'))) { return es.bulk({ - index: config.file.kibana_index, + index: kbnIndex, body: _.flattenDeep(docs.map(transformToBulk)) }) .then(refreshIndex) @@ -152,7 +152,7 @@ define(function (require) { function refreshIndex() { return es.indices.refresh({ - index: config.file.kibana_index + index: kbnIndex }); } diff --git a/src/plugins/kibana/public/settings/public/sections/objects/_view.js b/src/plugins/kibana/public/settings/public/sections/objects/_view.js index 4b16953462812..39f6b7cd98409 100644 --- a/src/plugins/kibana/public/settings/public/sections/objects/_view.js +++ b/src/plugins/kibana/public/settings/public/sections/objects/_view.js @@ -11,7 +11,7 @@ define(function (require) { }); require('modules').get('apps/settings') - .directive('kbnSettingsObjectsView', function (config, Notifier) { + .directive('kbnSettingsObjectsView', function (kbnIndex, Notifier) { return { restrict: 'E', controller: function ($scope, $injector, $routeParams, $location, $window, $rootScope, es, Private) { @@ -103,7 +103,7 @@ define(function (require) { $scope.title = service.type; es.get({ - index: config.file.kibana_index, + index: kbnIndex, type: service.type, id: $routeParams.id }) @@ -159,7 +159,7 @@ define(function (require) { */ $scope.delete = function () { es.delete({ - index: config.file.kibana_index, + index: kbnIndex, type: service.type, id: $routeParams.id }) @@ -187,7 +187,7 @@ define(function (require) { }); es.index({ - index: config.file.kibana_index, + index: kbnIndex, type: service.type, id: $routeParams.id, body: source @@ -200,7 +200,7 @@ define(function (require) { function redirectHandler(action) { return es.indices.refresh({ - index: config.file.kibana_index + index: kbnIndex }) .then(function (resp) { var msg = 'You successfully ' + action + ' the "' + $scope.obj._source.title + '" ' + $scope.title.toLowerCase() + ' object'; diff --git a/src/plugins/kibana/public/settings/public/sections/objects/index.js b/src/plugins/kibana/public/settings/public/sections/objects/index.js index 899ff8bc09074..ef85a416111be 100644 --- a/src/plugins/kibana/public/settings/public/sections/objects/index.js +++ b/src/plugins/kibana/public/settings/public/sections/objects/index.js @@ -4,7 +4,7 @@ define(function (require) { require('angular-ui-ace'); require('angular-elastic'); - require('ui/directives/confirm_click'); + require('directives/confirm_click'); // add the module deps to this module require('modules').get('apps/settings', ['ui.ace', 'monospaced.elastic']); diff --git a/src/plugins/kibana/public/visualize/editor/agg_filter.js b/src/plugins/kibana/public/visualize/editor/agg_filter.js index 0bbba2761a85f..bc0f5b6ac589d 100644 --- a/src/plugins/kibana/public/visualize/editor/agg_filter.js +++ b/src/plugins/kibana/public/visualize/editor/agg_filter.js @@ -1,6 +1,6 @@ define(function (require) { var _ = require('lodash'); - var propFilter = require('ui/filters/_prop_filter'); + var propFilter = require('filters/_prop_filter'); require('modules') .get('kibana') diff --git a/src/plugins/kibana/public/visualize/editor/agg_params.js b/src/plugins/kibana/public/visualize/editor/agg_params.js index 3498bc9b1a3e0..06cef0d58bdec 100644 --- a/src/plugins/kibana/public/visualize/editor/agg_params.js +++ b/src/plugins/kibana/public/visualize/editor/agg_params.js @@ -1,5 +1,5 @@ define(function (require) { - var IndexedArray = require('utils/indexed_array/index'); + var IndexedArray = require('components/indexed_array/index'); require('modules') .get('app/visualize') @@ -9,7 +9,7 @@ define(function (require) { var aggTypes = Private(require('components/agg_types/index')); var aggSelectHtml = require('text!plugins/visualize/editor/agg_select.html'); var advancedToggleHtml = require('text!plugins/visualize/editor/advanced_toggle.html'); - require('ui/filters/match_any'); + require('filters/match_any'); require('plugins/visualize/editor/agg_param'); var notify = new Notifier({ diff --git a/src/plugins/kibana/public/visualize/editor/editor.js b/src/plugins/kibana/public/visualize/editor/editor.js index 9cfcda1e1b686..88a84809f82ec 100644 --- a/src/plugins/kibana/public/visualize/editor/editor.js +++ b/src/plugins/kibana/public/visualize/editor/editor.js @@ -5,12 +5,12 @@ define(function (require) { require('plugins/visualize/editor/agg_filter'); - require('ui/directives/saved_object_finder'); + require('directives/saved_object_finder'); require('components/visualize/visualize'); require('components/clipboard/clipboard'); require('components/comma_list_filter'); - require('ui/filters/uriescape'); + require('filters/uriescape'); require('routes') .when('/visualize/create', { diff --git a/src/plugins/kibana/public/visualize/saved_visualizations/saved_visualizations.js b/src/plugins/kibana/public/visualize/saved_visualizations/saved_visualizations.js index e5e2ea8dbdd78..db22c3e0065bc 100644 --- a/src/plugins/kibana/public/visualize/saved_visualizations/saved_visualizations.js +++ b/src/plugins/kibana/public/visualize/saved_visualizations/saved_visualizations.js @@ -11,7 +11,7 @@ define(function (require) { title: 'visualizations' }); - app.service('savedVisualizations', function (Promise, es, config, SavedVis, Private, Notifier, kbnUrl) { + app.service('savedVisualizations', function (Promise, es, kbnIndex, SavedVis, Private, Notifier, kbnUrl) { var visTypes = Private(require('registry/vis_types')); var notify = new Notifier({ location: 'Saved Visualization Service' @@ -53,7 +53,7 @@ define(function (require) { } return es.search({ - index: config.file.kibana_index, + index: kbnIndex, type: 'visualization', body: body, size: 100, diff --git a/src/plugins/kibana/public/visualize/wizard/wizard.js b/src/plugins/kibana/public/visualize/wizard/wizard.js index 20367099e5372..9f993f4fbb0dc 100644 --- a/src/plugins/kibana/public/visualize/wizard/wizard.js +++ b/src/plugins/kibana/public/visualize/wizard/wizard.js @@ -2,7 +2,7 @@ define(function (require) { var _ = require('lodash'); require('plugins/visualize/saved_visualizations/saved_visualizations'); - require('ui/directives/saved_object_finder'); + require('directives/saved_object_finder'); require('plugins/discover/saved_searches/saved_searches'); var templateStep = function (num, txt) { diff --git a/src/plugins/markdown-vis/package.json b/src/plugins/markdown-vis/package.json deleted file mode 100644 index 998633ae404af..0000000000000 --- a/src/plugins/markdown-vis/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "markdown-vis", - "version": "1.0.0" -} diff --git a/src/plugins/markdown-vis/index.js b/src/plugins/markdown_vis/index.js similarity index 100% rename from src/plugins/markdown-vis/index.js rename to src/plugins/markdown_vis/index.js diff --git a/src/plugins/markdown_vis/package.json b/src/plugins/markdown_vis/package.json new file mode 100644 index 0000000000000..e47e6b73a6995 --- /dev/null +++ b/src/plugins/markdown_vis/package.json @@ -0,0 +1,4 @@ +{ + "name": "markdown_vis", + "version": "1.0.0" +} diff --git a/src/plugins/markdown-vis/public/index.js b/src/plugins/markdown_vis/public/index.js similarity index 100% rename from src/plugins/markdown-vis/public/index.js rename to src/plugins/markdown_vis/public/index.js diff --git a/src/plugins/markdown-vis/public/markdown_vis.html b/src/plugins/markdown_vis/public/markdown_vis.html similarity index 100% rename from src/plugins/markdown-vis/public/markdown_vis.html rename to src/plugins/markdown_vis/public/markdown_vis.html diff --git a/src/plugins/markdown-vis/public/markdown_vis.js b/src/plugins/markdown_vis/public/markdown_vis.js similarity index 100% rename from src/plugins/markdown-vis/public/markdown_vis.js rename to src/plugins/markdown_vis/public/markdown_vis.js diff --git a/src/plugins/markdown-vis/public/markdown_vis.less b/src/plugins/markdown_vis/public/markdown_vis.less similarity index 100% rename from src/plugins/markdown-vis/public/markdown_vis.less rename to src/plugins/markdown_vis/public/markdown_vis.less diff --git a/src/plugins/markdown-vis/public/markdown_vis_controller.js b/src/plugins/markdown_vis/public/markdown_vis_controller.js similarity index 100% rename from src/plugins/markdown-vis/public/markdown_vis_controller.js rename to src/plugins/markdown_vis/public/markdown_vis_controller.js diff --git a/src/plugins/markdown-vis/public/markdown_vis_params.html b/src/plugins/markdown_vis/public/markdown_vis_params.html similarity index 100% rename from src/plugins/markdown-vis/public/markdown_vis_params.html rename to src/plugins/markdown_vis/public/markdown_vis_params.html diff --git a/src/plugins/metric-vis/index.js b/src/plugins/metric_vis/index.js similarity index 100% rename from src/plugins/metric-vis/index.js rename to src/plugins/metric_vis/index.js diff --git a/src/plugins/metric-vis/package.json b/src/plugins/metric_vis/package.json similarity index 51% rename from src/plugins/metric-vis/package.json rename to src/plugins/metric_vis/package.json index a55cbf5786cee..76c59dab399e5 100644 --- a/src/plugins/metric-vis/package.json +++ b/src/plugins/metric_vis/package.json @@ -1,4 +1,4 @@ { - "name": "metric-vis", + "name": "metric_vis", "version": "1.0.0" } diff --git a/src/plugins/metric-vis/public/index.js b/src/plugins/metric_vis/public/index.js similarity index 100% rename from src/plugins/metric-vis/public/index.js rename to src/plugins/metric_vis/public/index.js diff --git a/src/plugins/metric-vis/public/metric_vis.html b/src/plugins/metric_vis/public/metric_vis.html similarity index 100% rename from src/plugins/metric-vis/public/metric_vis.html rename to src/plugins/metric_vis/public/metric_vis.html diff --git a/src/plugins/metric-vis/public/metric_vis.js b/src/plugins/metric_vis/public/metric_vis.js similarity index 100% rename from src/plugins/metric-vis/public/metric_vis.js rename to src/plugins/metric_vis/public/metric_vis.js diff --git a/src/plugins/metric-vis/public/metric_vis.less b/src/plugins/metric_vis/public/metric_vis.less similarity index 100% rename from src/plugins/metric-vis/public/metric_vis.less rename to src/plugins/metric_vis/public/metric_vis.less diff --git a/src/plugins/metric-vis/public/metric_vis_controller.js b/src/plugins/metric_vis/public/metric_vis_controller.js similarity index 100% rename from src/plugins/metric-vis/public/metric_vis_controller.js rename to src/plugins/metric_vis/public/metric_vis_controller.js diff --git a/src/plugins/metric-vis/public/metric_vis_params.html b/src/plugins/metric_vis/public/metric_vis_params.html similarity index 100% rename from src/plugins/metric-vis/public/metric_vis_params.html rename to src/plugins/metric_vis/public/metric_vis_params.html diff --git a/src/plugins/table-vis/index.js b/src/plugins/table_vis/index.js similarity index 100% rename from src/plugins/table-vis/index.js rename to src/plugins/table_vis/index.js diff --git a/src/plugins/table-vis/package.json b/src/plugins/table_vis/package.json similarity index 52% rename from src/plugins/table-vis/package.json rename to src/plugins/table_vis/package.json index 54896618bade1..cc3d0ef348c9c 100644 --- a/src/plugins/table-vis/package.json +++ b/src/plugins/table_vis/package.json @@ -1,4 +1,4 @@ { - "name": "table-vis", + "name": "table_vis", "version": "1.0.0" } diff --git a/src/plugins/table-vis/public/index.js b/src/plugins/table_vis/public/index.js similarity index 100% rename from src/plugins/table-vis/public/index.js rename to src/plugins/table_vis/public/index.js diff --git a/src/plugins/table-vis/public/table_vis.html b/src/plugins/table_vis/public/table_vis.html similarity index 100% rename from src/plugins/table-vis/public/table_vis.html rename to src/plugins/table_vis/public/table_vis.html diff --git a/src/plugins/table-vis/public/table_vis.js b/src/plugins/table_vis/public/table_vis.js similarity index 100% rename from src/plugins/table-vis/public/table_vis.js rename to src/plugins/table_vis/public/table_vis.js diff --git a/src/plugins/table-vis/public/table_vis.less b/src/plugins/table_vis/public/table_vis.less similarity index 100% rename from src/plugins/table-vis/public/table_vis.less rename to src/plugins/table_vis/public/table_vis.less diff --git a/src/plugins/table-vis/public/table_vis_controller.js b/src/plugins/table_vis/public/table_vis_controller.js similarity index 100% rename from src/plugins/table-vis/public/table_vis_controller.js rename to src/plugins/table_vis/public/table_vis_controller.js diff --git a/src/plugins/table-vis/public/table_vis_params.html b/src/plugins/table_vis/public/table_vis_params.html similarity index 100% rename from src/plugins/table-vis/public/table_vis_params.html rename to src/plugins/table_vis/public/table_vis_params.html diff --git a/src/plugins/table-vis/public/table_vis_params.js b/src/plugins/table_vis/public/table_vis_params.js similarity index 100% rename from src/plugins/table-vis/public/table_vis_params.js rename to src/plugins/table_vis/public/table_vis_params.js diff --git a/src/plugins/ui/index.js b/src/plugins/ui/index.js index 287a3c514a609..fe95c978d3c30 100644 --- a/src/plugins/ui/index.js +++ b/src/plugins/ui/index.js @@ -45,10 +45,8 @@ module.exports = function (kibana) { version: kibana.package.version, buildSha: _.get(kibana, 'package.build.sha', '@@buildSha'), buildNumber: _.get(kibana, 'package.build.number', '@@buildNum'), - config: { - kibana_index: config.get('kibana.index'), - shard_timeout: config.get('elasticsearch.shardTimeout') - }, + kbnIndex: config.get('kibana.index'), + esShardTimeout: config.get('elasticsearch.shardTimeout') }); } }); diff --git a/src/plugins/ui/public/.jshintrc b/src/plugins/ui/public/.jshintrc new file mode 100644 index 0000000000000..04baeaf2ad6cf --- /dev/null +++ b/src/plugins/ui/public/.jshintrc @@ -0,0 +1,3 @@ +{ + "extends": "../../../../.jshintrc.browser" +} diff --git a/src/plugins/ui/public/bootstrap.js b/src/plugins/ui/public/bootstrap.js index 3d3f306811dbf..c3b1234d7aa88 100644 --- a/src/plugins/ui/public/bootstrap.js +++ b/src/plugins/ui/public/bootstrap.js @@ -8,70 +8,87 @@ define(function (require) { var modules = require('modules'); var routes = require('routes'); - require('elasticsearch'); require('angular-route'); require('angular-bindonce'); + require('angular-bootstrap'); + require('elasticsearch'); - var configFile = JSON.parse(require('text!config')); + require('components/bind'); + require('components/bound_to_config_obj'); + require('components/chrome'); + require('components/config/config'); + require('components/courier/courier'); + require('components/debounce'); + require('components/doc_title/doc_title'); + require('components/elastic_textarea'); + require('components/errors'); + require('components/es'); + require('components/events'); + require('components/fancy_forms/fancy_forms'); + require('components/filter_bar/filter_bar'); + require('components/filter_manager/filter_manager'); + require('components/index_patterns/index_patterns'); + require('components/listen'); + require('components/modules'); + require('components/notify/notify'); + require('components/persisted_log/persisted_log'); + require('components/private'); + require('components/promises'); + require('components/state_management/app_state'); + require('components/state_management/global_state'); + require('components/storage/storage'); + require('components/stringify/register'); + require('components/style_compile/style_compile'); + require('components/timefilter/timefilter'); + require('components/timepicker/timepicker'); + require('components/tooltip/tooltip'); + require('components/typeahead/typeahead'); + require('components/url/url'); + require('components/validateDateInterval'); + require('components/validate_query/validate_query'); + require('components/watch_multi'); var kibana = modules.get('kibana', [ // list external requirements here 'elasticsearch', 'pasvaz.bindonce', 'ngRoute', - 'ngClipboard' + 'ngClipboard', + 'ui.bootstrap' ]); - kibana - // This stores the Kibana revision number, @REV@ is replaced by grunt. - .constant('kbnVersion', window.KIBANA_VERSION) - // The build number is placed by grunt, represents a sequence to provide nothing really but order. - // If NaN, use the max value of a JS number, that way we always have a number here, even in dev - .constant('buildNum', _.parseInt(window.KIBANA_BUILD_NUM) || Number.MAX_SAFE_INTEGER) - // This stores the build number, @REV@ is replaced by grunt. - .constant('commitSha', window.KIBANA_COMMIT_SHA) - // Use this for cache busting partials - .constant('cacheBust', window.KIBANA_COMMIT_SHA) - // The minimum Elasticsearch version required to run Kibana - .constant('minimumElasticsearchVersion', '2.0.0') - // When we need to identify the current session of the app, ef shard preference - .constant('sessionId', Date.now()) - // attach the route manager's known routes - .config(routes.config) - .config(['ngClipProvider', function (ngClipProvider) { - ngClipProvider.setPath('bower_components/zeroclipboard/dist/ZeroClipboard.swf'); - }]); - - // setup routes - routes - .otherwise({ - redirectTo: '/' + configFile.default_app_id - }); + // This stores the Kibana revision number, @REV@ is replaced by grunt. + .constant('kbnVersion', window.KIBANA_VERSION) + // The build number is placed by grunt, represents a sequence to provide nothing really but order. + // If NaN, use the max value of a JS number, that way we always have a number here, even in dev + .constant('buildNum', window.KIBANA_BUILD_NUM) + // the elasticserarch index where we will store saved objects and config + .constant('kbnIndex', window.KIBANA_INDEX) + // timeout config val specified in kibana.yml, passed from server + .constant('esShardTimeout', window.ES_SHARD_TIMEOUT) + // url we should use to talk to es + .constant('esUrl', (function () { + var a = document.createElement('a'); + a.href = 'elasticsearch'; + return a.href; + }())) + // This stores the build number, @REV@ is replaced by grunt. + .constant('commitSha', window.KIBANA_COMMIT_SHA) + // Use this for cache busting partials + .constant('cacheBust', window.KIBANA_COMMIT_SHA) + // The minimum Elasticsearch version required to run Kibana + .constant('minimumElasticsearchVersion', '2.0.0') + // When we need to identify the current session of the app, ef shard preference + .constant('sessionId', Date.now()) + // attach the route manager's known routes + .config(routes.config) + .config(['ngClipProvider', function (ngClipProvider) { + ngClipProvider.setPath('bower_components/zeroclipboard/dist/ZeroClipboard.swf'); + }]); // tell the modules util to add it's modules as requirements for kibana modules.link(kibana); - kibana.load = _.onceWithCb(function (cb) { - var firstLoad = [ 'plugins/kibana/index' ]; - var thenLoad = _.difference(configFile.plugins, firstLoad); - require(firstLoad, function loadApps() { - require(thenLoad, cb); - }); - }); - - kibana.init = _.onceWithCb(function (cb) { - kibana.load(function () { - $(function () { - angular - .bootstrap(document, ['kibana']) - .invoke(function () { - $(document.body).children(':not(style-compile)').show(); - cb(); - }); - }); - }); - }); - return kibana; }); diff --git a/src/plugins/ui/public/components/agg_types/_agg_params.js b/src/plugins/ui/public/components/agg_types/_agg_params.js index ddece7b292674..4ba047898c3e0 100644 --- a/src/plugins/ui/public/components/agg_types/_agg_params.js +++ b/src/plugins/ui/public/components/agg_types/_agg_params.js @@ -1,8 +1,8 @@ define(function (require) { return function AggParamsFactory(Private) { - require('ui/filters/label'); + require('filters/label'); var _ = require('lodash'); - var IndexedArray = require('utils/indexed_array/index'); + var IndexedArray = require('components/indexed_array/index'); var paramTypeMap = { field: Private(require('components/agg_types/param_types/field')), diff --git a/src/plugins/ui/public/components/agg_types/buckets/_interval_options.js b/src/plugins/ui/public/components/agg_types/buckets/_interval_options.js index b42dac83adaf1..48ed13c7a73b5 100644 --- a/src/plugins/ui/public/components/agg_types/buckets/_interval_options.js +++ b/src/plugins/ui/public/components/agg_types/buckets/_interval_options.js @@ -1,7 +1,7 @@ define(function (require) { return function IntervalOptionsService(Private) { var moment = require('moment'); - require('ui/directives/input_whole_number'); + require('directives/input_whole_number'); // shorthand var ms = function (type) { return moment.duration(1, type).asMilliseconds(); }; diff --git a/src/plugins/ui/public/components/agg_types/buckets/date_histogram.js b/src/plugins/ui/public/components/agg_types/buckets/date_histogram.js index 28fae6177c9e8..33f0ea8c7b822 100644 --- a/src/plugins/ui/public/components/agg_types/buckets/date_histogram.js +++ b/src/plugins/ui/public/components/agg_types/buckets/date_histogram.js @@ -21,7 +21,7 @@ define(function (require) { agg.buckets.setBounds(agg.fieldIsTimeField() && timefilter.getActiveBounds()); } - require('ui/filters/field_type'); + require('filters/field_type'); require('components/validateDateInterval'); return new BucketAggType({ diff --git a/src/plugins/ui/public/components/agg_types/buckets/date_range.js b/src/plugins/ui/public/components/agg_types/buckets/date_range.js index a322855f957eb..e45024c9bf8ef 100644 --- a/src/plugins/ui/public/components/agg_types/buckets/date_range.js +++ b/src/plugins/ui/public/components/agg_types/buckets/date_range.js @@ -1,7 +1,7 @@ define(function (require) { var moment = require('moment'); var dateRange = require('utils/date_range'); - require('ui/directives/validate_date_math'); + require('directives/validate_date_math'); return function DateRangeAggDefinition(Private, config) { var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type')); diff --git a/src/plugins/ui/public/components/agg_types/buckets/ip_range.js b/src/plugins/ui/public/components/agg_types/buckets/ip_range.js index 38931a87a2ab4..80d4f5491d6a4 100644 --- a/src/plugins/ui/public/components/agg_types/buckets/ip_range.js +++ b/src/plugins/ui/public/components/agg_types/buckets/ip_range.js @@ -1,7 +1,7 @@ define(function (require) { var _ = require('lodash'); - require('ui/directives/validate_ip'); - require('ui/directives/validate_cidr_mask'); + require('directives/validate_ip'); + require('directives/validate_cidr_mask'); return function RangeAggDefinition(Private) { var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type')); diff --git a/src/plugins/ui/public/components/agg_types/index.js b/src/plugins/ui/public/components/agg_types/index.js index 65411c5eac3d1..3a60268cb39eb 100644 --- a/src/plugins/ui/public/components/agg_types/index.js +++ b/src/plugins/ui/public/components/agg_types/index.js @@ -1,6 +1,6 @@ define(function (require) { return function AggTypeService(Private) { - var IndexedArray = require('utils/indexed_array/index'); + var IndexedArray = require('components/indexed_array/index'); var aggs = { metrics: [ diff --git a/src/plugins/ui/public/components/agg_types/param_types/optioned.js b/src/plugins/ui/public/components/agg_types/param_types/optioned.js index 0f208a7031f4a..8e6c81f480dbc 100644 --- a/src/plugins/ui/public/components/agg_types/param_types/optioned.js +++ b/src/plugins/ui/public/components/agg_types/param_types/optioned.js @@ -2,7 +2,7 @@ define(function (require) { return function OptionedAggParamFactory(Private) { var _ = require('lodash'); - var IndexedArray = require('utils/indexed_array/index'); + var IndexedArray = require('components/indexed_array/index'); var BaseAggParam = Private(require('components/agg_types/param_types/base')); _.class(OptionedAggParam).inherits(BaseAggParam); diff --git a/src/plugins/ui/public/chrome.js b/src/plugins/ui/public/components/chrome.js similarity index 61% rename from src/plugins/ui/public/chrome.js rename to src/plugins/ui/public/components/chrome.js index 4b58299198abc..df3c52afb1ea7 100644 --- a/src/plugins/ui/public/chrome.js +++ b/src/plugins/ui/public/components/chrome.js @@ -1,45 +1,21 @@ define(function (require) { - require('angular-bootstrap'); - require('components/private'); - require('components/config/config'); - require('components/courier/courier'); - require('components/filter_bar/filter_bar'); - require('components/notify/notify'); - require('components/persisted_log/persisted_log'); - require('components/state_management/app_state'); - require('components/storage/storage'); - require('components/url/url'); - require('components/doc_title/doc_title'); - require('components/tooltip/tooltip'); - require('components/style_compile/style_compile'); - require('components/watch_multi'); - require('components/bind'); - require('components/listen'); - require('components/fancy_forms/fancy_forms'); - require('components/stringify/register'); - require('modules') - .get('kibana', ['ui.bootstrap']) - .config(function ($tooltipProvider, kbnChromeProvider) { + .get('kibana') + .config(function ($tooltipProvider) { $tooltipProvider.setTriggers({ 'mouseenter': 'mouseleave click' }); - }); - - function Chrome() { - var showCacheMessage = location.href.indexOf('?embed') < 0 && location.href.indexOf('&embed') < 0; - if (!showCacheMessage) document.getElementById('cache-message').style.display = 'none'; - } - - .controller('KibanaChromeController', function (Private, $rootScope, $injector, Promise, config, kbnSetup) { + }) + .directive('kbnChrome', function () { return { template: require('text!plugins/kibana/kibana.html'), controllerAs: 'kibana', controller: function ($scope) { var _ = require('lodash'); + var self = this; var notify = new Notifier({ location: 'Kibana' }); // run init functions before loading the mixins, so that we can ensure that // the environment is ready for them to get and use their dependencies - self.ready = Promise.all([ kbnSetup(), config.init() ]) + self.ready = Promise.all([ config.init() ]) .then(function () { // load some "mixins" var mixinLocals = { $scope: $scope, notify: notify }; diff --git a/src/plugins/ui/public/components/config/config.js b/src/plugins/ui/public/components/config/config.js index b47a05e7f87e1..dac5176ae6866 100644 --- a/src/plugins/ui/public/components/config/config.js +++ b/src/plugins/ui/public/components/config/config.js @@ -3,18 +3,8 @@ define(function (require) { 'kibana/notify' ]); - var configFile = JSON.parse(require('text!config')); - configFile.elasticsearch = (function () { - var a = document.createElement('a'); - a.href = 'elasticsearch'; - return a.href; - }()); - - // allow the rest of the app to get the configFile easily - module.constant('configFile', configFile); - // service for delivering config variables to everywhere else - module.service('config', function (Private, Notifier, kbnVersion, kbnSetup, $rootScope, buildNum) { + module.service('config', function (Private, Notifier, kbnVersion, kbnIndex, $rootScope, buildNum) { var config = this; var angular = require('angular'); @@ -33,7 +23,7 @@ define(function (require) { var DocSource = Private(require('components/courier/data_source/doc_source')); var doc = (new DocSource()) - .index(configFile.kibana_index) + .index(kbnIndex) .type('config') .id(kbnVersion); @@ -41,8 +31,6 @@ define(function (require) { * PUBLIC API ******/ - config.file = configFile; - /** * Executes once and returns a promise that is resolved once the * config has loaded for the first time. @@ -51,8 +39,8 @@ define(function (require) { */ config.init = _.once(function () { var complete = notify.lifecycle('config init'); - return kbnSetup() - .then(function getDoc() { + + return (function getDoc() { // used to apply an entire es response to the vals, silentAndLocal will prevent // event/notifications/writes from occuring. @@ -77,7 +65,7 @@ define(function (require) { }); } }); - }) + }()) .then(function () { $rootScope.$broadcast('init:config'); }) diff --git a/src/plugins/ui/public/components/courier/fetch/_call_client.js b/src/plugins/ui/public/components/courier/fetch/_call_client.js index 2ac51a3604b7d..c67cff594829f 100644 --- a/src/plugins/ui/public/components/courier/fetch/_call_client.js +++ b/src/plugins/ui/public/components/courier/fetch/_call_client.js @@ -1,5 +1,5 @@ define(function (require) { - return function CourierFetchCallClient(Private, Promise, es, configFile, sessionId) { + return function CourierFetchCallClient(Private, Promise, es, esShardTimeout, sessionId) { var _ = require('lodash'); var isRequest = Private(require('components/courier/fetch/_is_request')); @@ -83,7 +83,7 @@ define(function (require) { } return (esPromise = es[strategy.clientMethod]({ - timeout: configFile.shard_timeout, + timeout: shardTimeout, ignore_unavailable: true, preference: sessionId, body: body @@ -112,4 +112,4 @@ define(function (require) { return callClient; }; -}); \ No newline at end of file +}); diff --git a/src/plugins/ui/public/components/courier/fetch/strategy/search.js b/src/plugins/ui/public/components/courier/fetch/strategy/search.js index f8aa674f928eb..9fc50bbbba8d9 100644 --- a/src/plugins/ui/public/components/courier/fetch/strategy/search.js +++ b/src/plugins/ui/public/components/courier/fetch/strategy/search.js @@ -1,5 +1,5 @@ define(function (require) { - return function FetchStrategyForSearch(Private, Promise, timefilter, configFile) { + return function FetchStrategyForSearch(Private, Promise, timefilter) { var _ = require('lodash'); var angular = require('angular'); diff --git a/src/plugins/ui/public/components/courier/saved_object/saved_object.js b/src/plugins/ui/public/components/courier/saved_object/saved_object.js index 00f71d2ec4728..ba4e5c719feee 100644 --- a/src/plugins/ui/public/components/courier/saved_object/saved_object.js +++ b/src/plugins/ui/public/components/courier/saved_object/saved_object.js @@ -1,5 +1,5 @@ define(function (require) { - return function SavedObjectFactory(es, configFile, Promise, Private, Notifier, indexPatterns) { + return function SavedObjectFactory(es, kbnIndex, Promise, Private, Notifier, indexPatterns) { var angular = require('angular'); var errors = require('errors'); var _ = require('lodash'); @@ -58,7 +58,7 @@ define(function (require) { // tell the docSource where to find the doc docSource - .index(configFile.kibana_index) + .index(kbnIndex) .type(type) .id(self.id); @@ -235,7 +235,7 @@ define(function (require) { var finish = function (id) { self.id = id; return es.indices.refresh({ - index: configFile.kibana_index + index: kbnIndex }) .then(function () { return self.id; @@ -278,12 +278,12 @@ define(function (require) { */ self.delete = function () { return es.delete({ - index: configFile.kibana_index, + index: kbnIndex, type: type, id: this.id }).then(function () { return es.indices.refresh({ - index: configFile.kibana_index + index: kbnIndex }); }); }; diff --git a/src/plugins/ui/public/components/doc_table/components/table_header.js b/src/plugins/ui/public/components/doc_table/components/table_header.js index 844658cee2fcd..6141b34f8daed 100644 --- a/src/plugins/ui/public/components/doc_table/components/table_header.js +++ b/src/plugins/ui/public/components/doc_table/components/table_header.js @@ -2,7 +2,7 @@ define(function (require) { var _ = require('lodash'); var module = require('modules').get('app/discover'); - require('ui/filters/short_dots'); + require('filters/short_dots'); module.directive('kbnTableHeader', function (shortDotsFilter) { var headerHtml = require('text!components/doc_table/components/table_header.html'); diff --git a/src/plugins/ui/public/components/doc_table/components/table_row.js b/src/plugins/ui/public/components/doc_table/components/table_row.js index 68f03390bc969..15952844b0038 100644 --- a/src/plugins/ui/public/components/doc_table/components/table_row.js +++ b/src/plugins/ui/public/components/doc_table/components/table_row.js @@ -7,8 +7,8 @@ define(function (require) { require('components/highlight/highlight'); require('components/highlight/highlight_tags'); require('components/doc_viewer/doc_viewer'); - require('ui/filters/trust_as_html'); - require('ui/filters/short_dots'); + require('filters/trust_as_html'); + require('filters/short_dots'); // guesstimate at the minimum number of chars wide cells in the table should be @@ -27,7 +27,7 @@ define(function (require) { var openRowHtml = require('text!components/doc_table/components/table_row/open.html'); var detailsHtml = require('text!components/doc_table/components/table_row/details.html'); var cellTemplate = _.template(noWhiteSpace(require('text!components/doc_table/components/table_row/cell.html'))); - var truncateByHeightTemplate = _.template(noWhiteSpace(require('text!ui/partials/truncate_by_height.html'))); + var truncateByHeightTemplate = _.template(noWhiteSpace(require('text!partials/truncate_by_height.html'))); return { restrict: 'A', diff --git a/src/plugins/ui/public/components/doc_table/doc_table.js b/src/plugins/ui/public/components/doc_table/doc_table.js index ecbccb5fe5bbb..a5d7fc038deac 100644 --- a/src/plugins/ui/public/components/doc_table/doc_table.js +++ b/src/plugins/ui/public/components/doc_table/doc_table.js @@ -5,8 +5,8 @@ define(function (require) { var getSort = require('components/doc_table/lib/get_sort'); require('css!components/doc_table/doc_table.css'); - require('ui/directives/truncated'); - require('ui/directives/infinite_scroll'); + require('directives/truncated'); + require('directives/infinite_scroll'); require('components/doc_table/components/table_header'); require('components/doc_table/components/table_row'); diff --git a/src/plugins/ui/public/errors.js b/src/plugins/ui/public/components/errors.js similarity index 100% rename from src/plugins/ui/public/errors.js rename to src/plugins/ui/public/components/errors.js diff --git a/src/plugins/ui/public/components/es.js b/src/plugins/ui/public/components/es.js index 9773c4c00ef16..d740de4977e36 100644 --- a/src/plugins/ui/public/components/es.js +++ b/src/plugins/ui/public/components/es.js @@ -5,11 +5,11 @@ define(function (require) { var es; // share the client amoungst all apps require('modules') .get('kibana', ['elasticsearch', 'kibana/config']) - .service('es', function (esFactory, configFile, $q) { + .service('es', function (esFactory, esUrl, $q) { if (es) return es; es = esFactory({ - host: configFile.elasticsearch, + host: esUrl, log: 'info', requestTimeout: 0, apiVersion: '1.4', diff --git a/src/plugins/ui/public/components/index_patterns/_cast_mapping_type.js b/src/plugins/ui/public/components/index_patterns/_cast_mapping_type.js index 524c2f191bcb5..826f4805de3b8 100644 --- a/src/plugins/ui/public/components/index_patterns/_cast_mapping_type.js +++ b/src/plugins/ui/public/components/index_patterns/_cast_mapping_type.js @@ -1,6 +1,6 @@ define(function (require) { return function CastMappingTypeFn() { - var IndexedArray = require('utils/indexed_array/index'); + var IndexedArray = require('components/indexed_array/index'); castMappingType.types = new IndexedArray({ index: ['name'], diff --git a/src/plugins/ui/public/components/index_patterns/_field_format/contentTypes.js b/src/plugins/ui/public/components/index_patterns/_field_format/contentTypes.js index b23355f73f0ff..80d812144d9ae 100644 --- a/src/plugins/ui/public/components/index_patterns/_field_format/contentTypes.js +++ b/src/plugins/ui/public/components/index_patterns/_field_format/contentTypes.js @@ -2,6 +2,7 @@ define(function (require) { return function contentTypesProvider(highlightFilter) { var _ = require('lodash'); var angular = require('angular'); + require('components/highlight/highlight'); var types = { html: function (format, convert) { diff --git a/src/plugins/ui/public/components/index_patterns/_field_list.js b/src/plugins/ui/public/components/index_patterns/_field_list.js index 9c54b654e786c..01097b74db619 100644 --- a/src/plugins/ui/public/components/index_patterns/_field_list.js +++ b/src/plugins/ui/public/components/index_patterns/_field_list.js @@ -1,7 +1,7 @@ define(function (require) { return function FieldListProvider(Private) { var Field = Private(require('components/index_patterns/_field')); - var IndexedArray = require('utils/indexed_array/index'); + var IndexedArray = require('components/indexed_array/index'); var _ = require('lodash'); _.class(FieldList).inherits(IndexedArray); diff --git a/src/plugins/ui/public/components/index_patterns/_field_types.js b/src/plugins/ui/public/components/index_patterns/_field_types.js index 3de0360d32a3e..8e44448069333 100644 --- a/src/plugins/ui/public/components/index_patterns/_field_types.js +++ b/src/plugins/ui/public/components/index_patterns/_field_types.js @@ -1,6 +1,6 @@ define(function (require) { return function IndexPatternFieldTypes() { - var IndexedArray = require('utils/indexed_array/index'); + var IndexedArray = require('components/indexed_array/index'); return new IndexedArray({ index: ['name'], diff --git a/src/plugins/ui/public/components/index_patterns/_get_ids.js b/src/plugins/ui/public/components/index_patterns/_get_ids.js index 3d0b91d4a5c0c..0a213945a91d3 100644 --- a/src/plugins/ui/public/components/index_patterns/_get_ids.js +++ b/src/plugins/ui/public/components/index_patterns/_get_ids.js @@ -1,5 +1,5 @@ define(function (require) { - return function GetIndexPatternIdsFn(es, configFile) { + return function GetIndexPatternIdsFn(es, kbnIndex) { var _ = require('lodash'); // many places may require the id list, so we will cache it seperately @@ -15,7 +15,7 @@ define(function (require) { } cachedPromise = es.search({ - index: configFile.kibana_index, + index: kbnIndex, type: 'index-pattern', fields: [], body: { diff --git a/src/plugins/ui/public/components/index_patterns/_index_pattern.js b/src/plugins/ui/public/components/index_patterns/_index_pattern.js index 3654a96b43618..2e3de27fea47f 100644 --- a/src/plugins/ui/public/components/index_patterns/_index_pattern.js +++ b/src/plugins/ui/public/components/index_patterns/_index_pattern.js @@ -1,5 +1,5 @@ define(function (require) { - return function IndexPatternFactory(Private, timefilter, Notifier, config, Promise, $rootScope) { + return function IndexPatternFactory(Private, timefilter, Notifier, config, kbnIndex, Promise, $rootScope) { var _ = require('lodash'); var errors = require('errors'); var angular = require('angular'); @@ -59,7 +59,7 @@ define(function (require) { self.init = function () { // tell the docSource where to find the doc docSource - .index(config.file.kibana_index) + .index(kbnIndex) .type(type) .id(self.id); diff --git a/src/plugins/ui/public/components/index_patterns/_intervals.js b/src/plugins/ui/public/components/index_patterns/_intervals.js index 6162ea75be56d..bcac650409d18 100644 --- a/src/plugins/ui/public/components/index_patterns/_intervals.js +++ b/src/plugins/ui/public/components/index_patterns/_intervals.js @@ -2,7 +2,7 @@ define(function (require) { return function IndexNameIntervalsService(timefilter) { var _ = require('lodash'); var moment = require('moment'); - var IndexedArray = require('utils/indexed_array/index'); + var IndexedArray = require('components/indexed_array/index'); var intervals = new IndexedArray({ index: ['name'], diff --git a/src/plugins/ui/public/components/index_patterns/_mapper.js b/src/plugins/ui/public/components/index_patterns/_mapper.js index 8cd767eccea79..5dd690725389b 100644 --- a/src/plugins/ui/public/components/index_patterns/_mapper.js +++ b/src/plugins/ui/public/components/index_patterns/_mapper.js @@ -1,5 +1,5 @@ define(function (require) { - return function MapperService(Private, Promise, es, config) { + return function MapperService(Private, Promise, es, config, kbnIndex) { var _ = require('lodash'); var moment = require('moment'); @@ -33,7 +33,7 @@ define(function (require) { if (!skipIndexPatternCache) { return es.get({ - index: config.file.kibana_index, + index: kbnIndex, type: 'index-pattern', id: id, _sourceInclude: ['fields'] diff --git a/src/plugins/ui/public/components/index_patterns/_transform_mapping_into_fields.js b/src/plugins/ui/public/components/index_patterns/_transform_mapping_into_fields.js index 04a11df357afb..c95568b97015e 100644 --- a/src/plugins/ui/public/components/index_patterns/_transform_mapping_into_fields.js +++ b/src/plugins/ui/public/components/index_patterns/_transform_mapping_into_fields.js @@ -1,5 +1,5 @@ define(function (require) { - return function transformMappingIntoFields(Private, configFile, config) { + return function transformMappingIntoFields(Private, kbnIndex, config) { var _ = require('lodash'); var mapField = Private(require('components/index_patterns/_map_field')); @@ -16,7 +16,7 @@ define(function (require) { return function (response) { var fields = {}; _.each(response, function (index, indexName) { - if (indexName === configFile.kibana_index) return; + if (indexName === kbnIndex) return; _.each(index.mappings, function (mappings) { _.each(mappings, function (field, name) { var keys = Object.keys(field.mapping); diff --git a/src/plugins/ui/public/components/index_patterns/index_patterns.js b/src/plugins/ui/public/components/index_patterns/index_patterns.js index 16b0f375eb928..7c114ccac2ac9 100644 --- a/src/plugins/ui/public/components/index_patterns/index_patterns.js +++ b/src/plugins/ui/public/components/index_patterns/index_patterns.js @@ -1,8 +1,8 @@ define(function (require) { var module = require('modules').get('kibana/index_patterns'); - require('ui/filters/short_dots'); + require('filters/short_dots'); - module.service('indexPatterns', function (configFile, es, Notifier, Private, Promise) { + module.service('indexPatterns', function (es, Notifier, Private, Promise) { var self = this; var _ = require('lodash'); var errors = require('errors'); @@ -27,7 +27,7 @@ define(function (require) { self.getIds.clearCache(); patternCache.delete(pattern.id); return es.delete({ - index: configFile.kibana_index, + index: kbnIndex, type: 'index-pattern', id: pattern.id }); diff --git a/src/plugins/ui/public/components/indexed_array/index.js b/src/plugins/ui/public/components/indexed_array/index.js index 62e1a7cf81259..e273f6e58fbb1 100644 --- a/src/plugins/ui/public/components/indexed_array/index.js +++ b/src/plugins/ui/public/components/indexed_array/index.js @@ -2,8 +2,8 @@ define(function (require) { var _ = require('lodash'); - var pathGetter = require('utils/indexed_array/_path_getter'); - var inflector = require('utils/indexed_array/_inflector'); + var pathGetter = require('components/indexed_array/_path_getter'); + var inflector = require('components/indexed_array/_inflector'); var inflectIndex = inflector('by'); var inflectOrder = inflector('in', 'Order'); diff --git a/src/plugins/ui/public/modules.js b/src/plugins/ui/public/components/modules.js similarity index 100% rename from src/plugins/ui/public/modules.js rename to src/plugins/ui/public/components/modules.js diff --git a/src/plugins/ui/public/components/require.config.js b/src/plugins/ui/public/components/require.config.js deleted file mode 100644 index ddaaf55d324d9..0000000000000 --- a/src/plugins/ui/public/components/require.config.js +++ /dev/null @@ -1,71 +0,0 @@ -require.config({ - baseUrl: './', - paths: { - kibana: 'index', - // special utils - routes: 'utils/routes/index', - errors: 'components/errors', - modules: 'utils/modules', - lodash: 'utils/lodash-mixins/index', - registry: 'components/registry', - - // bower_components - 'angular-bindonce': 'bower_components/angular-bindonce/bindonce', - 'angular-bootstrap': 'bower_components/angular-bootstrap/ui-bootstrap-tpls', - 'angular-elastic': 'bower_components/angular-elastic/elastic', - 'angular-route': 'bower_components/angular-route/angular-route', - 'angular-ui-ace': 'bower_components/angular-ui-ace/ui-ace', - ace: 'bower_components/ace-builds/src-noconflict/ace', - 'ace-json': 'bower_components/ace-builds/src-noconflict/mode-json', - angular: 'bower_components/angular/angular', - async: 'bower_components/async/lib/async', - bower_components: 'bower_components', - css: 'bower_components/require-css/css', - d3: 'bower_components/d3/d3', - elasticsearch: 'bower_components/elasticsearch/elasticsearch.angular', - faker: 'bower_components/Faker/faker', - file_saver: 'bower_components/FileSaver/FileSaver', - gridster: 'bower_components/gridster/dist/jquery.gridster', - 'leaflet-heat': 'bower_components/Leaflet.heat/dist/leaflet-heat', - jquery: 'bower_components/jquery/dist/jquery', - leaflet: 'bower_components/leaflet/dist/leaflet', - 'leaflet-draw': 'bower_components/leaflet-draw/dist/leaflet.draw', - lodash_src: 'bower_components/lodash/lodash', - moment: 'bower_components/moment/moment', - 'ng-clip': 'bower_components/ng-clip/src/ngClip', - text: 'bower_components/requirejs-text/text', - zeroclipboard: 'bower_components/zeroclipboard/dist/ZeroClipboard', - marked: 'bower_components/marked/lib/marked', - numeral: 'bower_components/numeral/numeral' - }, - shim: { - angular: { - deps: ['jquery'], - exports: 'angular' - }, - gridster: ['jquery', 'css!bower_components/gridster/dist/jquery.gridster.css'], - 'angular-route': ['angular'], - 'elasticsearch': ['angular'], - 'angular-bootstrap': ['angular'], - 'angular-bindonce': ['angular'], - 'ace-json': ['ace'], - 'angular-ui-ace': ['angular', 'ace', 'ace-json'], - 'ng-clip': ['angular', 'zeroclipboard'], - 'leaflet-heat': { - deps: ['leaflet'] - }, - file_saver: { - exports: 'saveAs' - }, - 'leaflet-draw': { - deps: ['leaflet', 'css!bower_components/leaflet-draw/dist/leaflet.draw.css'] - }, - leaflet: { - deps: ['css!bower_components/leaflet/dist/leaflet.css'] - }, - marked: { - exports: 'marked' - } - }, - waitSeconds: 60 -}); diff --git a/src/plugins/ui/public/components/routes/_setup.js b/src/plugins/ui/public/components/routes/_setup.js index 9da43d135909b..e043650c1602e 100644 --- a/src/plugins/ui/public/components/routes/_setup.js +++ b/src/plugins/ui/public/components/routes/_setup.js @@ -1,5 +1,5 @@ define(function (require) { - return function routeSetup(Promise, kbnSetup, config, $route, kbnUrl, courier, Notifier, Private, $rootScope) { + return function routeSetup(Promise, config, $route, kbnUrl, courier, Notifier, Private, $rootScope) { var _ = require('lodash'); var errors = require('errors'); var NoDefaultIndexPattern = errors.NoDefaultIndexPattern; @@ -13,7 +13,6 @@ define(function (require) { return { routeSetupWork: function () { return Promise.all([ - kbnSetup(), config.init(), courier.SearchSource.ready, $rootScope.kibana && $rootScope.kibana.ready diff --git a/src/plugins/ui/public/components/routes/_wrap_route_with_prep.js b/src/plugins/ui/public/components/routes/_wrap_route_with_prep.js index c9b9c35a3b4a9..8398c77161c75 100644 --- a/src/plugins/ui/public/components/routes/_wrap_route_with_prep.js +++ b/src/plugins/ui/public/components/routes/_wrap_route_with_prep.js @@ -2,7 +2,7 @@ define(function (require) { var angular = require('angular'); var _ = require('lodash'); - var WorkQueue = require('utils/routes/_work_queue'); + var WorkQueue = require('components/routes/_work_queue'); var errors = require('errors'); function wrapRouteWithPrep(route) { @@ -14,7 +14,7 @@ define(function (require) { var resolve = { __prep__: function (Private, Promise, $route, $injector, Notifier) { - var setup = Private(require('utils/routes/_setup')); + var setup = Private(require('components/routes/_setup')); return setup.routeSetupWork() .then(function () { @@ -51,4 +51,4 @@ define(function (require) { } return wrapRouteWithPrep; -}); \ No newline at end of file +}); diff --git a/src/plugins/ui/public/components/routes/index.js b/src/plugins/ui/public/components/routes/index.js index 656073e9e2cb4..8c117a665c1b5 100644 --- a/src/plugins/ui/public/components/routes/index.js +++ b/src/plugins/ui/public/components/routes/index.js @@ -1,9 +1,6 @@ define(function (require) { var _ = require('lodash'); - var wrapRouteWithPrep = require('utils/routes/_wrap_route_with_prep'); - - require('components/setup/setup'); - require('components/promises'); + var wrapRouteWithPrep = require('components/routes/_wrap_route_with_prep'); function RouteManager() { var when = []; diff --git a/src/plugins/ui/public/components/timepicker/timepicker.js b/src/plugins/ui/public/components/timepicker/timepicker.js index ef43d18c1a39b..cb7552f6075b1 100644 --- a/src/plugins/ui/public/components/timepicker/timepicker.js +++ b/src/plugins/ui/public/components/timepicker/timepicker.js @@ -5,8 +5,8 @@ define(function (require) { var datemath = require('utils/datemath'); var moment = require('moment'); - require('ui/directives/input_datetime'); - require('ui/directives/inequality'); + require('directives/input_datetime'); + require('directives/inequality'); require('components/timepicker/quick_ranges'); require('components/timepicker/refresh_intervals'); require('components/timepicker/time_units'); diff --git a/src/plugins/ui/public/components/url/url.js b/src/plugins/ui/public/components/url/url.js index efc56e2097db0..2cdc495ca68ab 100644 --- a/src/plugins/ui/public/components/url/url.js +++ b/src/plugins/ui/public/components/url/url.js @@ -1,8 +1,8 @@ define(function (require) { var _ = require('lodash'); - require('ui/filters/uriescape'); - require('ui/filters/rison'); + require('filters/uriescape'); + require('filters/rison'); require('modules').get('kibana/url') .service('kbnUrl', function (Private) { return Private(KbnUrlProvider); }); diff --git a/src/plugins/ui/public/components/validate_query/validate_query.js b/src/plugins/ui/public/components/validate_query/validate_query.js index f6860ec67b8f7..0ee57e899475b 100644 --- a/src/plugins/ui/public/components/validate_query/validate_query.js +++ b/src/plugins/ui/public/components/validate_query/validate_query.js @@ -6,7 +6,7 @@ define(function (require) { require('modules') .get('kibana') - .directive('validateQuery', function (es, $compile, timefilter, configFile, debounce, Private) { + .directive('validateQuery', function (es, $compile, timefilter, kbnIndex, debounce, Private) { var fromUser = Private(require('components/validate_query/lib/from_user')); var toUser = require('components/validate_query/lib/to_user'); @@ -56,7 +56,7 @@ define(function (require) { } function useDefaults() { - index = configFile.kibana_index; + index = kbnIndex; type = '__kibanaQueryValidator'; } diff --git a/src/plugins/ui/public/components/vis/AggConfigs.js b/src/plugins/ui/public/components/vis/AggConfigs.js index 0ccb0ef674903..c08eea08773a5 100644 --- a/src/plugins/ui/public/components/vis/AggConfigs.js +++ b/src/plugins/ui/public/components/vis/AggConfigs.js @@ -2,7 +2,7 @@ define(function (require) { return function AggConfigsFactory(Private) { var _ = require('lodash'); var AggConfig = Private(require('components/vis/AggConfig')); - var IndexedArray = require('utils/indexed_array/index'); + var IndexedArray = require('components/indexed_array/index'); AggConfig.aggTypes = Private(require('components/agg_types/index')); diff --git a/src/plugins/ui/public/components/vis/Schemas.js b/src/plugins/ui/public/components/vis/Schemas.js index d5126e587fad6..e8ad857d725ec 100644 --- a/src/plugins/ui/public/components/vis/Schemas.js +++ b/src/plugins/ui/public/components/vis/Schemas.js @@ -1,7 +1,7 @@ define(function (require) { return function VisTypeSchemasFactory(Private) { var _ = require('lodash'); - var IndexedArray = require('utils/indexed_array/index'); + var IndexedArray = require('components/indexed_array/index'); var AggParams = Private(require('components/agg_types/_agg_params')); function Schemas(schemas) { diff --git a/src/plugins/ui/public/components/collapsible_sidebar/collapsible_sidebar.js b/src/plugins/ui/public/directive/collapsible_sidebar/collapsible_sidebar.js similarity index 100% rename from src/plugins/ui/public/components/collapsible_sidebar/collapsible_sidebar.js rename to src/plugins/ui/public/directive/collapsible_sidebar/collapsible_sidebar.js diff --git a/src/plugins/ui/public/components/collapsible_sidebar/collapsible_sidebar.less b/src/plugins/ui/public/directive/collapsible_sidebar/collapsible_sidebar.less similarity index 100% rename from src/plugins/ui/public/components/collapsible_sidebar/collapsible_sidebar.less rename to src/plugins/ui/public/directive/collapsible_sidebar/collapsible_sidebar.less diff --git a/src/plugins/ui/public/components/clipboard/clipboard.html b/src/plugins/ui/public/directives/clipboard/clipboard.html similarity index 100% rename from src/plugins/ui/public/components/clipboard/clipboard.html rename to src/plugins/ui/public/directives/clipboard/clipboard.html diff --git a/src/plugins/ui/public/components/clipboard/clipboard.js b/src/plugins/ui/public/directives/clipboard/clipboard.js similarity index 100% rename from src/plugins/ui/public/components/clipboard/clipboard.js rename to src/plugins/ui/public/directives/clipboard/clipboard.js diff --git a/src/plugins/ui/public/directives/config.js b/src/plugins/ui/public/directives/config.js index f7450864dcee8..61bd4641acf8a 100644 --- a/src/plugins/ui/public/directives/config.js +++ b/src/plugins/ui/public/directives/config.js @@ -4,7 +4,7 @@ define(function (require) { var angular = require('angular'); var module = require('modules').get('kibana'); - require('ui/directives/input_focus'); + require('directives/input_focus'); /** * config directive diff --git a/src/plugins/ui/public/directives/field_name.js b/src/plugins/ui/public/directives/field_name.js index bff2670d6b35d..51ef43afe43b5 100644 --- a/src/plugins/ui/public/directives/field_name.js +++ b/src/plugins/ui/public/directives/field_name.js @@ -1,6 +1,6 @@ define(function (require) { var module = require('modules').get('kibana'); - require('ui/filters/short_dots'); + require('filters/short_dots'); module.directive('fieldName', function ($compile, $rootScope, $filter) { return { diff --git a/src/plugins/ui/public/directives/info.js b/src/plugins/ui/public/directives/info.js index 267f2579a9522..7ce9e2213a373 100644 --- a/src/plugins/ui/public/directives/info.js +++ b/src/plugins/ui/public/directives/info.js @@ -1,5 +1,5 @@ define(function (require) { - var html = require('text!ui/partials/info.html'); + var html = require('text!partials/info.html'); require('modules') .get('kibana') diff --git a/src/plugins/ui/public/directives/paginate.js b/src/plugins/ui/public/directives/paginate.js index 1809537535b4c..86fc408f51486 100644 --- a/src/plugins/ui/public/directives/paginate.js +++ b/src/plugins/ui/public/directives/paginate.js @@ -190,7 +190,7 @@ define(function (require) { // this directive is automatically added by paginate if not found within it's $el return { restrict: 'E', - template: require('text!ui/partials/paginate_controls.html') + template: require('text!partials/paginate_controls.html') }; }); diff --git a/src/plugins/ui/public/directives/saved_object_finder.js b/src/plugins/ui/public/directives/saved_object_finder.js index ad6f49e1a4c50..46fb52e957b0d 100644 --- a/src/plugins/ui/public/directives/saved_object_finder.js +++ b/src/plugins/ui/public/directives/saved_object_finder.js @@ -31,7 +31,7 @@ define(function (require) { // optional on-choose attr, sets the userOnChoose in our scope userOnChoose: '=?onChoose' }, - template: require('text!ui/partials/saved_object_finder.html'), + template: require('text!partials/saved_object_finder.html'), link: function ($scope, $el) { // the text input element var $input = $el.find('input[ng-model=filter]'); diff --git a/src/plugins/ui/public/components/comma_list_filter.js b/src/plugins/ui/public/filters/commaList.js similarity index 100% rename from src/plugins/ui/public/components/comma_list_filter.js rename to src/plugins/ui/public/filters/commaList.js diff --git a/src/plugins/ui/public/filters/field_type.js b/src/plugins/ui/public/filters/field_type.js index e7b385f98466c..35179a3275266 100644 --- a/src/plugins/ui/public/filters/field_type.js +++ b/src/plugins/ui/public/filters/field_type.js @@ -3,7 +3,7 @@ // Or an array of types to get all fields of that type define(function (require) { var _ = require('lodash'); - var propFilter = require('ui/filters/_prop_filter'); + var propFilter = require('filters/_prop_filter'); require('modules') .get('kibana') diff --git a/src/plugins/ui/public/components/registry/_registry.js b/src/plugins/ui/public/registry/_registry.js similarity index 97% rename from src/plugins/ui/public/components/registry/_registry.js rename to src/plugins/ui/public/registry/_registry.js index 32c5901db6b0e..baae2a5018d4d 100644 --- a/src/plugins/ui/public/components/registry/_registry.js +++ b/src/plugins/ui/public/registry/_registry.js @@ -1,6 +1,6 @@ define(function (require) { var _ = require('lodash'); - var IndexedArray = require('utils/indexed_array/index'); + var IndexedArray = require('components/indexed_array/index'); var notPropsOptNames = IndexedArray.OPT_NAMES.concat('constructor'); /** diff --git a/src/plugins/ui/public/components/registry/apps.js b/src/plugins/ui/public/registry/apps.js similarity index 100% rename from src/plugins/ui/public/components/registry/apps.js rename to src/plugins/ui/public/registry/apps.js diff --git a/src/plugins/ui/public/components/registry/field_formats.js b/src/plugins/ui/public/registry/field_formats.js similarity index 100% rename from src/plugins/ui/public/components/registry/field_formats.js rename to src/plugins/ui/public/registry/field_formats.js diff --git a/src/plugins/ui/public/components/registry/spy_modes.js b/src/plugins/ui/public/registry/spy_modes.js similarity index 100% rename from src/plugins/ui/public/components/registry/spy_modes.js rename to src/plugins/ui/public/registry/spy_modes.js diff --git a/src/plugins/ui/public/components/registry/vis_types.js b/src/plugins/ui/public/registry/vis_types.js similarity index 100% rename from src/plugins/ui/public/components/registry/vis_types.js rename to src/plugins/ui/public/registry/vis_types.js diff --git a/src/plugins/ui/public/require.config.js b/src/plugins/ui/public/require.config.js index 2a4dd4e8700c6..66fce0a28c217 100644 --- a/src/plugins/ui/public/require.config.js +++ b/src/plugins/ui/public/require.config.js @@ -1,17 +1,11 @@ require.config({ baseUrl: '../../', paths: { - chrome: 'plugins/ui/chrome', - ui: 'plugins/ui/ui', - components: 'plugins/ui/components', - utils: 'plugins/ui/utils', - routes: 'plugins/ui/routes/index', - errors: 'plugins/ui/errors', - modules: 'plugins/ui/modules', - lodash: 'plugins/ui/mixins', - - // special utils - registry: 'components/registry', + // common modules, shortcut for clarity + lodash: 'utils/lodash-mixins/index', + errors: 'components/errors', + modules: 'components/modules', + routes: 'components/routes/index', // bower_components 'angular-bindonce': 'bower_components/angular-bindonce/bindonce', @@ -34,8 +28,7 @@ require.config({ jquery: 'bower_components/jquery/dist/jquery', leaflet: 'bower_components/leaflet/dist/leaflet', 'leaflet-draw': 'bower_components/leaflet-draw/dist/leaflet.draw', - lodash_src: 'bower_components/lodash/dist/lodash', - 'lodash-deep': 'bower_components/lodash-deep/factory', + lodash_src: 'bower_components/lodash/lodash', moment: 'bower_components/moment/moment', 'ng-clip': 'bower_components/ng-clip/src/ngClip', text: 'bower_components/requirejs-text/text', diff --git a/src/plugins/ui/public/utils/mapping_setup.js b/src/plugins/ui/public/utils/mapping_setup.js index d4473224e8ce8..d54b6feded7d8 100644 --- a/src/plugins/ui/public/utils/mapping_setup.js +++ b/src/plugins/ui/public/utils/mapping_setup.js @@ -1,5 +1,5 @@ define(function () { - return function MappingSetupService(configFile, es) { + return function MappingSetupService(kbnIndex, es) { var angular = require('angular'); var _ = require('lodash'); var mappingSetup = this; @@ -23,7 +23,7 @@ define(function () { * @return {[type]} [description] */ var getKnownKibanaTypes = _.once(function () { - var indexName = configFile.kibana_index; + var indexName = kbnIndex; return es.indices.getFieldMapping({ // only concerned with types in this kibana index index: indexName, @@ -82,7 +82,7 @@ define(function () { }; return es.indices.putMapping({ - index: configFile.kibana_index, + index: kbnIndex, type: type, body: body }).then(function (resp) { diff --git a/src/plugins/ui/views/chrome.jade b/src/plugins/ui/views/chrome.jade index 474bd1beb1679..6396238cff424 100644 --- a/src/plugins/ui/views/chrome.jade +++ b/src/plugins/ui/views/chrome.jade @@ -9,28 +9,41 @@ html(lang='en') link(rel='shortcut icon', href='/styles/theme/elk.ico') title link(rel='stylesheet', href='/styles/main.css?_b=#{buildNumber}') - body(kbn-chrome='', ng-class="'application-' + activeApp.id") + body(kbn-chrome, ng-class="'application-' + activeApp.id") .col-md-offset-4.col-md-4.page-header.initial-load center img(width='128', alt='Loading Kibana', src='/images/initial_load.gif') h1 strong Kibana small#cache-message - | is loading. Give me a moment here. I'm loading a whole bunch of code. Don't worry, all this good stuff will be cached up for next time! + | is loading. Give me a moment here. I'm loading a whole bunch of code. Don't worry, all this good stuff will be cached up for next time! script. window.KIBANA_VERSION = !{ j(version) }; window.KIBANA_BUILD_NUM = !{ j(buildNumber) }; window.KIBANA_BUILD_SHA = !{ j(buildSha) }; - window.KIBANA_CONFIG = !{ j(config) } + window.KIBANA_INDEX = !{ j(kbnIndex) } + window.ES_SHARD_TIMEOUT = !{ j(esShardTimeout) } + + var showCacheMessage = location.href.indexOf('?embed') < 0 && location.href.indexOf('&embed') < 0; + if (!showCacheMessage) document.getElementById('cache-message').style.display = 'none'; script(src='/bower_components/requirejs/require.js?_b=#{buildNumber}') - script(src='/lib/require.config.js?_b=#{buildNumber}') + script(src='/require.config.js?_b=#{buildNumber}') script. if (window.KIBANA_BUILD_NUM.substr(0, 2) !== '@@') { // only cache bust if this is really the build number require.config({ urlArgs: '_b=' + window.KIBANA_BUILD_NUM }); } - require(!{ j(['chrome'].concat(app.useModuleIds() || [])) }, function () { - require(!{ j(app.mainModuleId()) }, function () {}); + require(!{ j(['bootstrap'].concat(app.useModuleIds() || [])) }, function () { + require(!{ j([app.mainModuleId()]) }, function () { + $(function () { + angular + .bootstrap(document, ['kibana']) + .invoke(function () { + $(document.body).children(':not(style-compile)').show(); + cb(); + }); + }); + }); }); diff --git a/src/plugins/vis-debug-spy/package.json b/src/plugins/vis-debug-spy/package.json deleted file mode 100644 index 41fde4235d721..0000000000000 --- a/src/plugins/vis-debug-spy/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "vis-debug-spy", - "version": "1.0.0" -} diff --git a/src/plugins/vis-debug-spy/index.js b/src/plugins/vis_debug_spy/index.js similarity index 76% rename from src/plugins/vis-debug-spy/index.js rename to src/plugins/vis_debug_spy/index.js index 512c4d14fc0d7..e118df482ba1e 100644 --- a/src/plugins/vis-debug-spy/index.js +++ b/src/plugins/vis_debug_spy/index.js @@ -2,7 +2,7 @@ module.exports = function (kibana) { return new kibana.Plugin({ exports: { spyModes: [ - 'plugins/vis-debug-spy/index' + 'plugins/vis_debug_spy/index' ] } }); diff --git a/src/plugins/vis_debug_spy/package.json b/src/plugins/vis_debug_spy/package.json new file mode 100644 index 0000000000000..c4927976d78f2 --- /dev/null +++ b/src/plugins/vis_debug_spy/package.json @@ -0,0 +1,4 @@ +{ + "name": "vis_debug_spy", + "version": "1.0.0" +} diff --git a/src/plugins/vis-debug-spy/public/index.js b/src/plugins/vis_debug_spy/public/index.js similarity index 100% rename from src/plugins/vis-debug-spy/public/index.js rename to src/plugins/vis_debug_spy/public/index.js diff --git a/src/plugins/vis-debug-spy/public/vis_debug.html b/src/plugins/vis_debug_spy/public/vis_debug.html similarity index 100% rename from src/plugins/vis-debug-spy/public/vis_debug.html rename to src/plugins/vis_debug_spy/public/vis_debug.html diff --git a/src/plugins/vis-debug-spy/public/vis_debug.js b/src/plugins/vis_debug_spy/public/vis_debug.js similarity index 100% rename from src/plugins/vis-debug-spy/public/vis_debug.js rename to src/plugins/vis_debug_spy/public/vis_debug.js diff --git a/src/server/fe-exports/FeExportsCollection.js b/src/server/fe-exports/FeExportsCollection.js index 7eaed64d61dfc..c4c63f7017228 100644 --- a/src/server/fe-exports/FeExportsCollection.js +++ b/src/server/fe-exports/FeExportsCollection.js @@ -61,9 +61,9 @@ FeExportsCollection.prototype.find = function (patterns) { return names.filter(matcher(pattern)); }) .flattenDeep() - .map(function (name) { - return aliases[name]; - }) + .reduce(function (found, name) { + return found.concat(aliases[name]); + }, []) .value(); }; diff --git a/test/unit/specs/components/config.js b/test/unit/specs/components/config.js index f562a192dde59..ff6830a3ea5ec 100644 --- a/test/unit/specs/components/config.js +++ b/test/unit/specs/components/config.js @@ -3,20 +3,14 @@ define(function (require) { var $scope; var config; var defaults; - var configFile; beforeEach(module('kibana')); beforeEach(inject(function ($injector, Private) { config = $injector.get('config'); $scope = $injector.get('$rootScope'); - configFile = $injector.get('configFile'); defaults = Private(require('components/config/defaults')); })); - it('exposes the configFile', function () { - expect(config.file).to.be(configFile); - }); - describe('#get', function () { it('gives access to config values', function () { diff --git a/test/unit/specs/components/index_pattern/_index_pattern.js b/test/unit/specs/components/index_pattern/_index_pattern.js index cf37e9f04b0e0..f16bd7e084431 100644 --- a/test/unit/specs/components/index_pattern/_index_pattern.js +++ b/test/unit/specs/components/index_pattern/_index_pattern.js @@ -4,7 +4,7 @@ define(function (require) { var sinon = require('test_utils/auto_release_sinon'); var Promise = require('bluebird'); var errors = require('errors'); - var IndexedArray = require('utils/indexed_array/index'); + var IndexedArray = require('components/indexed_array/index'); var IndexPattern; var mapper; var mappingSetup; diff --git a/test/unit/specs/components/vis/_AggConfigs.js b/test/unit/specs/components/vis/_AggConfigs.js index 93bdaf0f7311a..7d38919405a58 100644 --- a/test/unit/specs/components/vis/_AggConfigs.js +++ b/test/unit/specs/components/vis/_AggConfigs.js @@ -28,7 +28,7 @@ define(function (require) { Vis = Private(require('components/vis/vis')); SpiedAggConfig = Private(require('components/vis/AggConfig')); AggConfigs = Private(require('components/vis/AggConfigs')); - IndexedArray = require('utils/indexed_array/index'); + IndexedArray = require('components/indexed_array/index'); indexPattern = Private(require('fixtures/stubbed_logstash_index_pattern')); Schemas = Private(require('components/vis/Schemas')); })); diff --git a/test/unit/specs/directives/auto_select_if_only_one.js b/test/unit/specs/directives/auto_select_if_only_one.js index 4bb987e3c38fd..bae3314aafa42 100644 --- a/test/unit/specs/directives/auto_select_if_only_one.js +++ b/test/unit/specs/directives/auto_select_if_only_one.js @@ -1,6 +1,6 @@ define(function (require) { var angular = require('angular'); - require('ui/directives/auto_select_if_only_one'); + require('directives/auto_select_if_only_one'); describe('Auto-select if only one directive', function () { var $compile, $rootScope; diff --git a/test/unit/specs/directives/confirm-click.js b/test/unit/specs/directives/confirm-click.js index 7fcb2658a92c0..37eeb352fd02e 100644 --- a/test/unit/specs/directives/confirm-click.js +++ b/test/unit/specs/directives/confirm-click.js @@ -3,7 +3,7 @@ define(function (require) { var $ = require('jquery'); var sinon = require('sinon/sinon'); - require('ui/directives/confirm_click'); + require('directives/confirm_click'); // Load the kibana app dependencies. require('angular-route'); diff --git a/test/unit/specs/directives/inequality.js b/test/unit/specs/directives/inequality.js index 386f732102c10..3e4c580abf3d7 100644 --- a/test/unit/specs/directives/inequality.js +++ b/test/unit/specs/directives/inequality.js @@ -1,6 +1,6 @@ define(function (require) { var angular = require('angular'); - require('ui/directives/inequality'); + require('directives/inequality'); describe('greater_than model validator directive', function () { var $compile, $rootScope; diff --git a/test/unit/specs/directives/input_focus.js b/test/unit/specs/directives/input_focus.js index 2b01d117460e5..77c2d7be39cdd 100644 --- a/test/unit/specs/directives/input_focus.js +++ b/test/unit/specs/directives/input_focus.js @@ -1,7 +1,7 @@ define(function (require) { var angular = require('angular'); var $ = require('jquery'); - require('ui/directives/input_focus'); + require('directives/input_focus'); describe('Input focus directive', function () { var $compile, $rootScope, $timeout, element; diff --git a/test/unit/specs/directives/input_whole_number.js b/test/unit/specs/directives/input_whole_number.js index 9264da83d2bef..07c0226ec4df1 100644 --- a/test/unit/specs/directives/input_whole_number.js +++ b/test/unit/specs/directives/input_whole_number.js @@ -1,6 +1,6 @@ define(function (require) { var angular = require('angular'); - require('ui/directives/input_whole_number'); + require('directives/input_whole_number'); describe('Whole number input directive', function () { var $compile, $rootScope; diff --git a/test/unit/specs/directives/validate_cidr_mask.js b/test/unit/specs/directives/validate_cidr_mask.js index 69cbbf854acf3..9ea4472bf046e 100644 --- a/test/unit/specs/directives/validate_cidr_mask.js +++ b/test/unit/specs/directives/validate_cidr_mask.js @@ -1,6 +1,6 @@ define(function (require) { var angular = require('angular'); - require('ui/directives/validate_cidr_mask'); + require('directives/validate_cidr_mask'); describe('Validate CIDR mask directive', function () { var $compile, $rootScope; diff --git a/test/unit/specs/directives/validate_date_math.js b/test/unit/specs/directives/validate_date_math.js index a06f4fe730b05..4ab0aaa45f1fa 100644 --- a/test/unit/specs/directives/validate_date_math.js +++ b/test/unit/specs/directives/validate_date_math.js @@ -1,6 +1,6 @@ define(function (require) { var angular = require('angular'); - require('ui/directives/validate_date_math'); + require('directives/validate_date_math'); describe('Validate date math directive', function () { var $compile, $rootScope; diff --git a/test/unit/specs/directives/validate_index_name.js b/test/unit/specs/directives/validate_index_name.js index cdac4b87a3053..da1b5eede0e72 100644 --- a/test/unit/specs/directives/validate_index_name.js +++ b/test/unit/specs/directives/validate_index_name.js @@ -2,7 +2,7 @@ define(function (require) { var angular = require('angular'); // Load the kibana app dependencies. - require('ui/directives/validate_index_name'); + require('directives/validate_index_name'); describe('Validate index name directive', function () { var $compile, $rootScope; diff --git a/test/unit/specs/directives/validate_ip.js b/test/unit/specs/directives/validate_ip.js index 1780e76dfc790..afb04d90c71cb 100644 --- a/test/unit/specs/directives/validate_ip.js +++ b/test/unit/specs/directives/validate_ip.js @@ -1,6 +1,6 @@ define(function (require) { var angular = require('angular'); - require('ui/directives/validate_ip'); + require('directives/validate_ip'); describe('Validate IP directive', function () { var $compile, $rootScope; diff --git a/test/unit/specs/directives/validate_json.js b/test/unit/specs/directives/validate_json.js index 49aa7e23812a9..e8da03ff87617 100644 --- a/test/unit/specs/directives/validate_json.js +++ b/test/unit/specs/directives/validate_json.js @@ -2,7 +2,7 @@ define(function (require) { var angular = require('angular'); // Load the kibana app dependencies. - require('ui/directives/validate_json'); + require('directives/validate_json'); var $parentScope; var $elemScope; diff --git a/test/unit/specs/directives/validate_query.js b/test/unit/specs/directives/validate_query.js index ab79b36aa090f..0aff57a7eb0b7 100644 --- a/test/unit/specs/directives/validate_query.js +++ b/test/unit/specs/directives/validate_query.js @@ -52,9 +52,7 @@ define(function (require) { }; }); - $provide.constant('configFile', { - kibana_index: 'test-index' - }); + $provide.constant('kbnIndex', 'test-index'); }); // Create the scope diff --git a/test/unit/specs/filters/field_type.js b/test/unit/specs/filters/field_type.js index 0d3444c3ed0a3..675fb4877e5b6 100644 --- a/test/unit/specs/filters/field_type.js +++ b/test/unit/specs/filters/field_type.js @@ -5,7 +5,7 @@ define(function (require) { // Load the kibana app dependencies. require('angular-route'); require('plugins/discover/index'); - require('ui/filters/field_type'); + require('filters/field_type'); var filter, types; diff --git a/test/unit/specs/filters/moment.js b/test/unit/specs/filters/moment.js index 36e3fb1065bd4..b4053eb382ae3 100644 --- a/test/unit/specs/filters/moment.js +++ b/test/unit/specs/filters/moment.js @@ -5,7 +5,7 @@ define(function (require) { // Load the kibana app dependencies. require('angular-route'); - require('ui/filters/moment'); + require('filters/moment'); var filter, config; var anchor = '2014-01-01T06:06:06.666'; diff --git a/test/unit/specs/filters/short_dots.js b/test/unit/specs/filters/short_dots.js index bbb85d54cc068..b537b1ff5f61d 100644 --- a/test/unit/specs/filters/short_dots.js +++ b/test/unit/specs/filters/short_dots.js @@ -5,7 +5,7 @@ define(function (require) { // Load the kibana app dependencies. require('angular-route'); require('plugins/discover/index'); - require('ui/filters/short_dots'); + require('filters/short_dots'); var filter, config; diff --git a/test/unit/specs/filters/start_from.js b/test/unit/specs/filters/start_from.js index 6432cf52e39a0..3bb08373e0317 100644 --- a/test/unit/specs/filters/start_from.js +++ b/test/unit/specs/filters/start_from.js @@ -3,7 +3,7 @@ define(function (require) { // Load the kibana app dependencies. require('angular-route'); - require('ui/filters/start_from'); + require('filters/start_from'); var filter; diff --git a/test/unit/specs/utils/indexed_array/_inflector.js b/test/unit/specs/utils/indexed_array/_inflector.js index ef64ab85cb9c7..efcf3c0107587 100644 --- a/test/unit/specs/utils/indexed_array/_inflector.js +++ b/test/unit/specs/utils/indexed_array/_inflector.js @@ -1,6 +1,6 @@ define(function (require) { return function () { - var inflector = require('utils/indexed_array/_inflector'); + var inflector = require('components/indexed_array/_inflector'); describe('Inflector', function () { it('returns a function', function () { diff --git a/test/unit/specs/utils/indexed_array/_path_getter.js b/test/unit/specs/utils/indexed_array/_path_getter.js index 68e2dc1544a51..6dc3d0447d5da 100644 --- a/test/unit/specs/utils/indexed_array/_path_getter.js +++ b/test/unit/specs/utils/indexed_array/_path_getter.js @@ -1,6 +1,6 @@ define(function (require) { return function () { - var pathGetter = require('utils/indexed_array/_path_getter'); + var pathGetter = require('components/indexed_array/_path_getter'); describe('Path Getter', function () { it('returns a function', function () { diff --git a/test/unit/specs/utils/indexed_array/index.js b/test/unit/specs/utils/indexed_array/index.js index 1a897018074bd..dc6dd0ec3e0b2 100644 --- a/test/unit/specs/utils/indexed_array/index.js +++ b/test/unit/specs/utils/indexed_array/index.js @@ -1,6 +1,6 @@ define(function (require) { var _ = require('lodash'); - var IndexedArray = require('utils/indexed_array/index'); + var IndexedArray = require('components/indexed_array/index'); // this is generally a data-structure that IndexedArray is good for managing var users = [ diff --git a/test/unit/specs/utils/routes/_work_queue.js b/test/unit/specs/utils/routes/_work_queue.js index 1fe0318cccec8..fb108d90cc05e 100644 --- a/test/unit/specs/utils/routes/_work_queue.js +++ b/test/unit/specs/utils/routes/_work_queue.js @@ -1,7 +1,7 @@ define(function (require) { var _ = require('lodash'); - var WorkQueue = require('utils/routes/_work_queue'); + var WorkQueue = require('components/routes/_work_queue'); var sinon = require('test_utils/auto_release_sinon'); require('components/promises'); require('angular').module('UtilsRouteWorkQueueTests', ['kibana']); @@ -92,4 +92,4 @@ define(function (require) { }); }); }; -}); \ No newline at end of file +}); diff --git a/test/unit/specs/utils/routes/_wrap_route_with_prep.js b/test/unit/specs/utils/routes/_wrap_route_with_prep.js index 8c98ef08bb16d..7b1afad5f2880 100644 --- a/test/unit/specs/utils/routes/_wrap_route_with_prep.js +++ b/test/unit/specs/utils/routes/_wrap_route_with_prep.js @@ -1,7 +1,7 @@ define(function (require) { var RouteManager = require('routes').RouteManager; var getRouteProvider = require('./_get_route_provider'); - var wrapRouteWithPrep = require('utils/routes/_wrap_route_with_prep'); + var wrapRouteWithPrep = require('components/routes/_wrap_route_with_prep'); var Promise = require('bluebird'); var _ = require('lodash'); var stub = require('test_utils/auto_release_sinon').stub; @@ -39,7 +39,7 @@ define(function (require) { $injector = _$injector_; }); - var setup = Private(require('utils/routes/_setup')); + var setup = Private(require('components/routes/_setup')); stub(setup, 'routeSetupWork', function () { return new Promise(function (resolve, reject) { setTimeout(function () { @@ -87,4 +87,4 @@ define(function (require) { })); }); }; -}); \ No newline at end of file +}); diff --git a/test/utils/stub_index_pattern.js b/test/utils/stub_index_pattern.js index 751e302b1bae0..3d78ed36dcf36 100644 --- a/test/utils/stub_index_pattern.js +++ b/test/utils/stub_index_pattern.js @@ -2,7 +2,7 @@ define(function (require) { return function (Private) { var _ = require('lodash'); var sinon = require('sinon/sinon'); - var IndexedArray = require('utils/indexed_array/index'); + var IndexedArray = require('components/indexed_array/index'); var IndexPattern = require('components/index_patterns/_index_pattern'); var fieldFormats = Private(require('registry/field_formats')); var flattenHit = Private(require('components/index_patterns/_flatten_hit')); From 472a67d607070cec9ae0e8390da0fca97fd6238a Mon Sep 17 00:00:00 2001 From: Spencer Alger Date: Thu, 25 Jun 2015 10:21:06 -0700 Subject: [PATCH 004/137] solidify bootstrap step, setup kibana app --- src/.jshintrc | 3 - src/plugins/PLAN.md | 5 +- src/plugins/kibana/public/_apps.js | 47 ------- src/plugins/kibana/public/_init.js | 16 --- src/plugins/kibana/public/_timepicker.js | 32 ----- .../components/panel/lib/load_panel.js | 4 +- .../dashboard/components/panel/panel.html | 4 +- .../dashboard/components/panel/panel.js | 6 +- .../kibana/public/dashboard/index.html | 2 +- src/plugins/kibana/public/dashboard/index.js | 29 ++-- .../dashboard/services/saved_dashboards.js | 4 +- .../field_chooser/discover_field.js | 4 +- .../components/field_chooser/field_chooser.js | 6 +- .../public/discover/controllers/discover.js | 8 +- src/plugins/kibana/public/discover/index.js | 19 +-- .../discover/saved_searches/saved_searches.js | 4 +- .../kibana/public/doc/controllers/doc.js | 2 +- src/plugins/kibana/public/doc/index.js | 13 +- src/plugins/kibana/public/index.js | 64 ++++----- .../public/settings/{public => }/app.html | 0 .../public/settings/{public => }/index.js | 15 +- .../public/settings/public/sections/index.js | 10 -- .../{public => }/saved_object_registry.js | 0 .../{public => }/sections/about/barcode.svg | 0 .../{public => }/sections/about/index.html | 2 +- .../{public => }/sections/about/index.js | 2 +- .../sections/advanced/advanced_row.html | 0 .../sections/advanced/advanced_row.js | 2 +- .../{public => }/sections/advanced/index.html | 0 .../{public => }/sections/advanced/index.js | 6 +- .../sections/advanced/lib/get_val_type.js | 0 .../kibana/public/settings/sections/index.js | 10 ++ .../sections/indices/_create.html | 0 .../{public => }/sections/indices/_create.js | 4 +- .../sections/indices/_date_scripts.js | 0 .../{public => }/sections/indices/_edit.html | 0 .../{public => }/sections/indices/_edit.js | 12 +- .../sections/indices/_field_controls.html | 0 .../sections/indices/_field_editor.html | 0 .../sections/indices/_field_editor.js | 4 +- .../sections/indices/_field_name.html | 0 .../sections/indices/_field_popularity.html | 0 .../sections/indices/_field_type.html | 0 .../sections/indices/_field_types.js | 0 .../sections/indices/_index_header.html | 0 .../sections/indices/_index_header.js | 2 +- .../sections/indices/_indexed_fields.html | 0 .../sections/indices/_indexed_fields.js | 8 +- .../sections/indices/_refresh_kibana_index.js | 0 .../sections/indices/_scripted_fields.html | 0 .../sections/indices/_scripted_fields.js | 6 +- .../{public => }/sections/indices/index.html | 0 .../{public => }/sections/indices/index.js | 8 +- .../sections/objects/_objects.html | 0 .../{public => }/sections/objects/_objects.js | 4 +- .../{public => }/sections/objects/_view.html | 0 .../{public => }/sections/objects/_view.js | 4 +- .../{public => }/sections/objects/index.js | 4 +- .../settings/{public => }/styles/main.less | 0 .../kibana/public/visualize/editor/agg.js | 8 +- .../kibana/public/visualize/editor/agg_add.js | 2 +- .../public/visualize/editor/agg_group.js | 8 +- .../public/visualize/editor/agg_params.js | 8 +- .../public/visualize/editor/editor.html | 8 +- .../kibana/public/visualize/editor/editor.js | 21 ++- .../kibana/public/visualize/editor/sidebar.js | 6 +- .../public/visualize/editor/vis_options.js | 2 +- src/plugins/kibana/public/visualize/index.js | 17 +-- .../saved_visualizations.js | 4 +- .../kibana/public/visualize/wizard/wizard.js | 8 +- src/plugins/ui/foundModuleIds.js | 40 ++++++ src/plugins/ui/index.js | 59 +++++++- src/plugins/ui/public/bootstrap.js | 51 +------ src/plugins/ui/public/chrome.js | 133 ++++++++++++++++++ src/plugins/ui/public/components/chrome.js | 63 --------- .../ui/public/components/chrome/Tab.js | 21 +++ .../public/components/chrome/TabCollection.js | 42 ++++++ .../public/components/chrome/chrome.html} | 39 ++--- .../components/chrome/config/filter.html} | 2 +- .../components/chrome/config/interval.html | 7 + .../clipboard/clipboard.html | 0 .../clipboard/clipboard.js | 4 +- .../collapsible_sidebar.js | 0 .../collapsible_sidebar.less | 0 .../components/courier/fetch/_call_client.js | 2 +- .../visualize/spy/_req_resp_stats.js | 4 +- .../ui/public/images/{logo.png => kibana.png} | Bin .../ui/public/styles/theme/_theme.less | 2 +- .../ui/views/{chrome.jade => bootstrap.jade} | 1 - src/plugins/vis_debug_spy/public/.jshintrc | 3 + src/plugins/vis_debug_spy/public/vis_debug.js | 2 + src/server/.jshintrc | 3 + src/server/config/schema.js | 2 + src/server/fe-exports/FeApp.js | 4 +- src/server/fe-exports/FeExport.js | 0 .../{FeExportsCollection.js => FeExports.js} | 1 - src/server/fe-exports/index.js | 4 +- 97 files changed, 507 insertions(+), 449 deletions(-) delete mode 100644 src/.jshintrc delete mode 100644 src/plugins/kibana/public/_apps.js delete mode 100644 src/plugins/kibana/public/_init.js delete mode 100644 src/plugins/kibana/public/_timepicker.js rename src/plugins/kibana/public/settings/{public => }/app.html (100%) rename src/plugins/kibana/public/settings/{public => }/index.js (67%) delete mode 100644 src/plugins/kibana/public/settings/public/sections/index.js rename src/plugins/kibana/public/settings/{public => }/saved_object_registry.js (100%) rename src/plugins/kibana/public/settings/{public => }/sections/about/barcode.svg (100%) rename src/plugins/kibana/public/settings/{public => }/sections/about/index.html (85%) rename src/plugins/kibana/public/settings/{public => }/sections/about/index.js (85%) rename src/plugins/kibana/public/settings/{public => }/sections/advanced/advanced_row.html (100%) rename src/plugins/kibana/public/settings/{public => }/sections/advanced/advanced_row.js (95%) rename src/plugins/kibana/public/settings/{public => }/sections/advanced/index.html (100%) rename src/plugins/kibana/public/settings/{public => }/sections/advanced/index.js (88%) rename src/plugins/kibana/public/settings/{public => }/sections/advanced/lib/get_val_type.js (100%) create mode 100644 src/plugins/kibana/public/settings/sections/index.js rename src/plugins/kibana/public/settings/{public => }/sections/indices/_create.html (100%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/_create.js (97%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/_date_scripts.js (100%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/_edit.html (100%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/_edit.js (82%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/_field_controls.html (100%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/_field_editor.html (100%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/_field_editor.js (91%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/_field_name.html (100%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/_field_popularity.html (100%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/_field_type.html (100%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/_field_types.js (100%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/_index_header.html (100%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/_index_header.js (86%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/_indexed_fields.html (100%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/_indexed_fields.js (84%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/_refresh_kibana_index.js (100%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/_scripted_fields.html (100%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/_scripted_fields.js (90%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/index.html (100%) rename src/plugins/kibana/public/settings/{public => }/sections/indices/index.js (82%) rename src/plugins/kibana/public/settings/{public => }/sections/objects/_objects.html (100%) rename src/plugins/kibana/public/settings/{public => }/sections/objects/_objects.js (96%) rename src/plugins/kibana/public/settings/{public => }/sections/objects/_view.html (100%) rename src/plugins/kibana/public/settings/{public => }/sections/objects/_view.js (97%) rename src/plugins/kibana/public/settings/{public => }/sections/objects/index.js (73%) rename src/plugins/kibana/public/settings/{public => }/styles/main.less (100%) create mode 100644 src/plugins/ui/foundModuleIds.js create mode 100644 src/plugins/ui/public/chrome.js delete mode 100644 src/plugins/ui/public/components/chrome.js create mode 100644 src/plugins/ui/public/components/chrome/Tab.js create mode 100644 src/plugins/ui/public/components/chrome/TabCollection.js rename src/plugins/{kibana/public/kibana.html => ui/public/components/chrome/chrome.html} (58%) rename src/plugins/{kibana/public/_timepicker.html => ui/public/components/chrome/config/filter.html} (77%) create mode 100644 src/plugins/ui/public/components/chrome/config/interval.html rename src/plugins/ui/public/{directives => components}/clipboard/clipboard.html (100%) rename src/plugins/ui/public/{directives => components}/clipboard/clipboard.js (95%) rename src/plugins/ui/public/{directive => components}/collapsible_sidebar/collapsible_sidebar.js (100%) rename src/plugins/ui/public/{directive => components}/collapsible_sidebar/collapsible_sidebar.less (100%) rename src/plugins/ui/public/images/{logo.png => kibana.png} (100%) rename src/plugins/ui/views/{chrome.jade => bootstrap.jade} (98%) create mode 100644 src/plugins/vis_debug_spy/public/.jshintrc create mode 100644 src/server/.jshintrc delete mode 100644 src/server/fe-exports/FeExport.js rename src/server/fe-exports/{FeExportsCollection.js => FeExports.js} (97%) diff --git a/src/.jshintrc b/src/.jshintrc deleted file mode 100644 index b32ced0507e91..0000000000000 --- a/src/.jshintrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../.jshintrc.node" -} diff --git a/src/plugins/PLAN.md b/src/plugins/PLAN.md index 8e8394683171a..f4649714d5993 100644 --- a/src/plugins/PLAN.md +++ b/src/plugins/PLAN.md @@ -136,13 +136,16 @@ Building apps in the browser won't change at all, the same modules that used to require('chrome') .setLogo() .setBackgroundColor() -.setNav([ +.setTabs([ { name: 'Tab 1', url: '/tab-1/', order: -Infinity } ]) +.setRootController('myController', function (deps...) { + // build the myController value, which will live outside ng-view, and persist across page views +}) require('routes').when('/', { view: requrie('text!plugins/my-kibana-plugin/home.awesome.html') diff --git a/src/plugins/kibana/public/_apps.js b/src/plugins/kibana/public/_apps.js deleted file mode 100644 index 10182f2a262f3..0000000000000 --- a/src/plugins/kibana/public/_apps.js +++ /dev/null @@ -1,47 +0,0 @@ -define(function (require) { - return function KbnControllerApps(Private, $rootScope, $scope, $location, globalState, sessionStorage) { - var _ = require('lodash'); - - function appKey(app) { - return 'lastPath:' + app.id; - } - - function assignPaths(app) { - app.rootPath = '/' + app.id; - app.lastPath = sessionStorage.get(appKey(app)) || app.rootPath; - return app.lastPath; - } - - function getShow(app) { - app.show = app.order >= 0 ? true : false; - } - - function setLastPath(app, path) { - app.lastPath = path; - return sessionStorage.set(appKey(app), path); - } - - $scope.apps = Private(require('registry/apps')); - // initialize each apps lastPath (fetch it from storage) - $scope.apps.forEach(assignPaths); - $scope.apps.forEach(getShow); - - - function onRouteChange() { - var route = $location.path().split(/\//); - $scope.apps.forEach(function (app) { - if (app.active = app.id === route[1]) { - $rootScope.activeApp = app; - } - }); - - if (!$rootScope.activeApp || $scope.appEmbedded) return; - - // Record the last URL w/ state of the app, use for tab. - setLastPath($rootScope.activeApp, globalState.removeFromUrl($location.url())); - } - - $rootScope.$on('$routeChangeSuccess', onRouteChange); - $rootScope.$on('$routeUpdate', onRouteChange); - }; -}); \ No newline at end of file diff --git a/src/plugins/kibana/public/_init.js b/src/plugins/kibana/public/_init.js deleted file mode 100644 index fff02851b843f..0000000000000 --- a/src/plugins/kibana/public/_init.js +++ /dev/null @@ -1,16 +0,0 @@ -define(function (require) { - return function KibanaControllerInit($rootScope, $scope, $location, courier, $http, globalState, notify) { - // expose some globals - $rootScope.globalState = globalState; - - // and some local values - $scope.appEmbedded = $location.search().embed || false; - $scope.httpActive = $http.pendingRequests; - $scope.notifList = notify._notifs; - - // wait for the application to finish loading - $scope.$on('application.load', function () { - courier.start(); - }); - }; -}); diff --git a/src/plugins/kibana/public/_timepicker.js b/src/plugins/kibana/public/_timepicker.js deleted file mode 100644 index 60248da3fb2e7..0000000000000 --- a/src/plugins/kibana/public/_timepicker.js +++ /dev/null @@ -1,32 +0,0 @@ -define(function (require) { - return function KbnControllerTimefilter(notify, $scope, timefilter, globalState, sessionStorage) { - var _ = require('lodash'); - - $scope.notifList = notify._notifs; - $scope.timefilter = timefilter; - - $scope.$listen(timefilter, 'update', function (newVal, oldVal) { - globalState.time = _.clone(timefilter.time); - globalState.refreshInterval = _.clone(timefilter.refreshInterval); - globalState.save(); - }); - - var timepickerHtml = require('text!plugins/kibana/_timepicker.html'); - $scope.toggleTimepicker = function (tab) { - tab = tab || timefilter.timepickerActiveTab || 'filter'; - - // Close if already open - if ($scope.globalConfigTemplate === timepickerHtml && timefilter.timepickerActiveTab === tab) { - delete $scope.globalConfigTemplate; - delete timefilter.timepickerActiveTab; - } else { - timefilter.timepickerActiveTab = tab; - $scope.globalConfigTemplate = timepickerHtml; - } - }; - - $scope.toggleRefresh = function () { - timefilter.refreshInterval.pause = !timefilter.refreshInterval.pause; - }; - }; -}); diff --git a/src/plugins/kibana/public/dashboard/components/panel/lib/load_panel.js b/src/plugins/kibana/public/dashboard/components/panel/lib/load_panel.js index 2deffc463b25e..b7d7b42554be2 100644 --- a/src/plugins/kibana/public/dashboard/components/panel/lib/load_panel.js +++ b/src/plugins/kibana/public/dashboard/components/panel/lib/load_panel.js @@ -3,8 +3,8 @@ define(function (require) { return function loadPanelFunction(Private) { // Inject services here return function (panel, $scope) { // Function parameters here var panelTypes = { - visualization: Private(require('plugins/dashboard/components/panel/lib/visualization')), - search: Private(require('plugins/dashboard/components/panel/lib/search')) + visualization: Private(require('plugins/kibana/dashboard/components/panel/lib/visualization')), + search: Private(require('plugins/kibana/dashboard/components/panel/lib/search')) }; try { diff --git a/src/plugins/kibana/public/dashboard/components/panel/panel.html b/src/plugins/kibana/public/dashboard/components/panel/panel.html index 9e2f1b4ad40f3..5a1286cad8075 100644 --- a/src/plugins/kibana/public/dashboard/components/panel/panel.html +++ b/src/plugins/kibana/public/dashboard/components/panel/panel.html @@ -2,10 +2,10 @@
{{savedObj.title}} diff --git a/src/plugins/kibana/public/dashboard/components/panel/panel.js b/src/plugins/kibana/public/dashboard/components/panel/panel.js index ae03ab2e090a4..d1227d9016dfc 100644 --- a/src/plugins/kibana/public/dashboard/components/panel/panel.js +++ b/src/plugins/kibana/public/dashboard/components/panel/panel.js @@ -5,11 +5,11 @@ define(function (require) { .get('app/dashboard') .directive('dashboardPanel', function (savedVisualizations, savedSearches, Notifier, Private, $injector) { var _ = require('lodash'); - var loadPanel = Private(require('plugins/dashboard/components/panel/lib/load_panel')); + var loadPanel = Private(require('plugins/kibana/dashboard/components/panel/lib/load_panel')); var filterManager = Private(require('components/filter_manager/filter_manager')); var notify = new Notifier(); - var services = require('plugins/settings/saved_object_registry').all().map(function (serviceObj) { + var services = require('plugins/kibana/settings/saved_object_registry').all().map(function (serviceObj) { var service = $injector.get(serviceObj.service); return { type: service.type, @@ -24,7 +24,7 @@ define(function (require) { return { restrict: 'E', - template: require('text!plugins/dashboard/components/panel/panel.html'), + template: require('text!plugins/kibana/dashboard/components/panel/panel.html'), requires: '^dashboardGrid', link: function ($scope, $el) { // using $scope inheritance, panels are available in AppState diff --git a/src/plugins/kibana/public/dashboard/index.html b/src/plugins/kibana/public/dashboard/index.html index 175cf2a22b484..8b6d925275c7d 100644 --- a/src/plugins/kibana/public/dashboard/index.html +++ b/src/plugins/kibana/public/dashboard/index.html @@ -1,5 +1,5 @@
- +
- Kibana Barcode Logo
+ Kibana Barcode Logo

Kibana

diff --git a/src/plugins/kibana/public/settings/public/sections/about/index.js b/src/plugins/kibana/public/settings/sections/about/index.js similarity index 85% rename from src/plugins/kibana/public/settings/public/sections/about/index.js rename to src/plugins/kibana/public/settings/sections/about/index.js index 796d8101edbfe..c12c1f753c716 100644 --- a/src/plugins/kibana/public/settings/public/sections/about/index.js +++ b/src/plugins/kibana/public/settings/sections/about/index.js @@ -3,7 +3,7 @@ define(function (require) { require('routes') .when('/settings/about', { - template: require('text!plugins/settings/sections/about/index.html') + template: require('text!plugins/kibana/settings/sections/about/index.html') }); require('modules').get('apps/settings') diff --git a/src/plugins/kibana/public/settings/public/sections/advanced/advanced_row.html b/src/plugins/kibana/public/settings/sections/advanced/advanced_row.html similarity index 100% rename from src/plugins/kibana/public/settings/public/sections/advanced/advanced_row.html rename to src/plugins/kibana/public/settings/sections/advanced/advanced_row.html diff --git a/src/plugins/kibana/public/settings/public/sections/advanced/advanced_row.js b/src/plugins/kibana/public/settings/sections/advanced/advanced_row.js similarity index 95% rename from src/plugins/kibana/public/settings/public/sections/advanced/advanced_row.js rename to src/plugins/kibana/public/settings/sections/advanced/advanced_row.js index bd94ed889866f..d8a7da1137fb6 100644 --- a/src/plugins/kibana/public/settings/public/sections/advanced/advanced_row.js +++ b/src/plugins/kibana/public/settings/sections/advanced/advanced_row.js @@ -7,7 +7,7 @@ define(function (require) { return { restrict: 'A', replace: true, - template: require('text!plugins/settings/sections/advanced/advanced_row.html'), + template: require('text!plugins/kibana/settings/sections/advanced/advanced_row.html'), scope: { conf: '=advancedRow', configs: '=' diff --git a/src/plugins/kibana/public/settings/public/sections/advanced/index.html b/src/plugins/kibana/public/settings/sections/advanced/index.html similarity index 100% rename from src/plugins/kibana/public/settings/public/sections/advanced/index.html rename to src/plugins/kibana/public/settings/sections/advanced/index.html diff --git a/src/plugins/kibana/public/settings/public/sections/advanced/index.js b/src/plugins/kibana/public/settings/sections/advanced/index.js similarity index 88% rename from src/plugins/kibana/public/settings/public/sections/advanced/index.js rename to src/plugins/kibana/public/settings/sections/advanced/index.js index 46aee5da68de9..5506db53dc674 100644 --- a/src/plugins/kibana/public/settings/public/sections/advanced/index.js +++ b/src/plugins/kibana/public/settings/sections/advanced/index.js @@ -1,13 +1,13 @@ define(function (require) { var _ = require('lodash'); - var getValType = require('plugins/settings/sections/advanced/lib/get_val_type'); + var getValType = require('plugins/kibana/settings/sections/advanced/lib/get_val_type'); - require('plugins/settings/sections/advanced/advanced_row'); + require('plugins/kibana/settings/sections/advanced/advanced_row'); require('routes') .when('/settings/advanced', { - template: require('text!plugins/settings/sections/advanced/index.html') + template: require('text!plugins/kibana/settings/sections/advanced/index.html') }); require('modules').get('apps/settings') diff --git a/src/plugins/kibana/public/settings/public/sections/advanced/lib/get_val_type.js b/src/plugins/kibana/public/settings/sections/advanced/lib/get_val_type.js similarity index 100% rename from src/plugins/kibana/public/settings/public/sections/advanced/lib/get_val_type.js rename to src/plugins/kibana/public/settings/sections/advanced/lib/get_val_type.js diff --git a/src/plugins/kibana/public/settings/sections/index.js b/src/plugins/kibana/public/settings/sections/index.js new file mode 100644 index 0000000000000..5268b0696758b --- /dev/null +++ b/src/plugins/kibana/public/settings/sections/index.js @@ -0,0 +1,10 @@ +define(function (require) { + // each of these private modules returns an object defining that section, their properties + // are used to create the nav bar + return [ + require('plugins/kibana/settings/sections/indices/index'), + require('plugins/kibana/settings/sections/advanced/index'), + require('plugins/kibana/settings/sections/objects/index'), + require('plugins/kibana/settings/sections/about/index') + ]; +}); \ No newline at end of file diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_create.html b/src/plugins/kibana/public/settings/sections/indices/_create.html similarity index 100% rename from src/plugins/kibana/public/settings/public/sections/indices/_create.html rename to src/plugins/kibana/public/settings/sections/indices/_create.html diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_create.js b/src/plugins/kibana/public/settings/sections/indices/_create.js similarity index 97% rename from src/plugins/kibana/public/settings/public/sections/indices/_create.js rename to src/plugins/kibana/public/settings/sections/indices/_create.js index adfac91aa1b2f..9abab26a477f5 100644 --- a/src/plugins/kibana/public/settings/public/sections/indices/_create.js +++ b/src/plugins/kibana/public/settings/sections/indices/_create.js @@ -8,14 +8,14 @@ define(function (require) { require('routes') .when('/settings/indices/', { - template: require('text!plugins/settings/sections/indices/_create.html') + template: require('text!plugins/kibana/settings/sections/indices/_create.html') }); require('modules').get('apps/settings') .controller('settingsIndicesCreate', function ($scope, kbnUrl, Private, Notifier, indexPatterns, es, config, Promise) { var notify = new Notifier(); var MissingIndices = errors.IndexPatternMissingIndices; - var refreshKibanaIndex = Private(require('plugins/settings/sections/indices/_refresh_kibana_index')); + var refreshKibanaIndex = Private(require('plugins/kibana/settings/sections/indices/_refresh_kibana_index')); var intervals = indexPatterns.intervals; var samplePromise; diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_date_scripts.js b/src/plugins/kibana/public/settings/sections/indices/_date_scripts.js similarity index 100% rename from src/plugins/kibana/public/settings/public/sections/indices/_date_scripts.js rename to src/plugins/kibana/public/settings/sections/indices/_date_scripts.js diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_edit.html b/src/plugins/kibana/public/settings/sections/indices/_edit.html similarity index 100% rename from src/plugins/kibana/public/settings/public/sections/indices/_edit.html rename to src/plugins/kibana/public/settings/sections/indices/_edit.html diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_edit.js b/src/plugins/kibana/public/settings/sections/indices/_edit.js similarity index 82% rename from src/plugins/kibana/public/settings/public/sections/indices/_edit.js rename to src/plugins/kibana/public/settings/sections/indices/_edit.js index 32d9ff63a8404..f2251110c130d 100644 --- a/src/plugins/kibana/public/settings/public/sections/indices/_edit.js +++ b/src/plugins/kibana/public/settings/sections/indices/_edit.js @@ -1,12 +1,12 @@ define(function (require) { var _ = require('lodash'); - require('plugins/settings/sections/indices/_indexed_fields'); - require('plugins/settings/sections/indices/_scripted_fields'); - require('plugins/settings/sections/indices/_index_header'); + require('plugins/kibana/settings/sections/indices/_indexed_fields'); + require('plugins/kibana/settings/sections/indices/_scripted_fields'); + require('plugins/kibana/settings/sections/indices/_index_header'); require('routes') .when('/settings/indices/:indexPatternId', { - template: require('text!plugins/settings/sections/indices/_edit.html'), + template: require('text!plugins/kibana/settings/sections/indices/_edit.html'), resolve: { indexPattern: function ($route, courier) { return courier.indexPatterns.get($route.current.params.indexPatternId) @@ -20,14 +20,14 @@ define(function (require) { var notify = new Notifier(); var $state = $scope.state = new AppState(); - var refreshKibanaIndex = Private(require('plugins/settings/sections/indices/_refresh_kibana_index')); + var refreshKibanaIndex = Private(require('plugins/kibana/settings/sections/indices/_refresh_kibana_index')); $scope.kbnUrl = Private(require('components/url/url')); $scope.indexPattern = $route.current.locals.indexPattern; docTitle.change($scope.indexPattern.id); var otherIds = _.without($route.current.locals.indexPatternIds, $scope.indexPattern.id); - var fieldTypes = Private(require('plugins/settings/sections/indices/_field_types')); + var fieldTypes = Private(require('plugins/kibana/settings/sections/indices/_field_types')); $scope.$watch('indexPattern.fields', function () { $scope.fieldTypes = fieldTypes($scope.indexPattern); }); diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_field_controls.html b/src/plugins/kibana/public/settings/sections/indices/_field_controls.html similarity index 100% rename from src/plugins/kibana/public/settings/public/sections/indices/_field_controls.html rename to src/plugins/kibana/public/settings/sections/indices/_field_controls.html diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_field_editor.html b/src/plugins/kibana/public/settings/sections/indices/_field_editor.html similarity index 100% rename from src/plugins/kibana/public/settings/public/sections/indices/_field_editor.html rename to src/plugins/kibana/public/settings/sections/indices/_field_editor.html diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_field_editor.js b/src/plugins/kibana/public/settings/sections/indices/_field_editor.js similarity index 91% rename from src/plugins/kibana/public/settings/public/sections/indices/_field_editor.js rename to src/plugins/kibana/public/settings/sections/indices/_field_editor.js index c993e413f7bac..5c4835ea4ed15 100644 --- a/src/plugins/kibana/public/settings/public/sections/indices/_field_editor.js +++ b/src/plugins/kibana/public/settings/sections/indices/_field_editor.js @@ -1,12 +1,12 @@ define(function (require) { require('components/field_editor/field_editor'); - require('plugins/settings/sections/indices/_index_header'); + require('plugins/kibana/settings/sections/indices/_index_header'); require('routes') .when('/settings/indices/:indexPatternId/field/:fieldName', { mode: 'edit' }) .when('/settings/indices/:indexPatternId/create-field/', { mode: 'create' }) .defaults(/settings\/indices\/[^\/]+\/(field|create-field)(\/|$)/, { - template: require('text!plugins/settings/sections/indices/_field_editor.html'), + template: require('text!plugins/kibana/settings/sections/indices/_field_editor.html'), resolve: { indexPattern: function ($route, courier) { return courier.indexPatterns.get($route.current.params.indexPatternId) diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_field_name.html b/src/plugins/kibana/public/settings/sections/indices/_field_name.html similarity index 100% rename from src/plugins/kibana/public/settings/public/sections/indices/_field_name.html rename to src/plugins/kibana/public/settings/sections/indices/_field_name.html diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_field_popularity.html b/src/plugins/kibana/public/settings/sections/indices/_field_popularity.html similarity index 100% rename from src/plugins/kibana/public/settings/public/sections/indices/_field_popularity.html rename to src/plugins/kibana/public/settings/sections/indices/_field_popularity.html diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_field_type.html b/src/plugins/kibana/public/settings/sections/indices/_field_type.html similarity index 100% rename from src/plugins/kibana/public/settings/public/sections/indices/_field_type.html rename to src/plugins/kibana/public/settings/sections/indices/_field_type.html diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_field_types.js b/src/plugins/kibana/public/settings/sections/indices/_field_types.js similarity index 100% rename from src/plugins/kibana/public/settings/public/sections/indices/_field_types.js rename to src/plugins/kibana/public/settings/sections/indices/_field_types.js diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_index_header.html b/src/plugins/kibana/public/settings/sections/indices/_index_header.html similarity index 100% rename from src/plugins/kibana/public/settings/public/sections/indices/_index_header.html rename to src/plugins/kibana/public/settings/sections/indices/_index_header.html diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_index_header.js b/src/plugins/kibana/public/settings/sections/indices/_index_header.js similarity index 86% rename from src/plugins/kibana/public/settings/public/sections/indices/_index_header.js rename to src/plugins/kibana/public/settings/sections/indices/_index_header.js index d932cd0a429b5..6405ffef8bb21 100644 --- a/src/plugins/kibana/public/settings/public/sections/indices/_index_header.js +++ b/src/plugins/kibana/public/settings/sections/indices/_index_header.js @@ -4,7 +4,7 @@ define(function (require) { .directive('kbnSettingsIndexHeader', function (config) { return { restrict: 'E', - template: require('text!plugins/settings/sections/indices/_index_header.html'), + template: require('text!plugins/kibana/settings/sections/indices/_index_header.html'), scope: { indexPattern: '=', setDefault: '&', diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_indexed_fields.html b/src/plugins/kibana/public/settings/sections/indices/_indexed_fields.html similarity index 100% rename from src/plugins/kibana/public/settings/public/sections/indices/_indexed_fields.html rename to src/plugins/kibana/public/settings/sections/indices/_indexed_fields.html diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_indexed_fields.js b/src/plugins/kibana/public/settings/sections/indices/_indexed_fields.js similarity index 84% rename from src/plugins/kibana/public/settings/public/sections/indices/_indexed_fields.js rename to src/plugins/kibana/public/settings/sections/indices/_indexed_fields.js index 59a1ba0ebe689..1622eb7af43b2 100644 --- a/src/plugins/kibana/public/settings/public/sections/indices/_indexed_fields.js +++ b/src/plugins/kibana/public/settings/sections/indices/_indexed_fields.js @@ -6,13 +6,13 @@ define(function (require) { .directive('indexedFields', function () { var yesTemplate = ''; var noTemplate = ''; - var nameHtml = require('text!plugins/settings/sections/indices/_field_name.html'); - var typeHtml = require('text!plugins/settings/sections/indices/_field_type.html'); - var controlsHtml = require('text!plugins/settings/sections/indices/_field_controls.html'); + var nameHtml = require('text!plugins/kibana/settings/sections/indices/_field_name.html'); + var typeHtml = require('text!plugins/kibana/settings/sections/indices/_field_type.html'); + var controlsHtml = require('text!plugins/kibana/settings/sections/indices/_field_controls.html'); return { restrict: 'E', - template: require('text!plugins/settings/sections/indices/_indexed_fields.html'), + template: require('text!plugins/kibana/settings/sections/indices/_indexed_fields.html'), scope: true, link: function ($scope) { var rowScopes = []; // track row scopes, so they can be destroyed as needed diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_refresh_kibana_index.js b/src/plugins/kibana/public/settings/sections/indices/_refresh_kibana_index.js similarity index 100% rename from src/plugins/kibana/public/settings/public/sections/indices/_refresh_kibana_index.js rename to src/plugins/kibana/public/settings/sections/indices/_refresh_kibana_index.js diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_scripted_fields.html b/src/plugins/kibana/public/settings/sections/indices/_scripted_fields.html similarity index 100% rename from src/plugins/kibana/public/settings/public/sections/indices/_scripted_fields.html rename to src/plugins/kibana/public/settings/sections/indices/_scripted_fields.html diff --git a/src/plugins/kibana/public/settings/public/sections/indices/_scripted_fields.js b/src/plugins/kibana/public/settings/sections/indices/_scripted_fields.js similarity index 90% rename from src/plugins/kibana/public/settings/public/sections/indices/_scripted_fields.js rename to src/plugins/kibana/public/settings/sections/indices/_scripted_fields.js index 2e2a0e5ab72a1..1c4f3185351cf 100644 --- a/src/plugins/kibana/public/settings/public/sections/indices/_scripted_fields.js +++ b/src/plugins/kibana/public/settings/sections/indices/_scripted_fields.js @@ -5,16 +5,16 @@ define(function (require) { require('modules').get('apps/settings') .directive('scriptedFields', function (kbnUrl, Notifier) { var rowScopes = []; // track row scopes, so they can be destroyed as needed - var controlsHtml = require('text!plugins/settings/sections/indices/_field_controls.html'); + var controlsHtml = require('text!plugins/kibana/settings/sections/indices/_field_controls.html'); var notify = new Notifier(); return { restrict: 'E', - template: require('text!plugins/settings/sections/indices/_scripted_fields.html'), + template: require('text!plugins/kibana/settings/sections/indices/_scripted_fields.html'), scope: true, link: function ($scope) { - var dateScripts = require('plugins/settings/sections/indices/_date_scripts'); + var dateScripts = require('plugins/kibana/settings/sections/indices/_date_scripts'); var fieldCreatorPath = '/settings/indices/{{ indexPattern }}/scriptedField'; var fieldEditorPath = fieldCreatorPath + '/{{ fieldName }}'; diff --git a/src/plugins/kibana/public/settings/public/sections/indices/index.html b/src/plugins/kibana/public/settings/sections/indices/index.html similarity index 100% rename from src/plugins/kibana/public/settings/public/sections/indices/index.html rename to src/plugins/kibana/public/settings/sections/indices/index.html diff --git a/src/plugins/kibana/public/settings/public/sections/indices/index.js b/src/plugins/kibana/public/settings/sections/indices/index.js similarity index 82% rename from src/plugins/kibana/public/settings/public/sections/indices/index.js rename to src/plugins/kibana/public/settings/sections/indices/index.js index 02dab8babe119..6190773afb6e0 100644 --- a/src/plugins/kibana/public/settings/public/sections/indices/index.js +++ b/src/plugins/kibana/public/settings/sections/indices/index.js @@ -1,9 +1,9 @@ define(function (require) { var _ = require('lodash'); - require('plugins/settings/sections/indices/_create'); - require('plugins/settings/sections/indices/_edit'); - require('plugins/settings/sections/indices/_field_editor'); + require('plugins/kibana/settings/sections/indices/_create'); + require('plugins/kibana/settings/sections/indices/_edit'); + require('plugins/kibana/settings/sections/indices/_field_editor'); // add a dependency to all of the subsection routes require('routes') @@ -21,7 +21,7 @@ define(function (require) { return { restrict: 'E', transclude: true, - template: require('text!plugins/settings/sections/indices/index.html'), + template: require('text!plugins/kibana/settings/sections/indices/index.html'), link: function ($scope) { $scope.edittingId = $route.current.params.indexPatternId; config.$bind($scope, 'defaultIndex'); diff --git a/src/plugins/kibana/public/settings/public/sections/objects/_objects.html b/src/plugins/kibana/public/settings/sections/objects/_objects.html similarity index 100% rename from src/plugins/kibana/public/settings/public/sections/objects/_objects.html rename to src/plugins/kibana/public/settings/sections/objects/_objects.html diff --git a/src/plugins/kibana/public/settings/public/sections/objects/_objects.js b/src/plugins/kibana/public/settings/sections/objects/_objects.js similarity index 96% rename from src/plugins/kibana/public/settings/public/sections/objects/_objects.js rename to src/plugins/kibana/public/settings/sections/objects/_objects.js index 570e8e31b3c43..48b0cd45b8949 100644 --- a/src/plugins/kibana/public/settings/public/sections/objects/_objects.js +++ b/src/plugins/kibana/public/settings/sections/objects/_objects.js @@ -2,8 +2,8 @@ define(function (require) { var _ = require('lodash'); var angular = require('angular'); var saveAs = require('file_saver'); - var registry = require('plugins/settings/saved_object_registry'); - var objectIndexHTML = require('text!plugins/settings/sections/objects/_objects.html'); + var registry = require('plugins/kibana/settings/saved_object_registry'); + var objectIndexHTML = require('text!plugins/kibana/settings/sections/objects/_objects.html'); require('directives/file_upload'); diff --git a/src/plugins/kibana/public/settings/public/sections/objects/_view.html b/src/plugins/kibana/public/settings/sections/objects/_view.html similarity index 100% rename from src/plugins/kibana/public/settings/public/sections/objects/_view.html rename to src/plugins/kibana/public/settings/sections/objects/_view.html diff --git a/src/plugins/kibana/public/settings/public/sections/objects/_view.js b/src/plugins/kibana/public/settings/sections/objects/_view.js similarity index 97% rename from src/plugins/kibana/public/settings/public/sections/objects/_view.js rename to src/plugins/kibana/public/settings/sections/objects/_view.js index 39f6b7cd98409..01e00a2446813 100644 --- a/src/plugins/kibana/public/settings/public/sections/objects/_view.js +++ b/src/plugins/kibana/public/settings/sections/objects/_view.js @@ -2,8 +2,8 @@ define(function (require) { var _ = require('lodash'); var angular = require('angular'); var rison = require('utils/rison'); - var registry = require('plugins/settings/saved_object_registry'); - var objectViewHTML = require('text!plugins/settings/sections/objects/_view.html'); + var registry = require('plugins/kibana/settings/saved_object_registry'); + var objectViewHTML = require('text!plugins/kibana/settings/sections/objects/_view.html'); require('routes') .when('/settings/objects/:service/:id', { diff --git a/src/plugins/kibana/public/settings/public/sections/objects/index.js b/src/plugins/kibana/public/settings/sections/objects/index.js similarity index 73% rename from src/plugins/kibana/public/settings/public/sections/objects/index.js rename to src/plugins/kibana/public/settings/sections/objects/index.js index ef85a416111be..e510fa427b049 100644 --- a/src/plugins/kibana/public/settings/public/sections/objects/index.js +++ b/src/plugins/kibana/public/settings/sections/objects/index.js @@ -1,6 +1,6 @@ define(function (require) { - require('plugins/settings/sections/objects/_view'); - require('plugins/settings/sections/objects/_objects'); + require('plugins/kibana/settings/sections/objects/_view'); + require('plugins/kibana/settings/sections/objects/_objects'); require('angular-ui-ace'); require('angular-elastic'); diff --git a/src/plugins/kibana/public/settings/public/styles/main.less b/src/plugins/kibana/public/settings/styles/main.less similarity index 100% rename from src/plugins/kibana/public/settings/public/styles/main.less rename to src/plugins/kibana/public/settings/styles/main.less diff --git a/src/plugins/kibana/public/visualize/editor/agg.js b/src/plugins/kibana/public/visualize/editor/agg.js index 784204f11a4cb..aa5b2136ce467 100644 --- a/src/plugins/kibana/public/visualize/editor/agg.js +++ b/src/plugins/kibana/public/visualize/editor/agg.js @@ -2,13 +2,13 @@ define(function (require) { require('modules') .get('app/visualize') .directive('visEditorAgg', function ($compile, $parse, $filter, Private, Notifier) { - require('plugins/visualize/editor/agg_params'); - require('plugins/visualize/editor/agg_add'); + require('plugins/kibana/visualize/editor/agg_params'); + require('plugins/kibana/visualize/editor/agg_add'); var _ = require('lodash'); var $ = require('jquery'); var aggTypes = Private(require('components/agg_types/index')); - var advancedToggleHtml = require('text!plugins/visualize/editor/advanced_toggle.html'); + var advancedToggleHtml = require('text!plugins/kibana/visualize/editor/advanced_toggle.html'); var notify = new Notifier({ location: 'visAggGroup' @@ -16,7 +16,7 @@ define(function (require) { return { restrict: 'A', - template: require('text!plugins/visualize/editor/agg.html'), + template: require('text!plugins/kibana/visualize/editor/agg.html'), require: 'form', link: function ($scope, $el, attrs, kbnForm) { $scope.$bind('outputAgg', 'outputVis.aggs.byId[agg.id]', $scope); diff --git a/src/plugins/kibana/public/visualize/editor/agg_add.js b/src/plugins/kibana/public/visualize/editor/agg_add.js index 8457f27c69c23..39c8e82f2807b 100644 --- a/src/plugins/kibana/public/visualize/editor/agg_add.js +++ b/src/plugins/kibana/public/visualize/editor/agg_add.js @@ -6,7 +6,7 @@ define(function (require) { return { restrict: 'E', - template: require('text!plugins/visualize/editor/agg_add.html'), + template: require('text!plugins/kibana/visualize/editor/agg_add.html'), controllerAs: 'add', controller: function ($scope) { var self = this; diff --git a/src/plugins/kibana/public/visualize/editor/agg_group.js b/src/plugins/kibana/public/visualize/editor/agg_group.js index 372e75ac592e0..f3f402ecf03f5 100644 --- a/src/plugins/kibana/public/visualize/editor/agg_group.js +++ b/src/plugins/kibana/public/visualize/editor/agg_group.js @@ -2,13 +2,13 @@ define(function (require) { require('modules') .get('app/visualize') .directive('visEditorAggGroup', function (Private) { - require('plugins/visualize/editor/agg'); - require('plugins/visualize/editor/agg_add'); - require('plugins/visualize/editor/nesting_indicator'); + require('plugins/kibana/visualize/editor/agg'); + require('plugins/kibana/visualize/editor/agg_add'); + require('plugins/kibana/visualize/editor/nesting_indicator'); return { restrict: 'E', - template: require('text!plugins/visualize/editor/agg_group.html'), + template: require('text!plugins/kibana/visualize/editor/agg_group.html'), scope: true, link: function ($scope, $el, attr) { $scope.groupName = attr.groupName; diff --git a/src/plugins/kibana/public/visualize/editor/agg_params.js b/src/plugins/kibana/public/visualize/editor/agg_params.js index 06cef0d58bdec..e0fa853f082e7 100644 --- a/src/plugins/kibana/public/visualize/editor/agg_params.js +++ b/src/plugins/kibana/public/visualize/editor/agg_params.js @@ -7,10 +7,10 @@ define(function (require) { var _ = require('lodash'); var $ = require('jquery'); var aggTypes = Private(require('components/agg_types/index')); - var aggSelectHtml = require('text!plugins/visualize/editor/agg_select.html'); - var advancedToggleHtml = require('text!plugins/visualize/editor/advanced_toggle.html'); + var aggSelectHtml = require('text!plugins/kibana/visualize/editor/agg_select.html'); + var advancedToggleHtml = require('text!plugins/kibana/visualize/editor/advanced_toggle.html'); require('filters/match_any'); - require('plugins/visualize/editor/agg_param'); + require('plugins/kibana/visualize/editor/agg_param'); var notify = new Notifier({ location: 'visAggGroup' @@ -18,7 +18,7 @@ define(function (require) { return { restrict: 'E', - template: require('text!plugins/visualize/editor/agg_params.html'), + template: require('text!plugins/kibana/visualize/editor/agg_params.html'), scope: true, link: function ($scope, $el, attr) { $scope.$bind('agg', attr.agg); diff --git a/src/plugins/kibana/public/visualize/editor/editor.html b/src/plugins/kibana/public/visualize/editor/editor.html index 8d5cae53dcf7b..647448e85ae98 100644 --- a/src/plugins/kibana/public/visualize/editor/editor.html +++ b/src/plugins/kibana/public/visualize/editor/editor.html @@ -1,6 +1,6 @@
- +
@@ -127,9 +127,9 @@
- + -
+
diff --git a/src/plugins/kibana/public/visualize/editor/editor.js b/src/plugins/kibana/public/visualize/editor/editor.js index 88a84809f82ec..9cf246b9736f8 100644 --- a/src/plugins/kibana/public/visualize/editor/editor.js +++ b/src/plugins/kibana/public/visualize/editor/editor.js @@ -1,20 +1,15 @@ define(function (require) { var _ = require('lodash'); - require('plugins/visualize/saved_visualizations/saved_visualizations'); - require('plugins/visualize/editor/sidebar'); - require('plugins/visualize/editor/agg_filter'); + require('plugins/kibana/visualize/saved_visualizations/saved_visualizations'); + require('plugins/kibana/visualize/editor/sidebar'); + require('plugins/kibana/visualize/editor/agg_filter'); - - require('directives/saved_object_finder'); require('components/visualize/visualize'); require('components/clipboard/clipboard'); - require('components/comma_list_filter'); - - require('filters/uriescape'); require('routes') .when('/visualize/create', { - template: require('text!plugins/visualize/editor/editor.html'), + template: require('text!plugins/kibana/visualize/editor/editor.html'), resolve: { savedVis: function (savedVisualizations, courier, $route, Private) { var visTypes = Private(require('registry/vis_types')); @@ -31,7 +26,7 @@ define(function (require) { } }) .when('/visualize/edit/:id', { - template: require('text!plugins/visualize/editor/editor.html'), + template: require('text!plugins/kibana/visualize/editor/editor.html'), resolve: { savedVis: function (savedVisualizations, courier, $route) { return savedVisualizations.get($route.current.params.id) @@ -79,9 +74,9 @@ define(function (require) { // config panel templates var configTemplate = new ConfigTemplate({ - save: require('text!plugins/visualize/editor/panels/save.html'), - load: require('text!plugins/visualize/editor/panels/load.html'), - share: require('text!plugins/visualize/editor/panels/share.html'), + save: require('text!plugins/kibana/visualize/editor/panels/save.html'), + load: require('text!plugins/kibana/visualize/editor/panels/load.html'), + share: require('text!plugins/kibana/visualize/editor/panels/share.html'), }); if (savedVis.id) { diff --git a/src/plugins/kibana/public/visualize/editor/sidebar.js b/src/plugins/kibana/public/visualize/editor/sidebar.js index 625a09e635d8c..bd8813807536d 100644 --- a/src/plugins/kibana/public/visualize/editor/sidebar.js +++ b/src/plugins/kibana/public/visualize/editor/sidebar.js @@ -4,12 +4,12 @@ define(function (require) { .directive('visEditorSidebar', function () { var _ = require('lodash'); - require('plugins/visualize/editor/agg_group'); - require('plugins/visualize/editor/vis_options'); + require('plugins/kibana/visualize/editor/agg_group'); + require('plugins/kibana/visualize/editor/vis_options'); return { restrict: 'E', - template: require('text!plugins/visualize/editor/sidebar.html'), + template: require('text!plugins/kibana/visualize/editor/sidebar.html'), scope: true, controllerAs: 'sidebar', controller: function ($scope) { diff --git a/src/plugins/kibana/public/visualize/editor/vis_options.js b/src/plugins/kibana/public/visualize/editor/vis_options.js index 882dc088e2211..ecd73a380a2fb 100644 --- a/src/plugins/kibana/public/visualize/editor/vis_options.js +++ b/src/plugins/kibana/public/visualize/editor/vis_options.js @@ -7,7 +7,7 @@ define(function (require) { .directive('visEditorVisOptions', function (Private, $timeout, $compile) { return { restrict: 'E', - template: require('text!plugins/visualize/editor/vis_options.html'), + template: require('text!plugins/kibana/visualize/editor/vis_options.html'), scope: { vis: '=', }, diff --git a/src/plugins/kibana/public/visualize/index.js b/src/plugins/kibana/public/visualize/index.js index e79b172ca71c8..06c2de132888d 100644 --- a/src/plugins/kibana/public/visualize/index.js +++ b/src/plugins/kibana/public/visualize/index.js @@ -1,20 +1,11 @@ define(function (require) { - require('css!plugins/visualize/styles/main.css'); + require('css!plugins/kibana/visualize/styles/main.css'); - require('plugins/visualize/editor/editor'); - require('plugins/visualize/wizard/wizard'); + require('plugins/kibana/visualize/editor/editor'); + require('plugins/kibana/visualize/wizard/wizard'); require('routes') .when('/visualize', { redirectTo: '/visualize/step/1' }); - - var apps = require('registry/apps'); - apps.register(function VisualizeAppModule() { - return { - id: 'visualize', - name: 'Visualize', - order: 1 - }; - }); -}); \ No newline at end of file +}); diff --git a/src/plugins/kibana/public/visualize/saved_visualizations/saved_visualizations.js b/src/plugins/kibana/public/visualize/saved_visualizations/saved_visualizations.js index db22c3e0065bc..29b5af6c23712 100644 --- a/src/plugins/kibana/public/visualize/saved_visualizations/saved_visualizations.js +++ b/src/plugins/kibana/public/visualize/saved_visualizations/saved_visualizations.js @@ -2,11 +2,11 @@ define(function (require) { var app = require('modules').get('app/visualize'); var _ = require('lodash'); - require('plugins/visualize/saved_visualizations/_saved_vis'); + require('plugins/kibana/visualize/saved_visualizations/_saved_vis'); // Register this service with the saved object registry so it can be // edited by the object editor. - require('plugins/settings/saved_object_registry').register({ + require('plugins/kibana/settings/saved_object_registry').register({ service: 'savedVisualizations', title: 'visualizations' }); diff --git a/src/plugins/kibana/public/visualize/wizard/wizard.js b/src/plugins/kibana/public/visualize/wizard/wizard.js index 9f993f4fbb0dc..cf2b71a0bd752 100644 --- a/src/plugins/kibana/public/visualize/wizard/wizard.js +++ b/src/plugins/kibana/public/visualize/wizard/wizard.js @@ -1,9 +1,9 @@ define(function (require) { var _ = require('lodash'); - require('plugins/visualize/saved_visualizations/saved_visualizations'); + require('plugins/kibana/visualize/saved_visualizations/saved_visualizations'); require('directives/saved_object_finder'); - require('plugins/discover/saved_searches/saved_searches'); + require('plugins/kibana/discover/saved_searches/saved_searches'); var templateStep = function (num, txt) { return '
' + txt + '
'; @@ -16,7 +16,7 @@ define(function (require) { /** Wizard Step 1 /********/ routes.when('/visualize/step/1', { - template: templateStep(1, require('text!plugins/visualize/wizard/step_1.html')) + template: templateStep(1, require('text!plugins/kibana/visualize/wizard/step_1.html')) }); module.controller('VisualizeWizardStep1', function ($scope, $route, $location, timefilter, Private) { @@ -33,7 +33,7 @@ define(function (require) { /** Wizard Step 2 /********/ routes.when('/visualize/step/2', { - template: templateStep(2, require('text!plugins/visualize/wizard/step_2.html')), + template: templateStep(2, require('text!plugins/kibana/visualize/wizard/step_2.html')), resolve: { indexPatternIds: function (courier) { return courier.indexPatterns.getIds(); diff --git a/src/plugins/ui/foundModuleIds.js b/src/plugins/ui/foundModuleIds.js new file mode 100644 index 0000000000000..40a245a270424 --- /dev/null +++ b/src/plugins/ui/foundModuleIds.js @@ -0,0 +1,40 @@ +var _ = require('lodash'); +var join = require('path').join; +var basename = require('path').basename; +var readdir = require('fs').readdirSync; +var stat = require('fs').statSync; +var exists = require('fs').existsSync; + +function hidden(name) { + return name[0] !== '.' && name[0] !== '_'; +} + +function scan(type) { + var dir = join(__dirname, 'public', type); + + return readdir(dir) + .filter(hidden) + .map(function (filename) { + var path = join(dir, filename); + var name = basename(filename, '.js'); + + if (!stat(path).isDirectory()) { + return type + '/' + name; + } + + if (exists(join(path, 'index.js'))) { + return type + '/' + name + '/index'; + } + + if (exists(join(path, name + '.js'))) { + return type + '/' + name + '/' + name; + } + + throw new Error('unable to find index of module ' + type + '/' + name); + }); +} + +module.exports = { + directives: scan('directives'), + filters: scan('filters') +}; diff --git a/src/plugins/ui/index.js b/src/plugins/ui/index.js index fe95c978d3c30..05e4b6d3ec0b4 100644 --- a/src/plugins/ui/index.js +++ b/src/plugins/ui/index.js @@ -6,6 +6,7 @@ module.exports = function (kibana) { var stat = require('fs').statSync; var relative = require('path').relative; var publicDir = join(__dirname, 'public'); + var foundModuleIds = require('./foundModuleIds'); return new kibana.Plugin({ publicDir: false, // we will serve our own public fir @@ -40,7 +41,7 @@ module.exports = function (kibana) { var app = apps[id]; if (!app) return reply(Boom.notFound('Unkown app ' + id)); - return reply.view('chrome', { + return reply.view('bootstrap', { app: app, version: kibana.package.version, buildSha: _.get(kibana, 'package.build.sha', '@@buildSha'), @@ -118,6 +119,62 @@ module.exports = function (kibana) { }); } }); + }, + exports: { + aliases: { + baseEnv: _.union( + // default bower_components + [ + 'angular-route', + 'angular-bindonce', + 'angular-bootstrap', + 'elasticsearch' + ], + + // all directives + foundModuleIds.directives, + + // all filters + foundModuleIds.filters, + + // default components + [ + 'errors', + 'chrome', + 'components/bind', + 'components/bound_to_config_obj', + 'components/config/config', + 'components/courier/courier', + 'components/debounce', + 'components/doc_title/doc_title', + 'components/elastic_textarea', + 'components/es', + 'components/events', + 'components/fancy_forms/fancy_forms', + 'components/filter_bar/filter_bar', + 'components/filter_manager/filter_manager', + 'components/index_patterns/index_patterns', + 'components/listen', + 'components/notify/notify', + 'components/persisted_log/persisted_log', + 'components/private', + 'components/promises', + 'components/state_management/app_state', + 'components/state_management/global_state', + 'components/storage/storage', + 'components/stringify/register', + 'components/style_compile/style_compile', + 'components/timefilter/timefilter', + 'components/timepicker/timepicker', + 'components/tooltip/tooltip', + 'components/typeahead/typeahead', + 'components/url/url', + 'components/validateDateInterval', + 'components/validate_query/validate_query', + 'components/watch_multi' + ] + ) + } } }); }; diff --git a/src/plugins/ui/public/bootstrap.js b/src/plugins/ui/public/bootstrap.js index c3b1234d7aa88..e3d93083f725f 100644 --- a/src/plugins/ui/public/bootstrap.js +++ b/src/plugins/ui/public/bootstrap.js @@ -2,58 +2,14 @@ * main app level module */ define(function (require) { - var angular = require('angular'); - var _ = require('lodash'); - var $ = require('jquery'); var modules = require('modules'); var routes = require('routes'); - require('angular-route'); - require('angular-bindonce'); - require('angular-bootstrap'); - require('elasticsearch'); - - require('components/bind'); - require('components/bound_to_config_obj'); - require('components/chrome'); - require('components/config/config'); - require('components/courier/courier'); - require('components/debounce'); - require('components/doc_title/doc_title'); - require('components/elastic_textarea'); - require('components/errors'); - require('components/es'); - require('components/events'); - require('components/fancy_forms/fancy_forms'); - require('components/filter_bar/filter_bar'); - require('components/filter_manager/filter_manager'); - require('components/index_patterns/index_patterns'); - require('components/listen'); - require('components/modules'); - require('components/notify/notify'); - require('components/persisted_log/persisted_log'); - require('components/private'); - require('components/promises'); - require('components/state_management/app_state'); - require('components/state_management/global_state'); - require('components/storage/storage'); - require('components/stringify/register'); - require('components/style_compile/style_compile'); - require('components/timefilter/timefilter'); - require('components/timepicker/timepicker'); - require('components/tooltip/tooltip'); - require('components/typeahead/typeahead'); - require('components/url/url'); - require('components/validateDateInterval'); - require('components/validate_query/validate_query'); - require('components/watch_multi'); - var kibana = modules.get('kibana', [ // list external requirements here 'elasticsearch', 'pasvaz.bindonce', 'ngRoute', - 'ngClipboard', 'ui.bootstrap' ]); @@ -70,7 +26,7 @@ define(function (require) { // url we should use to talk to es .constant('esUrl', (function () { var a = document.createElement('a'); - a.href = 'elasticsearch'; + a.href = '/elasticsearch'; return a.href; }())) // This stores the build number, @REV@ is replaced by grunt. @@ -83,9 +39,10 @@ define(function (require) { .constant('sessionId', Date.now()) // attach the route manager's known routes .config(routes.config) - .config(['ngClipProvider', function (ngClipProvider) { + .config(function (ngClipProvider, $tooltipProvider) { ngClipProvider.setPath('bower_components/zeroclipboard/dist/ZeroClipboard.swf'); - }]); + $tooltipProvider.setTriggers({ 'mouseenter': 'mouseleave click' }); + }); // tell the modules util to add it's modules as requirements for kibana modules.link(kibana); diff --git a/src/plugins/ui/public/chrome.js b/src/plugins/ui/public/chrome.js new file mode 100644 index 0000000000000..5841e7e893f6d --- /dev/null +++ b/src/plugins/ui/public/chrome.js @@ -0,0 +1,133 @@ +define(function (require) { + var _ = require('lodash'); + var $ = require('jquery'); + + var TabCollection = require('components/chrome/TabCollection'); + var ConfigTemplate = require('utils/config_template'); + + var chrome = {}; + var tabs = new TabCollection(); + var backgroundColor = '#656A76'; + var rootController = null; + + /** + * Set what tabs should be shown in the header. + * + * @param {TabSpec[]} tabSpecs - array of objects describing the + * tabs to create. See chrome/Tab for + * more info + * @return {chrome} + * @chainable + */ + chrome.setTabs = function (tabSpecs) { + tabs.set(tabSpecs); + return chrome; + }; + + /** + * Get the tab list + * + * @return {Tab[]} - array of chrome/Tab objects + */ + chrome.getTabs = function () { + return tabs.get(); + }; + + /** + * Get the tab for the current url + * + * @return {Tab} + */ + chrome.getActiveTab = function () { + return tabs.getActive(); + }; + + /** + * Set the background color for the header + * + * @param {string} color - css color definition (eg. 'red', 'rgb(68, 68, 68)', or '#ffffff') + * @return {chrome} + * @chainable + */ + chrome.setBackgroundColor = function (color) { + backgroundColor = color; + return chrome; + }; + + /** + * Set a controller that will be bound to the root of the application, outside of the + * ng-view, and will persist across routes + * + * @param {String} as - the name that the controller should bind to + * @param {Function} controller - the controller initializer function + * @return {chrome} + * @chainable + */ + chrome.setRootController = function (as, construct) { + rootController = { as: as, construct: construct }; + return chrome; + }; + + // build a kbn-chrome directive that will bind our service to the dom + require('modules') + .get('kibana') + .directive('kbnChrome', function () { + return { + compile: function ($el) { + var $content = $(require('text!components/chrome/chrome.html')); + if (rootController) { + chrome.$$rootControllerConstruct = rootController.construct; + var ngController = 'chrome.$$rootControllerConstruct'; + if (rootController.as) { + ngController += ' as ' + rootController.as; + } + + $content + .find('.application') + .attr('ng-controller', ngController); + } + + $el.html($content); + }, + controllerAs: 'chrome', + controller: function ($scope, $rootScope, $location, timefilter, globalState, $http) { + + // are we showing the embedded version of the chrome? + chrome.embedded = Boolean($location.search().embed); + + // listen for route changes, propogate to tabs + var onRouteChange = _.bindKey(tabs, 'trackPathUpdate'); + $rootScope.$on('$routeChangeSuccess', onRouteChange); + $rootScope.$on('$routeUpdate', onRouteChange); + + // chrome is responsible for timepicker ui and state transfer... + $scope.timefilter = timefilter; + $scope.$listen(timefilter, 'update', function (newVal, oldVal) { + globalState.time = _.clone(timefilter.time); + globalState.refreshInterval = _.clone(timefilter.refreshInterval); + globalState.save(); + }); + + $scope.pickerTemplate = new ConfigTemplate({ + filter: require('text!components/chrome/config/filter.html'), + interval: require('text!components/chrome/config/interval.html') + }); + + $scope.toggleRefresh = function () { + timefilter.refreshInterval.pause = !timefilter.refreshInterval.pause; + }; + + // and some local values + $scope.httpActive = $http.pendingRequests; + $scope.notifList = require('components/notify/notify')._notifs; + + return chrome; + } + }; + }) + .directive('kbnChromeTimepicker', function () { + + }); + + return chrome; +}); diff --git a/src/plugins/ui/public/components/chrome.js b/src/plugins/ui/public/components/chrome.js deleted file mode 100644 index df3c52afb1ea7..0000000000000 --- a/src/plugins/ui/public/components/chrome.js +++ /dev/null @@ -1,63 +0,0 @@ -define(function (require) { - require('modules') - .get('kibana') - .config(function ($tooltipProvider) { - $tooltipProvider.setTriggers({ 'mouseenter': 'mouseleave click' }); - }) - .directive('kbnChrome', function () { - return { - template: require('text!plugins/kibana/kibana.html'), - controllerAs: 'kibana', - controller: function ($scope) { - var _ = require('lodash'); - var self = this; - var notify = new Notifier({ location: 'Kibana' }); - - // run init functions before loading the mixins, so that we can ensure that - // the environment is ready for them to get and use their dependencies - self.ready = Promise.all([ config.init() ]) - .then(function () { - // load some "mixins" - var mixinLocals = { $scope: $scope, notify: notify }; - - $injector.invoke(require('plugins/kibana/_init'), self, mixinLocals); - // expose some globals - $rootScope.globalState = globalState; - - // and some local values - $scope.appEmbedded = $location.search().embed || false; - $scope.httpActive = $http.pendingRequests; - $scope.notifList = notify._notifs; - - // wait for the application to finish loading - $scope.$on('application.load', function () { - courier.start(); - }); - - $scope.apps.forEach(getShow); - - - function onRouteChange() { - var route = $location.path().split(/\//); - $scope.apps.forEach(function (app) { - if (app.active = app.id === route[1]) { - $rootScope.activeApp = app; - } - }); - - if (!$rootScope.activeApp || $scope.appEmbedded) return; - - // Record the last URL w/ state of the app, use for tab. - setLastPath($rootScope.activeApp, globalState.removeFromUrl($location.url())); - } - - $rootScope.$on('$routeChangeSuccess', onRouteChange); - $rootScope.$on('$routeUpdate', onRouteChange); - $injector.invoke(require('plugins/kibana/_timepicker'), self, mixinLocals); - - $scope.setupComplete = true; - }); - } - }; - }); -}); diff --git a/src/plugins/ui/public/components/chrome/Tab.js b/src/plugins/ui/public/components/chrome/Tab.js new file mode 100644 index 0000000000000..5c2352f1552f4 --- /dev/null +++ b/src/plugins/ui/public/components/chrome/Tab.js @@ -0,0 +1,21 @@ +define(function (require) { + var _ = require('lodash'); + var sessionStorage = window.sessionStorage; + + function Tab(spec) { + this.id = spec.id; + this.title = spec.title; + this.active = false; + + this.rootPath = '/' + this.id; + this.lastPathStorageKey = 'lastPath:' + this.id; + this.lastPath = sessionStorage.getItem(this.lastPathStorageKey) || this.rootPath; + } + + Tab.prototype.pathUpdate = function (path) { + this.lastPath = path; + sessionStorage.setItem(this.lastPathStorageKey, this.lastPath); + }; + + return Tab; +}); diff --git a/src/plugins/ui/public/components/chrome/TabCollection.js b/src/plugins/ui/public/components/chrome/TabCollection.js new file mode 100644 index 0000000000000..f6ea513c18e75 --- /dev/null +++ b/src/plugins/ui/public/components/chrome/TabCollection.js @@ -0,0 +1,42 @@ +define(function (require) { + var Tab = require('components/chrome/Tab'); + + function TabCollection() { + var _ = require('lodash'); + + var all = []; + var activeTab = null; + + this.set = function (tabSpecs) { + _.invoke(all.splice(0), 'destroy'); + + _.each(tabSpecs, function (tabSpec) { + all.push(new Tab(tabSpec)); + }); + }; + + this.get = function () { + return all; + }; + + this.getActive = function () { + return activeTab; + }; + + this.trackPathUpdate = function (path, temporaryChange) { + var id = path.split('/')[1]; + + all.forEach(function (tab) { + tab.active = (tab.id === id); + if (tab.active) { + activeTab = tab; + if (!temporaryChange) { + tab.pathUpdate(path); + } + } + }); + }; + } + + return TabCollection; +}); diff --git a/src/plugins/kibana/public/kibana.html b/src/plugins/ui/public/components/chrome/chrome.html similarity index 58% rename from src/plugins/kibana/public/kibana.html rename to src/plugins/ui/public/components/chrome/chrome.html index 53ce1359c7892..933cbd0ad464b 100644 --- a/src/plugins/kibana/public/kibana.html +++ b/src/plugins/ui/public/components/chrome/chrome.html @@ -1,6 +1,6 @@
@@ -27,4 +27,4 @@

Kibana

- \ No newline at end of file + diff --git a/src/plugins/ui/public/chrome.js b/src/plugins/ui/public/chrome.js index 5841e7e893f6d..649b9196c6a2f 100644 --- a/src/plugins/ui/public/chrome.js +++ b/src/plugins/ui/public/chrome.js @@ -96,9 +96,11 @@ define(function (require) { chrome.embedded = Boolean($location.search().embed); // listen for route changes, propogate to tabs - var onRouteChange = _.bindKey(tabs, 'trackPathUpdate'); $rootScope.$on('$routeChangeSuccess', onRouteChange); $rootScope.$on('$routeUpdate', onRouteChange); + function onRouteChange() { + tabs.trackPathUpdate($location.path(), chrome.embedded); + } // chrome is responsible for timepicker ui and state transfer... $scope.timefilter = timefilter; From 91f0e125e8375efa4d303f7821532e7b9acabb43 Mon Sep 17 00:00:00 2001 From: Spencer Alger Date: Thu, 25 Jun 2015 13:40:15 -0700 Subject: [PATCH 007/137] fix status and devServer grunt tasks --- src/dev_server/index.js | 8 +-- src/plugins/status/index.js | 61 ------------------- src/plugins/status/lib/series.js | 15 ----- src/plugins/status/package.json | 4 -- src/plugins/ui/index.js | 51 ++++++---------- src/server/connections/index.js | 21 +++++++ src/server/index.js | 3 +- src/server/status/Samples.js | 26 ++++++++ src/server/status/index.js | 41 ++++++++++++- .../status/public/index.html | 0 tasks/config/esvm.js | 2 +- tasks/dev.js | 2 +- tasks/{kibana_server.js => devServer.js} | 7 ++- ...be_start_kibana.js => maybeStartKibana.js} | 6 +- tasks/test.js | 8 +-- 15 files changed, 123 insertions(+), 132 deletions(-) delete mode 100644 src/plugins/status/index.js delete mode 100644 src/plugins/status/lib/series.js delete mode 100644 src/plugins/status/package.json create mode 100644 src/server/status/Samples.js rename src/{plugins => server}/status/public/index.html (100%) rename tasks/{kibana_server.js => devServer.js} (59%) rename tasks/{maybe_start_kibana.js => maybeStartKibana.js} (89%) diff --git a/src/dev_server/index.js b/src/dev_server/index.js index d434256e50ecc..62a1cdc7df5c2 100644 --- a/src/dev_server/index.js +++ b/src/dev_server/index.js @@ -3,12 +3,10 @@ var join = require('path').join; var KbnServer = require('../server'); -function run(grunt) { - var opt = grunt ? _.bindKey(grunt, 'option') : _.noop; - +function run(port, quiet) { return (new KbnServer({ - 'logging.quiet': opt('debug') && opt('verbose'), - 'kibana.server.port': opt('port') || 5601, + 'logging.quiet': quiet, + 'kibana.server.port': port || 5601, 'kibana.pluginPaths': [ join(__dirname, 'dev_statics_plugin') ], diff --git a/src/plugins/status/index.js b/src/plugins/status/index.js deleted file mode 100644 index 481381f61a035..0000000000000 --- a/src/plugins/status/index.js +++ /dev/null @@ -1,61 +0,0 @@ -module.exports = function (kibana) { - var status = kibana.status; - var Series = require('./lib/series'); - - return new kibana.Plugin({ - - init: function (server, options) { - - var config = server.config(); - - var fiveMinuteData = { - rss: new Series(60), - heapTotal: new Series(60), - heapUsed: new Series(60), - load: new Series(60), - delay: new Series(60), - concurrency: new Series(60), - responseTimeAvg: new Series(60), - responseTimeMax: new Series(60), - requests: new Series(60), - }; - - server.plugins.good.monitor.on('ops', function (event) { - var port = String(config.get('kibana.server.port')); - fiveMinuteData.rss.push(event.psmem.rss); - fiveMinuteData.heapTotal.push(event.psmem.heapTotal); - fiveMinuteData.heapUsed.push(event.psmem.heapUsed); - fiveMinuteData.load.push(event.osload); - fiveMinuteData.delay.push(event.psdelay); - fiveMinuteData.concurrency.push(parseInt(event.concurrents[port], 0)); - if (event.responseTimes[port]) { - var responseTimeAvg = event.responseTimes[port].avg; - if (isNaN(responseTimeAvg)) responseTimeAvg = 0; - fiveMinuteData.responseTimeAvg.push(responseTimeAvg); - fiveMinuteData.responseTimeMax.push(event.responseTimes[port].max); - } else { - fiveMinuteData.responseTimeAvg.push(0); - fiveMinuteData.responseTimeMax.push(0); - } - if (event.requests[port]) { - fiveMinuteData.requests.push(event.requests[port].total); - } else { - fiveMinuteData.requests.push(0); - } - }); - - server.route({ - method: 'GET', - path: '/status/health', - handler: function (request, reply) { - return reply({ - metrics: fiveMinuteData, - status: status - }); - } - }); - } - - }); - -}; diff --git a/src/plugins/status/lib/series.js b/src/plugins/status/lib/series.js deleted file mode 100644 index 11fbbda92183b..0000000000000 --- a/src/plugins/status/lib/series.js +++ /dev/null @@ -1,15 +0,0 @@ -function Series(size) { - this.size = size; - this.data = []; -} - -Series.prototype.push = function (value) { - this.data.unshift([Date.now(), value]); - if (this.data.length > this.size) this.data.pop(); -}; - -Series.prototype.toJSON = function () { - return this.data; -}; - -module.exports = Series; diff --git a/src/plugins/status/package.json b/src/plugins/status/package.json deleted file mode 100644 index b637610ad6755..0000000000000 --- a/src/plugins/status/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "status", - "version": "1.0.0" -} diff --git a/src/plugins/ui/index.js b/src/plugins/ui/index.js index 05e4b6d3ec0b4..d645336f97180 100644 --- a/src/plugins/ui/index.js +++ b/src/plugins/ui/index.js @@ -52,46 +52,31 @@ module.exports = function (kibana) { } }); - // initialize the browser runtime for the app - server.route({ - path: '/app/{id}/{filePath*}', - method: 'GET', - handler: function (req, reply) { - var id = req.params.id; - var apps = server.getApps(); + // provide access to an app's public directories + server.exposeStaticDir('/app/{id}/{path*}', function pickDir(req) { + var id = req.params.id; + var app = server.getApps()[id]; - var app = apps[id]; - if (!app) return reply(Boom.notFound('Unkown app ' + id)); - - return reply.file(join(app.publicDir, req.params.filePath)); - } + if (!app) return Boom.notFound('Unkown app ' + id); + return app.publicDir || Boom.notFound(id + ' does not server public files'); }); + // expose the first bower_components directory found within kibana's rootDir starting + // in this directory and moving out + server.exposeStaticDir('/bower_components/{path*}', (function findBowerComponents() { + var dir = __dirname; - server.route({ - path: '/bower_components/{path*}', - method: 'GET', - handler: { - directory: { - path: (function findBowerComponents() { - // find bower_components by searching up until reaching the kibana dir - var dir = __dirname; - - while (!exists(join(dir, 'bower_components'))) { - var prev = dir; - dir = join(dir, '..'); - - if (dir === prev || relative(kibana.rootDir, dir) === '..') { - throw new Error('unable to find bower_components'); - } - } + while (!exists(join(dir, 'bower_components'))) { + var prev = dir; + dir = join(dir, '..'); - return join(dir, 'bower_components'); - }()), - listing: true + if (dir === prev || relative(kibana.rootDir, dir) === '..') { + throw new Error('unable to find bower_components'); } } - }); + + return join(dir, 'bower_components'); + }())); require('fs') diff --git a/src/server/connections/index.js b/src/server/connections/index.js index ff8aa70a5e190..7a93abd601db4 100644 --- a/src/server/connections/index.js +++ b/src/server/connections/index.js @@ -8,4 +8,25 @@ module.exports = function (kibana) { port: config.get('kibana.server.port') }); + server.decorate('server', 'exposeStaticDir', function (routePath, dirPath) { + this.route({ + path: routePath, + method: 'GET', + handler: { + directory: { + path: dirPath, + listing: true, + redirectToSlash: true, + lookupCompressed: true + } + } + }); + }); + + server.ext('onPreResponse', function (request, reply) { + var response = request.response; + response.header('X-App-Name', 'kibana'); + return reply.continue(); + }); + }; diff --git a/src/server/index.js b/src/server/index.js index 4292aabf49ed3..6c07dbcf30a2b 100644 --- a/src/server/index.js +++ b/src/server/index.js @@ -13,10 +13,10 @@ function KbnServer(settings) { this.server = new Hapi.Server(); this.settings = settings || {}; this.ready = _.constant(this.mixin( - require('./status'), require('./config'), require('./connections'), require('./logging'), + require('./status'), require('./fe-exports'), require('./plugins') )); @@ -42,6 +42,7 @@ KbnServer.prototype.listen = function () { .then( function () { server.log('server', 'Server running at ' + server.info.uri); + return server; }, function (err) { server.log('fatal', err); diff --git a/src/server/status/Samples.js b/src/server/status/Samples.js new file mode 100644 index 0000000000000..879c93d1f7c18 --- /dev/null +++ b/src/server/status/Samples.js @@ -0,0 +1,26 @@ +var _ = require('lodash'); + +function Samples(max) { + this.vals = {}; + this.max = max || Infinity; + this.length = 0; +} + +Samples.prototype.add = function (sample) { + var vals = this.vals; + var length = this.length = Math.min(this.length + 1, this.max); + + _.forOwn(sample, function (val, name) { + if (val == null) val = null; + + if (!vals[name]) vals[name] = new Array(length); + vals[name].unshift([Date.now(), val]); + vals[name].length = length; + }); +}; + +Samples.prototype.toJSON = function () { + return this.vals; +}; + +module.exports = Samples; diff --git a/src/server/status/index.js b/src/server/status/index.js index b562ba1f6e11f..ea7581f9fba2c 100644 --- a/src/server/status/index.js +++ b/src/server/status/index.js @@ -1,5 +1,42 @@ -var KbnStatus = require('./KbnStatus'); - module.exports = function (kibana) { + var _ = require('lodash'); + var Samples = require('./Samples'); + var KbnStatus = require('./KbnStatus'); + var join = require('path').join; + + var server = kibana.server; + var config = server.config(); + kibana.status = new KbnStatus(kibana.server); + kibana.metrics = new Samples(60); + + server.exposeStaticDir('/status/{path*}', join(__dirname, 'public')); + + server.plugins.good.monitor.on('ops', function (event) { + var port = config.get('kibana.server.port'); + + kibana.metrics.add({ + rss: event.psmem.rss, + heapTotal: event.psmem.heapTotal, + heapUsed: event.psmem.heapUsed, + load: event.osload, + delay: event.psdelay, + concurrency: _.get(event, ['concurrents', port]), + responseTimeAvg: _.get(event, ['responseTimes', port, 'avg']), + responseTimeMax: _.get(event, ['responseTimes', port, 'max']), + requests: _.get(event, ['requests', port, 'total'], 0) + }); + + }); + + server.route({ + method: 'GET', + path: '/status/health', + handler: function (request, reply) { + return reply({ + status: kibana.status, + metrics: kibana.metrics + }); + } + }); }; diff --git a/src/plugins/status/public/index.html b/src/server/status/public/index.html similarity index 100% rename from src/plugins/status/public/index.html rename to src/server/status/public/index.html diff --git a/tasks/config/esvm.js b/tasks/config/esvm.js index bb3f8cba1f531..4113d9678556c 100644 --- a/tasks/config/esvm.js +++ b/tasks/config/esvm.js @@ -8,7 +8,7 @@ module.exports = function (grunt) { options: { directory: directory, branch: 'master', - fresh: true, + fresh: !grunt.option('esvm-no-fresh'), config: { path: { data: dataDir diff --git a/tasks/dev.js b/tasks/dev.js index ac9550c402009..74d69ffaca8c8 100644 --- a/tasks/dev.js +++ b/tasks/dev.js @@ -6,7 +6,7 @@ module.exports = function (grunt) { 'less:dev', 'jade', 'esvm:dev', - 'maybe_start_kibana', + 'maybeStartKibana', 'watch' ]; diff --git a/tasks/kibana_server.js b/tasks/devServer.js similarity index 59% rename from tasks/kibana_server.js rename to tasks/devServer.js index b818e991c9071..c7f4653aabf2c 100644 --- a/tasks/kibana_server.js +++ b/tasks/devServer.js @@ -1,8 +1,11 @@ module.exports = function (grunt) { var _ = require('lodash'); - grunt.registerTask('kibana_server', function (keepalive) { - require('./utils/dev_server')(grunt) + grunt.registerTask('devServer', function (keepalive) { + var quiet = !(grunt.option('debug') || grunt.option('verbose')); + var port = grunt.option('port'); + + require('../src/dev_server')(port, quiet) .then(function (server) { grunt.log.ok('Server started: ' + server.info.uri); if (keepalive) { diff --git a/tasks/maybe_start_kibana.js b/tasks/maybeStartKibana.js similarity index 89% rename from tasks/maybe_start_kibana.js rename to tasks/maybeStartKibana.js index 89d372e545cc7..1e38cfea4f55e 100644 --- a/tasks/maybe_start_kibana.js +++ b/tasks/maybeStartKibana.js @@ -15,7 +15,7 @@ module.exports = function (grunt) { function onResponse(res) { grunt.log.debug('Server responded with', res.statusCode); - if (res.statusCode === 200) { + if (res.statusCode === 200 && res.headers['x-app-name'] === 'kibana') { grunt.log.ok('Kibana server already started on port', options.port); } else { grunt.log.error('Another server is already running on port', options.port); @@ -49,9 +49,9 @@ module.exports = function (grunt) { }; }; - grunt.registerTask('maybe_start_kibana', maybeStartServer({ + grunt.registerTask('maybeStartKibana', maybeStartServer({ name: 'kibana-server', port: grunt.option('port') || 5601, - tasks: ['kibana_server'] + tasks: ['devServer'] })); }; diff --git a/tasks/test.js b/tasks/test.js index 1214e62b0474e..04b87b8d2ddec 100644 --- a/tasks/test.js +++ b/tasks/test.js @@ -10,7 +10,7 @@ module.exports = function (grunt) { 'licenses', 'jshint:source', 'jscs:source', - 'maybe_start_kibana', + 'maybeStartKibana', 'jade', 'less:build', 'simplemocha:all', @@ -24,7 +24,7 @@ module.exports = function (grunt) { grunt.registerTask('quick-test', function () { grunt.task.run([ - 'maybe_start_kibana', + 'maybeStartKibana', 'simplemocha:all', 'mocha:unit' ]); @@ -32,12 +32,12 @@ module.exports = function (grunt) { grunt.registerTask('coverage', [ 'blanket', - 'maybe_start_kibana', + 'maybeStartKibana', 'mocha:coverage' ]); grunt.registerTask('test:watch', [ - 'maybe_start_kibana', + 'maybeStartKibana', 'watch:test' ]); }; From 0edf82145cbcf65aeb1ff0b5a0c368ecbf3c505b Mon Sep 17 00:00:00 2001 From: Spencer Alger Date: Thu, 25 Jun 2015 15:44:06 -0700 Subject: [PATCH 008/137] defaultRoute implemented, redirect when missing a slash --- Gruntfile.js | 16 +- package.json | 4 +- src/{server => KbnServer}/.jshintrc | 0 .../index.js => KbnServer/KbnServer.js} | 10 +- src/{server => KbnServer}/cli/index.js | 14 +- .../cli/readYamlConfig.js | 0 src/{server => KbnServer}/config/config.js | 0 src/{server => KbnServer}/config/explodeBy.js | 0 .../config/flattenWith.js | 0 src/{server => KbnServer}/config/index.js | 0 src/{server => KbnServer}/config/override.js | 0 src/{server => KbnServer}/config/schema.js | 2 +- src/KbnServer/http/index.js | 58 ++++++ .../logging/good_reporters/_event_to_json.js | 0 .../logging/good_reporters/console.js | 0 .../logging/good_reporters/file.js | 0 src/{server => KbnServer}/logging/index.js | 0 src/{server => KbnServer}/pid/index.js | 0 src/{server => KbnServer}/plugins/Plugin.js | 2 +- .../plugins/PluginApi.js | 0 src/{server => KbnServer}/plugins/index.js | 0 src/{server => KbnServer}/plugins/load.js | 0 src/{server => KbnServer}/plugins/scan.js | 0 src/{server => KbnServer}/status/KbnStatus.js | 0 .../status/PluginStatus.js | 0 src/{server => KbnServer}/status/Samples.js | 0 src/{server => KbnServer}/status/index.js | 0 src/KbnServer/ui/index.js | 88 ++++++++++ src/KbnServer/ui/lib/UiApp.js | 21 +++ .../ui/lib/UiExports.js} | 29 +-- src/KbnServer/ui/lib/defaultModuleIds.js | 57 ++++++ src/KbnServer/ui/lib/findBowerComponents.js | 20 +++ .../ui/lib/findModuleIds.js} | 10 +- .../ui/public/.jshintrc | 0 .../ui/public/bootstrap.js | 0 .../ui/public/chrome.js | 0 .../agg_response/geo_json/_tooltip.html | 0 .../geo_json/_tooltip_formatter.js | 0 .../agg_response/geo_json/geo_json.js | 0 .../agg_response/geo_json/rowsToFeatures.js | 0 .../hierarchical/_array_to_linked_list.js | 0 .../agg_response/hierarchical/_build_split.js | 0 .../hierarchical/_collect_branch.js | 0 .../hierarchical/_collect_keys.js | 0 .../hierarchical/_create_raw_data.js | 0 .../hierarchical/_extract_buckets.js | 0 .../_hierarchical_tooltip_formatter.js | 0 .../agg_response/hierarchical/_tooltip.html | 0 .../hierarchical/_transform_aggregation.js | 0 .../hierarchical/build_hierarchical_data.js | 0 .../public/components/agg_response/index.js | 0 .../agg_response/point_series/_add_to_siri.js | 0 .../point_series/_fake_x_aspect.js | 0 .../agg_response/point_series/_get_aspects.js | 0 .../agg_response/point_series/_get_point.js | 0 .../agg_response/point_series/_get_series.js | 0 .../agg_response/point_series/_init_x_axis.js | 0 .../agg_response/point_series/_init_y_axis.js | 0 .../point_series/_ordered_date_axis.js | 0 .../agg_response/point_series/_tooltip.html | 0 .../point_series/_tooltip_formatter.js | 0 .../agg_response/point_series/point_series.js | 0 .../agg_response/tabify/_buckets.js | 0 .../agg_response/tabify/_get_columns.js | 0 .../agg_response/tabify/_response_writer.js | 0 .../components/agg_response/tabify/_table.js | 0 .../agg_response/tabify/_table_group.js | 0 .../components/agg_response/tabify/tabify.js | 0 .../components/agg_table/agg_table.html | 0 .../public/components/agg_table/agg_table.js | 0 .../components/agg_table/agg_table.less | 0 .../components/agg_table/agg_table_group.html | 0 .../components/agg_table/agg_table_group.js | 0 .../ui/public/components/agg_types/README.md | 0 .../components/agg_types/_agg_params.js | 0 .../public/components/agg_types/_agg_type.js | 0 .../agg_types/buckets/_bucket_agg_type.js | 0 .../buckets/_bucket_count_between.js | 0 .../agg_types/buckets/_interval_options.js | 0 .../buckets/create_filter/date_histogram.js | 0 .../buckets/create_filter/date_range.js | 0 .../buckets/create_filter/filters.js | 0 .../buckets/create_filter/histogram.js | 0 .../buckets/create_filter/ip_range.js | 0 .../agg_types/buckets/create_filter/range.js | 0 .../agg_types/buckets/create_filter/terms.js | 0 .../agg_types/buckets/date_histogram.js | 0 .../agg_types/buckets/date_range.js | 0 .../components/agg_types/buckets/filters.js | 0 .../components/agg_types/buckets/geo_hash.js | 0 .../components/agg_types/buckets/histogram.js | 0 .../components/agg_types/buckets/ip_range.js | 0 .../components/agg_types/buckets/range.js | 0 .../agg_types/buckets/significant_terms.js | 0 .../components/agg_types/buckets/terms.js | 0 .../agg_types/controls/date_ranges.html | 0 .../agg_types/controls/extended_bounds.html | 0 .../components/agg_types/controls/field.html | 0 .../agg_types/controls/filters.html | 0 .../agg_types/controls/interval.html | 0 .../agg_types/controls/ip_ranges.html | 0 .../agg_types/controls/min_doc_count.html | 0 .../agg_types/controls/order_agg.html | 0 .../agg_types/controls/order_and_size.html | 0 .../agg_types/controls/percentile_ranks.html | 0 .../agg_types/controls/percentiles.html | 0 .../agg_types/controls/precision.html | 0 .../components/agg_types/controls/ranges.html | 0 .../agg_types/controls/raw_json.html | 0 .../controls/regular_expression.html | 0 .../components/agg_types/controls/string.html | 0 .../ui/public/components/agg_types/index.js | 0 .../metrics/_get_response_agg_config.js | 0 .../agg_types/metrics/_metric_agg_type.js | 0 .../components/agg_types/metrics/avg.js | 0 .../agg_types/metrics/cardinality.js | 0 .../components/agg_types/metrics/count.js | 0 .../components/agg_types/metrics/max.js | 0 .../components/agg_types/metrics/min.js | 0 .../agg_types/metrics/percentile_ranks.js | 0 .../agg_types/metrics/percentiles.js | 0 .../agg_types/metrics/std_deviation.js | 0 .../components/agg_types/metrics/sum.js | 0 .../components/agg_types/param_types/base.js | 0 .../components/agg_types/param_types/field.js | 0 .../agg_types/param_types/optioned.js | 0 .../agg_types/param_types/raw_json.js | 0 .../components/agg_types/param_types/regex.js | 0 .../agg_types/param_types/string.js | 0 .../ui/public/components/bind.js | 0 .../public/components/bound_to_config_obj.js | 0 .../ui/public/components/chrome/Tab.js | 0 .../public/components/chrome/TabCollection.js | 0 .../ui/public/components/chrome/chrome.html | 2 +- .../components/chrome/config/filter.html | 0 .../components/chrome/config/interval.html | 0 .../components/clipboard/clipboard.html | 0 .../public/components/clipboard/clipboard.js | 0 .../collapsible_sidebar.js | 0 .../collapsible_sidebar.less | 0 .../components/compile_recursive_directive.js | 0 .../components/config/_delayed_updater.js | 0 .../ui/public/components/config/_vals.js | 0 .../ui/public/components/config/config.js | 0 .../ui/public/components/config/defaults.js | 0 .../components/config/migrations/_empty_ | 0 .../components/courier/_error_handlers.js | 0 .../courier/_redirect_when_missing.js | 0 .../components/courier/_request_queue.js | 0 .../ui/public/components/courier/courier.js | 0 .../courier/data_source/_abstract.js | 0 .../courier/data_source/_decorate_query.js | 0 .../courier/data_source/_doc_send_to_es.js | 0 .../data_source/_normalize_sort_request.js | 0 .../data_source/_root_search_source.js | 0 .../courier/data_source/doc_source.js | 0 .../courier/data_source/search_source.js | 0 .../components/courier/fetch/_call_client.js | 0 .../courier/fetch/_call_response_handlers.js | 0 .../courier/fetch/_continue_incomplete.js | 0 .../components/courier/fetch/_fetch_these.js | 0 .../courier/fetch/_for_each_strategy.js | 0 .../components/courier/fetch/_is_request.js | 0 .../fetch/_merge_duplicate_requests.js | 0 .../components/courier/fetch/_notifier.js | 0 .../components/courier/fetch/_req_status.js | 0 .../public/components/courier/fetch/fetch.js | 0 .../courier/fetch/request/_error_handler.js | 0 .../fetch/request/_segmented_handle.js | 0 .../components/courier/fetch/request/doc.js | 0 .../courier/fetch/request/request.js | 0 .../courier/fetch/request/search.js | 0 .../courier/fetch/request/segmented.js | 0 .../components/courier/fetch/strategy/doc.js | 0 .../courier/fetch/strategy/search.js | 0 .../components/courier/looper/_looper.js | 0 .../public/components/courier/looper/doc.js | 0 .../components/courier/looper/search.js | 0 .../courier/saved_object/saved_object.js | 0 .../ui/public/components/debounce.js | 0 .../doc_table/components/table_header.html | 0 .../doc_table/components/table_header.js | 0 .../doc_table/components/table_row.js | 0 .../doc_table/components/table_row/cell.html | 0 .../components/table_row/details.html | 0 .../doc_table/components/table_row/open.html | 0 .../components/doc_table/doc_table.html | 0 .../public/components/doc_table/doc_table.js | 0 .../components/doc_table/doc_table.less | 0 .../components/doc_table/lib/get_sort.js | 0 .../public/components/doc_title/doc_title.js | 0 .../components/doc_viewer/doc_viewer.html | 0 .../components/doc_viewer/doc_viewer.js | 0 .../components/doc_viewer/doc_viewer.less | 0 .../ui/public/components/elastic_textarea.js | 0 .../ui/public/components/errors.js | 0 .../ui/public/components/es.js | 0 .../ui/public/components/events.js | 0 .../components/fancy_forms/fancy_forms.js | 0 .../public/components/fancy_forms/kbn_form.js | 0 .../components/fancy_forms/kbn_model.js | 0 .../components/field_editor/field_editor.html | 0 .../components/field_editor/field_editor.js | 0 .../field_editor/scripting_info.html | 0 .../field_editor/scripting_warning.html | 0 .../field_format_editor.js | 0 .../field_format_editor/numeral/numeral.html | 0 .../field_format_editor/numeral/numeral.js | 0 .../field_format_editor/pattern/pattern.html | 0 .../field_format_editor/pattern/pattern.js | 0 .../field_format_editor/samples/samples.html | 0 .../field_format_editor/samples/samples.js | 0 .../components/filter_bar/filter_bar.html | 0 .../components/filter_bar/filter_bar.js | 0 .../components/filter_bar/filter_bar.less | 0 .../filter_bar/filter_bar_click_handler.js | 0 .../filter_bar/lib/changeTimeFilter.js | 0 .../filter_bar/lib/compareFilters.js | 0 .../components/filter_bar/lib/dedupFilters.js | 0 .../filter_bar/lib/extractTimeFilter.js | 0 .../filter_bar/lib/filterAppliedAndUnwrap.js | 0 .../lib/filterOutTimeBasedFilter.js | 0 .../filter_bar/lib/generateMappingChain.js | 0 .../filter_bar/lib/mapAndFlattenFilters.js | 0 .../components/filter_bar/lib/mapDefault.js | 0 .../components/filter_bar/lib/mapExists.js | 0 .../components/filter_bar/lib/mapFilter.js | 0 .../lib/mapFlattenAndWrapFilters.js | 0 .../filter_bar/lib/mapGeoBoundingBox.js | 0 .../components/filter_bar/lib/mapMissing.js | 0 .../filter_bar/lib/mapQueryString.js | 0 .../components/filter_bar/lib/mapRange.js | 0 .../components/filter_bar/lib/mapScript.js | 0 .../components/filter_bar/lib/mapTerms.js | 0 .../components/filter_bar/lib/onlyDisabled.js | 0 .../filter_bar/lib/onlyStateChanged.js | 0 .../components/filter_bar/lib/remapFilters.js | 0 .../components/filter_bar/lib/uniqFilters.js | 0 .../components/filter_bar/push_filter.js | 0 .../components/filter_bar/query_filter.js | 0 .../filter_manager/filter_manager.js | 0 .../components/filter_manager/lib/phrase.js | 0 .../components/filter_manager/lib/query.js | 0 .../components/filter_manager/lib/range.js | 0 .../ui/public/components/fixedScroll.js | 0 .../public/components/highlight/highlight.js | 0 .../components/highlight/highlight_tags.js | 0 .../index_patterns/_cast_mapping_type.js | 0 .../components/index_patterns/_ensure_some.js | 0 .../components/index_patterns/_field.js | 0 .../_field_format/FieldFormat.js | 0 .../_field_format/contentTypes.js | 0 .../components/index_patterns/_field_list.js | 0 .../components/index_patterns/_field_types.js | 0 .../components/index_patterns/_flatten_hit.js | 0 .../components/index_patterns/_format_hit.js | 0 .../index_patterns/_get_computed_fields.js | 0 .../components/index_patterns/_get_ids.js | 0 .../index_patterns/_index_pattern.js | 0 .../components/index_patterns/_intervals.js | 0 .../components/index_patterns/_local_cache.js | 0 .../components/index_patterns/_map_field.js | 0 .../components/index_patterns/_mapper.js | 0 .../index_patterns/_object.tmpl.html | 0 .../index_patterns/_pattern_cache.js | 0 .../index_patterns/_pattern_to_wildcard.js | 0 .../_transform_mapping_into_fields.js | 0 .../index_patterns/index_patterns.js | 2 +- .../components/indexed_array/_inflector.js | 0 .../components/indexed_array/_path_getter.js | 0 .../public/components/indexed_array/index.js | 0 .../ui/public/components/listen.js | 0 .../ui/public/components/modules.js | 0 .../ui/public/components/notify/_errors.js | 0 .../ui/public/components/notify/_notifier.js | 0 .../ui/public/components/notify/directives.js | 0 .../ui/public/components/notify/notify.js | 0 .../components/notify/partials/fatal.html | 0 .../notify/partials/fatal_splash_screen.html | 0 .../components/notify/partials/toaster.html | 0 .../components/number_list/number_list.html | 0 .../components/number_list/number_list.js | 0 .../number_list/number_list_input.js | 0 .../paginated_table/paginated_table.html | 0 .../paginated_table/paginated_table.js | 0 .../components/persisted_log/persisted_log.js | 0 .../ui/public/components/private.js | 0 .../ui/public/components/promises.js | 0 .../ui/public/components/reflow_watcher.js | 0 .../ui/public/components/routes/_setup.js | 4 +- .../public/components/routes/_work_queue.js | 0 .../routes/_wrap_route_with_prep.js | 0 .../ui/public/components/routes/index.js | 0 .../state_management/_state_sync.js | 0 .../components/state_management/app_state.js | 0 .../state_management/global_state.js | 0 .../components/state_management/state.js | 0 .../ui/public/components/storage/storage.js | 0 .../ui/public/components/stringify/.jshintrc | 0 .../components/stringify/editors/date.html | 0 .../components/stringify/editors/string.html | 0 .../components/stringify/editors/url.html | 0 .../public/components/stringify/icons/cv.png | Bin .../public/components/stringify/icons/de.png | Bin .../stringify/icons/flag-icon.LICENSE | 0 .../public/components/stringify/icons/go.png | Bin .../public/components/stringify/icons/ne.png | Bin .../public/components/stringify/icons/ni.png | Bin .../components/stringify/icons/stop.png | Bin .../public/components/stringify/icons/us.png | Bin .../public/components/stringify/register.js | 0 .../components/stringify/types/Bytes.js | 0 .../public/components/stringify/types/Date.js | 0 .../public/components/stringify/types/Ip.js | 0 .../components/stringify/types/Number.js | 0 .../components/stringify/types/Percent.js | 0 .../components/stringify/types/Source.js | 0 .../components/stringify/types/String.js | 0 .../public/components/stringify/types/Url.js | 0 .../components/stringify/types/_Numeral.js | 0 .../components/stringify/types/_source.html | 0 .../style_compile/style_compile.css.tmpl | 0 .../components/style_compile/style_compile.js | 0 .../template_vis_type/TemplateRenderbot.js | 0 .../template_vis_type/TemplateVisType.js | 0 .../time_buckets/calc_auto_interval.js | 0 .../time_buckets/calc_es_interval.js | 0 .../components/time_buckets/time_buckets.js | 0 .../timefilter/lib/diff_interval.js | 0 .../components/timefilter/lib/diff_time.js | 0 .../components/timefilter/timefilter.js | 0 .../components/timepicker/quick_ranges.js | 0 .../timepicker/refresh_intervals.js | 0 .../components/timepicker/time_units.js | 0 .../components/timepicker/timepicker.html | 0 .../components/timepicker/timepicker.js | 0 .../ui/public/components/tooltip/tooltip.html | 0 .../ui/public/components/tooltip/tooltip.js | 0 .../ui/public/components/typeahead/_input.js | 0 .../ui/public/components/typeahead/_items.js | 0 .../typeahead/partials/typeahead-items.html | 0 .../public/components/typeahead/typeahead.js | 0 .../components/typeahead/typeahead.less | 0 .../ui/public/components/url/url.js | 0 .../public/components/validateDateInterval.js | 0 .../validate_query/lib/from_user.js | 0 .../components/validate_query/lib/to_user.js | 0 .../validate_query/validate_query.js | 0 .../ui/public/components/vis/AggConfig.js | 0 .../public/components/vis/AggConfigResult.js | 0 .../ui/public/components/vis/AggConfigs.js | 0 .../ui/public/components/vis/Renderbot.js | 0 .../ui/public/components/vis/Schemas.js | 0 .../ui/public/components/vis/VisType.js | 0 .../ui/public/components/vis/vis.js | 0 .../vislib/components/color/color.js | 0 .../vislib/components/color/color_palette.js | 0 .../vislib/components/color/seed_colors.js | 0 .../vislib/components/labels/data_array.js | 0 .../components/labels/flatten_series.js | 0 .../vislib/components/labels/labels.js | 0 .../vislib/components/labels/uniq_labels.js | 0 .../components/tooltip/_position_tooltip.js | 0 .../vislib/components/tooltip/tooltip.js | 0 .../components/zero_injection/flatten_data.js | 0 .../components/zero_injection/inject_zeros.js | 0 .../zero_injection/ordered_x_keys.js | 0 .../components/zero_injection/uniq_keys.js | 0 .../zero_injection/zero_fill_data_array.js | 0 .../zero_injection/zero_filled_array.js | 0 .../ui/public/components/vislib/index.js | 0 .../components/vislib/lib/_data_label.js | 0 .../components/vislib/lib/_error_handler.js | 0 .../ui/public/components/vislib/lib/alerts.js | 0 .../components/vislib/lib/axis_title.js | 0 .../components/vislib/lib/chart_title.js | 0 .../ui/public/components/vislib/lib/data.js | 0 .../public/components/vislib/lib/dispatch.js | 0 .../components/vislib/lib/handler/handler.js | 0 .../vislib/lib/handler/handler_types.js | 0 .../vislib/lib/handler/types/pie.js | 0 .../vislib/lib/handler/types/point_series.js | 0 .../vislib/lib/handler/types/tile_map.js | 0 .../components/vislib/lib/layout/layout.js | 0 .../vislib/lib/layout/layout_types.js | 0 .../layout/splits/column_chart/chart_split.js | 0 .../splits/column_chart/chart_title_split.js | 0 .../splits/column_chart/x_axis_split.js | 0 .../splits/column_chart/y_axis_split.js | 0 .../layout/splits/pie_chart/chart_split.js | 0 .../splits/pie_chart/chart_title_split.js | 0 .../lib/layout/splits/tile_map/map_split.js | 0 .../vislib/lib/layout/types/column_layout.js | 0 .../vislib/lib/layout/types/map_layout.js | 0 .../vislib/lib/layout/types/pie_layout.js | 0 .../ui/public/components/vislib/lib/legend.js | 0 .../components/vislib/lib/resize_checker.js | 0 .../ui/public/components/vislib/lib/x_axis.js | 0 .../ui/public/components/vislib/lib/y_axis.js | 0 .../vislib/partials/legend_header.html | 0 .../vislib/partials/touchdown.tmpl.html | 0 .../components/vislib/styles/_alerts.less | 0 .../components/vislib/styles/_error.less | 0 .../components/vislib/styles/_layout.less | 0 .../components/vislib/styles/_legend.less | 0 .../public/components/vislib/styles/_svg.less | 0 .../components/vislib/styles/_tilemap.less | 0 .../components/vislib/styles/_tooltip.less | 0 .../public/components/vislib/styles/main.less | 0 .../ui/public/components/vislib/vis.js | 0 .../vislib/visualizations/_chart.js | 0 .../visualizations/_point_series_chart.js | 0 .../vislib/visualizations/area_chart.js | 0 .../vislib/visualizations/column_chart.js | 0 .../vislib/visualizations/line_chart.js | 0 .../vislib/visualizations/pie_chart.js | 0 .../vislib/visualizations/tile_map.js | 0 .../vislib/visualizations/time_marker.js | 0 .../vislib/visualizations/vis_types.js | 0 .../vislib_vis_type/VislibRenderbot.js | 0 .../vislib_vis_type/VislibVisType.js | 0 .../vislib_vis_type/buildChartData.js | 0 .../visualize/spy/_req_resp_stats.html | 0 .../visualize/spy/_req_resp_stats.js | 0 .../public/components/visualize/spy/_spy.html | 0 .../components/visualize/spy/_table.html | 0 .../public/components/visualize/spy/_table.js | 0 .../ui/public/components/visualize/spy/spy.js | 0 .../components/visualize/visualize.html | 0 .../public/components/visualize/visualize.js | 0 .../components/visualize/visualize.less | 0 .../ui/public/components/watch_multi.js | 0 .../directives/auto_select_if_only_one.js | 0 .../ui/public/directives/click_focus.js | 0 .../ui/public/directives/config.js | 0 .../ui/public/directives/confirm_click.js | 0 .../ui/public/directives/css_truncate.js | 0 .../ui/public/directives/field_name.js | 0 .../ui/public/directives/file_upload.js | 0 .../ui/public/directives/inequality.js | 0 .../ui/public/directives/infinite_scroll.js | 0 .../ui/public/directives/info.js | 0 .../ui/public/directives/input_datetime.js | 0 .../ui/public/directives/input_focus.js | 0 .../public/directives/input_whole_number.js | 0 .../ui/public/directives/paginate.js | 0 .../ui/public/directives/pretty_duration.js | 0 .../ui/public/directives/rows.js | 0 .../public/directives/saved_object_finder.js | 0 .../ui/public/directives/spinner.js | 0 .../ui/public/directives/truncated.js | 0 .../public/directives/validate_cidr_mask.js | 0 .../public/directives/validate_date_math.js | 0 .../public/directives/validate_index_name.js | 0 .../ui/public/directives/validate_ip.js | 0 .../ui/public/directives/validate_json.js | 0 .../ui/public/filters/_prop_filter.js | 0 .../ui/public/filters/commaList.js | 0 .../ui/public/filters/field_type.js | 0 .../ui/public/filters/label.js | 0 .../ui/public/filters/match_any.js | 0 .../ui/public/filters/moment.js | 0 .../ui/public/filters/rison.js | 0 .../ui/public/filters/short_dots.js | 0 .../ui/public/filters/start_from.js | 0 .../ui/public/filters/trust_as_html.js | 0 .../ui/public/filters/unique.js | 0 .../ui/public/filters/uriescape.js | 0 .../ui/public/images/initial_load.gif | Bin .../ui/public/images/kibana.png | Bin .../ui/public/partials/global_config.html | 0 .../ui/public/partials/info.html | 0 .../ui/public/partials/nav_config.html | 0 .../ui/public/partials/paginate_controls.html | 0 .../public/partials/saved_object_finder.html | 0 .../public/partials/truncate_by_height.html | 0 .../ui/public/registry/_registry.js | 0 .../ui/public/registry/apps.js | 0 .../ui/public/registry/field_formats.js | 0 .../ui/public/registry/spy_modes.js | 0 .../ui/public/registry/vis_types.js | 0 .../ui/public/require.config.js | 0 .../ui/public/ui-styles/_bootstrap.less | 0 .../ui/public/ui-styles/_callout.less | 0 .../ui/public/ui-styles/_control_group.less | 0 .../ui/public/ui-styles/_font_icons.less | 0 .../ui/public/ui-styles/_glyphicons.less | 0 .../ui/public/ui-styles/_hintbox.less | 0 .../ui/public/ui-styles/_input.less | 0 .../ui/public/ui-styles/_mixins.less | 0 .../ui/public/ui-styles/_navbar.less | 0 .../ui/public/ui-styles/_notify.less | 0 .../ui/public/ui-styles/_pagination.less | 0 .../ui/public/ui-styles/_sidebar.less | 0 .../ui/public/ui-styles/_spinner.less | 0 .../ui/public/ui-styles/_table.less | 0 .../ui/public/ui-styles/_truncate.less | 0 .../ui/public/ui-styles/_variables.less | 0 .../ui/public/ui-styles/main.less | 0 .../ui/public/ui-styles/theme/_theme.less | 0 .../ui/public/ui-styles/theme/_variables.less | 0 .../ui/public/ui-styles/theme/elk.ico | Bin .../ui/public/utils/BaseObject.js | 0 .../ui/public/utils/SimpleEmitter.js | 0 .../ui/public/utils/add_word_breaks.js | 0 .../ui/public/utils/brush_event.js | 0 .../ui/public/utils/cidr_mask.js | 0 .../ui/public/utils/config_template.js | 0 .../ui/public/utils/date_range.js | 0 .../ui/public/utils/datemath.js | 0 .../ui/public/utils/decode_geo_hash.js | 0 .../ui/public/utils/diff_object.js | 0 .../ui/public/utils/diff_time_picker_vals.js | 0 .../ui/public/utils/esBool.js | 0 .../ui/public/utils/ipv4_address.js | 0 .../ui/public/utils/key_map.js | 0 .../public/utils/lodash-mixins/collection.js | 0 .../ui/public/utils/lodash-mixins/function.js | 0 .../ui/public/utils/lodash-mixins/index.js | 0 .../ui/public/utils/lodash-mixins/lang.js | 0 .../ui/public/utils/lodash-mixins/object.js | 0 .../ui/public/utils/lodash-mixins/oop.js | 0 .../ui/public/utils/lodash-mixins/string.js | 0 .../ui/public/utils/mapping_setup.js | 0 .../ui/public/utils/no_white_space.js | 0 .../ui/public/utils/obj_define.js | 0 .../ui/public/utils/ordinal_suffix.js | 0 .../ui/public/utils/parse_interval.js | 0 .../ui/public/utils/query_string.js | 0 .../ui/public/utils/range.js | 0 .../ui/public/utils/rison.js | 0 .../ui/public/utils/sequencer.js | 0 .../ui/public/utils/slugify_id.js | 0 .../ui/public/utils/supports.js | 0 .../ui/public/utils/versionmath.js | 0 .../ui/views/bootstrap.jade | 2 +- .../utils/closestPackageJson.js | 0 src/KbnServer/views/index.jade | 6 + src/bin/kibana.sh | 2 +- src/dev_server/index.js | 2 +- src/plugins/kbn_vislib_vis_types/index.js | 2 +- src/plugins/kibana/index.js | 2 +- .../kibana/public/dashboard/styles/main.less | 2 +- src/plugins/kibana/public/index.js | 5 + src/plugins/markdown_vis/index.js | 2 +- src/plugins/metric_vis/index.js | 2 +- src/plugins/table_vis/index.js | 2 +- src/plugins/ui/bower.json | 37 ---- src/plugins/ui/index.js | 165 ------------------ src/plugins/ui/package.json | 4 - src/server/connections/index.js | 32 ---- src/server/fe-exports/FeApp.js | 23 --- src/server/fe-exports/index.js | 10 -- src/server/status/public/index.html | 9 - tasks/build.js | 1 - tasks/config/less.js | 2 +- tasks/config/replace.js | 8 - tasks/config/watch.js | 6 +- 558 files changed, 322 insertions(+), 343 deletions(-) rename src/{server => KbnServer}/.jshintrc (100%) rename src/{server/index.js => KbnServer/KbnServer.js} (87%) rename src/{server => KbnServer}/cli/index.js (82%) rename src/{server => KbnServer}/cli/readYamlConfig.js (100%) rename src/{server => KbnServer}/config/config.js (100%) rename src/{server => KbnServer}/config/explodeBy.js (100%) rename src/{server => KbnServer}/config/flattenWith.js (100%) rename src/{server => KbnServer}/config/index.js (100%) rename src/{server => KbnServer}/config/override.js (100%) rename src/{server => KbnServer}/config/schema.js (97%) create mode 100644 src/KbnServer/http/index.js rename src/{server => KbnServer}/logging/good_reporters/_event_to_json.js (100%) rename src/{server => KbnServer}/logging/good_reporters/console.js (100%) rename src/{server => KbnServer}/logging/good_reporters/file.js (100%) rename src/{server => KbnServer}/logging/index.js (100%) rename src/{server => KbnServer}/pid/index.js (100%) rename src/{server => KbnServer}/plugins/Plugin.js (97%) rename src/{server => KbnServer}/plugins/PluginApi.js (100%) rename src/{server => KbnServer}/plugins/index.js (100%) rename src/{server => KbnServer}/plugins/load.js (100%) rename src/{server => KbnServer}/plugins/scan.js (100%) rename src/{server => KbnServer}/status/KbnStatus.js (100%) rename src/{server => KbnServer}/status/PluginStatus.js (100%) rename src/{server => KbnServer}/status/Samples.js (100%) rename src/{server => KbnServer}/status/index.js (100%) create mode 100644 src/KbnServer/ui/index.js create mode 100644 src/KbnServer/ui/lib/UiApp.js rename src/{server/fe-exports/FeExports.js => KbnServer/ui/lib/UiExports.js} (63%) create mode 100644 src/KbnServer/ui/lib/defaultModuleIds.js create mode 100644 src/KbnServer/ui/lib/findBowerComponents.js rename src/{plugins/ui/foundModuleIds.js => KbnServer/ui/lib/findModuleIds.js} (83%) rename src/{plugins => KbnServer}/ui/public/.jshintrc (100%) rename src/{plugins => KbnServer}/ui/public/bootstrap.js (100%) rename src/{plugins => KbnServer}/ui/public/chrome.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/geo_json/_tooltip.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/geo_json/_tooltip_formatter.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/geo_json/geo_json.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/geo_json/rowsToFeatures.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/hierarchical/_array_to_linked_list.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/hierarchical/_build_split.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/hierarchical/_collect_branch.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/hierarchical/_collect_keys.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/hierarchical/_create_raw_data.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/hierarchical/_extract_buckets.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/hierarchical/_tooltip.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/hierarchical/_transform_aggregation.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/hierarchical/build_hierarchical_data.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/index.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/point_series/_add_to_siri.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/point_series/_fake_x_aspect.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/point_series/_get_aspects.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/point_series/_get_point.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/point_series/_get_series.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/point_series/_init_x_axis.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/point_series/_init_y_axis.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/point_series/_ordered_date_axis.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/point_series/_tooltip.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/point_series/_tooltip_formatter.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/point_series/point_series.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/tabify/_buckets.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/tabify/_get_columns.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/tabify/_response_writer.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/tabify/_table.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/tabify/_table_group.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_response/tabify/tabify.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_table/agg_table.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_table/agg_table.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_table/agg_table.less (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_table/agg_table_group.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_table/agg_table_group.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/README.md (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/_agg_params.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/_agg_type.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/buckets/_bucket_agg_type.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/buckets/_bucket_count_between.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/buckets/_interval_options.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/buckets/create_filter/date_histogram.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/buckets/create_filter/date_range.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/buckets/create_filter/filters.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/buckets/create_filter/histogram.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/buckets/create_filter/ip_range.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/buckets/create_filter/range.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/buckets/create_filter/terms.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/buckets/date_histogram.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/buckets/date_range.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/buckets/filters.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/buckets/geo_hash.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/buckets/histogram.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/buckets/ip_range.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/buckets/range.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/buckets/significant_terms.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/buckets/terms.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/controls/date_ranges.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/controls/extended_bounds.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/controls/field.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/controls/filters.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/controls/interval.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/controls/ip_ranges.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/controls/min_doc_count.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/controls/order_agg.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/controls/order_and_size.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/controls/percentile_ranks.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/controls/percentiles.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/controls/precision.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/controls/ranges.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/controls/raw_json.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/controls/regular_expression.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/controls/string.html (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/index.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/metrics/_get_response_agg_config.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/metrics/_metric_agg_type.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/metrics/avg.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/metrics/cardinality.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/metrics/count.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/metrics/max.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/metrics/min.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/metrics/percentile_ranks.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/metrics/percentiles.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/metrics/std_deviation.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/metrics/sum.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/param_types/base.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/param_types/field.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/param_types/optioned.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/param_types/raw_json.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/param_types/regex.js (100%) rename src/{plugins => KbnServer}/ui/public/components/agg_types/param_types/string.js (100%) rename src/{plugins => KbnServer}/ui/public/components/bind.js (100%) rename src/{plugins => KbnServer}/ui/public/components/bound_to_config_obj.js (100%) rename src/{plugins => KbnServer}/ui/public/components/chrome/Tab.js (100%) rename src/{plugins => KbnServer}/ui/public/components/chrome/TabCollection.js (100%) rename src/{plugins => KbnServer}/ui/public/components/chrome/chrome.html (96%) rename src/{plugins => KbnServer}/ui/public/components/chrome/config/filter.html (100%) rename src/{plugins => KbnServer}/ui/public/components/chrome/config/interval.html (100%) rename src/{plugins => KbnServer}/ui/public/components/clipboard/clipboard.html (100%) rename src/{plugins => KbnServer}/ui/public/components/clipboard/clipboard.js (100%) rename src/{plugins => KbnServer}/ui/public/components/collapsible_sidebar/collapsible_sidebar.js (100%) rename src/{plugins => KbnServer}/ui/public/components/collapsible_sidebar/collapsible_sidebar.less (100%) rename src/{plugins => KbnServer}/ui/public/components/compile_recursive_directive.js (100%) rename src/{plugins => KbnServer}/ui/public/components/config/_delayed_updater.js (100%) rename src/{plugins => KbnServer}/ui/public/components/config/_vals.js (100%) rename src/{plugins => KbnServer}/ui/public/components/config/config.js (100%) rename src/{plugins => KbnServer}/ui/public/components/config/defaults.js (100%) rename src/{plugins => KbnServer}/ui/public/components/config/migrations/_empty_ (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/_error_handlers.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/_redirect_when_missing.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/_request_queue.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/courier.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/data_source/_abstract.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/data_source/_decorate_query.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/data_source/_doc_send_to_es.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/data_source/_normalize_sort_request.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/data_source/_root_search_source.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/data_source/doc_source.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/data_source/search_source.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/fetch/_call_client.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/fetch/_call_response_handlers.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/fetch/_continue_incomplete.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/fetch/_fetch_these.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/fetch/_for_each_strategy.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/fetch/_is_request.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/fetch/_merge_duplicate_requests.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/fetch/_notifier.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/fetch/_req_status.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/fetch/fetch.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/fetch/request/_error_handler.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/fetch/request/_segmented_handle.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/fetch/request/doc.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/fetch/request/request.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/fetch/request/search.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/fetch/request/segmented.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/fetch/strategy/doc.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/fetch/strategy/search.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/looper/_looper.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/looper/doc.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/looper/search.js (100%) rename src/{plugins => KbnServer}/ui/public/components/courier/saved_object/saved_object.js (100%) rename src/{plugins => KbnServer}/ui/public/components/debounce.js (100%) rename src/{plugins => KbnServer}/ui/public/components/doc_table/components/table_header.html (100%) rename src/{plugins => KbnServer}/ui/public/components/doc_table/components/table_header.js (100%) rename src/{plugins => KbnServer}/ui/public/components/doc_table/components/table_row.js (100%) rename src/{plugins => KbnServer}/ui/public/components/doc_table/components/table_row/cell.html (100%) rename src/{plugins => KbnServer}/ui/public/components/doc_table/components/table_row/details.html (100%) rename src/{plugins => KbnServer}/ui/public/components/doc_table/components/table_row/open.html (100%) rename src/{plugins => KbnServer}/ui/public/components/doc_table/doc_table.html (100%) rename src/{plugins => KbnServer}/ui/public/components/doc_table/doc_table.js (100%) rename src/{plugins => KbnServer}/ui/public/components/doc_table/doc_table.less (100%) rename src/{plugins => KbnServer}/ui/public/components/doc_table/lib/get_sort.js (100%) rename src/{plugins => KbnServer}/ui/public/components/doc_title/doc_title.js (100%) rename src/{plugins => KbnServer}/ui/public/components/doc_viewer/doc_viewer.html (100%) rename src/{plugins => KbnServer}/ui/public/components/doc_viewer/doc_viewer.js (100%) rename src/{plugins => KbnServer}/ui/public/components/doc_viewer/doc_viewer.less (100%) rename src/{plugins => KbnServer}/ui/public/components/elastic_textarea.js (100%) rename src/{plugins => KbnServer}/ui/public/components/errors.js (100%) rename src/{plugins => KbnServer}/ui/public/components/es.js (100%) rename src/{plugins => KbnServer}/ui/public/components/events.js (100%) rename src/{plugins => KbnServer}/ui/public/components/fancy_forms/fancy_forms.js (100%) rename src/{plugins => KbnServer}/ui/public/components/fancy_forms/kbn_form.js (100%) rename src/{plugins => KbnServer}/ui/public/components/fancy_forms/kbn_model.js (100%) rename src/{plugins => KbnServer}/ui/public/components/field_editor/field_editor.html (100%) rename src/{plugins => KbnServer}/ui/public/components/field_editor/field_editor.js (100%) rename src/{plugins => KbnServer}/ui/public/components/field_editor/scripting_info.html (100%) rename src/{plugins => KbnServer}/ui/public/components/field_editor/scripting_warning.html (100%) rename src/{plugins => KbnServer}/ui/public/components/field_format_editor/field_format_editor.js (100%) rename src/{plugins => KbnServer}/ui/public/components/field_format_editor/numeral/numeral.html (100%) rename src/{plugins => KbnServer}/ui/public/components/field_format_editor/numeral/numeral.js (100%) rename src/{plugins => KbnServer}/ui/public/components/field_format_editor/pattern/pattern.html (100%) rename src/{plugins => KbnServer}/ui/public/components/field_format_editor/pattern/pattern.js (100%) rename src/{plugins => KbnServer}/ui/public/components/field_format_editor/samples/samples.html (100%) rename src/{plugins => KbnServer}/ui/public/components/field_format_editor/samples/samples.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/filter_bar.html (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/filter_bar.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/filter_bar.less (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/filter_bar_click_handler.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/changeTimeFilter.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/compareFilters.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/dedupFilters.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/extractTimeFilter.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/filterAppliedAndUnwrap.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/filterOutTimeBasedFilter.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/generateMappingChain.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/mapAndFlattenFilters.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/mapDefault.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/mapExists.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/mapFilter.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/mapFlattenAndWrapFilters.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/mapGeoBoundingBox.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/mapMissing.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/mapQueryString.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/mapRange.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/mapScript.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/mapTerms.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/onlyDisabled.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/onlyStateChanged.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/remapFilters.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/lib/uniqFilters.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/push_filter.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_bar/query_filter.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_manager/filter_manager.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_manager/lib/phrase.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_manager/lib/query.js (100%) rename src/{plugins => KbnServer}/ui/public/components/filter_manager/lib/range.js (100%) rename src/{plugins => KbnServer}/ui/public/components/fixedScroll.js (100%) rename src/{plugins => KbnServer}/ui/public/components/highlight/highlight.js (100%) rename src/{plugins => KbnServer}/ui/public/components/highlight/highlight_tags.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_cast_mapping_type.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_ensure_some.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_field.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_field_format/FieldFormat.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_field_format/contentTypes.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_field_list.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_field_types.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_flatten_hit.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_format_hit.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_get_computed_fields.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_get_ids.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_index_pattern.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_intervals.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_local_cache.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_map_field.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_mapper.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_object.tmpl.html (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_pattern_cache.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_pattern_to_wildcard.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/_transform_mapping_into_fields.js (100%) rename src/{plugins => KbnServer}/ui/public/components/index_patterns/index_patterns.js (98%) rename src/{plugins => KbnServer}/ui/public/components/indexed_array/_inflector.js (100%) rename src/{plugins => KbnServer}/ui/public/components/indexed_array/_path_getter.js (100%) rename src/{plugins => KbnServer}/ui/public/components/indexed_array/index.js (100%) rename src/{plugins => KbnServer}/ui/public/components/listen.js (100%) rename src/{plugins => KbnServer}/ui/public/components/modules.js (100%) rename src/{plugins => KbnServer}/ui/public/components/notify/_errors.js (100%) rename src/{plugins => KbnServer}/ui/public/components/notify/_notifier.js (100%) rename src/{plugins => KbnServer}/ui/public/components/notify/directives.js (100%) rename src/{plugins => KbnServer}/ui/public/components/notify/notify.js (100%) rename src/{plugins => KbnServer}/ui/public/components/notify/partials/fatal.html (100%) rename src/{plugins => KbnServer}/ui/public/components/notify/partials/fatal_splash_screen.html (100%) rename src/{plugins => KbnServer}/ui/public/components/notify/partials/toaster.html (100%) rename src/{plugins => KbnServer}/ui/public/components/number_list/number_list.html (100%) rename src/{plugins => KbnServer}/ui/public/components/number_list/number_list.js (100%) rename src/{plugins => KbnServer}/ui/public/components/number_list/number_list_input.js (100%) rename src/{plugins => KbnServer}/ui/public/components/paginated_table/paginated_table.html (100%) rename src/{plugins => KbnServer}/ui/public/components/paginated_table/paginated_table.js (100%) rename src/{plugins => KbnServer}/ui/public/components/persisted_log/persisted_log.js (100%) rename src/{plugins => KbnServer}/ui/public/components/private.js (100%) rename src/{plugins => KbnServer}/ui/public/components/promises.js (100%) rename src/{plugins => KbnServer}/ui/public/components/reflow_watcher.js (100%) rename src/{plugins => KbnServer}/ui/public/components/routes/_setup.js (93%) rename src/{plugins => KbnServer}/ui/public/components/routes/_work_queue.js (100%) rename src/{plugins => KbnServer}/ui/public/components/routes/_wrap_route_with_prep.js (100%) rename src/{plugins => KbnServer}/ui/public/components/routes/index.js (100%) rename src/{plugins => KbnServer}/ui/public/components/state_management/_state_sync.js (100%) rename src/{plugins => KbnServer}/ui/public/components/state_management/app_state.js (100%) rename src/{plugins => KbnServer}/ui/public/components/state_management/global_state.js (100%) rename src/{plugins => KbnServer}/ui/public/components/state_management/state.js (100%) rename src/{plugins => KbnServer}/ui/public/components/storage/storage.js (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/.jshintrc (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/editors/date.html (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/editors/string.html (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/editors/url.html (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/icons/cv.png (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/icons/de.png (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/icons/flag-icon.LICENSE (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/icons/go.png (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/icons/ne.png (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/icons/ni.png (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/icons/stop.png (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/icons/us.png (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/register.js (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/types/Bytes.js (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/types/Date.js (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/types/Ip.js (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/types/Number.js (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/types/Percent.js (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/types/Source.js (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/types/String.js (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/types/Url.js (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/types/_Numeral.js (100%) rename src/{plugins => KbnServer}/ui/public/components/stringify/types/_source.html (100%) rename src/{plugins => KbnServer}/ui/public/components/style_compile/style_compile.css.tmpl (100%) rename src/{plugins => KbnServer}/ui/public/components/style_compile/style_compile.js (100%) rename src/{plugins => KbnServer}/ui/public/components/template_vis_type/TemplateRenderbot.js (100%) rename src/{plugins => KbnServer}/ui/public/components/template_vis_type/TemplateVisType.js (100%) rename src/{plugins => KbnServer}/ui/public/components/time_buckets/calc_auto_interval.js (100%) rename src/{plugins => KbnServer}/ui/public/components/time_buckets/calc_es_interval.js (100%) rename src/{plugins => KbnServer}/ui/public/components/time_buckets/time_buckets.js (100%) rename src/{plugins => KbnServer}/ui/public/components/timefilter/lib/diff_interval.js (100%) rename src/{plugins => KbnServer}/ui/public/components/timefilter/lib/diff_time.js (100%) rename src/{plugins => KbnServer}/ui/public/components/timefilter/timefilter.js (100%) rename src/{plugins => KbnServer}/ui/public/components/timepicker/quick_ranges.js (100%) rename src/{plugins => KbnServer}/ui/public/components/timepicker/refresh_intervals.js (100%) rename src/{plugins => KbnServer}/ui/public/components/timepicker/time_units.js (100%) rename src/{plugins => KbnServer}/ui/public/components/timepicker/timepicker.html (100%) rename src/{plugins => KbnServer}/ui/public/components/timepicker/timepicker.js (100%) rename src/{plugins => KbnServer}/ui/public/components/tooltip/tooltip.html (100%) rename src/{plugins => KbnServer}/ui/public/components/tooltip/tooltip.js (100%) rename src/{plugins => KbnServer}/ui/public/components/typeahead/_input.js (100%) rename src/{plugins => KbnServer}/ui/public/components/typeahead/_items.js (100%) rename src/{plugins => KbnServer}/ui/public/components/typeahead/partials/typeahead-items.html (100%) rename src/{plugins => KbnServer}/ui/public/components/typeahead/typeahead.js (100%) rename src/{plugins => KbnServer}/ui/public/components/typeahead/typeahead.less (100%) rename src/{plugins => KbnServer}/ui/public/components/url/url.js (100%) rename src/{plugins => KbnServer}/ui/public/components/validateDateInterval.js (100%) rename src/{plugins => KbnServer}/ui/public/components/validate_query/lib/from_user.js (100%) rename src/{plugins => KbnServer}/ui/public/components/validate_query/lib/to_user.js (100%) rename src/{plugins => KbnServer}/ui/public/components/validate_query/validate_query.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vis/AggConfig.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vis/AggConfigResult.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vis/AggConfigs.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vis/Renderbot.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vis/Schemas.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vis/VisType.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vis/vis.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/components/color/color.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/components/color/color_palette.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/components/color/seed_colors.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/components/labels/data_array.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/components/labels/flatten_series.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/components/labels/labels.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/components/labels/uniq_labels.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/components/tooltip/_position_tooltip.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/components/tooltip/tooltip.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/components/zero_injection/flatten_data.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/components/zero_injection/inject_zeros.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/components/zero_injection/ordered_x_keys.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/components/zero_injection/uniq_keys.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/components/zero_injection/zero_fill_data_array.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/components/zero_injection/zero_filled_array.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/index.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/_data_label.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/_error_handler.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/alerts.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/axis_title.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/chart_title.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/data.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/dispatch.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/handler/handler.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/handler/handler_types.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/handler/types/pie.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/handler/types/point_series.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/handler/types/tile_map.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/layout/layout.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/layout/layout_types.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/layout/splits/column_chart/chart_split.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/layout/splits/column_chart/chart_title_split.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/layout/splits/column_chart/x_axis_split.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/layout/splits/column_chart/y_axis_split.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/layout/splits/pie_chart/chart_split.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/layout/splits/tile_map/map_split.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/layout/types/column_layout.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/layout/types/map_layout.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/layout/types/pie_layout.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/legend.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/resize_checker.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/x_axis.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/lib/y_axis.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/partials/legend_header.html (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/partials/touchdown.tmpl.html (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/styles/_alerts.less (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/styles/_error.less (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/styles/_layout.less (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/styles/_legend.less (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/styles/_svg.less (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/styles/_tilemap.less (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/styles/_tooltip.less (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/styles/main.less (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/vis.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/visualizations/_chart.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/visualizations/_point_series_chart.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/visualizations/area_chart.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/visualizations/column_chart.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/visualizations/line_chart.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/visualizations/pie_chart.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/visualizations/tile_map.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/visualizations/time_marker.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib/visualizations/vis_types.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib_vis_type/VislibRenderbot.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib_vis_type/VislibVisType.js (100%) rename src/{plugins => KbnServer}/ui/public/components/vislib_vis_type/buildChartData.js (100%) rename src/{plugins => KbnServer}/ui/public/components/visualize/spy/_req_resp_stats.html (100%) rename src/{plugins => KbnServer}/ui/public/components/visualize/spy/_req_resp_stats.js (100%) rename src/{plugins => KbnServer}/ui/public/components/visualize/spy/_spy.html (100%) rename src/{plugins => KbnServer}/ui/public/components/visualize/spy/_table.html (100%) rename src/{plugins => KbnServer}/ui/public/components/visualize/spy/_table.js (100%) rename src/{plugins => KbnServer}/ui/public/components/visualize/spy/spy.js (100%) rename src/{plugins => KbnServer}/ui/public/components/visualize/visualize.html (100%) rename src/{plugins => KbnServer}/ui/public/components/visualize/visualize.js (100%) rename src/{plugins => KbnServer}/ui/public/components/visualize/visualize.less (100%) rename src/{plugins => KbnServer}/ui/public/components/watch_multi.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/auto_select_if_only_one.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/click_focus.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/config.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/confirm_click.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/css_truncate.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/field_name.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/file_upload.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/inequality.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/infinite_scroll.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/info.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/input_datetime.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/input_focus.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/input_whole_number.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/paginate.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/pretty_duration.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/rows.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/saved_object_finder.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/spinner.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/truncated.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/validate_cidr_mask.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/validate_date_math.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/validate_index_name.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/validate_ip.js (100%) rename src/{plugins => KbnServer}/ui/public/directives/validate_json.js (100%) rename src/{plugins => KbnServer}/ui/public/filters/_prop_filter.js (100%) rename src/{plugins => KbnServer}/ui/public/filters/commaList.js (100%) rename src/{plugins => KbnServer}/ui/public/filters/field_type.js (100%) rename src/{plugins => KbnServer}/ui/public/filters/label.js (100%) rename src/{plugins => KbnServer}/ui/public/filters/match_any.js (100%) rename src/{plugins => KbnServer}/ui/public/filters/moment.js (100%) rename src/{plugins => KbnServer}/ui/public/filters/rison.js (100%) rename src/{plugins => KbnServer}/ui/public/filters/short_dots.js (100%) rename src/{plugins => KbnServer}/ui/public/filters/start_from.js (100%) rename src/{plugins => KbnServer}/ui/public/filters/trust_as_html.js (100%) rename src/{plugins => KbnServer}/ui/public/filters/unique.js (100%) rename src/{plugins => KbnServer}/ui/public/filters/uriescape.js (100%) rename src/{plugins => KbnServer}/ui/public/images/initial_load.gif (100%) rename src/{plugins => KbnServer}/ui/public/images/kibana.png (100%) rename src/{plugins => KbnServer}/ui/public/partials/global_config.html (100%) rename src/{plugins => KbnServer}/ui/public/partials/info.html (100%) rename src/{plugins => KbnServer}/ui/public/partials/nav_config.html (100%) rename src/{plugins => KbnServer}/ui/public/partials/paginate_controls.html (100%) rename src/{plugins => KbnServer}/ui/public/partials/saved_object_finder.html (100%) rename src/{plugins => KbnServer}/ui/public/partials/truncate_by_height.html (100%) rename src/{plugins => KbnServer}/ui/public/registry/_registry.js (100%) rename src/{plugins => KbnServer}/ui/public/registry/apps.js (100%) rename src/{plugins => KbnServer}/ui/public/registry/field_formats.js (100%) rename src/{plugins => KbnServer}/ui/public/registry/spy_modes.js (100%) rename src/{plugins => KbnServer}/ui/public/registry/vis_types.js (100%) rename src/{plugins => KbnServer}/ui/public/require.config.js (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/_bootstrap.less (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/_callout.less (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/_control_group.less (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/_font_icons.less (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/_glyphicons.less (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/_hintbox.less (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/_input.less (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/_mixins.less (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/_navbar.less (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/_notify.less (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/_pagination.less (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/_sidebar.less (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/_spinner.less (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/_table.less (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/_truncate.less (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/_variables.less (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/main.less (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/theme/_theme.less (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/theme/_variables.less (100%) rename src/{plugins => KbnServer}/ui/public/ui-styles/theme/elk.ico (100%) rename src/{plugins => KbnServer}/ui/public/utils/BaseObject.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/SimpleEmitter.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/add_word_breaks.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/brush_event.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/cidr_mask.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/config_template.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/date_range.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/datemath.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/decode_geo_hash.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/diff_object.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/diff_time_picker_vals.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/esBool.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/ipv4_address.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/key_map.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/lodash-mixins/collection.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/lodash-mixins/function.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/lodash-mixins/index.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/lodash-mixins/lang.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/lodash-mixins/object.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/lodash-mixins/oop.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/lodash-mixins/string.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/mapping_setup.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/no_white_space.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/obj_define.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/ordinal_suffix.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/parse_interval.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/query_string.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/range.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/rison.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/sequencer.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/slugify_id.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/supports.js (100%) rename src/{plugins => KbnServer}/ui/public/utils/versionmath.js (100%) rename src/{plugins => KbnServer}/ui/views/bootstrap.jade (96%) rename src/{server => KbnServer}/utils/closestPackageJson.js (100%) create mode 100644 src/KbnServer/views/index.jade delete mode 100644 src/plugins/ui/bower.json delete mode 100644 src/plugins/ui/index.js delete mode 100644 src/plugins/ui/package.json delete mode 100644 src/server/connections/index.js delete mode 100644 src/server/fe-exports/FeApp.js delete mode 100644 src/server/fe-exports/index.js delete mode 100644 src/server/status/public/index.html diff --git a/Gruntfile.js b/Gruntfile.js index a9a02f59949b1..43b812640d8d6 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -5,14 +5,12 @@ module.exports = function (grunt) { var config = { pkg: grunt.file.readJSON('package.json'), root: __dirname, - src: __dirname + '/src', // unbuild version of build - build: __dirname + '/build', // copy of source, but optimized - app: __dirname + '/src/kibana', // source directory for the app - plugins: __dirname + '/src/kibana/plugins', // source directory for the app - server: __dirname + '/src/server', // source directory for the server - target: __dirname + '/target', // location of the compressed build targets - buildApp: __dirname + '/build/kibana', // build directory for the app - configFile: __dirname + '/src/server/config/kibana.yml', + src: __dirname + '/src', + build: __dirname + '/build', // temporary build directory + plugins: __dirname + '/src/plugins', + server: __dirname + '/src/KbnServer', + target: __dirname + '/target', // location of the compressed build targets + configFile: __dirname + '/src/config/kibana.yml', nodeVersion: '0.10.35', platforms: ['darwin-x64', 'linux-x64', 'linux-x86', 'windows'], @@ -20,7 +18,7 @@ module.exports = function (grunt) { unitTestDir: __dirname + '/test/unit', testUtilsDir: __dirname + '/test/utils', - bowerComponentsDir: __dirname + '/src/kibana/bower_components', + bowerComponentsDir: __dirname + '/bower_components', devPlugins: 'vis_debug_spy', diff --git a/package.json b/package.json index 7804b790c33f7..c37b152f2241d 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ ], "private": false, "version": "4.2.0-snapshot", - "main": "src/server/index.js", + "main": "src/kibana/index.js", "homepage": "https://www.elastic.co/products/kibana", "bugs": { "url": "http://github.com/elastic/kibana/issues" @@ -30,7 +30,7 @@ ], "scripts": { "test": "grunt test", - "start": "node ./src/server/bin/kibana.js", + "start": "node ./src/bin/kibana.js", "postinstall": "bower install && grunt licenses --check-validity", "precommit": "grunt lintStagedFiles" }, diff --git a/src/server/.jshintrc b/src/KbnServer/.jshintrc similarity index 100% rename from src/server/.jshintrc rename to src/KbnServer/.jshintrc diff --git a/src/server/index.js b/src/KbnServer/KbnServer.js similarity index 87% rename from src/server/index.js rename to src/KbnServer/KbnServer.js index 6c07dbcf30a2b..38db7bf8b0c7e 100644 --- a/src/server/index.js +++ b/src/KbnServer/KbnServer.js @@ -8,24 +8,28 @@ var rootDir = dirname(packagePath); var package = require(packagePath); function KbnServer(settings) { + this.name = package.name; this.version = package.version; + this.build = package.build || false; this.rootDir = rootDir; this.server = new Hapi.Server(); this.settings = settings || {}; this.ready = _.constant(this.mixin( require('./config'), - require('./connections'), require('./logging'), + require('./http'), + require('./ui'), require('./status'), - require('./fe-exports'), require('./plugins') )); } KbnServer.prototype.mixin = function () { var self = this; + var server = self.server; + return Promise.each(_.toArray(arguments), function (fn) { - return fn(self); + return fn(self, server, server.config && server.config()); }) .then(_.noop); }; diff --git a/src/server/cli/index.js b/src/KbnServer/cli/index.js similarity index 82% rename from src/server/cli/index.js rename to src/KbnServer/cli/index.js index b1042e12b70f0..ed0e0f0573008 100644 --- a/src/server/cli/index.js +++ b/src/KbnServer/cli/index.js @@ -1,5 +1,5 @@ var _ = require('lodash'); -var KbnServer = require('../../'); +var KbnServer = require('../KbnServer'); var program = require('commander'); var package = require('./utils/closestPackageJson').getSync(); var readYamlConfig = require('./readYamlConfig'); @@ -12,8 +12,16 @@ program.option('-p, --port ', 'The port to bind to', parseInt); program.option('-q, --quiet', 'Turns off logging'); program.option('-H, --host ', 'The host to bind to'); program.option('-l, --log-file ', 'The file to log to'); -program.option('--plugin-dir ', 'A path to scan for plugins, this can be specified multiple times to specify multiple directories'); -program.option('--plugin-path ', 'A path to a plugin which should be included by the server, this can be specified multiple times to specify multiple paths'); +program.option( + '--plugin-dir ', + 'A path to scan for plugins, this can be specified multiple ' + + 'times to specify multiple directories' +); +program.option( + '--plugin-path ', + 'A path to a plugin which should be included by the server, ' + + 'this can be specified multiple times to specify multiple paths' +); program.option('--plguins ', 'an alias for --plugin-dir'); program.parse(process.argv); diff --git a/src/server/cli/readYamlConfig.js b/src/KbnServer/cli/readYamlConfig.js similarity index 100% rename from src/server/cli/readYamlConfig.js rename to src/KbnServer/cli/readYamlConfig.js diff --git a/src/server/config/config.js b/src/KbnServer/config/config.js similarity index 100% rename from src/server/config/config.js rename to src/KbnServer/config/config.js diff --git a/src/server/config/explodeBy.js b/src/KbnServer/config/explodeBy.js similarity index 100% rename from src/server/config/explodeBy.js rename to src/KbnServer/config/explodeBy.js diff --git a/src/server/config/flattenWith.js b/src/KbnServer/config/flattenWith.js similarity index 100% rename from src/server/config/flattenWith.js rename to src/KbnServer/config/flattenWith.js diff --git a/src/server/config/index.js b/src/KbnServer/config/index.js similarity index 100% rename from src/server/config/index.js rename to src/KbnServer/config/index.js diff --git a/src/server/config/override.js b/src/KbnServer/config/override.js similarity index 100% rename from src/server/config/override.js rename to src/KbnServer/config/override.js diff --git a/src/server/config/schema.js b/src/KbnServer/config/schema.js similarity index 97% rename from src/server/config/schema.js rename to src/KbnServer/config/schema.js index 36271d78a3c65..6a2e16dc6544d 100644 --- a/src/server/config/schema.js +++ b/src/KbnServer/config/schema.js @@ -20,7 +20,7 @@ module.exports = Joi.object({ index: Joi.string().default('.kibana'), pluginPaths: Joi.array().items(Joi.string()).default([]), pluginScanDirs: Joi.array().items(Joi.string()).default([]), - defaultAppId: Joi.string().default('kibana'), + defaultRoute: Joi.string().default('/app/kibana/'), buildNum: Joi.string().default('@@buildNum'), bundledPluginIds: Joi.array().items(Joi.string()) }).default(), diff --git a/src/KbnServer/http/index.js b/src/KbnServer/http/index.js new file mode 100644 index 0000000000000..6194ecade7fec --- /dev/null +++ b/src/KbnServer/http/index.js @@ -0,0 +1,58 @@ +module.exports = function (kibana, server, config) { + + // Create a new connection + server.connection({ + host: config.get('kibana.server.host'), + port: config.get('kibana.server.port') + }); + + // provide a simple way to expose static directories + server.decorate('server', 'exposeStaticDir', function (routePath, dirPath) { + this.route({ + path: routePath, + method: 'GET', + handler: { + directory: { + path: dirPath, + listing: true, + redirectToSlash: true, + lookupCompressed: true + } + } + }); + }); + + // provide a simple way to expose static files + server.decorate('server', 'exposeStaticFile', function (routePath, filePath) { + this.route({ + path: routePath, + method: 'GET', + handler: { + file: filePath + } + }); + }); + + // attach the app name to the server, so we can be sure we are actually talking to kibana + server.ext('onPreResponse', function (request, reply) { + var response = request.response; + + if (response.isBoom) { + response.output.headers['x-app-name'] = kibana.name; + response.output.headers['x-app-version'] = kibana.version; + } else { + response.header('x-app-name', kibana.name); + response.header('x-app-version', kibana.version); + } + + return reply.continue(); + }); + + server.route({ + path: '/', + method: 'GET', + handler: function (req, reply) { + reply.redirect(config.get('kibana.defaultRoute')); + } + }); +}; diff --git a/src/server/logging/good_reporters/_event_to_json.js b/src/KbnServer/logging/good_reporters/_event_to_json.js similarity index 100% rename from src/server/logging/good_reporters/_event_to_json.js rename to src/KbnServer/logging/good_reporters/_event_to_json.js diff --git a/src/server/logging/good_reporters/console.js b/src/KbnServer/logging/good_reporters/console.js similarity index 100% rename from src/server/logging/good_reporters/console.js rename to src/KbnServer/logging/good_reporters/console.js diff --git a/src/server/logging/good_reporters/file.js b/src/KbnServer/logging/good_reporters/file.js similarity index 100% rename from src/server/logging/good_reporters/file.js rename to src/KbnServer/logging/good_reporters/file.js diff --git a/src/server/logging/index.js b/src/KbnServer/logging/index.js similarity index 100% rename from src/server/logging/index.js rename to src/KbnServer/logging/index.js diff --git a/src/server/pid/index.js b/src/KbnServer/pid/index.js similarity index 100% rename from src/server/pid/index.js rename to src/KbnServer/pid/index.js diff --git a/src/server/plugins/Plugin.js b/src/KbnServer/plugins/Plugin.js similarity index 97% rename from src/server/plugins/Plugin.js rename to src/KbnServer/plugins/Plugin.js index 1e93b62bbc368..19e5891b60d54 100644 --- a/src/server/plugins/Plugin.js +++ b/src/KbnServer/plugins/Plugin.js @@ -15,7 +15,7 @@ function Plugin(kibana, path, package, opts) { this.externalInit = opts.init || _.noop; this.getConfig = opts.config || _.noop; - kibana.feExports.readExports(this, opts.exports); + kibana.uiExports.add(this, opts.exports); var readyCb; var readyPromise = Promise.fromNode(function (cb) { readyCb = cb; }); diff --git a/src/server/plugins/PluginApi.js b/src/KbnServer/plugins/PluginApi.js similarity index 100% rename from src/server/plugins/PluginApi.js rename to src/KbnServer/plugins/PluginApi.js diff --git a/src/server/plugins/index.js b/src/KbnServer/plugins/index.js similarity index 100% rename from src/server/plugins/index.js rename to src/KbnServer/plugins/index.js diff --git a/src/server/plugins/load.js b/src/KbnServer/plugins/load.js similarity index 100% rename from src/server/plugins/load.js rename to src/KbnServer/plugins/load.js diff --git a/src/server/plugins/scan.js b/src/KbnServer/plugins/scan.js similarity index 100% rename from src/server/plugins/scan.js rename to src/KbnServer/plugins/scan.js diff --git a/src/server/status/KbnStatus.js b/src/KbnServer/status/KbnStatus.js similarity index 100% rename from src/server/status/KbnStatus.js rename to src/KbnServer/status/KbnStatus.js diff --git a/src/server/status/PluginStatus.js b/src/KbnServer/status/PluginStatus.js similarity index 100% rename from src/server/status/PluginStatus.js rename to src/KbnServer/status/PluginStatus.js diff --git a/src/server/status/Samples.js b/src/KbnServer/status/Samples.js similarity index 100% rename from src/server/status/Samples.js rename to src/KbnServer/status/Samples.js diff --git a/src/server/status/index.js b/src/KbnServer/status/index.js similarity index 100% rename from src/server/status/index.js rename to src/KbnServer/status/index.js diff --git a/src/KbnServer/ui/index.js b/src/KbnServer/ui/index.js new file mode 100644 index 0000000000000..df7344be84e36 --- /dev/null +++ b/src/KbnServer/ui/index.js @@ -0,0 +1,88 @@ +module.exports = function (kibana, server, config) { + var _ = require('lodash'); + var join = require('path').join; + var Boom = require('boom'); + var exists = require('fs').existsSync; + var stat = require('fs').statSync; + var relative = require('path').relative; + + var UiExports = require('./lib/UiExports'); + var defaultModuleIds = require('./lib/defaultModuleIds'); + var findBowerComponents = require('./lib/findBowerComponents'); + + var publicDir = join(__dirname, 'public'); + + // setup jade for templates + server.views({ + path: join(__dirname, 'views'), + engines: { + jade: require('jade') + } + }); + + kibana.uiExports = new UiExports(defaultModuleIds()); + + server.decorate('server', 'getApps', function () { + return kibana.uiExports.apps || {}; + }); + + server.decorate('server', 'getApp', function (id) { + return this.getApps()[id]; + }); + + // initialize the browser runtime for the app + server.route({ + path: '/app/{id}/', + method: 'GET', + handler: function (req, reply) { + var id = req.params.id; + var app = server.getApp(id); + if (!app) return reply(Boom.notFound('Unkown app ' + id)); + + return reply.view('bootstrap', { + app: app, + version: kibana.version, + buildSha: _.get(kibana, 'build.sha', '@@buildSha'), + buildNumber: _.get(kibana, 'build.number', '@@buildNum'), + kbnIndex: config.get('kibana.index'), + esShardTimeout: config.get('elasticsearch.shardTimeout') + }); + } + }); + + // redirect missing slashes + server.route({ + path: '/app/{id}', + method: 'GET', + handler: function (req, reply) { + reply.redirect('/app/' + req.params.id + '/').permanent(true); + } + }); + + // provide access to an app's public directories + server.exposeStaticDir('/app/{id}/{path*}', function pickDir(req) { + var id = req.params.id; + var app = server.getApps()[id]; + + if (!app) return Boom.notFound('Unkown app ' + id); + return app.publicDir || Boom.notFound(id + ' does not server public files'); + }); + + // expose the first bower_components directory found within kibana's rootDir starting + // in this directory and moving out + server.exposeStaticDir('/bower_components/{path*}', findBowerComponents(__dirname, kibana.rootDir)); + + // expose our public files at the server root + require('fs') + .readdirSync(publicDir) + .forEach(function (name) { + var path = join(publicDir, name); + + if (stat(path).isDirectory()) { + server.exposeStaticDir('/' + name + '/{path*}', path); + } + else { + server.exposeStaticFile('/' + name, path); + } + }); +}; diff --git a/src/KbnServer/ui/lib/UiApp.js b/src/KbnServer/ui/lib/UiApp.js new file mode 100644 index 0000000000000..9407c97b4658e --- /dev/null +++ b/src/KbnServer/ui/lib/UiApp.js @@ -0,0 +1,21 @@ +var _ = require('lodash'); +var join = require('path').join; + +function UiApp(uiExports, plugin, spec) { + this.uiExports = uiExports; + this.spec = spec; + + this.id = spec.id || plugin.name; + this.publicDir = spec.publicDir || join(plugin.path, 'public'); + this.useModuleIds = _.once(this.useModuleIds); +} + +UiApp.prototype.mainModuleId = function () { + return this.spec.main; +}; + +UiApp.prototype.useModuleIds = function () { + return this.uiExports.find(_.get(this, 'spec.uses', [])); +}; + +module.exports = UiApp; diff --git a/src/server/fe-exports/FeExports.js b/src/KbnServer/ui/lib/UiExports.js similarity index 63% rename from src/server/fe-exports/FeExports.js rename to src/KbnServer/ui/lib/UiExports.js index 7349875ee109d..6d37742316129 100644 --- a/src/server/fe-exports/FeExports.js +++ b/src/KbnServer/ui/lib/UiExports.js @@ -1,33 +1,33 @@ var _ = require('lodash'); var minimatch = require('minimatch'); -var FeApp = require('./FeApp'); +var UiApp = require('./UiApp'); -function FeExportsCollection(kibana) { - this.kibana = kibana; +function UiExports(defaultModules) { this.apps = {}; this.aliases = {}; - this.getConsumer = _.memoize(this.getConsumer); + this.defaultModules = defaultModules || []; + this.exportConsumer = _.memoize(this.exportConsumer); } -FeExportsCollection.prototype.readExports = function (plugin, exports) { +UiExports.prototype.add = function (plugin, exports) { var self = this; - var unkown = _(exports).keys().reject(self.getConsumer, self).value(); + var unkown = _(exports).keys().reject(self.exportConsumer, self).value(); if (unkown.length) { throw new Error('unknown export types ' + unkown.join(', ') + ' in plugin ' + plugin.name); } _.forOwn(exports, function (spec, type) { - self.getConsumer(type)(plugin, spec); + self.exportConsumer(type)(plugin, spec); }); }; -FeExportsCollection.prototype.getConsumer = function (type) { +UiExports.prototype.exportConsumer = function (type) { var self = this; switch (type) { case 'app': return function (plugin, spec) { - var app = new FeApp(self, plugin, spec); + var app = new UiApp(self, plugin, spec); if (self.apps[app.id]) { throw new Error('Unable to create two apps with the id ' + app.id + '.'); @@ -50,20 +50,25 @@ FeExportsCollection.prototype.getConsumer = function (type) { } }; -FeExportsCollection.prototype.find = function (patterns) { +UiExports.prototype.find = function (patterns) { var aliases = this.aliases; var names = _.keys(aliases); var matcher = _.partialRight(minimatch.filter, { matchBase: true }); return _.chain(patterns) .map(function (pattern) { - return names.filter(matcher(pattern)); + var matches = names.filter(matcher(pattern)); + if (!matches.length) { + throw new Error('Unable to find uiExports for pattern ' + pattern); + } + return matches; }) .flattenDeep() .reduce(function (found, name) { return found.concat(aliases[name]); }, []) + .union(this.defaultModules) .value(); }; -module.exports = FeExportsCollection; +module.exports = UiExports; diff --git a/src/KbnServer/ui/lib/defaultModuleIds.js b/src/KbnServer/ui/lib/defaultModuleIds.js new file mode 100644 index 0000000000000..bbffd5cb455dd --- /dev/null +++ b/src/KbnServer/ui/lib/defaultModuleIds.js @@ -0,0 +1,57 @@ +var _ = require('lodash'); +var findModuleIds = require('./findModuleIds'); + +module.exports = function () { + return _([ + // default bower_components + [ + 'angular-route', + 'angular-bindonce', + 'angular-bootstrap', + 'elasticsearch' + ], + + // all directives and filters, which are auto-loaded + _.values(findModuleIds()), + + // default components + [ + 'errors', + 'chrome', + 'components/bind', + 'components/bound_to_config_obj', + 'components/config/config', + 'components/courier/courier', + 'components/debounce', + 'components/doc_title/doc_title', + 'components/elastic_textarea', + 'components/es', + 'components/events', + 'components/fancy_forms/fancy_forms', + 'components/filter_bar/filter_bar', + 'components/filter_manager/filter_manager', + 'components/index_patterns/index_patterns', + 'components/listen', + 'components/notify/notify', + 'components/persisted_log/persisted_log', + 'components/private', + 'components/promises', + 'components/state_management/app_state', + 'components/state_management/global_state', + 'components/storage/storage', + 'components/stringify/register', + 'components/style_compile/style_compile', + 'components/timefilter/timefilter', + 'components/timepicker/timepicker', + 'components/tooltip/tooltip', + 'components/typeahead/typeahead', + 'components/url/url', + 'components/validateDateInterval', + 'components/validate_query/validate_query', + 'components/watch_multi' + ] + ]) + .flattenDeep() + .uniq() + .value(); +}; diff --git a/src/KbnServer/ui/lib/findBowerComponents.js b/src/KbnServer/ui/lib/findBowerComponents.js new file mode 100644 index 0000000000000..c227fccc5b0ec --- /dev/null +++ b/src/KbnServer/ui/lib/findBowerComponents.js @@ -0,0 +1,20 @@ +var join = require('path').join; +var exists = require('fs').existsSync; +var relative = require('path').relative; + +module.exports = function (start, within) { + var dir = start; + var bowerPath = join(dir, 'bower_components'); + + while (!exists(bowerPath)) { + var prev = dir; + dir = join(dir, '..'); + bowerPath = join(dir, 'bower_components'); + + if (dir === prev || relative(within, dir).slice(0, 2) === '..') { + throw new Error('unable to find bower_components'); + } + } + + return bowerPath; +}; diff --git a/src/plugins/ui/foundModuleIds.js b/src/KbnServer/ui/lib/findModuleIds.js similarity index 83% rename from src/plugins/ui/foundModuleIds.js rename to src/KbnServer/ui/lib/findModuleIds.js index 40a245a270424..b8bc28adc593d 100644 --- a/src/plugins/ui/foundModuleIds.js +++ b/src/KbnServer/ui/lib/findModuleIds.js @@ -10,7 +10,7 @@ function hidden(name) { } function scan(type) { - var dir = join(__dirname, 'public', type); + var dir = join(__dirname, '..', 'public', type); return readdir(dir) .filter(hidden) @@ -34,7 +34,9 @@ function scan(type) { }); } -module.exports = { - directives: scan('directives'), - filters: scan('filters') +module.exports = function () { + return { + directives: scan('directives'), + filters: scan('filters') + }; }; diff --git a/src/plugins/ui/public/.jshintrc b/src/KbnServer/ui/public/.jshintrc similarity index 100% rename from src/plugins/ui/public/.jshintrc rename to src/KbnServer/ui/public/.jshintrc diff --git a/src/plugins/ui/public/bootstrap.js b/src/KbnServer/ui/public/bootstrap.js similarity index 100% rename from src/plugins/ui/public/bootstrap.js rename to src/KbnServer/ui/public/bootstrap.js diff --git a/src/plugins/ui/public/chrome.js b/src/KbnServer/ui/public/chrome.js similarity index 100% rename from src/plugins/ui/public/chrome.js rename to src/KbnServer/ui/public/chrome.js diff --git a/src/plugins/ui/public/components/agg_response/geo_json/_tooltip.html b/src/KbnServer/ui/public/components/agg_response/geo_json/_tooltip.html similarity index 100% rename from src/plugins/ui/public/components/agg_response/geo_json/_tooltip.html rename to src/KbnServer/ui/public/components/agg_response/geo_json/_tooltip.html diff --git a/src/plugins/ui/public/components/agg_response/geo_json/_tooltip_formatter.js b/src/KbnServer/ui/public/components/agg_response/geo_json/_tooltip_formatter.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/geo_json/_tooltip_formatter.js rename to src/KbnServer/ui/public/components/agg_response/geo_json/_tooltip_formatter.js diff --git a/src/plugins/ui/public/components/agg_response/geo_json/geo_json.js b/src/KbnServer/ui/public/components/agg_response/geo_json/geo_json.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/geo_json/geo_json.js rename to src/KbnServer/ui/public/components/agg_response/geo_json/geo_json.js diff --git a/src/plugins/ui/public/components/agg_response/geo_json/rowsToFeatures.js b/src/KbnServer/ui/public/components/agg_response/geo_json/rowsToFeatures.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/geo_json/rowsToFeatures.js rename to src/KbnServer/ui/public/components/agg_response/geo_json/rowsToFeatures.js diff --git a/src/plugins/ui/public/components/agg_response/hierarchical/_array_to_linked_list.js b/src/KbnServer/ui/public/components/agg_response/hierarchical/_array_to_linked_list.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/hierarchical/_array_to_linked_list.js rename to src/KbnServer/ui/public/components/agg_response/hierarchical/_array_to_linked_list.js diff --git a/src/plugins/ui/public/components/agg_response/hierarchical/_build_split.js b/src/KbnServer/ui/public/components/agg_response/hierarchical/_build_split.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/hierarchical/_build_split.js rename to src/KbnServer/ui/public/components/agg_response/hierarchical/_build_split.js diff --git a/src/plugins/ui/public/components/agg_response/hierarchical/_collect_branch.js b/src/KbnServer/ui/public/components/agg_response/hierarchical/_collect_branch.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/hierarchical/_collect_branch.js rename to src/KbnServer/ui/public/components/agg_response/hierarchical/_collect_branch.js diff --git a/src/plugins/ui/public/components/agg_response/hierarchical/_collect_keys.js b/src/KbnServer/ui/public/components/agg_response/hierarchical/_collect_keys.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/hierarchical/_collect_keys.js rename to src/KbnServer/ui/public/components/agg_response/hierarchical/_collect_keys.js diff --git a/src/plugins/ui/public/components/agg_response/hierarchical/_create_raw_data.js b/src/KbnServer/ui/public/components/agg_response/hierarchical/_create_raw_data.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/hierarchical/_create_raw_data.js rename to src/KbnServer/ui/public/components/agg_response/hierarchical/_create_raw_data.js diff --git a/src/plugins/ui/public/components/agg_response/hierarchical/_extract_buckets.js b/src/KbnServer/ui/public/components/agg_response/hierarchical/_extract_buckets.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/hierarchical/_extract_buckets.js rename to src/KbnServer/ui/public/components/agg_response/hierarchical/_extract_buckets.js diff --git a/src/plugins/ui/public/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js b/src/KbnServer/ui/public/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js rename to src/KbnServer/ui/public/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js diff --git a/src/plugins/ui/public/components/agg_response/hierarchical/_tooltip.html b/src/KbnServer/ui/public/components/agg_response/hierarchical/_tooltip.html similarity index 100% rename from src/plugins/ui/public/components/agg_response/hierarchical/_tooltip.html rename to src/KbnServer/ui/public/components/agg_response/hierarchical/_tooltip.html diff --git a/src/plugins/ui/public/components/agg_response/hierarchical/_transform_aggregation.js b/src/KbnServer/ui/public/components/agg_response/hierarchical/_transform_aggregation.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/hierarchical/_transform_aggregation.js rename to src/KbnServer/ui/public/components/agg_response/hierarchical/_transform_aggregation.js diff --git a/src/plugins/ui/public/components/agg_response/hierarchical/build_hierarchical_data.js b/src/KbnServer/ui/public/components/agg_response/hierarchical/build_hierarchical_data.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/hierarchical/build_hierarchical_data.js rename to src/KbnServer/ui/public/components/agg_response/hierarchical/build_hierarchical_data.js diff --git a/src/plugins/ui/public/components/agg_response/index.js b/src/KbnServer/ui/public/components/agg_response/index.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/index.js rename to src/KbnServer/ui/public/components/agg_response/index.js diff --git a/src/plugins/ui/public/components/agg_response/point_series/_add_to_siri.js b/src/KbnServer/ui/public/components/agg_response/point_series/_add_to_siri.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/point_series/_add_to_siri.js rename to src/KbnServer/ui/public/components/agg_response/point_series/_add_to_siri.js diff --git a/src/plugins/ui/public/components/agg_response/point_series/_fake_x_aspect.js b/src/KbnServer/ui/public/components/agg_response/point_series/_fake_x_aspect.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/point_series/_fake_x_aspect.js rename to src/KbnServer/ui/public/components/agg_response/point_series/_fake_x_aspect.js diff --git a/src/plugins/ui/public/components/agg_response/point_series/_get_aspects.js b/src/KbnServer/ui/public/components/agg_response/point_series/_get_aspects.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/point_series/_get_aspects.js rename to src/KbnServer/ui/public/components/agg_response/point_series/_get_aspects.js diff --git a/src/plugins/ui/public/components/agg_response/point_series/_get_point.js b/src/KbnServer/ui/public/components/agg_response/point_series/_get_point.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/point_series/_get_point.js rename to src/KbnServer/ui/public/components/agg_response/point_series/_get_point.js diff --git a/src/plugins/ui/public/components/agg_response/point_series/_get_series.js b/src/KbnServer/ui/public/components/agg_response/point_series/_get_series.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/point_series/_get_series.js rename to src/KbnServer/ui/public/components/agg_response/point_series/_get_series.js diff --git a/src/plugins/ui/public/components/agg_response/point_series/_init_x_axis.js b/src/KbnServer/ui/public/components/agg_response/point_series/_init_x_axis.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/point_series/_init_x_axis.js rename to src/KbnServer/ui/public/components/agg_response/point_series/_init_x_axis.js diff --git a/src/plugins/ui/public/components/agg_response/point_series/_init_y_axis.js b/src/KbnServer/ui/public/components/agg_response/point_series/_init_y_axis.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/point_series/_init_y_axis.js rename to src/KbnServer/ui/public/components/agg_response/point_series/_init_y_axis.js diff --git a/src/plugins/ui/public/components/agg_response/point_series/_ordered_date_axis.js b/src/KbnServer/ui/public/components/agg_response/point_series/_ordered_date_axis.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/point_series/_ordered_date_axis.js rename to src/KbnServer/ui/public/components/agg_response/point_series/_ordered_date_axis.js diff --git a/src/plugins/ui/public/components/agg_response/point_series/_tooltip.html b/src/KbnServer/ui/public/components/agg_response/point_series/_tooltip.html similarity index 100% rename from src/plugins/ui/public/components/agg_response/point_series/_tooltip.html rename to src/KbnServer/ui/public/components/agg_response/point_series/_tooltip.html diff --git a/src/plugins/ui/public/components/agg_response/point_series/_tooltip_formatter.js b/src/KbnServer/ui/public/components/agg_response/point_series/_tooltip_formatter.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/point_series/_tooltip_formatter.js rename to src/KbnServer/ui/public/components/agg_response/point_series/_tooltip_formatter.js diff --git a/src/plugins/ui/public/components/agg_response/point_series/point_series.js b/src/KbnServer/ui/public/components/agg_response/point_series/point_series.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/point_series/point_series.js rename to src/KbnServer/ui/public/components/agg_response/point_series/point_series.js diff --git a/src/plugins/ui/public/components/agg_response/tabify/_buckets.js b/src/KbnServer/ui/public/components/agg_response/tabify/_buckets.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/tabify/_buckets.js rename to src/KbnServer/ui/public/components/agg_response/tabify/_buckets.js diff --git a/src/plugins/ui/public/components/agg_response/tabify/_get_columns.js b/src/KbnServer/ui/public/components/agg_response/tabify/_get_columns.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/tabify/_get_columns.js rename to src/KbnServer/ui/public/components/agg_response/tabify/_get_columns.js diff --git a/src/plugins/ui/public/components/agg_response/tabify/_response_writer.js b/src/KbnServer/ui/public/components/agg_response/tabify/_response_writer.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/tabify/_response_writer.js rename to src/KbnServer/ui/public/components/agg_response/tabify/_response_writer.js diff --git a/src/plugins/ui/public/components/agg_response/tabify/_table.js b/src/KbnServer/ui/public/components/agg_response/tabify/_table.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/tabify/_table.js rename to src/KbnServer/ui/public/components/agg_response/tabify/_table.js diff --git a/src/plugins/ui/public/components/agg_response/tabify/_table_group.js b/src/KbnServer/ui/public/components/agg_response/tabify/_table_group.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/tabify/_table_group.js rename to src/KbnServer/ui/public/components/agg_response/tabify/_table_group.js diff --git a/src/plugins/ui/public/components/agg_response/tabify/tabify.js b/src/KbnServer/ui/public/components/agg_response/tabify/tabify.js similarity index 100% rename from src/plugins/ui/public/components/agg_response/tabify/tabify.js rename to src/KbnServer/ui/public/components/agg_response/tabify/tabify.js diff --git a/src/plugins/ui/public/components/agg_table/agg_table.html b/src/KbnServer/ui/public/components/agg_table/agg_table.html similarity index 100% rename from src/plugins/ui/public/components/agg_table/agg_table.html rename to src/KbnServer/ui/public/components/agg_table/agg_table.html diff --git a/src/plugins/ui/public/components/agg_table/agg_table.js b/src/KbnServer/ui/public/components/agg_table/agg_table.js similarity index 100% rename from src/plugins/ui/public/components/agg_table/agg_table.js rename to src/KbnServer/ui/public/components/agg_table/agg_table.js diff --git a/src/plugins/ui/public/components/agg_table/agg_table.less b/src/KbnServer/ui/public/components/agg_table/agg_table.less similarity index 100% rename from src/plugins/ui/public/components/agg_table/agg_table.less rename to src/KbnServer/ui/public/components/agg_table/agg_table.less diff --git a/src/plugins/ui/public/components/agg_table/agg_table_group.html b/src/KbnServer/ui/public/components/agg_table/agg_table_group.html similarity index 100% rename from src/plugins/ui/public/components/agg_table/agg_table_group.html rename to src/KbnServer/ui/public/components/agg_table/agg_table_group.html diff --git a/src/plugins/ui/public/components/agg_table/agg_table_group.js b/src/KbnServer/ui/public/components/agg_table/agg_table_group.js similarity index 100% rename from src/plugins/ui/public/components/agg_table/agg_table_group.js rename to src/KbnServer/ui/public/components/agg_table/agg_table_group.js diff --git a/src/plugins/ui/public/components/agg_types/README.md b/src/KbnServer/ui/public/components/agg_types/README.md similarity index 100% rename from src/plugins/ui/public/components/agg_types/README.md rename to src/KbnServer/ui/public/components/agg_types/README.md diff --git a/src/plugins/ui/public/components/agg_types/_agg_params.js b/src/KbnServer/ui/public/components/agg_types/_agg_params.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/_agg_params.js rename to src/KbnServer/ui/public/components/agg_types/_agg_params.js diff --git a/src/plugins/ui/public/components/agg_types/_agg_type.js b/src/KbnServer/ui/public/components/agg_types/_agg_type.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/_agg_type.js rename to src/KbnServer/ui/public/components/agg_types/_agg_type.js diff --git a/src/plugins/ui/public/components/agg_types/buckets/_bucket_agg_type.js b/src/KbnServer/ui/public/components/agg_types/buckets/_bucket_agg_type.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/buckets/_bucket_agg_type.js rename to src/KbnServer/ui/public/components/agg_types/buckets/_bucket_agg_type.js diff --git a/src/plugins/ui/public/components/agg_types/buckets/_bucket_count_between.js b/src/KbnServer/ui/public/components/agg_types/buckets/_bucket_count_between.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/buckets/_bucket_count_between.js rename to src/KbnServer/ui/public/components/agg_types/buckets/_bucket_count_between.js diff --git a/src/plugins/ui/public/components/agg_types/buckets/_interval_options.js b/src/KbnServer/ui/public/components/agg_types/buckets/_interval_options.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/buckets/_interval_options.js rename to src/KbnServer/ui/public/components/agg_types/buckets/_interval_options.js diff --git a/src/plugins/ui/public/components/agg_types/buckets/create_filter/date_histogram.js b/src/KbnServer/ui/public/components/agg_types/buckets/create_filter/date_histogram.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/buckets/create_filter/date_histogram.js rename to src/KbnServer/ui/public/components/agg_types/buckets/create_filter/date_histogram.js diff --git a/src/plugins/ui/public/components/agg_types/buckets/create_filter/date_range.js b/src/KbnServer/ui/public/components/agg_types/buckets/create_filter/date_range.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/buckets/create_filter/date_range.js rename to src/KbnServer/ui/public/components/agg_types/buckets/create_filter/date_range.js diff --git a/src/plugins/ui/public/components/agg_types/buckets/create_filter/filters.js b/src/KbnServer/ui/public/components/agg_types/buckets/create_filter/filters.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/buckets/create_filter/filters.js rename to src/KbnServer/ui/public/components/agg_types/buckets/create_filter/filters.js diff --git a/src/plugins/ui/public/components/agg_types/buckets/create_filter/histogram.js b/src/KbnServer/ui/public/components/agg_types/buckets/create_filter/histogram.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/buckets/create_filter/histogram.js rename to src/KbnServer/ui/public/components/agg_types/buckets/create_filter/histogram.js diff --git a/src/plugins/ui/public/components/agg_types/buckets/create_filter/ip_range.js b/src/KbnServer/ui/public/components/agg_types/buckets/create_filter/ip_range.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/buckets/create_filter/ip_range.js rename to src/KbnServer/ui/public/components/agg_types/buckets/create_filter/ip_range.js diff --git a/src/plugins/ui/public/components/agg_types/buckets/create_filter/range.js b/src/KbnServer/ui/public/components/agg_types/buckets/create_filter/range.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/buckets/create_filter/range.js rename to src/KbnServer/ui/public/components/agg_types/buckets/create_filter/range.js diff --git a/src/plugins/ui/public/components/agg_types/buckets/create_filter/terms.js b/src/KbnServer/ui/public/components/agg_types/buckets/create_filter/terms.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/buckets/create_filter/terms.js rename to src/KbnServer/ui/public/components/agg_types/buckets/create_filter/terms.js diff --git a/src/plugins/ui/public/components/agg_types/buckets/date_histogram.js b/src/KbnServer/ui/public/components/agg_types/buckets/date_histogram.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/buckets/date_histogram.js rename to src/KbnServer/ui/public/components/agg_types/buckets/date_histogram.js diff --git a/src/plugins/ui/public/components/agg_types/buckets/date_range.js b/src/KbnServer/ui/public/components/agg_types/buckets/date_range.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/buckets/date_range.js rename to src/KbnServer/ui/public/components/agg_types/buckets/date_range.js diff --git a/src/plugins/ui/public/components/agg_types/buckets/filters.js b/src/KbnServer/ui/public/components/agg_types/buckets/filters.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/buckets/filters.js rename to src/KbnServer/ui/public/components/agg_types/buckets/filters.js diff --git a/src/plugins/ui/public/components/agg_types/buckets/geo_hash.js b/src/KbnServer/ui/public/components/agg_types/buckets/geo_hash.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/buckets/geo_hash.js rename to src/KbnServer/ui/public/components/agg_types/buckets/geo_hash.js diff --git a/src/plugins/ui/public/components/agg_types/buckets/histogram.js b/src/KbnServer/ui/public/components/agg_types/buckets/histogram.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/buckets/histogram.js rename to src/KbnServer/ui/public/components/agg_types/buckets/histogram.js diff --git a/src/plugins/ui/public/components/agg_types/buckets/ip_range.js b/src/KbnServer/ui/public/components/agg_types/buckets/ip_range.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/buckets/ip_range.js rename to src/KbnServer/ui/public/components/agg_types/buckets/ip_range.js diff --git a/src/plugins/ui/public/components/agg_types/buckets/range.js b/src/KbnServer/ui/public/components/agg_types/buckets/range.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/buckets/range.js rename to src/KbnServer/ui/public/components/agg_types/buckets/range.js diff --git a/src/plugins/ui/public/components/agg_types/buckets/significant_terms.js b/src/KbnServer/ui/public/components/agg_types/buckets/significant_terms.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/buckets/significant_terms.js rename to src/KbnServer/ui/public/components/agg_types/buckets/significant_terms.js diff --git a/src/plugins/ui/public/components/agg_types/buckets/terms.js b/src/KbnServer/ui/public/components/agg_types/buckets/terms.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/buckets/terms.js rename to src/KbnServer/ui/public/components/agg_types/buckets/terms.js diff --git a/src/plugins/ui/public/components/agg_types/controls/date_ranges.html b/src/KbnServer/ui/public/components/agg_types/controls/date_ranges.html similarity index 100% rename from src/plugins/ui/public/components/agg_types/controls/date_ranges.html rename to src/KbnServer/ui/public/components/agg_types/controls/date_ranges.html diff --git a/src/plugins/ui/public/components/agg_types/controls/extended_bounds.html b/src/KbnServer/ui/public/components/agg_types/controls/extended_bounds.html similarity index 100% rename from src/plugins/ui/public/components/agg_types/controls/extended_bounds.html rename to src/KbnServer/ui/public/components/agg_types/controls/extended_bounds.html diff --git a/src/plugins/ui/public/components/agg_types/controls/field.html b/src/KbnServer/ui/public/components/agg_types/controls/field.html similarity index 100% rename from src/plugins/ui/public/components/agg_types/controls/field.html rename to src/KbnServer/ui/public/components/agg_types/controls/field.html diff --git a/src/plugins/ui/public/components/agg_types/controls/filters.html b/src/KbnServer/ui/public/components/agg_types/controls/filters.html similarity index 100% rename from src/plugins/ui/public/components/agg_types/controls/filters.html rename to src/KbnServer/ui/public/components/agg_types/controls/filters.html diff --git a/src/plugins/ui/public/components/agg_types/controls/interval.html b/src/KbnServer/ui/public/components/agg_types/controls/interval.html similarity index 100% rename from src/plugins/ui/public/components/agg_types/controls/interval.html rename to src/KbnServer/ui/public/components/agg_types/controls/interval.html diff --git a/src/plugins/ui/public/components/agg_types/controls/ip_ranges.html b/src/KbnServer/ui/public/components/agg_types/controls/ip_ranges.html similarity index 100% rename from src/plugins/ui/public/components/agg_types/controls/ip_ranges.html rename to src/KbnServer/ui/public/components/agg_types/controls/ip_ranges.html diff --git a/src/plugins/ui/public/components/agg_types/controls/min_doc_count.html b/src/KbnServer/ui/public/components/agg_types/controls/min_doc_count.html similarity index 100% rename from src/plugins/ui/public/components/agg_types/controls/min_doc_count.html rename to src/KbnServer/ui/public/components/agg_types/controls/min_doc_count.html diff --git a/src/plugins/ui/public/components/agg_types/controls/order_agg.html b/src/KbnServer/ui/public/components/agg_types/controls/order_agg.html similarity index 100% rename from src/plugins/ui/public/components/agg_types/controls/order_agg.html rename to src/KbnServer/ui/public/components/agg_types/controls/order_agg.html diff --git a/src/plugins/ui/public/components/agg_types/controls/order_and_size.html b/src/KbnServer/ui/public/components/agg_types/controls/order_and_size.html similarity index 100% rename from src/plugins/ui/public/components/agg_types/controls/order_and_size.html rename to src/KbnServer/ui/public/components/agg_types/controls/order_and_size.html diff --git a/src/plugins/ui/public/components/agg_types/controls/percentile_ranks.html b/src/KbnServer/ui/public/components/agg_types/controls/percentile_ranks.html similarity index 100% rename from src/plugins/ui/public/components/agg_types/controls/percentile_ranks.html rename to src/KbnServer/ui/public/components/agg_types/controls/percentile_ranks.html diff --git a/src/plugins/ui/public/components/agg_types/controls/percentiles.html b/src/KbnServer/ui/public/components/agg_types/controls/percentiles.html similarity index 100% rename from src/plugins/ui/public/components/agg_types/controls/percentiles.html rename to src/KbnServer/ui/public/components/agg_types/controls/percentiles.html diff --git a/src/plugins/ui/public/components/agg_types/controls/precision.html b/src/KbnServer/ui/public/components/agg_types/controls/precision.html similarity index 100% rename from src/plugins/ui/public/components/agg_types/controls/precision.html rename to src/KbnServer/ui/public/components/agg_types/controls/precision.html diff --git a/src/plugins/ui/public/components/agg_types/controls/ranges.html b/src/KbnServer/ui/public/components/agg_types/controls/ranges.html similarity index 100% rename from src/plugins/ui/public/components/agg_types/controls/ranges.html rename to src/KbnServer/ui/public/components/agg_types/controls/ranges.html diff --git a/src/plugins/ui/public/components/agg_types/controls/raw_json.html b/src/KbnServer/ui/public/components/agg_types/controls/raw_json.html similarity index 100% rename from src/plugins/ui/public/components/agg_types/controls/raw_json.html rename to src/KbnServer/ui/public/components/agg_types/controls/raw_json.html diff --git a/src/plugins/ui/public/components/agg_types/controls/regular_expression.html b/src/KbnServer/ui/public/components/agg_types/controls/regular_expression.html similarity index 100% rename from src/plugins/ui/public/components/agg_types/controls/regular_expression.html rename to src/KbnServer/ui/public/components/agg_types/controls/regular_expression.html diff --git a/src/plugins/ui/public/components/agg_types/controls/string.html b/src/KbnServer/ui/public/components/agg_types/controls/string.html similarity index 100% rename from src/plugins/ui/public/components/agg_types/controls/string.html rename to src/KbnServer/ui/public/components/agg_types/controls/string.html diff --git a/src/plugins/ui/public/components/agg_types/index.js b/src/KbnServer/ui/public/components/agg_types/index.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/index.js rename to src/KbnServer/ui/public/components/agg_types/index.js diff --git a/src/plugins/ui/public/components/agg_types/metrics/_get_response_agg_config.js b/src/KbnServer/ui/public/components/agg_types/metrics/_get_response_agg_config.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/metrics/_get_response_agg_config.js rename to src/KbnServer/ui/public/components/agg_types/metrics/_get_response_agg_config.js diff --git a/src/plugins/ui/public/components/agg_types/metrics/_metric_agg_type.js b/src/KbnServer/ui/public/components/agg_types/metrics/_metric_agg_type.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/metrics/_metric_agg_type.js rename to src/KbnServer/ui/public/components/agg_types/metrics/_metric_agg_type.js diff --git a/src/plugins/ui/public/components/agg_types/metrics/avg.js b/src/KbnServer/ui/public/components/agg_types/metrics/avg.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/metrics/avg.js rename to src/KbnServer/ui/public/components/agg_types/metrics/avg.js diff --git a/src/plugins/ui/public/components/agg_types/metrics/cardinality.js b/src/KbnServer/ui/public/components/agg_types/metrics/cardinality.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/metrics/cardinality.js rename to src/KbnServer/ui/public/components/agg_types/metrics/cardinality.js diff --git a/src/plugins/ui/public/components/agg_types/metrics/count.js b/src/KbnServer/ui/public/components/agg_types/metrics/count.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/metrics/count.js rename to src/KbnServer/ui/public/components/agg_types/metrics/count.js diff --git a/src/plugins/ui/public/components/agg_types/metrics/max.js b/src/KbnServer/ui/public/components/agg_types/metrics/max.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/metrics/max.js rename to src/KbnServer/ui/public/components/agg_types/metrics/max.js diff --git a/src/plugins/ui/public/components/agg_types/metrics/min.js b/src/KbnServer/ui/public/components/agg_types/metrics/min.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/metrics/min.js rename to src/KbnServer/ui/public/components/agg_types/metrics/min.js diff --git a/src/plugins/ui/public/components/agg_types/metrics/percentile_ranks.js b/src/KbnServer/ui/public/components/agg_types/metrics/percentile_ranks.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/metrics/percentile_ranks.js rename to src/KbnServer/ui/public/components/agg_types/metrics/percentile_ranks.js diff --git a/src/plugins/ui/public/components/agg_types/metrics/percentiles.js b/src/KbnServer/ui/public/components/agg_types/metrics/percentiles.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/metrics/percentiles.js rename to src/KbnServer/ui/public/components/agg_types/metrics/percentiles.js diff --git a/src/plugins/ui/public/components/agg_types/metrics/std_deviation.js b/src/KbnServer/ui/public/components/agg_types/metrics/std_deviation.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/metrics/std_deviation.js rename to src/KbnServer/ui/public/components/agg_types/metrics/std_deviation.js diff --git a/src/plugins/ui/public/components/agg_types/metrics/sum.js b/src/KbnServer/ui/public/components/agg_types/metrics/sum.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/metrics/sum.js rename to src/KbnServer/ui/public/components/agg_types/metrics/sum.js diff --git a/src/plugins/ui/public/components/agg_types/param_types/base.js b/src/KbnServer/ui/public/components/agg_types/param_types/base.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/param_types/base.js rename to src/KbnServer/ui/public/components/agg_types/param_types/base.js diff --git a/src/plugins/ui/public/components/agg_types/param_types/field.js b/src/KbnServer/ui/public/components/agg_types/param_types/field.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/param_types/field.js rename to src/KbnServer/ui/public/components/agg_types/param_types/field.js diff --git a/src/plugins/ui/public/components/agg_types/param_types/optioned.js b/src/KbnServer/ui/public/components/agg_types/param_types/optioned.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/param_types/optioned.js rename to src/KbnServer/ui/public/components/agg_types/param_types/optioned.js diff --git a/src/plugins/ui/public/components/agg_types/param_types/raw_json.js b/src/KbnServer/ui/public/components/agg_types/param_types/raw_json.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/param_types/raw_json.js rename to src/KbnServer/ui/public/components/agg_types/param_types/raw_json.js diff --git a/src/plugins/ui/public/components/agg_types/param_types/regex.js b/src/KbnServer/ui/public/components/agg_types/param_types/regex.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/param_types/regex.js rename to src/KbnServer/ui/public/components/agg_types/param_types/regex.js diff --git a/src/plugins/ui/public/components/agg_types/param_types/string.js b/src/KbnServer/ui/public/components/agg_types/param_types/string.js similarity index 100% rename from src/plugins/ui/public/components/agg_types/param_types/string.js rename to src/KbnServer/ui/public/components/agg_types/param_types/string.js diff --git a/src/plugins/ui/public/components/bind.js b/src/KbnServer/ui/public/components/bind.js similarity index 100% rename from src/plugins/ui/public/components/bind.js rename to src/KbnServer/ui/public/components/bind.js diff --git a/src/plugins/ui/public/components/bound_to_config_obj.js b/src/KbnServer/ui/public/components/bound_to_config_obj.js similarity index 100% rename from src/plugins/ui/public/components/bound_to_config_obj.js rename to src/KbnServer/ui/public/components/bound_to_config_obj.js diff --git a/src/plugins/ui/public/components/chrome/Tab.js b/src/KbnServer/ui/public/components/chrome/Tab.js similarity index 100% rename from src/plugins/ui/public/components/chrome/Tab.js rename to src/KbnServer/ui/public/components/chrome/Tab.js diff --git a/src/plugins/ui/public/components/chrome/TabCollection.js b/src/KbnServer/ui/public/components/chrome/TabCollection.js similarity index 100% rename from src/plugins/ui/public/components/chrome/TabCollection.js rename to src/KbnServer/ui/public/components/chrome/TabCollection.js diff --git a/src/plugins/ui/public/components/chrome/chrome.html b/src/KbnServer/ui/public/components/chrome/chrome.html similarity index 96% rename from src/plugins/ui/public/components/chrome/chrome.html rename to src/KbnServer/ui/public/components/chrome/chrome.html index 933cbd0ad464b..4d5f91bca469e 100644 --- a/src/plugins/ui/public/components/chrome/chrome.html +++ b/src/KbnServer/ui/public/components/chrome/chrome.html @@ -71,5 +71,5 @@ config-close="toggleTimepicker"> -
+
diff --git a/src/plugins/ui/public/components/chrome/config/filter.html b/src/KbnServer/ui/public/components/chrome/config/filter.html similarity index 100% rename from src/plugins/ui/public/components/chrome/config/filter.html rename to src/KbnServer/ui/public/components/chrome/config/filter.html diff --git a/src/plugins/ui/public/components/chrome/config/interval.html b/src/KbnServer/ui/public/components/chrome/config/interval.html similarity index 100% rename from src/plugins/ui/public/components/chrome/config/interval.html rename to src/KbnServer/ui/public/components/chrome/config/interval.html diff --git a/src/plugins/ui/public/components/clipboard/clipboard.html b/src/KbnServer/ui/public/components/clipboard/clipboard.html similarity index 100% rename from src/plugins/ui/public/components/clipboard/clipboard.html rename to src/KbnServer/ui/public/components/clipboard/clipboard.html diff --git a/src/plugins/ui/public/components/clipboard/clipboard.js b/src/KbnServer/ui/public/components/clipboard/clipboard.js similarity index 100% rename from src/plugins/ui/public/components/clipboard/clipboard.js rename to src/KbnServer/ui/public/components/clipboard/clipboard.js diff --git a/src/plugins/ui/public/components/collapsible_sidebar/collapsible_sidebar.js b/src/KbnServer/ui/public/components/collapsible_sidebar/collapsible_sidebar.js similarity index 100% rename from src/plugins/ui/public/components/collapsible_sidebar/collapsible_sidebar.js rename to src/KbnServer/ui/public/components/collapsible_sidebar/collapsible_sidebar.js diff --git a/src/plugins/ui/public/components/collapsible_sidebar/collapsible_sidebar.less b/src/KbnServer/ui/public/components/collapsible_sidebar/collapsible_sidebar.less similarity index 100% rename from src/plugins/ui/public/components/collapsible_sidebar/collapsible_sidebar.less rename to src/KbnServer/ui/public/components/collapsible_sidebar/collapsible_sidebar.less diff --git a/src/plugins/ui/public/components/compile_recursive_directive.js b/src/KbnServer/ui/public/components/compile_recursive_directive.js similarity index 100% rename from src/plugins/ui/public/components/compile_recursive_directive.js rename to src/KbnServer/ui/public/components/compile_recursive_directive.js diff --git a/src/plugins/ui/public/components/config/_delayed_updater.js b/src/KbnServer/ui/public/components/config/_delayed_updater.js similarity index 100% rename from src/plugins/ui/public/components/config/_delayed_updater.js rename to src/KbnServer/ui/public/components/config/_delayed_updater.js diff --git a/src/plugins/ui/public/components/config/_vals.js b/src/KbnServer/ui/public/components/config/_vals.js similarity index 100% rename from src/plugins/ui/public/components/config/_vals.js rename to src/KbnServer/ui/public/components/config/_vals.js diff --git a/src/plugins/ui/public/components/config/config.js b/src/KbnServer/ui/public/components/config/config.js similarity index 100% rename from src/plugins/ui/public/components/config/config.js rename to src/KbnServer/ui/public/components/config/config.js diff --git a/src/plugins/ui/public/components/config/defaults.js b/src/KbnServer/ui/public/components/config/defaults.js similarity index 100% rename from src/plugins/ui/public/components/config/defaults.js rename to src/KbnServer/ui/public/components/config/defaults.js diff --git a/src/plugins/ui/public/components/config/migrations/_empty_ b/src/KbnServer/ui/public/components/config/migrations/_empty_ similarity index 100% rename from src/plugins/ui/public/components/config/migrations/_empty_ rename to src/KbnServer/ui/public/components/config/migrations/_empty_ diff --git a/src/plugins/ui/public/components/courier/_error_handlers.js b/src/KbnServer/ui/public/components/courier/_error_handlers.js similarity index 100% rename from src/plugins/ui/public/components/courier/_error_handlers.js rename to src/KbnServer/ui/public/components/courier/_error_handlers.js diff --git a/src/plugins/ui/public/components/courier/_redirect_when_missing.js b/src/KbnServer/ui/public/components/courier/_redirect_when_missing.js similarity index 100% rename from src/plugins/ui/public/components/courier/_redirect_when_missing.js rename to src/KbnServer/ui/public/components/courier/_redirect_when_missing.js diff --git a/src/plugins/ui/public/components/courier/_request_queue.js b/src/KbnServer/ui/public/components/courier/_request_queue.js similarity index 100% rename from src/plugins/ui/public/components/courier/_request_queue.js rename to src/KbnServer/ui/public/components/courier/_request_queue.js diff --git a/src/plugins/ui/public/components/courier/courier.js b/src/KbnServer/ui/public/components/courier/courier.js similarity index 100% rename from src/plugins/ui/public/components/courier/courier.js rename to src/KbnServer/ui/public/components/courier/courier.js diff --git a/src/plugins/ui/public/components/courier/data_source/_abstract.js b/src/KbnServer/ui/public/components/courier/data_source/_abstract.js similarity index 100% rename from src/plugins/ui/public/components/courier/data_source/_abstract.js rename to src/KbnServer/ui/public/components/courier/data_source/_abstract.js diff --git a/src/plugins/ui/public/components/courier/data_source/_decorate_query.js b/src/KbnServer/ui/public/components/courier/data_source/_decorate_query.js similarity index 100% rename from src/plugins/ui/public/components/courier/data_source/_decorate_query.js rename to src/KbnServer/ui/public/components/courier/data_source/_decorate_query.js diff --git a/src/plugins/ui/public/components/courier/data_source/_doc_send_to_es.js b/src/KbnServer/ui/public/components/courier/data_source/_doc_send_to_es.js similarity index 100% rename from src/plugins/ui/public/components/courier/data_source/_doc_send_to_es.js rename to src/KbnServer/ui/public/components/courier/data_source/_doc_send_to_es.js diff --git a/src/plugins/ui/public/components/courier/data_source/_normalize_sort_request.js b/src/KbnServer/ui/public/components/courier/data_source/_normalize_sort_request.js similarity index 100% rename from src/plugins/ui/public/components/courier/data_source/_normalize_sort_request.js rename to src/KbnServer/ui/public/components/courier/data_source/_normalize_sort_request.js diff --git a/src/plugins/ui/public/components/courier/data_source/_root_search_source.js b/src/KbnServer/ui/public/components/courier/data_source/_root_search_source.js similarity index 100% rename from src/plugins/ui/public/components/courier/data_source/_root_search_source.js rename to src/KbnServer/ui/public/components/courier/data_source/_root_search_source.js diff --git a/src/plugins/ui/public/components/courier/data_source/doc_source.js b/src/KbnServer/ui/public/components/courier/data_source/doc_source.js similarity index 100% rename from src/plugins/ui/public/components/courier/data_source/doc_source.js rename to src/KbnServer/ui/public/components/courier/data_source/doc_source.js diff --git a/src/plugins/ui/public/components/courier/data_source/search_source.js b/src/KbnServer/ui/public/components/courier/data_source/search_source.js similarity index 100% rename from src/plugins/ui/public/components/courier/data_source/search_source.js rename to src/KbnServer/ui/public/components/courier/data_source/search_source.js diff --git a/src/plugins/ui/public/components/courier/fetch/_call_client.js b/src/KbnServer/ui/public/components/courier/fetch/_call_client.js similarity index 100% rename from src/plugins/ui/public/components/courier/fetch/_call_client.js rename to src/KbnServer/ui/public/components/courier/fetch/_call_client.js diff --git a/src/plugins/ui/public/components/courier/fetch/_call_response_handlers.js b/src/KbnServer/ui/public/components/courier/fetch/_call_response_handlers.js similarity index 100% rename from src/plugins/ui/public/components/courier/fetch/_call_response_handlers.js rename to src/KbnServer/ui/public/components/courier/fetch/_call_response_handlers.js diff --git a/src/plugins/ui/public/components/courier/fetch/_continue_incomplete.js b/src/KbnServer/ui/public/components/courier/fetch/_continue_incomplete.js similarity index 100% rename from src/plugins/ui/public/components/courier/fetch/_continue_incomplete.js rename to src/KbnServer/ui/public/components/courier/fetch/_continue_incomplete.js diff --git a/src/plugins/ui/public/components/courier/fetch/_fetch_these.js b/src/KbnServer/ui/public/components/courier/fetch/_fetch_these.js similarity index 100% rename from src/plugins/ui/public/components/courier/fetch/_fetch_these.js rename to src/KbnServer/ui/public/components/courier/fetch/_fetch_these.js diff --git a/src/plugins/ui/public/components/courier/fetch/_for_each_strategy.js b/src/KbnServer/ui/public/components/courier/fetch/_for_each_strategy.js similarity index 100% rename from src/plugins/ui/public/components/courier/fetch/_for_each_strategy.js rename to src/KbnServer/ui/public/components/courier/fetch/_for_each_strategy.js diff --git a/src/plugins/ui/public/components/courier/fetch/_is_request.js b/src/KbnServer/ui/public/components/courier/fetch/_is_request.js similarity index 100% rename from src/plugins/ui/public/components/courier/fetch/_is_request.js rename to src/KbnServer/ui/public/components/courier/fetch/_is_request.js diff --git a/src/plugins/ui/public/components/courier/fetch/_merge_duplicate_requests.js b/src/KbnServer/ui/public/components/courier/fetch/_merge_duplicate_requests.js similarity index 100% rename from src/plugins/ui/public/components/courier/fetch/_merge_duplicate_requests.js rename to src/KbnServer/ui/public/components/courier/fetch/_merge_duplicate_requests.js diff --git a/src/plugins/ui/public/components/courier/fetch/_notifier.js b/src/KbnServer/ui/public/components/courier/fetch/_notifier.js similarity index 100% rename from src/plugins/ui/public/components/courier/fetch/_notifier.js rename to src/KbnServer/ui/public/components/courier/fetch/_notifier.js diff --git a/src/plugins/ui/public/components/courier/fetch/_req_status.js b/src/KbnServer/ui/public/components/courier/fetch/_req_status.js similarity index 100% rename from src/plugins/ui/public/components/courier/fetch/_req_status.js rename to src/KbnServer/ui/public/components/courier/fetch/_req_status.js diff --git a/src/plugins/ui/public/components/courier/fetch/fetch.js b/src/KbnServer/ui/public/components/courier/fetch/fetch.js similarity index 100% rename from src/plugins/ui/public/components/courier/fetch/fetch.js rename to src/KbnServer/ui/public/components/courier/fetch/fetch.js diff --git a/src/plugins/ui/public/components/courier/fetch/request/_error_handler.js b/src/KbnServer/ui/public/components/courier/fetch/request/_error_handler.js similarity index 100% rename from src/plugins/ui/public/components/courier/fetch/request/_error_handler.js rename to src/KbnServer/ui/public/components/courier/fetch/request/_error_handler.js diff --git a/src/plugins/ui/public/components/courier/fetch/request/_segmented_handle.js b/src/KbnServer/ui/public/components/courier/fetch/request/_segmented_handle.js similarity index 100% rename from src/plugins/ui/public/components/courier/fetch/request/_segmented_handle.js rename to src/KbnServer/ui/public/components/courier/fetch/request/_segmented_handle.js diff --git a/src/plugins/ui/public/components/courier/fetch/request/doc.js b/src/KbnServer/ui/public/components/courier/fetch/request/doc.js similarity index 100% rename from src/plugins/ui/public/components/courier/fetch/request/doc.js rename to src/KbnServer/ui/public/components/courier/fetch/request/doc.js diff --git a/src/plugins/ui/public/components/courier/fetch/request/request.js b/src/KbnServer/ui/public/components/courier/fetch/request/request.js similarity index 100% rename from src/plugins/ui/public/components/courier/fetch/request/request.js rename to src/KbnServer/ui/public/components/courier/fetch/request/request.js diff --git a/src/plugins/ui/public/components/courier/fetch/request/search.js b/src/KbnServer/ui/public/components/courier/fetch/request/search.js similarity index 100% rename from src/plugins/ui/public/components/courier/fetch/request/search.js rename to src/KbnServer/ui/public/components/courier/fetch/request/search.js diff --git a/src/plugins/ui/public/components/courier/fetch/request/segmented.js b/src/KbnServer/ui/public/components/courier/fetch/request/segmented.js similarity index 100% rename from src/plugins/ui/public/components/courier/fetch/request/segmented.js rename to src/KbnServer/ui/public/components/courier/fetch/request/segmented.js diff --git a/src/plugins/ui/public/components/courier/fetch/strategy/doc.js b/src/KbnServer/ui/public/components/courier/fetch/strategy/doc.js similarity index 100% rename from src/plugins/ui/public/components/courier/fetch/strategy/doc.js rename to src/KbnServer/ui/public/components/courier/fetch/strategy/doc.js diff --git a/src/plugins/ui/public/components/courier/fetch/strategy/search.js b/src/KbnServer/ui/public/components/courier/fetch/strategy/search.js similarity index 100% rename from src/plugins/ui/public/components/courier/fetch/strategy/search.js rename to src/KbnServer/ui/public/components/courier/fetch/strategy/search.js diff --git a/src/plugins/ui/public/components/courier/looper/_looper.js b/src/KbnServer/ui/public/components/courier/looper/_looper.js similarity index 100% rename from src/plugins/ui/public/components/courier/looper/_looper.js rename to src/KbnServer/ui/public/components/courier/looper/_looper.js diff --git a/src/plugins/ui/public/components/courier/looper/doc.js b/src/KbnServer/ui/public/components/courier/looper/doc.js similarity index 100% rename from src/plugins/ui/public/components/courier/looper/doc.js rename to src/KbnServer/ui/public/components/courier/looper/doc.js diff --git a/src/plugins/ui/public/components/courier/looper/search.js b/src/KbnServer/ui/public/components/courier/looper/search.js similarity index 100% rename from src/plugins/ui/public/components/courier/looper/search.js rename to src/KbnServer/ui/public/components/courier/looper/search.js diff --git a/src/plugins/ui/public/components/courier/saved_object/saved_object.js b/src/KbnServer/ui/public/components/courier/saved_object/saved_object.js similarity index 100% rename from src/plugins/ui/public/components/courier/saved_object/saved_object.js rename to src/KbnServer/ui/public/components/courier/saved_object/saved_object.js diff --git a/src/plugins/ui/public/components/debounce.js b/src/KbnServer/ui/public/components/debounce.js similarity index 100% rename from src/plugins/ui/public/components/debounce.js rename to src/KbnServer/ui/public/components/debounce.js diff --git a/src/plugins/ui/public/components/doc_table/components/table_header.html b/src/KbnServer/ui/public/components/doc_table/components/table_header.html similarity index 100% rename from src/plugins/ui/public/components/doc_table/components/table_header.html rename to src/KbnServer/ui/public/components/doc_table/components/table_header.html diff --git a/src/plugins/ui/public/components/doc_table/components/table_header.js b/src/KbnServer/ui/public/components/doc_table/components/table_header.js similarity index 100% rename from src/plugins/ui/public/components/doc_table/components/table_header.js rename to src/KbnServer/ui/public/components/doc_table/components/table_header.js diff --git a/src/plugins/ui/public/components/doc_table/components/table_row.js b/src/KbnServer/ui/public/components/doc_table/components/table_row.js similarity index 100% rename from src/plugins/ui/public/components/doc_table/components/table_row.js rename to src/KbnServer/ui/public/components/doc_table/components/table_row.js diff --git a/src/plugins/ui/public/components/doc_table/components/table_row/cell.html b/src/KbnServer/ui/public/components/doc_table/components/table_row/cell.html similarity index 100% rename from src/plugins/ui/public/components/doc_table/components/table_row/cell.html rename to src/KbnServer/ui/public/components/doc_table/components/table_row/cell.html diff --git a/src/plugins/ui/public/components/doc_table/components/table_row/details.html b/src/KbnServer/ui/public/components/doc_table/components/table_row/details.html similarity index 100% rename from src/plugins/ui/public/components/doc_table/components/table_row/details.html rename to src/KbnServer/ui/public/components/doc_table/components/table_row/details.html diff --git a/src/plugins/ui/public/components/doc_table/components/table_row/open.html b/src/KbnServer/ui/public/components/doc_table/components/table_row/open.html similarity index 100% rename from src/plugins/ui/public/components/doc_table/components/table_row/open.html rename to src/KbnServer/ui/public/components/doc_table/components/table_row/open.html diff --git a/src/plugins/ui/public/components/doc_table/doc_table.html b/src/KbnServer/ui/public/components/doc_table/doc_table.html similarity index 100% rename from src/plugins/ui/public/components/doc_table/doc_table.html rename to src/KbnServer/ui/public/components/doc_table/doc_table.html diff --git a/src/plugins/ui/public/components/doc_table/doc_table.js b/src/KbnServer/ui/public/components/doc_table/doc_table.js similarity index 100% rename from src/plugins/ui/public/components/doc_table/doc_table.js rename to src/KbnServer/ui/public/components/doc_table/doc_table.js diff --git a/src/plugins/ui/public/components/doc_table/doc_table.less b/src/KbnServer/ui/public/components/doc_table/doc_table.less similarity index 100% rename from src/plugins/ui/public/components/doc_table/doc_table.less rename to src/KbnServer/ui/public/components/doc_table/doc_table.less diff --git a/src/plugins/ui/public/components/doc_table/lib/get_sort.js b/src/KbnServer/ui/public/components/doc_table/lib/get_sort.js similarity index 100% rename from src/plugins/ui/public/components/doc_table/lib/get_sort.js rename to src/KbnServer/ui/public/components/doc_table/lib/get_sort.js diff --git a/src/plugins/ui/public/components/doc_title/doc_title.js b/src/KbnServer/ui/public/components/doc_title/doc_title.js similarity index 100% rename from src/plugins/ui/public/components/doc_title/doc_title.js rename to src/KbnServer/ui/public/components/doc_title/doc_title.js diff --git a/src/plugins/ui/public/components/doc_viewer/doc_viewer.html b/src/KbnServer/ui/public/components/doc_viewer/doc_viewer.html similarity index 100% rename from src/plugins/ui/public/components/doc_viewer/doc_viewer.html rename to src/KbnServer/ui/public/components/doc_viewer/doc_viewer.html diff --git a/src/plugins/ui/public/components/doc_viewer/doc_viewer.js b/src/KbnServer/ui/public/components/doc_viewer/doc_viewer.js similarity index 100% rename from src/plugins/ui/public/components/doc_viewer/doc_viewer.js rename to src/KbnServer/ui/public/components/doc_viewer/doc_viewer.js diff --git a/src/plugins/ui/public/components/doc_viewer/doc_viewer.less b/src/KbnServer/ui/public/components/doc_viewer/doc_viewer.less similarity index 100% rename from src/plugins/ui/public/components/doc_viewer/doc_viewer.less rename to src/KbnServer/ui/public/components/doc_viewer/doc_viewer.less diff --git a/src/plugins/ui/public/components/elastic_textarea.js b/src/KbnServer/ui/public/components/elastic_textarea.js similarity index 100% rename from src/plugins/ui/public/components/elastic_textarea.js rename to src/KbnServer/ui/public/components/elastic_textarea.js diff --git a/src/plugins/ui/public/components/errors.js b/src/KbnServer/ui/public/components/errors.js similarity index 100% rename from src/plugins/ui/public/components/errors.js rename to src/KbnServer/ui/public/components/errors.js diff --git a/src/plugins/ui/public/components/es.js b/src/KbnServer/ui/public/components/es.js similarity index 100% rename from src/plugins/ui/public/components/es.js rename to src/KbnServer/ui/public/components/es.js diff --git a/src/plugins/ui/public/components/events.js b/src/KbnServer/ui/public/components/events.js similarity index 100% rename from src/plugins/ui/public/components/events.js rename to src/KbnServer/ui/public/components/events.js diff --git a/src/plugins/ui/public/components/fancy_forms/fancy_forms.js b/src/KbnServer/ui/public/components/fancy_forms/fancy_forms.js similarity index 100% rename from src/plugins/ui/public/components/fancy_forms/fancy_forms.js rename to src/KbnServer/ui/public/components/fancy_forms/fancy_forms.js diff --git a/src/plugins/ui/public/components/fancy_forms/kbn_form.js b/src/KbnServer/ui/public/components/fancy_forms/kbn_form.js similarity index 100% rename from src/plugins/ui/public/components/fancy_forms/kbn_form.js rename to src/KbnServer/ui/public/components/fancy_forms/kbn_form.js diff --git a/src/plugins/ui/public/components/fancy_forms/kbn_model.js b/src/KbnServer/ui/public/components/fancy_forms/kbn_model.js similarity index 100% rename from src/plugins/ui/public/components/fancy_forms/kbn_model.js rename to src/KbnServer/ui/public/components/fancy_forms/kbn_model.js diff --git a/src/plugins/ui/public/components/field_editor/field_editor.html b/src/KbnServer/ui/public/components/field_editor/field_editor.html similarity index 100% rename from src/plugins/ui/public/components/field_editor/field_editor.html rename to src/KbnServer/ui/public/components/field_editor/field_editor.html diff --git a/src/plugins/ui/public/components/field_editor/field_editor.js b/src/KbnServer/ui/public/components/field_editor/field_editor.js similarity index 100% rename from src/plugins/ui/public/components/field_editor/field_editor.js rename to src/KbnServer/ui/public/components/field_editor/field_editor.js diff --git a/src/plugins/ui/public/components/field_editor/scripting_info.html b/src/KbnServer/ui/public/components/field_editor/scripting_info.html similarity index 100% rename from src/plugins/ui/public/components/field_editor/scripting_info.html rename to src/KbnServer/ui/public/components/field_editor/scripting_info.html diff --git a/src/plugins/ui/public/components/field_editor/scripting_warning.html b/src/KbnServer/ui/public/components/field_editor/scripting_warning.html similarity index 100% rename from src/plugins/ui/public/components/field_editor/scripting_warning.html rename to src/KbnServer/ui/public/components/field_editor/scripting_warning.html diff --git a/src/plugins/ui/public/components/field_format_editor/field_format_editor.js b/src/KbnServer/ui/public/components/field_format_editor/field_format_editor.js similarity index 100% rename from src/plugins/ui/public/components/field_format_editor/field_format_editor.js rename to src/KbnServer/ui/public/components/field_format_editor/field_format_editor.js diff --git a/src/plugins/ui/public/components/field_format_editor/numeral/numeral.html b/src/KbnServer/ui/public/components/field_format_editor/numeral/numeral.html similarity index 100% rename from src/plugins/ui/public/components/field_format_editor/numeral/numeral.html rename to src/KbnServer/ui/public/components/field_format_editor/numeral/numeral.html diff --git a/src/plugins/ui/public/components/field_format_editor/numeral/numeral.js b/src/KbnServer/ui/public/components/field_format_editor/numeral/numeral.js similarity index 100% rename from src/plugins/ui/public/components/field_format_editor/numeral/numeral.js rename to src/KbnServer/ui/public/components/field_format_editor/numeral/numeral.js diff --git a/src/plugins/ui/public/components/field_format_editor/pattern/pattern.html b/src/KbnServer/ui/public/components/field_format_editor/pattern/pattern.html similarity index 100% rename from src/plugins/ui/public/components/field_format_editor/pattern/pattern.html rename to src/KbnServer/ui/public/components/field_format_editor/pattern/pattern.html diff --git a/src/plugins/ui/public/components/field_format_editor/pattern/pattern.js b/src/KbnServer/ui/public/components/field_format_editor/pattern/pattern.js similarity index 100% rename from src/plugins/ui/public/components/field_format_editor/pattern/pattern.js rename to src/KbnServer/ui/public/components/field_format_editor/pattern/pattern.js diff --git a/src/plugins/ui/public/components/field_format_editor/samples/samples.html b/src/KbnServer/ui/public/components/field_format_editor/samples/samples.html similarity index 100% rename from src/plugins/ui/public/components/field_format_editor/samples/samples.html rename to src/KbnServer/ui/public/components/field_format_editor/samples/samples.html diff --git a/src/plugins/ui/public/components/field_format_editor/samples/samples.js b/src/KbnServer/ui/public/components/field_format_editor/samples/samples.js similarity index 100% rename from src/plugins/ui/public/components/field_format_editor/samples/samples.js rename to src/KbnServer/ui/public/components/field_format_editor/samples/samples.js diff --git a/src/plugins/ui/public/components/filter_bar/filter_bar.html b/src/KbnServer/ui/public/components/filter_bar/filter_bar.html similarity index 100% rename from src/plugins/ui/public/components/filter_bar/filter_bar.html rename to src/KbnServer/ui/public/components/filter_bar/filter_bar.html diff --git a/src/plugins/ui/public/components/filter_bar/filter_bar.js b/src/KbnServer/ui/public/components/filter_bar/filter_bar.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/filter_bar.js rename to src/KbnServer/ui/public/components/filter_bar/filter_bar.js diff --git a/src/plugins/ui/public/components/filter_bar/filter_bar.less b/src/KbnServer/ui/public/components/filter_bar/filter_bar.less similarity index 100% rename from src/plugins/ui/public/components/filter_bar/filter_bar.less rename to src/KbnServer/ui/public/components/filter_bar/filter_bar.less diff --git a/src/plugins/ui/public/components/filter_bar/filter_bar_click_handler.js b/src/KbnServer/ui/public/components/filter_bar/filter_bar_click_handler.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/filter_bar_click_handler.js rename to src/KbnServer/ui/public/components/filter_bar/filter_bar_click_handler.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/changeTimeFilter.js b/src/KbnServer/ui/public/components/filter_bar/lib/changeTimeFilter.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/changeTimeFilter.js rename to src/KbnServer/ui/public/components/filter_bar/lib/changeTimeFilter.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/compareFilters.js b/src/KbnServer/ui/public/components/filter_bar/lib/compareFilters.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/compareFilters.js rename to src/KbnServer/ui/public/components/filter_bar/lib/compareFilters.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/dedupFilters.js b/src/KbnServer/ui/public/components/filter_bar/lib/dedupFilters.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/dedupFilters.js rename to src/KbnServer/ui/public/components/filter_bar/lib/dedupFilters.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/extractTimeFilter.js b/src/KbnServer/ui/public/components/filter_bar/lib/extractTimeFilter.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/extractTimeFilter.js rename to src/KbnServer/ui/public/components/filter_bar/lib/extractTimeFilter.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/filterAppliedAndUnwrap.js b/src/KbnServer/ui/public/components/filter_bar/lib/filterAppliedAndUnwrap.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/filterAppliedAndUnwrap.js rename to src/KbnServer/ui/public/components/filter_bar/lib/filterAppliedAndUnwrap.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/filterOutTimeBasedFilter.js b/src/KbnServer/ui/public/components/filter_bar/lib/filterOutTimeBasedFilter.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/filterOutTimeBasedFilter.js rename to src/KbnServer/ui/public/components/filter_bar/lib/filterOutTimeBasedFilter.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/generateMappingChain.js b/src/KbnServer/ui/public/components/filter_bar/lib/generateMappingChain.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/generateMappingChain.js rename to src/KbnServer/ui/public/components/filter_bar/lib/generateMappingChain.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/mapAndFlattenFilters.js b/src/KbnServer/ui/public/components/filter_bar/lib/mapAndFlattenFilters.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/mapAndFlattenFilters.js rename to src/KbnServer/ui/public/components/filter_bar/lib/mapAndFlattenFilters.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/mapDefault.js b/src/KbnServer/ui/public/components/filter_bar/lib/mapDefault.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/mapDefault.js rename to src/KbnServer/ui/public/components/filter_bar/lib/mapDefault.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/mapExists.js b/src/KbnServer/ui/public/components/filter_bar/lib/mapExists.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/mapExists.js rename to src/KbnServer/ui/public/components/filter_bar/lib/mapExists.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/mapFilter.js b/src/KbnServer/ui/public/components/filter_bar/lib/mapFilter.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/mapFilter.js rename to src/KbnServer/ui/public/components/filter_bar/lib/mapFilter.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/mapFlattenAndWrapFilters.js b/src/KbnServer/ui/public/components/filter_bar/lib/mapFlattenAndWrapFilters.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/mapFlattenAndWrapFilters.js rename to src/KbnServer/ui/public/components/filter_bar/lib/mapFlattenAndWrapFilters.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/mapGeoBoundingBox.js b/src/KbnServer/ui/public/components/filter_bar/lib/mapGeoBoundingBox.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/mapGeoBoundingBox.js rename to src/KbnServer/ui/public/components/filter_bar/lib/mapGeoBoundingBox.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/mapMissing.js b/src/KbnServer/ui/public/components/filter_bar/lib/mapMissing.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/mapMissing.js rename to src/KbnServer/ui/public/components/filter_bar/lib/mapMissing.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/mapQueryString.js b/src/KbnServer/ui/public/components/filter_bar/lib/mapQueryString.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/mapQueryString.js rename to src/KbnServer/ui/public/components/filter_bar/lib/mapQueryString.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/mapRange.js b/src/KbnServer/ui/public/components/filter_bar/lib/mapRange.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/mapRange.js rename to src/KbnServer/ui/public/components/filter_bar/lib/mapRange.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/mapScript.js b/src/KbnServer/ui/public/components/filter_bar/lib/mapScript.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/mapScript.js rename to src/KbnServer/ui/public/components/filter_bar/lib/mapScript.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/mapTerms.js b/src/KbnServer/ui/public/components/filter_bar/lib/mapTerms.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/mapTerms.js rename to src/KbnServer/ui/public/components/filter_bar/lib/mapTerms.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/onlyDisabled.js b/src/KbnServer/ui/public/components/filter_bar/lib/onlyDisabled.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/onlyDisabled.js rename to src/KbnServer/ui/public/components/filter_bar/lib/onlyDisabled.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/onlyStateChanged.js b/src/KbnServer/ui/public/components/filter_bar/lib/onlyStateChanged.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/onlyStateChanged.js rename to src/KbnServer/ui/public/components/filter_bar/lib/onlyStateChanged.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/remapFilters.js b/src/KbnServer/ui/public/components/filter_bar/lib/remapFilters.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/remapFilters.js rename to src/KbnServer/ui/public/components/filter_bar/lib/remapFilters.js diff --git a/src/plugins/ui/public/components/filter_bar/lib/uniqFilters.js b/src/KbnServer/ui/public/components/filter_bar/lib/uniqFilters.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/lib/uniqFilters.js rename to src/KbnServer/ui/public/components/filter_bar/lib/uniqFilters.js diff --git a/src/plugins/ui/public/components/filter_bar/push_filter.js b/src/KbnServer/ui/public/components/filter_bar/push_filter.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/push_filter.js rename to src/KbnServer/ui/public/components/filter_bar/push_filter.js diff --git a/src/plugins/ui/public/components/filter_bar/query_filter.js b/src/KbnServer/ui/public/components/filter_bar/query_filter.js similarity index 100% rename from src/plugins/ui/public/components/filter_bar/query_filter.js rename to src/KbnServer/ui/public/components/filter_bar/query_filter.js diff --git a/src/plugins/ui/public/components/filter_manager/filter_manager.js b/src/KbnServer/ui/public/components/filter_manager/filter_manager.js similarity index 100% rename from src/plugins/ui/public/components/filter_manager/filter_manager.js rename to src/KbnServer/ui/public/components/filter_manager/filter_manager.js diff --git a/src/plugins/ui/public/components/filter_manager/lib/phrase.js b/src/KbnServer/ui/public/components/filter_manager/lib/phrase.js similarity index 100% rename from src/plugins/ui/public/components/filter_manager/lib/phrase.js rename to src/KbnServer/ui/public/components/filter_manager/lib/phrase.js diff --git a/src/plugins/ui/public/components/filter_manager/lib/query.js b/src/KbnServer/ui/public/components/filter_manager/lib/query.js similarity index 100% rename from src/plugins/ui/public/components/filter_manager/lib/query.js rename to src/KbnServer/ui/public/components/filter_manager/lib/query.js diff --git a/src/plugins/ui/public/components/filter_manager/lib/range.js b/src/KbnServer/ui/public/components/filter_manager/lib/range.js similarity index 100% rename from src/plugins/ui/public/components/filter_manager/lib/range.js rename to src/KbnServer/ui/public/components/filter_manager/lib/range.js diff --git a/src/plugins/ui/public/components/fixedScroll.js b/src/KbnServer/ui/public/components/fixedScroll.js similarity index 100% rename from src/plugins/ui/public/components/fixedScroll.js rename to src/KbnServer/ui/public/components/fixedScroll.js diff --git a/src/plugins/ui/public/components/highlight/highlight.js b/src/KbnServer/ui/public/components/highlight/highlight.js similarity index 100% rename from src/plugins/ui/public/components/highlight/highlight.js rename to src/KbnServer/ui/public/components/highlight/highlight.js diff --git a/src/plugins/ui/public/components/highlight/highlight_tags.js b/src/KbnServer/ui/public/components/highlight/highlight_tags.js similarity index 100% rename from src/plugins/ui/public/components/highlight/highlight_tags.js rename to src/KbnServer/ui/public/components/highlight/highlight_tags.js diff --git a/src/plugins/ui/public/components/index_patterns/_cast_mapping_type.js b/src/KbnServer/ui/public/components/index_patterns/_cast_mapping_type.js similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_cast_mapping_type.js rename to src/KbnServer/ui/public/components/index_patterns/_cast_mapping_type.js diff --git a/src/plugins/ui/public/components/index_patterns/_ensure_some.js b/src/KbnServer/ui/public/components/index_patterns/_ensure_some.js similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_ensure_some.js rename to src/KbnServer/ui/public/components/index_patterns/_ensure_some.js diff --git a/src/plugins/ui/public/components/index_patterns/_field.js b/src/KbnServer/ui/public/components/index_patterns/_field.js similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_field.js rename to src/KbnServer/ui/public/components/index_patterns/_field.js diff --git a/src/plugins/ui/public/components/index_patterns/_field_format/FieldFormat.js b/src/KbnServer/ui/public/components/index_patterns/_field_format/FieldFormat.js similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_field_format/FieldFormat.js rename to src/KbnServer/ui/public/components/index_patterns/_field_format/FieldFormat.js diff --git a/src/plugins/ui/public/components/index_patterns/_field_format/contentTypes.js b/src/KbnServer/ui/public/components/index_patterns/_field_format/contentTypes.js similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_field_format/contentTypes.js rename to src/KbnServer/ui/public/components/index_patterns/_field_format/contentTypes.js diff --git a/src/plugins/ui/public/components/index_patterns/_field_list.js b/src/KbnServer/ui/public/components/index_patterns/_field_list.js similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_field_list.js rename to src/KbnServer/ui/public/components/index_patterns/_field_list.js diff --git a/src/plugins/ui/public/components/index_patterns/_field_types.js b/src/KbnServer/ui/public/components/index_patterns/_field_types.js similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_field_types.js rename to src/KbnServer/ui/public/components/index_patterns/_field_types.js diff --git a/src/plugins/ui/public/components/index_patterns/_flatten_hit.js b/src/KbnServer/ui/public/components/index_patterns/_flatten_hit.js similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_flatten_hit.js rename to src/KbnServer/ui/public/components/index_patterns/_flatten_hit.js diff --git a/src/plugins/ui/public/components/index_patterns/_format_hit.js b/src/KbnServer/ui/public/components/index_patterns/_format_hit.js similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_format_hit.js rename to src/KbnServer/ui/public/components/index_patterns/_format_hit.js diff --git a/src/plugins/ui/public/components/index_patterns/_get_computed_fields.js b/src/KbnServer/ui/public/components/index_patterns/_get_computed_fields.js similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_get_computed_fields.js rename to src/KbnServer/ui/public/components/index_patterns/_get_computed_fields.js diff --git a/src/plugins/ui/public/components/index_patterns/_get_ids.js b/src/KbnServer/ui/public/components/index_patterns/_get_ids.js similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_get_ids.js rename to src/KbnServer/ui/public/components/index_patterns/_get_ids.js diff --git a/src/plugins/ui/public/components/index_patterns/_index_pattern.js b/src/KbnServer/ui/public/components/index_patterns/_index_pattern.js similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_index_pattern.js rename to src/KbnServer/ui/public/components/index_patterns/_index_pattern.js diff --git a/src/plugins/ui/public/components/index_patterns/_intervals.js b/src/KbnServer/ui/public/components/index_patterns/_intervals.js similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_intervals.js rename to src/KbnServer/ui/public/components/index_patterns/_intervals.js diff --git a/src/plugins/ui/public/components/index_patterns/_local_cache.js b/src/KbnServer/ui/public/components/index_patterns/_local_cache.js similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_local_cache.js rename to src/KbnServer/ui/public/components/index_patterns/_local_cache.js diff --git a/src/plugins/ui/public/components/index_patterns/_map_field.js b/src/KbnServer/ui/public/components/index_patterns/_map_field.js similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_map_field.js rename to src/KbnServer/ui/public/components/index_patterns/_map_field.js diff --git a/src/plugins/ui/public/components/index_patterns/_mapper.js b/src/KbnServer/ui/public/components/index_patterns/_mapper.js similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_mapper.js rename to src/KbnServer/ui/public/components/index_patterns/_mapper.js diff --git a/src/plugins/ui/public/components/index_patterns/_object.tmpl.html b/src/KbnServer/ui/public/components/index_patterns/_object.tmpl.html similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_object.tmpl.html rename to src/KbnServer/ui/public/components/index_patterns/_object.tmpl.html diff --git a/src/plugins/ui/public/components/index_patterns/_pattern_cache.js b/src/KbnServer/ui/public/components/index_patterns/_pattern_cache.js similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_pattern_cache.js rename to src/KbnServer/ui/public/components/index_patterns/_pattern_cache.js diff --git a/src/plugins/ui/public/components/index_patterns/_pattern_to_wildcard.js b/src/KbnServer/ui/public/components/index_patterns/_pattern_to_wildcard.js similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_pattern_to_wildcard.js rename to src/KbnServer/ui/public/components/index_patterns/_pattern_to_wildcard.js diff --git a/src/plugins/ui/public/components/index_patterns/_transform_mapping_into_fields.js b/src/KbnServer/ui/public/components/index_patterns/_transform_mapping_into_fields.js similarity index 100% rename from src/plugins/ui/public/components/index_patterns/_transform_mapping_into_fields.js rename to src/KbnServer/ui/public/components/index_patterns/_transform_mapping_into_fields.js diff --git a/src/plugins/ui/public/components/index_patterns/index_patterns.js b/src/KbnServer/ui/public/components/index_patterns/index_patterns.js similarity index 98% rename from src/plugins/ui/public/components/index_patterns/index_patterns.js rename to src/KbnServer/ui/public/components/index_patterns/index_patterns.js index 7c114ccac2ac9..ec831a205e62d 100644 --- a/src/plugins/ui/public/components/index_patterns/index_patterns.js +++ b/src/KbnServer/ui/public/components/index_patterns/index_patterns.js @@ -2,7 +2,7 @@ define(function (require) { var module = require('modules').get('kibana/index_patterns'); require('filters/short_dots'); - module.service('indexPatterns', function (es, Notifier, Private, Promise) { + module.service('indexPatterns', function (es, Notifier, Private, Promise, kbnIndex) { var self = this; var _ = require('lodash'); var errors = require('errors'); diff --git a/src/plugins/ui/public/components/indexed_array/_inflector.js b/src/KbnServer/ui/public/components/indexed_array/_inflector.js similarity index 100% rename from src/plugins/ui/public/components/indexed_array/_inflector.js rename to src/KbnServer/ui/public/components/indexed_array/_inflector.js diff --git a/src/plugins/ui/public/components/indexed_array/_path_getter.js b/src/KbnServer/ui/public/components/indexed_array/_path_getter.js similarity index 100% rename from src/plugins/ui/public/components/indexed_array/_path_getter.js rename to src/KbnServer/ui/public/components/indexed_array/_path_getter.js diff --git a/src/plugins/ui/public/components/indexed_array/index.js b/src/KbnServer/ui/public/components/indexed_array/index.js similarity index 100% rename from src/plugins/ui/public/components/indexed_array/index.js rename to src/KbnServer/ui/public/components/indexed_array/index.js diff --git a/src/plugins/ui/public/components/listen.js b/src/KbnServer/ui/public/components/listen.js similarity index 100% rename from src/plugins/ui/public/components/listen.js rename to src/KbnServer/ui/public/components/listen.js diff --git a/src/plugins/ui/public/components/modules.js b/src/KbnServer/ui/public/components/modules.js similarity index 100% rename from src/plugins/ui/public/components/modules.js rename to src/KbnServer/ui/public/components/modules.js diff --git a/src/plugins/ui/public/components/notify/_errors.js b/src/KbnServer/ui/public/components/notify/_errors.js similarity index 100% rename from src/plugins/ui/public/components/notify/_errors.js rename to src/KbnServer/ui/public/components/notify/_errors.js diff --git a/src/plugins/ui/public/components/notify/_notifier.js b/src/KbnServer/ui/public/components/notify/_notifier.js similarity index 100% rename from src/plugins/ui/public/components/notify/_notifier.js rename to src/KbnServer/ui/public/components/notify/_notifier.js diff --git a/src/plugins/ui/public/components/notify/directives.js b/src/KbnServer/ui/public/components/notify/directives.js similarity index 100% rename from src/plugins/ui/public/components/notify/directives.js rename to src/KbnServer/ui/public/components/notify/directives.js diff --git a/src/plugins/ui/public/components/notify/notify.js b/src/KbnServer/ui/public/components/notify/notify.js similarity index 100% rename from src/plugins/ui/public/components/notify/notify.js rename to src/KbnServer/ui/public/components/notify/notify.js diff --git a/src/plugins/ui/public/components/notify/partials/fatal.html b/src/KbnServer/ui/public/components/notify/partials/fatal.html similarity index 100% rename from src/plugins/ui/public/components/notify/partials/fatal.html rename to src/KbnServer/ui/public/components/notify/partials/fatal.html diff --git a/src/plugins/ui/public/components/notify/partials/fatal_splash_screen.html b/src/KbnServer/ui/public/components/notify/partials/fatal_splash_screen.html similarity index 100% rename from src/plugins/ui/public/components/notify/partials/fatal_splash_screen.html rename to src/KbnServer/ui/public/components/notify/partials/fatal_splash_screen.html diff --git a/src/plugins/ui/public/components/notify/partials/toaster.html b/src/KbnServer/ui/public/components/notify/partials/toaster.html similarity index 100% rename from src/plugins/ui/public/components/notify/partials/toaster.html rename to src/KbnServer/ui/public/components/notify/partials/toaster.html diff --git a/src/plugins/ui/public/components/number_list/number_list.html b/src/KbnServer/ui/public/components/number_list/number_list.html similarity index 100% rename from src/plugins/ui/public/components/number_list/number_list.html rename to src/KbnServer/ui/public/components/number_list/number_list.html diff --git a/src/plugins/ui/public/components/number_list/number_list.js b/src/KbnServer/ui/public/components/number_list/number_list.js similarity index 100% rename from src/plugins/ui/public/components/number_list/number_list.js rename to src/KbnServer/ui/public/components/number_list/number_list.js diff --git a/src/plugins/ui/public/components/number_list/number_list_input.js b/src/KbnServer/ui/public/components/number_list/number_list_input.js similarity index 100% rename from src/plugins/ui/public/components/number_list/number_list_input.js rename to src/KbnServer/ui/public/components/number_list/number_list_input.js diff --git a/src/plugins/ui/public/components/paginated_table/paginated_table.html b/src/KbnServer/ui/public/components/paginated_table/paginated_table.html similarity index 100% rename from src/plugins/ui/public/components/paginated_table/paginated_table.html rename to src/KbnServer/ui/public/components/paginated_table/paginated_table.html diff --git a/src/plugins/ui/public/components/paginated_table/paginated_table.js b/src/KbnServer/ui/public/components/paginated_table/paginated_table.js similarity index 100% rename from src/plugins/ui/public/components/paginated_table/paginated_table.js rename to src/KbnServer/ui/public/components/paginated_table/paginated_table.js diff --git a/src/plugins/ui/public/components/persisted_log/persisted_log.js b/src/KbnServer/ui/public/components/persisted_log/persisted_log.js similarity index 100% rename from src/plugins/ui/public/components/persisted_log/persisted_log.js rename to src/KbnServer/ui/public/components/persisted_log/persisted_log.js diff --git a/src/plugins/ui/public/components/private.js b/src/KbnServer/ui/public/components/private.js similarity index 100% rename from src/plugins/ui/public/components/private.js rename to src/KbnServer/ui/public/components/private.js diff --git a/src/plugins/ui/public/components/promises.js b/src/KbnServer/ui/public/components/promises.js similarity index 100% rename from src/plugins/ui/public/components/promises.js rename to src/KbnServer/ui/public/components/promises.js diff --git a/src/plugins/ui/public/components/reflow_watcher.js b/src/KbnServer/ui/public/components/reflow_watcher.js similarity index 100% rename from src/plugins/ui/public/components/reflow_watcher.js rename to src/KbnServer/ui/public/components/reflow_watcher.js diff --git a/src/plugins/ui/public/components/routes/_setup.js b/src/KbnServer/ui/public/components/routes/_setup.js similarity index 93% rename from src/plugins/ui/public/components/routes/_setup.js rename to src/KbnServer/ui/public/components/routes/_setup.js index e043650c1602e..a193a9654dd09 100644 --- a/src/plugins/ui/public/components/routes/_setup.js +++ b/src/KbnServer/ui/public/components/routes/_setup.js @@ -18,8 +18,8 @@ define(function (require) { $rootScope.kibana && $rootScope.kibana.ready ]) .then(function () { - var path = $route.current.$$route.originalPath; - var defaultIndexRequired = !path.match(allowedRoutesRE); + var path = _.get($route, 'current.$$route.originalPath'); + var defaultIndexRequired = path && !path.match(allowedRoutesRE); return courier.indexPatterns.getIds() .then(function (patterns) { diff --git a/src/plugins/ui/public/components/routes/_work_queue.js b/src/KbnServer/ui/public/components/routes/_work_queue.js similarity index 100% rename from src/plugins/ui/public/components/routes/_work_queue.js rename to src/KbnServer/ui/public/components/routes/_work_queue.js diff --git a/src/plugins/ui/public/components/routes/_wrap_route_with_prep.js b/src/KbnServer/ui/public/components/routes/_wrap_route_with_prep.js similarity index 100% rename from src/plugins/ui/public/components/routes/_wrap_route_with_prep.js rename to src/KbnServer/ui/public/components/routes/_wrap_route_with_prep.js diff --git a/src/plugins/ui/public/components/routes/index.js b/src/KbnServer/ui/public/components/routes/index.js similarity index 100% rename from src/plugins/ui/public/components/routes/index.js rename to src/KbnServer/ui/public/components/routes/index.js diff --git a/src/plugins/ui/public/components/state_management/_state_sync.js b/src/KbnServer/ui/public/components/state_management/_state_sync.js similarity index 100% rename from src/plugins/ui/public/components/state_management/_state_sync.js rename to src/KbnServer/ui/public/components/state_management/_state_sync.js diff --git a/src/plugins/ui/public/components/state_management/app_state.js b/src/KbnServer/ui/public/components/state_management/app_state.js similarity index 100% rename from src/plugins/ui/public/components/state_management/app_state.js rename to src/KbnServer/ui/public/components/state_management/app_state.js diff --git a/src/plugins/ui/public/components/state_management/global_state.js b/src/KbnServer/ui/public/components/state_management/global_state.js similarity index 100% rename from src/plugins/ui/public/components/state_management/global_state.js rename to src/KbnServer/ui/public/components/state_management/global_state.js diff --git a/src/plugins/ui/public/components/state_management/state.js b/src/KbnServer/ui/public/components/state_management/state.js similarity index 100% rename from src/plugins/ui/public/components/state_management/state.js rename to src/KbnServer/ui/public/components/state_management/state.js diff --git a/src/plugins/ui/public/components/storage/storage.js b/src/KbnServer/ui/public/components/storage/storage.js similarity index 100% rename from src/plugins/ui/public/components/storage/storage.js rename to src/KbnServer/ui/public/components/storage/storage.js diff --git a/src/plugins/ui/public/components/stringify/.jshintrc b/src/KbnServer/ui/public/components/stringify/.jshintrc similarity index 100% rename from src/plugins/ui/public/components/stringify/.jshintrc rename to src/KbnServer/ui/public/components/stringify/.jshintrc diff --git a/src/plugins/ui/public/components/stringify/editors/date.html b/src/KbnServer/ui/public/components/stringify/editors/date.html similarity index 100% rename from src/plugins/ui/public/components/stringify/editors/date.html rename to src/KbnServer/ui/public/components/stringify/editors/date.html diff --git a/src/plugins/ui/public/components/stringify/editors/string.html b/src/KbnServer/ui/public/components/stringify/editors/string.html similarity index 100% rename from src/plugins/ui/public/components/stringify/editors/string.html rename to src/KbnServer/ui/public/components/stringify/editors/string.html diff --git a/src/plugins/ui/public/components/stringify/editors/url.html b/src/KbnServer/ui/public/components/stringify/editors/url.html similarity index 100% rename from src/plugins/ui/public/components/stringify/editors/url.html rename to src/KbnServer/ui/public/components/stringify/editors/url.html diff --git a/src/plugins/ui/public/components/stringify/icons/cv.png b/src/KbnServer/ui/public/components/stringify/icons/cv.png similarity index 100% rename from src/plugins/ui/public/components/stringify/icons/cv.png rename to src/KbnServer/ui/public/components/stringify/icons/cv.png diff --git a/src/plugins/ui/public/components/stringify/icons/de.png b/src/KbnServer/ui/public/components/stringify/icons/de.png similarity index 100% rename from src/plugins/ui/public/components/stringify/icons/de.png rename to src/KbnServer/ui/public/components/stringify/icons/de.png diff --git a/src/plugins/ui/public/components/stringify/icons/flag-icon.LICENSE b/src/KbnServer/ui/public/components/stringify/icons/flag-icon.LICENSE similarity index 100% rename from src/plugins/ui/public/components/stringify/icons/flag-icon.LICENSE rename to src/KbnServer/ui/public/components/stringify/icons/flag-icon.LICENSE diff --git a/src/plugins/ui/public/components/stringify/icons/go.png b/src/KbnServer/ui/public/components/stringify/icons/go.png similarity index 100% rename from src/plugins/ui/public/components/stringify/icons/go.png rename to src/KbnServer/ui/public/components/stringify/icons/go.png diff --git a/src/plugins/ui/public/components/stringify/icons/ne.png b/src/KbnServer/ui/public/components/stringify/icons/ne.png similarity index 100% rename from src/plugins/ui/public/components/stringify/icons/ne.png rename to src/KbnServer/ui/public/components/stringify/icons/ne.png diff --git a/src/plugins/ui/public/components/stringify/icons/ni.png b/src/KbnServer/ui/public/components/stringify/icons/ni.png similarity index 100% rename from src/plugins/ui/public/components/stringify/icons/ni.png rename to src/KbnServer/ui/public/components/stringify/icons/ni.png diff --git a/src/plugins/ui/public/components/stringify/icons/stop.png b/src/KbnServer/ui/public/components/stringify/icons/stop.png similarity index 100% rename from src/plugins/ui/public/components/stringify/icons/stop.png rename to src/KbnServer/ui/public/components/stringify/icons/stop.png diff --git a/src/plugins/ui/public/components/stringify/icons/us.png b/src/KbnServer/ui/public/components/stringify/icons/us.png similarity index 100% rename from src/plugins/ui/public/components/stringify/icons/us.png rename to src/KbnServer/ui/public/components/stringify/icons/us.png diff --git a/src/plugins/ui/public/components/stringify/register.js b/src/KbnServer/ui/public/components/stringify/register.js similarity index 100% rename from src/plugins/ui/public/components/stringify/register.js rename to src/KbnServer/ui/public/components/stringify/register.js diff --git a/src/plugins/ui/public/components/stringify/types/Bytes.js b/src/KbnServer/ui/public/components/stringify/types/Bytes.js similarity index 100% rename from src/plugins/ui/public/components/stringify/types/Bytes.js rename to src/KbnServer/ui/public/components/stringify/types/Bytes.js diff --git a/src/plugins/ui/public/components/stringify/types/Date.js b/src/KbnServer/ui/public/components/stringify/types/Date.js similarity index 100% rename from src/plugins/ui/public/components/stringify/types/Date.js rename to src/KbnServer/ui/public/components/stringify/types/Date.js diff --git a/src/plugins/ui/public/components/stringify/types/Ip.js b/src/KbnServer/ui/public/components/stringify/types/Ip.js similarity index 100% rename from src/plugins/ui/public/components/stringify/types/Ip.js rename to src/KbnServer/ui/public/components/stringify/types/Ip.js diff --git a/src/plugins/ui/public/components/stringify/types/Number.js b/src/KbnServer/ui/public/components/stringify/types/Number.js similarity index 100% rename from src/plugins/ui/public/components/stringify/types/Number.js rename to src/KbnServer/ui/public/components/stringify/types/Number.js diff --git a/src/plugins/ui/public/components/stringify/types/Percent.js b/src/KbnServer/ui/public/components/stringify/types/Percent.js similarity index 100% rename from src/plugins/ui/public/components/stringify/types/Percent.js rename to src/KbnServer/ui/public/components/stringify/types/Percent.js diff --git a/src/plugins/ui/public/components/stringify/types/Source.js b/src/KbnServer/ui/public/components/stringify/types/Source.js similarity index 100% rename from src/plugins/ui/public/components/stringify/types/Source.js rename to src/KbnServer/ui/public/components/stringify/types/Source.js diff --git a/src/plugins/ui/public/components/stringify/types/String.js b/src/KbnServer/ui/public/components/stringify/types/String.js similarity index 100% rename from src/plugins/ui/public/components/stringify/types/String.js rename to src/KbnServer/ui/public/components/stringify/types/String.js diff --git a/src/plugins/ui/public/components/stringify/types/Url.js b/src/KbnServer/ui/public/components/stringify/types/Url.js similarity index 100% rename from src/plugins/ui/public/components/stringify/types/Url.js rename to src/KbnServer/ui/public/components/stringify/types/Url.js diff --git a/src/plugins/ui/public/components/stringify/types/_Numeral.js b/src/KbnServer/ui/public/components/stringify/types/_Numeral.js similarity index 100% rename from src/plugins/ui/public/components/stringify/types/_Numeral.js rename to src/KbnServer/ui/public/components/stringify/types/_Numeral.js diff --git a/src/plugins/ui/public/components/stringify/types/_source.html b/src/KbnServer/ui/public/components/stringify/types/_source.html similarity index 100% rename from src/plugins/ui/public/components/stringify/types/_source.html rename to src/KbnServer/ui/public/components/stringify/types/_source.html diff --git a/src/plugins/ui/public/components/style_compile/style_compile.css.tmpl b/src/KbnServer/ui/public/components/style_compile/style_compile.css.tmpl similarity index 100% rename from src/plugins/ui/public/components/style_compile/style_compile.css.tmpl rename to src/KbnServer/ui/public/components/style_compile/style_compile.css.tmpl diff --git a/src/plugins/ui/public/components/style_compile/style_compile.js b/src/KbnServer/ui/public/components/style_compile/style_compile.js similarity index 100% rename from src/plugins/ui/public/components/style_compile/style_compile.js rename to src/KbnServer/ui/public/components/style_compile/style_compile.js diff --git a/src/plugins/ui/public/components/template_vis_type/TemplateRenderbot.js b/src/KbnServer/ui/public/components/template_vis_type/TemplateRenderbot.js similarity index 100% rename from src/plugins/ui/public/components/template_vis_type/TemplateRenderbot.js rename to src/KbnServer/ui/public/components/template_vis_type/TemplateRenderbot.js diff --git a/src/plugins/ui/public/components/template_vis_type/TemplateVisType.js b/src/KbnServer/ui/public/components/template_vis_type/TemplateVisType.js similarity index 100% rename from src/plugins/ui/public/components/template_vis_type/TemplateVisType.js rename to src/KbnServer/ui/public/components/template_vis_type/TemplateVisType.js diff --git a/src/plugins/ui/public/components/time_buckets/calc_auto_interval.js b/src/KbnServer/ui/public/components/time_buckets/calc_auto_interval.js similarity index 100% rename from src/plugins/ui/public/components/time_buckets/calc_auto_interval.js rename to src/KbnServer/ui/public/components/time_buckets/calc_auto_interval.js diff --git a/src/plugins/ui/public/components/time_buckets/calc_es_interval.js b/src/KbnServer/ui/public/components/time_buckets/calc_es_interval.js similarity index 100% rename from src/plugins/ui/public/components/time_buckets/calc_es_interval.js rename to src/KbnServer/ui/public/components/time_buckets/calc_es_interval.js diff --git a/src/plugins/ui/public/components/time_buckets/time_buckets.js b/src/KbnServer/ui/public/components/time_buckets/time_buckets.js similarity index 100% rename from src/plugins/ui/public/components/time_buckets/time_buckets.js rename to src/KbnServer/ui/public/components/time_buckets/time_buckets.js diff --git a/src/plugins/ui/public/components/timefilter/lib/diff_interval.js b/src/KbnServer/ui/public/components/timefilter/lib/diff_interval.js similarity index 100% rename from src/plugins/ui/public/components/timefilter/lib/diff_interval.js rename to src/KbnServer/ui/public/components/timefilter/lib/diff_interval.js diff --git a/src/plugins/ui/public/components/timefilter/lib/diff_time.js b/src/KbnServer/ui/public/components/timefilter/lib/diff_time.js similarity index 100% rename from src/plugins/ui/public/components/timefilter/lib/diff_time.js rename to src/KbnServer/ui/public/components/timefilter/lib/diff_time.js diff --git a/src/plugins/ui/public/components/timefilter/timefilter.js b/src/KbnServer/ui/public/components/timefilter/timefilter.js similarity index 100% rename from src/plugins/ui/public/components/timefilter/timefilter.js rename to src/KbnServer/ui/public/components/timefilter/timefilter.js diff --git a/src/plugins/ui/public/components/timepicker/quick_ranges.js b/src/KbnServer/ui/public/components/timepicker/quick_ranges.js similarity index 100% rename from src/plugins/ui/public/components/timepicker/quick_ranges.js rename to src/KbnServer/ui/public/components/timepicker/quick_ranges.js diff --git a/src/plugins/ui/public/components/timepicker/refresh_intervals.js b/src/KbnServer/ui/public/components/timepicker/refresh_intervals.js similarity index 100% rename from src/plugins/ui/public/components/timepicker/refresh_intervals.js rename to src/KbnServer/ui/public/components/timepicker/refresh_intervals.js diff --git a/src/plugins/ui/public/components/timepicker/time_units.js b/src/KbnServer/ui/public/components/timepicker/time_units.js similarity index 100% rename from src/plugins/ui/public/components/timepicker/time_units.js rename to src/KbnServer/ui/public/components/timepicker/time_units.js diff --git a/src/plugins/ui/public/components/timepicker/timepicker.html b/src/KbnServer/ui/public/components/timepicker/timepicker.html similarity index 100% rename from src/plugins/ui/public/components/timepicker/timepicker.html rename to src/KbnServer/ui/public/components/timepicker/timepicker.html diff --git a/src/plugins/ui/public/components/timepicker/timepicker.js b/src/KbnServer/ui/public/components/timepicker/timepicker.js similarity index 100% rename from src/plugins/ui/public/components/timepicker/timepicker.js rename to src/KbnServer/ui/public/components/timepicker/timepicker.js diff --git a/src/plugins/ui/public/components/tooltip/tooltip.html b/src/KbnServer/ui/public/components/tooltip/tooltip.html similarity index 100% rename from src/plugins/ui/public/components/tooltip/tooltip.html rename to src/KbnServer/ui/public/components/tooltip/tooltip.html diff --git a/src/plugins/ui/public/components/tooltip/tooltip.js b/src/KbnServer/ui/public/components/tooltip/tooltip.js similarity index 100% rename from src/plugins/ui/public/components/tooltip/tooltip.js rename to src/KbnServer/ui/public/components/tooltip/tooltip.js diff --git a/src/plugins/ui/public/components/typeahead/_input.js b/src/KbnServer/ui/public/components/typeahead/_input.js similarity index 100% rename from src/plugins/ui/public/components/typeahead/_input.js rename to src/KbnServer/ui/public/components/typeahead/_input.js diff --git a/src/plugins/ui/public/components/typeahead/_items.js b/src/KbnServer/ui/public/components/typeahead/_items.js similarity index 100% rename from src/plugins/ui/public/components/typeahead/_items.js rename to src/KbnServer/ui/public/components/typeahead/_items.js diff --git a/src/plugins/ui/public/components/typeahead/partials/typeahead-items.html b/src/KbnServer/ui/public/components/typeahead/partials/typeahead-items.html similarity index 100% rename from src/plugins/ui/public/components/typeahead/partials/typeahead-items.html rename to src/KbnServer/ui/public/components/typeahead/partials/typeahead-items.html diff --git a/src/plugins/ui/public/components/typeahead/typeahead.js b/src/KbnServer/ui/public/components/typeahead/typeahead.js similarity index 100% rename from src/plugins/ui/public/components/typeahead/typeahead.js rename to src/KbnServer/ui/public/components/typeahead/typeahead.js diff --git a/src/plugins/ui/public/components/typeahead/typeahead.less b/src/KbnServer/ui/public/components/typeahead/typeahead.less similarity index 100% rename from src/plugins/ui/public/components/typeahead/typeahead.less rename to src/KbnServer/ui/public/components/typeahead/typeahead.less diff --git a/src/plugins/ui/public/components/url/url.js b/src/KbnServer/ui/public/components/url/url.js similarity index 100% rename from src/plugins/ui/public/components/url/url.js rename to src/KbnServer/ui/public/components/url/url.js diff --git a/src/plugins/ui/public/components/validateDateInterval.js b/src/KbnServer/ui/public/components/validateDateInterval.js similarity index 100% rename from src/plugins/ui/public/components/validateDateInterval.js rename to src/KbnServer/ui/public/components/validateDateInterval.js diff --git a/src/plugins/ui/public/components/validate_query/lib/from_user.js b/src/KbnServer/ui/public/components/validate_query/lib/from_user.js similarity index 100% rename from src/plugins/ui/public/components/validate_query/lib/from_user.js rename to src/KbnServer/ui/public/components/validate_query/lib/from_user.js diff --git a/src/plugins/ui/public/components/validate_query/lib/to_user.js b/src/KbnServer/ui/public/components/validate_query/lib/to_user.js similarity index 100% rename from src/plugins/ui/public/components/validate_query/lib/to_user.js rename to src/KbnServer/ui/public/components/validate_query/lib/to_user.js diff --git a/src/plugins/ui/public/components/validate_query/validate_query.js b/src/KbnServer/ui/public/components/validate_query/validate_query.js similarity index 100% rename from src/plugins/ui/public/components/validate_query/validate_query.js rename to src/KbnServer/ui/public/components/validate_query/validate_query.js diff --git a/src/plugins/ui/public/components/vis/AggConfig.js b/src/KbnServer/ui/public/components/vis/AggConfig.js similarity index 100% rename from src/plugins/ui/public/components/vis/AggConfig.js rename to src/KbnServer/ui/public/components/vis/AggConfig.js diff --git a/src/plugins/ui/public/components/vis/AggConfigResult.js b/src/KbnServer/ui/public/components/vis/AggConfigResult.js similarity index 100% rename from src/plugins/ui/public/components/vis/AggConfigResult.js rename to src/KbnServer/ui/public/components/vis/AggConfigResult.js diff --git a/src/plugins/ui/public/components/vis/AggConfigs.js b/src/KbnServer/ui/public/components/vis/AggConfigs.js similarity index 100% rename from src/plugins/ui/public/components/vis/AggConfigs.js rename to src/KbnServer/ui/public/components/vis/AggConfigs.js diff --git a/src/plugins/ui/public/components/vis/Renderbot.js b/src/KbnServer/ui/public/components/vis/Renderbot.js similarity index 100% rename from src/plugins/ui/public/components/vis/Renderbot.js rename to src/KbnServer/ui/public/components/vis/Renderbot.js diff --git a/src/plugins/ui/public/components/vis/Schemas.js b/src/KbnServer/ui/public/components/vis/Schemas.js similarity index 100% rename from src/plugins/ui/public/components/vis/Schemas.js rename to src/KbnServer/ui/public/components/vis/Schemas.js diff --git a/src/plugins/ui/public/components/vis/VisType.js b/src/KbnServer/ui/public/components/vis/VisType.js similarity index 100% rename from src/plugins/ui/public/components/vis/VisType.js rename to src/KbnServer/ui/public/components/vis/VisType.js diff --git a/src/plugins/ui/public/components/vis/vis.js b/src/KbnServer/ui/public/components/vis/vis.js similarity index 100% rename from src/plugins/ui/public/components/vis/vis.js rename to src/KbnServer/ui/public/components/vis/vis.js diff --git a/src/plugins/ui/public/components/vislib/components/color/color.js b/src/KbnServer/ui/public/components/vislib/components/color/color.js similarity index 100% rename from src/plugins/ui/public/components/vislib/components/color/color.js rename to src/KbnServer/ui/public/components/vislib/components/color/color.js diff --git a/src/plugins/ui/public/components/vislib/components/color/color_palette.js b/src/KbnServer/ui/public/components/vislib/components/color/color_palette.js similarity index 100% rename from src/plugins/ui/public/components/vislib/components/color/color_palette.js rename to src/KbnServer/ui/public/components/vislib/components/color/color_palette.js diff --git a/src/plugins/ui/public/components/vislib/components/color/seed_colors.js b/src/KbnServer/ui/public/components/vislib/components/color/seed_colors.js similarity index 100% rename from src/plugins/ui/public/components/vislib/components/color/seed_colors.js rename to src/KbnServer/ui/public/components/vislib/components/color/seed_colors.js diff --git a/src/plugins/ui/public/components/vislib/components/labels/data_array.js b/src/KbnServer/ui/public/components/vislib/components/labels/data_array.js similarity index 100% rename from src/plugins/ui/public/components/vislib/components/labels/data_array.js rename to src/KbnServer/ui/public/components/vislib/components/labels/data_array.js diff --git a/src/plugins/ui/public/components/vislib/components/labels/flatten_series.js b/src/KbnServer/ui/public/components/vislib/components/labels/flatten_series.js similarity index 100% rename from src/plugins/ui/public/components/vislib/components/labels/flatten_series.js rename to src/KbnServer/ui/public/components/vislib/components/labels/flatten_series.js diff --git a/src/plugins/ui/public/components/vislib/components/labels/labels.js b/src/KbnServer/ui/public/components/vislib/components/labels/labels.js similarity index 100% rename from src/plugins/ui/public/components/vislib/components/labels/labels.js rename to src/KbnServer/ui/public/components/vislib/components/labels/labels.js diff --git a/src/plugins/ui/public/components/vislib/components/labels/uniq_labels.js b/src/KbnServer/ui/public/components/vislib/components/labels/uniq_labels.js similarity index 100% rename from src/plugins/ui/public/components/vislib/components/labels/uniq_labels.js rename to src/KbnServer/ui/public/components/vislib/components/labels/uniq_labels.js diff --git a/src/plugins/ui/public/components/vislib/components/tooltip/_position_tooltip.js b/src/KbnServer/ui/public/components/vislib/components/tooltip/_position_tooltip.js similarity index 100% rename from src/plugins/ui/public/components/vislib/components/tooltip/_position_tooltip.js rename to src/KbnServer/ui/public/components/vislib/components/tooltip/_position_tooltip.js diff --git a/src/plugins/ui/public/components/vislib/components/tooltip/tooltip.js b/src/KbnServer/ui/public/components/vislib/components/tooltip/tooltip.js similarity index 100% rename from src/plugins/ui/public/components/vislib/components/tooltip/tooltip.js rename to src/KbnServer/ui/public/components/vislib/components/tooltip/tooltip.js diff --git a/src/plugins/ui/public/components/vislib/components/zero_injection/flatten_data.js b/src/KbnServer/ui/public/components/vislib/components/zero_injection/flatten_data.js similarity index 100% rename from src/plugins/ui/public/components/vislib/components/zero_injection/flatten_data.js rename to src/KbnServer/ui/public/components/vislib/components/zero_injection/flatten_data.js diff --git a/src/plugins/ui/public/components/vislib/components/zero_injection/inject_zeros.js b/src/KbnServer/ui/public/components/vislib/components/zero_injection/inject_zeros.js similarity index 100% rename from src/plugins/ui/public/components/vislib/components/zero_injection/inject_zeros.js rename to src/KbnServer/ui/public/components/vislib/components/zero_injection/inject_zeros.js diff --git a/src/plugins/ui/public/components/vislib/components/zero_injection/ordered_x_keys.js b/src/KbnServer/ui/public/components/vislib/components/zero_injection/ordered_x_keys.js similarity index 100% rename from src/plugins/ui/public/components/vislib/components/zero_injection/ordered_x_keys.js rename to src/KbnServer/ui/public/components/vislib/components/zero_injection/ordered_x_keys.js diff --git a/src/plugins/ui/public/components/vislib/components/zero_injection/uniq_keys.js b/src/KbnServer/ui/public/components/vislib/components/zero_injection/uniq_keys.js similarity index 100% rename from src/plugins/ui/public/components/vislib/components/zero_injection/uniq_keys.js rename to src/KbnServer/ui/public/components/vislib/components/zero_injection/uniq_keys.js diff --git a/src/plugins/ui/public/components/vislib/components/zero_injection/zero_fill_data_array.js b/src/KbnServer/ui/public/components/vislib/components/zero_injection/zero_fill_data_array.js similarity index 100% rename from src/plugins/ui/public/components/vislib/components/zero_injection/zero_fill_data_array.js rename to src/KbnServer/ui/public/components/vislib/components/zero_injection/zero_fill_data_array.js diff --git a/src/plugins/ui/public/components/vislib/components/zero_injection/zero_filled_array.js b/src/KbnServer/ui/public/components/vislib/components/zero_injection/zero_filled_array.js similarity index 100% rename from src/plugins/ui/public/components/vislib/components/zero_injection/zero_filled_array.js rename to src/KbnServer/ui/public/components/vislib/components/zero_injection/zero_filled_array.js diff --git a/src/plugins/ui/public/components/vislib/index.js b/src/KbnServer/ui/public/components/vislib/index.js similarity index 100% rename from src/plugins/ui/public/components/vislib/index.js rename to src/KbnServer/ui/public/components/vislib/index.js diff --git a/src/plugins/ui/public/components/vislib/lib/_data_label.js b/src/KbnServer/ui/public/components/vislib/lib/_data_label.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/_data_label.js rename to src/KbnServer/ui/public/components/vislib/lib/_data_label.js diff --git a/src/plugins/ui/public/components/vislib/lib/_error_handler.js b/src/KbnServer/ui/public/components/vislib/lib/_error_handler.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/_error_handler.js rename to src/KbnServer/ui/public/components/vislib/lib/_error_handler.js diff --git a/src/plugins/ui/public/components/vislib/lib/alerts.js b/src/KbnServer/ui/public/components/vislib/lib/alerts.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/alerts.js rename to src/KbnServer/ui/public/components/vislib/lib/alerts.js diff --git a/src/plugins/ui/public/components/vislib/lib/axis_title.js b/src/KbnServer/ui/public/components/vislib/lib/axis_title.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/axis_title.js rename to src/KbnServer/ui/public/components/vislib/lib/axis_title.js diff --git a/src/plugins/ui/public/components/vislib/lib/chart_title.js b/src/KbnServer/ui/public/components/vislib/lib/chart_title.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/chart_title.js rename to src/KbnServer/ui/public/components/vislib/lib/chart_title.js diff --git a/src/plugins/ui/public/components/vislib/lib/data.js b/src/KbnServer/ui/public/components/vislib/lib/data.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/data.js rename to src/KbnServer/ui/public/components/vislib/lib/data.js diff --git a/src/plugins/ui/public/components/vislib/lib/dispatch.js b/src/KbnServer/ui/public/components/vislib/lib/dispatch.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/dispatch.js rename to src/KbnServer/ui/public/components/vislib/lib/dispatch.js diff --git a/src/plugins/ui/public/components/vislib/lib/handler/handler.js b/src/KbnServer/ui/public/components/vislib/lib/handler/handler.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/handler/handler.js rename to src/KbnServer/ui/public/components/vislib/lib/handler/handler.js diff --git a/src/plugins/ui/public/components/vislib/lib/handler/handler_types.js b/src/KbnServer/ui/public/components/vislib/lib/handler/handler_types.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/handler/handler_types.js rename to src/KbnServer/ui/public/components/vislib/lib/handler/handler_types.js diff --git a/src/plugins/ui/public/components/vislib/lib/handler/types/pie.js b/src/KbnServer/ui/public/components/vislib/lib/handler/types/pie.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/handler/types/pie.js rename to src/KbnServer/ui/public/components/vislib/lib/handler/types/pie.js diff --git a/src/plugins/ui/public/components/vislib/lib/handler/types/point_series.js b/src/KbnServer/ui/public/components/vislib/lib/handler/types/point_series.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/handler/types/point_series.js rename to src/KbnServer/ui/public/components/vislib/lib/handler/types/point_series.js diff --git a/src/plugins/ui/public/components/vislib/lib/handler/types/tile_map.js b/src/KbnServer/ui/public/components/vislib/lib/handler/types/tile_map.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/handler/types/tile_map.js rename to src/KbnServer/ui/public/components/vislib/lib/handler/types/tile_map.js diff --git a/src/plugins/ui/public/components/vislib/lib/layout/layout.js b/src/KbnServer/ui/public/components/vislib/lib/layout/layout.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/layout/layout.js rename to src/KbnServer/ui/public/components/vislib/lib/layout/layout.js diff --git a/src/plugins/ui/public/components/vislib/lib/layout/layout_types.js b/src/KbnServer/ui/public/components/vislib/lib/layout/layout_types.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/layout/layout_types.js rename to src/KbnServer/ui/public/components/vislib/lib/layout/layout_types.js diff --git a/src/plugins/ui/public/components/vislib/lib/layout/splits/column_chart/chart_split.js b/src/KbnServer/ui/public/components/vislib/lib/layout/splits/column_chart/chart_split.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/layout/splits/column_chart/chart_split.js rename to src/KbnServer/ui/public/components/vislib/lib/layout/splits/column_chart/chart_split.js diff --git a/src/plugins/ui/public/components/vislib/lib/layout/splits/column_chart/chart_title_split.js b/src/KbnServer/ui/public/components/vislib/lib/layout/splits/column_chart/chart_title_split.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/layout/splits/column_chart/chart_title_split.js rename to src/KbnServer/ui/public/components/vislib/lib/layout/splits/column_chart/chart_title_split.js diff --git a/src/plugins/ui/public/components/vislib/lib/layout/splits/column_chart/x_axis_split.js b/src/KbnServer/ui/public/components/vislib/lib/layout/splits/column_chart/x_axis_split.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/layout/splits/column_chart/x_axis_split.js rename to src/KbnServer/ui/public/components/vislib/lib/layout/splits/column_chart/x_axis_split.js diff --git a/src/plugins/ui/public/components/vislib/lib/layout/splits/column_chart/y_axis_split.js b/src/KbnServer/ui/public/components/vislib/lib/layout/splits/column_chart/y_axis_split.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/layout/splits/column_chart/y_axis_split.js rename to src/KbnServer/ui/public/components/vislib/lib/layout/splits/column_chart/y_axis_split.js diff --git a/src/plugins/ui/public/components/vislib/lib/layout/splits/pie_chart/chart_split.js b/src/KbnServer/ui/public/components/vislib/lib/layout/splits/pie_chart/chart_split.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/layout/splits/pie_chart/chart_split.js rename to src/KbnServer/ui/public/components/vislib/lib/layout/splits/pie_chart/chart_split.js diff --git a/src/plugins/ui/public/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js b/src/KbnServer/ui/public/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js rename to src/KbnServer/ui/public/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js diff --git a/src/plugins/ui/public/components/vislib/lib/layout/splits/tile_map/map_split.js b/src/KbnServer/ui/public/components/vislib/lib/layout/splits/tile_map/map_split.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/layout/splits/tile_map/map_split.js rename to src/KbnServer/ui/public/components/vislib/lib/layout/splits/tile_map/map_split.js diff --git a/src/plugins/ui/public/components/vislib/lib/layout/types/column_layout.js b/src/KbnServer/ui/public/components/vislib/lib/layout/types/column_layout.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/layout/types/column_layout.js rename to src/KbnServer/ui/public/components/vislib/lib/layout/types/column_layout.js diff --git a/src/plugins/ui/public/components/vislib/lib/layout/types/map_layout.js b/src/KbnServer/ui/public/components/vislib/lib/layout/types/map_layout.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/layout/types/map_layout.js rename to src/KbnServer/ui/public/components/vislib/lib/layout/types/map_layout.js diff --git a/src/plugins/ui/public/components/vislib/lib/layout/types/pie_layout.js b/src/KbnServer/ui/public/components/vislib/lib/layout/types/pie_layout.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/layout/types/pie_layout.js rename to src/KbnServer/ui/public/components/vislib/lib/layout/types/pie_layout.js diff --git a/src/plugins/ui/public/components/vislib/lib/legend.js b/src/KbnServer/ui/public/components/vislib/lib/legend.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/legend.js rename to src/KbnServer/ui/public/components/vislib/lib/legend.js diff --git a/src/plugins/ui/public/components/vislib/lib/resize_checker.js b/src/KbnServer/ui/public/components/vislib/lib/resize_checker.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/resize_checker.js rename to src/KbnServer/ui/public/components/vislib/lib/resize_checker.js diff --git a/src/plugins/ui/public/components/vislib/lib/x_axis.js b/src/KbnServer/ui/public/components/vislib/lib/x_axis.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/x_axis.js rename to src/KbnServer/ui/public/components/vislib/lib/x_axis.js diff --git a/src/plugins/ui/public/components/vislib/lib/y_axis.js b/src/KbnServer/ui/public/components/vislib/lib/y_axis.js similarity index 100% rename from src/plugins/ui/public/components/vislib/lib/y_axis.js rename to src/KbnServer/ui/public/components/vislib/lib/y_axis.js diff --git a/src/plugins/ui/public/components/vislib/partials/legend_header.html b/src/KbnServer/ui/public/components/vislib/partials/legend_header.html similarity index 100% rename from src/plugins/ui/public/components/vislib/partials/legend_header.html rename to src/KbnServer/ui/public/components/vislib/partials/legend_header.html diff --git a/src/plugins/ui/public/components/vislib/partials/touchdown.tmpl.html b/src/KbnServer/ui/public/components/vislib/partials/touchdown.tmpl.html similarity index 100% rename from src/plugins/ui/public/components/vislib/partials/touchdown.tmpl.html rename to src/KbnServer/ui/public/components/vislib/partials/touchdown.tmpl.html diff --git a/src/plugins/ui/public/components/vislib/styles/_alerts.less b/src/KbnServer/ui/public/components/vislib/styles/_alerts.less similarity index 100% rename from src/plugins/ui/public/components/vislib/styles/_alerts.less rename to src/KbnServer/ui/public/components/vislib/styles/_alerts.less diff --git a/src/plugins/ui/public/components/vislib/styles/_error.less b/src/KbnServer/ui/public/components/vislib/styles/_error.less similarity index 100% rename from src/plugins/ui/public/components/vislib/styles/_error.less rename to src/KbnServer/ui/public/components/vislib/styles/_error.less diff --git a/src/plugins/ui/public/components/vislib/styles/_layout.less b/src/KbnServer/ui/public/components/vislib/styles/_layout.less similarity index 100% rename from src/plugins/ui/public/components/vislib/styles/_layout.less rename to src/KbnServer/ui/public/components/vislib/styles/_layout.less diff --git a/src/plugins/ui/public/components/vislib/styles/_legend.less b/src/KbnServer/ui/public/components/vislib/styles/_legend.less similarity index 100% rename from src/plugins/ui/public/components/vislib/styles/_legend.less rename to src/KbnServer/ui/public/components/vislib/styles/_legend.less diff --git a/src/plugins/ui/public/components/vislib/styles/_svg.less b/src/KbnServer/ui/public/components/vislib/styles/_svg.less similarity index 100% rename from src/plugins/ui/public/components/vislib/styles/_svg.less rename to src/KbnServer/ui/public/components/vislib/styles/_svg.less diff --git a/src/plugins/ui/public/components/vislib/styles/_tilemap.less b/src/KbnServer/ui/public/components/vislib/styles/_tilemap.less similarity index 100% rename from src/plugins/ui/public/components/vislib/styles/_tilemap.less rename to src/KbnServer/ui/public/components/vislib/styles/_tilemap.less diff --git a/src/plugins/ui/public/components/vislib/styles/_tooltip.less b/src/KbnServer/ui/public/components/vislib/styles/_tooltip.less similarity index 100% rename from src/plugins/ui/public/components/vislib/styles/_tooltip.less rename to src/KbnServer/ui/public/components/vislib/styles/_tooltip.less diff --git a/src/plugins/ui/public/components/vislib/styles/main.less b/src/KbnServer/ui/public/components/vislib/styles/main.less similarity index 100% rename from src/plugins/ui/public/components/vislib/styles/main.less rename to src/KbnServer/ui/public/components/vislib/styles/main.less diff --git a/src/plugins/ui/public/components/vislib/vis.js b/src/KbnServer/ui/public/components/vislib/vis.js similarity index 100% rename from src/plugins/ui/public/components/vislib/vis.js rename to src/KbnServer/ui/public/components/vislib/vis.js diff --git a/src/plugins/ui/public/components/vislib/visualizations/_chart.js b/src/KbnServer/ui/public/components/vislib/visualizations/_chart.js similarity index 100% rename from src/plugins/ui/public/components/vislib/visualizations/_chart.js rename to src/KbnServer/ui/public/components/vislib/visualizations/_chart.js diff --git a/src/plugins/ui/public/components/vislib/visualizations/_point_series_chart.js b/src/KbnServer/ui/public/components/vislib/visualizations/_point_series_chart.js similarity index 100% rename from src/plugins/ui/public/components/vislib/visualizations/_point_series_chart.js rename to src/KbnServer/ui/public/components/vislib/visualizations/_point_series_chart.js diff --git a/src/plugins/ui/public/components/vislib/visualizations/area_chart.js b/src/KbnServer/ui/public/components/vislib/visualizations/area_chart.js similarity index 100% rename from src/plugins/ui/public/components/vislib/visualizations/area_chart.js rename to src/KbnServer/ui/public/components/vislib/visualizations/area_chart.js diff --git a/src/plugins/ui/public/components/vislib/visualizations/column_chart.js b/src/KbnServer/ui/public/components/vislib/visualizations/column_chart.js similarity index 100% rename from src/plugins/ui/public/components/vislib/visualizations/column_chart.js rename to src/KbnServer/ui/public/components/vislib/visualizations/column_chart.js diff --git a/src/plugins/ui/public/components/vislib/visualizations/line_chart.js b/src/KbnServer/ui/public/components/vislib/visualizations/line_chart.js similarity index 100% rename from src/plugins/ui/public/components/vislib/visualizations/line_chart.js rename to src/KbnServer/ui/public/components/vislib/visualizations/line_chart.js diff --git a/src/plugins/ui/public/components/vislib/visualizations/pie_chart.js b/src/KbnServer/ui/public/components/vislib/visualizations/pie_chart.js similarity index 100% rename from src/plugins/ui/public/components/vislib/visualizations/pie_chart.js rename to src/KbnServer/ui/public/components/vislib/visualizations/pie_chart.js diff --git a/src/plugins/ui/public/components/vislib/visualizations/tile_map.js b/src/KbnServer/ui/public/components/vislib/visualizations/tile_map.js similarity index 100% rename from src/plugins/ui/public/components/vislib/visualizations/tile_map.js rename to src/KbnServer/ui/public/components/vislib/visualizations/tile_map.js diff --git a/src/plugins/ui/public/components/vislib/visualizations/time_marker.js b/src/KbnServer/ui/public/components/vislib/visualizations/time_marker.js similarity index 100% rename from src/plugins/ui/public/components/vislib/visualizations/time_marker.js rename to src/KbnServer/ui/public/components/vislib/visualizations/time_marker.js diff --git a/src/plugins/ui/public/components/vislib/visualizations/vis_types.js b/src/KbnServer/ui/public/components/vislib/visualizations/vis_types.js similarity index 100% rename from src/plugins/ui/public/components/vislib/visualizations/vis_types.js rename to src/KbnServer/ui/public/components/vislib/visualizations/vis_types.js diff --git a/src/plugins/ui/public/components/vislib_vis_type/VislibRenderbot.js b/src/KbnServer/ui/public/components/vislib_vis_type/VislibRenderbot.js similarity index 100% rename from src/plugins/ui/public/components/vislib_vis_type/VislibRenderbot.js rename to src/KbnServer/ui/public/components/vislib_vis_type/VislibRenderbot.js diff --git a/src/plugins/ui/public/components/vislib_vis_type/VislibVisType.js b/src/KbnServer/ui/public/components/vislib_vis_type/VislibVisType.js similarity index 100% rename from src/plugins/ui/public/components/vislib_vis_type/VislibVisType.js rename to src/KbnServer/ui/public/components/vislib_vis_type/VislibVisType.js diff --git a/src/plugins/ui/public/components/vislib_vis_type/buildChartData.js b/src/KbnServer/ui/public/components/vislib_vis_type/buildChartData.js similarity index 100% rename from src/plugins/ui/public/components/vislib_vis_type/buildChartData.js rename to src/KbnServer/ui/public/components/vislib_vis_type/buildChartData.js diff --git a/src/plugins/ui/public/components/visualize/spy/_req_resp_stats.html b/src/KbnServer/ui/public/components/visualize/spy/_req_resp_stats.html similarity index 100% rename from src/plugins/ui/public/components/visualize/spy/_req_resp_stats.html rename to src/KbnServer/ui/public/components/visualize/spy/_req_resp_stats.html diff --git a/src/plugins/ui/public/components/visualize/spy/_req_resp_stats.js b/src/KbnServer/ui/public/components/visualize/spy/_req_resp_stats.js similarity index 100% rename from src/plugins/ui/public/components/visualize/spy/_req_resp_stats.js rename to src/KbnServer/ui/public/components/visualize/spy/_req_resp_stats.js diff --git a/src/plugins/ui/public/components/visualize/spy/_spy.html b/src/KbnServer/ui/public/components/visualize/spy/_spy.html similarity index 100% rename from src/plugins/ui/public/components/visualize/spy/_spy.html rename to src/KbnServer/ui/public/components/visualize/spy/_spy.html diff --git a/src/plugins/ui/public/components/visualize/spy/_table.html b/src/KbnServer/ui/public/components/visualize/spy/_table.html similarity index 100% rename from src/plugins/ui/public/components/visualize/spy/_table.html rename to src/KbnServer/ui/public/components/visualize/spy/_table.html diff --git a/src/plugins/ui/public/components/visualize/spy/_table.js b/src/KbnServer/ui/public/components/visualize/spy/_table.js similarity index 100% rename from src/plugins/ui/public/components/visualize/spy/_table.js rename to src/KbnServer/ui/public/components/visualize/spy/_table.js diff --git a/src/plugins/ui/public/components/visualize/spy/spy.js b/src/KbnServer/ui/public/components/visualize/spy/spy.js similarity index 100% rename from src/plugins/ui/public/components/visualize/spy/spy.js rename to src/KbnServer/ui/public/components/visualize/spy/spy.js diff --git a/src/plugins/ui/public/components/visualize/visualize.html b/src/KbnServer/ui/public/components/visualize/visualize.html similarity index 100% rename from src/plugins/ui/public/components/visualize/visualize.html rename to src/KbnServer/ui/public/components/visualize/visualize.html diff --git a/src/plugins/ui/public/components/visualize/visualize.js b/src/KbnServer/ui/public/components/visualize/visualize.js similarity index 100% rename from src/plugins/ui/public/components/visualize/visualize.js rename to src/KbnServer/ui/public/components/visualize/visualize.js diff --git a/src/plugins/ui/public/components/visualize/visualize.less b/src/KbnServer/ui/public/components/visualize/visualize.less similarity index 100% rename from src/plugins/ui/public/components/visualize/visualize.less rename to src/KbnServer/ui/public/components/visualize/visualize.less diff --git a/src/plugins/ui/public/components/watch_multi.js b/src/KbnServer/ui/public/components/watch_multi.js similarity index 100% rename from src/plugins/ui/public/components/watch_multi.js rename to src/KbnServer/ui/public/components/watch_multi.js diff --git a/src/plugins/ui/public/directives/auto_select_if_only_one.js b/src/KbnServer/ui/public/directives/auto_select_if_only_one.js similarity index 100% rename from src/plugins/ui/public/directives/auto_select_if_only_one.js rename to src/KbnServer/ui/public/directives/auto_select_if_only_one.js diff --git a/src/plugins/ui/public/directives/click_focus.js b/src/KbnServer/ui/public/directives/click_focus.js similarity index 100% rename from src/plugins/ui/public/directives/click_focus.js rename to src/KbnServer/ui/public/directives/click_focus.js diff --git a/src/plugins/ui/public/directives/config.js b/src/KbnServer/ui/public/directives/config.js similarity index 100% rename from src/plugins/ui/public/directives/config.js rename to src/KbnServer/ui/public/directives/config.js diff --git a/src/plugins/ui/public/directives/confirm_click.js b/src/KbnServer/ui/public/directives/confirm_click.js similarity index 100% rename from src/plugins/ui/public/directives/confirm_click.js rename to src/KbnServer/ui/public/directives/confirm_click.js diff --git a/src/plugins/ui/public/directives/css_truncate.js b/src/KbnServer/ui/public/directives/css_truncate.js similarity index 100% rename from src/plugins/ui/public/directives/css_truncate.js rename to src/KbnServer/ui/public/directives/css_truncate.js diff --git a/src/plugins/ui/public/directives/field_name.js b/src/KbnServer/ui/public/directives/field_name.js similarity index 100% rename from src/plugins/ui/public/directives/field_name.js rename to src/KbnServer/ui/public/directives/field_name.js diff --git a/src/plugins/ui/public/directives/file_upload.js b/src/KbnServer/ui/public/directives/file_upload.js similarity index 100% rename from src/plugins/ui/public/directives/file_upload.js rename to src/KbnServer/ui/public/directives/file_upload.js diff --git a/src/plugins/ui/public/directives/inequality.js b/src/KbnServer/ui/public/directives/inequality.js similarity index 100% rename from src/plugins/ui/public/directives/inequality.js rename to src/KbnServer/ui/public/directives/inequality.js diff --git a/src/plugins/ui/public/directives/infinite_scroll.js b/src/KbnServer/ui/public/directives/infinite_scroll.js similarity index 100% rename from src/plugins/ui/public/directives/infinite_scroll.js rename to src/KbnServer/ui/public/directives/infinite_scroll.js diff --git a/src/plugins/ui/public/directives/info.js b/src/KbnServer/ui/public/directives/info.js similarity index 100% rename from src/plugins/ui/public/directives/info.js rename to src/KbnServer/ui/public/directives/info.js diff --git a/src/plugins/ui/public/directives/input_datetime.js b/src/KbnServer/ui/public/directives/input_datetime.js similarity index 100% rename from src/plugins/ui/public/directives/input_datetime.js rename to src/KbnServer/ui/public/directives/input_datetime.js diff --git a/src/plugins/ui/public/directives/input_focus.js b/src/KbnServer/ui/public/directives/input_focus.js similarity index 100% rename from src/plugins/ui/public/directives/input_focus.js rename to src/KbnServer/ui/public/directives/input_focus.js diff --git a/src/plugins/ui/public/directives/input_whole_number.js b/src/KbnServer/ui/public/directives/input_whole_number.js similarity index 100% rename from src/plugins/ui/public/directives/input_whole_number.js rename to src/KbnServer/ui/public/directives/input_whole_number.js diff --git a/src/plugins/ui/public/directives/paginate.js b/src/KbnServer/ui/public/directives/paginate.js similarity index 100% rename from src/plugins/ui/public/directives/paginate.js rename to src/KbnServer/ui/public/directives/paginate.js diff --git a/src/plugins/ui/public/directives/pretty_duration.js b/src/KbnServer/ui/public/directives/pretty_duration.js similarity index 100% rename from src/plugins/ui/public/directives/pretty_duration.js rename to src/KbnServer/ui/public/directives/pretty_duration.js diff --git a/src/plugins/ui/public/directives/rows.js b/src/KbnServer/ui/public/directives/rows.js similarity index 100% rename from src/plugins/ui/public/directives/rows.js rename to src/KbnServer/ui/public/directives/rows.js diff --git a/src/plugins/ui/public/directives/saved_object_finder.js b/src/KbnServer/ui/public/directives/saved_object_finder.js similarity index 100% rename from src/plugins/ui/public/directives/saved_object_finder.js rename to src/KbnServer/ui/public/directives/saved_object_finder.js diff --git a/src/plugins/ui/public/directives/spinner.js b/src/KbnServer/ui/public/directives/spinner.js similarity index 100% rename from src/plugins/ui/public/directives/spinner.js rename to src/KbnServer/ui/public/directives/spinner.js diff --git a/src/plugins/ui/public/directives/truncated.js b/src/KbnServer/ui/public/directives/truncated.js similarity index 100% rename from src/plugins/ui/public/directives/truncated.js rename to src/KbnServer/ui/public/directives/truncated.js diff --git a/src/plugins/ui/public/directives/validate_cidr_mask.js b/src/KbnServer/ui/public/directives/validate_cidr_mask.js similarity index 100% rename from src/plugins/ui/public/directives/validate_cidr_mask.js rename to src/KbnServer/ui/public/directives/validate_cidr_mask.js diff --git a/src/plugins/ui/public/directives/validate_date_math.js b/src/KbnServer/ui/public/directives/validate_date_math.js similarity index 100% rename from src/plugins/ui/public/directives/validate_date_math.js rename to src/KbnServer/ui/public/directives/validate_date_math.js diff --git a/src/plugins/ui/public/directives/validate_index_name.js b/src/KbnServer/ui/public/directives/validate_index_name.js similarity index 100% rename from src/plugins/ui/public/directives/validate_index_name.js rename to src/KbnServer/ui/public/directives/validate_index_name.js diff --git a/src/plugins/ui/public/directives/validate_ip.js b/src/KbnServer/ui/public/directives/validate_ip.js similarity index 100% rename from src/plugins/ui/public/directives/validate_ip.js rename to src/KbnServer/ui/public/directives/validate_ip.js diff --git a/src/plugins/ui/public/directives/validate_json.js b/src/KbnServer/ui/public/directives/validate_json.js similarity index 100% rename from src/plugins/ui/public/directives/validate_json.js rename to src/KbnServer/ui/public/directives/validate_json.js diff --git a/src/plugins/ui/public/filters/_prop_filter.js b/src/KbnServer/ui/public/filters/_prop_filter.js similarity index 100% rename from src/plugins/ui/public/filters/_prop_filter.js rename to src/KbnServer/ui/public/filters/_prop_filter.js diff --git a/src/plugins/ui/public/filters/commaList.js b/src/KbnServer/ui/public/filters/commaList.js similarity index 100% rename from src/plugins/ui/public/filters/commaList.js rename to src/KbnServer/ui/public/filters/commaList.js diff --git a/src/plugins/ui/public/filters/field_type.js b/src/KbnServer/ui/public/filters/field_type.js similarity index 100% rename from src/plugins/ui/public/filters/field_type.js rename to src/KbnServer/ui/public/filters/field_type.js diff --git a/src/plugins/ui/public/filters/label.js b/src/KbnServer/ui/public/filters/label.js similarity index 100% rename from src/plugins/ui/public/filters/label.js rename to src/KbnServer/ui/public/filters/label.js diff --git a/src/plugins/ui/public/filters/match_any.js b/src/KbnServer/ui/public/filters/match_any.js similarity index 100% rename from src/plugins/ui/public/filters/match_any.js rename to src/KbnServer/ui/public/filters/match_any.js diff --git a/src/plugins/ui/public/filters/moment.js b/src/KbnServer/ui/public/filters/moment.js similarity index 100% rename from src/plugins/ui/public/filters/moment.js rename to src/KbnServer/ui/public/filters/moment.js diff --git a/src/plugins/ui/public/filters/rison.js b/src/KbnServer/ui/public/filters/rison.js similarity index 100% rename from src/plugins/ui/public/filters/rison.js rename to src/KbnServer/ui/public/filters/rison.js diff --git a/src/plugins/ui/public/filters/short_dots.js b/src/KbnServer/ui/public/filters/short_dots.js similarity index 100% rename from src/plugins/ui/public/filters/short_dots.js rename to src/KbnServer/ui/public/filters/short_dots.js diff --git a/src/plugins/ui/public/filters/start_from.js b/src/KbnServer/ui/public/filters/start_from.js similarity index 100% rename from src/plugins/ui/public/filters/start_from.js rename to src/KbnServer/ui/public/filters/start_from.js diff --git a/src/plugins/ui/public/filters/trust_as_html.js b/src/KbnServer/ui/public/filters/trust_as_html.js similarity index 100% rename from src/plugins/ui/public/filters/trust_as_html.js rename to src/KbnServer/ui/public/filters/trust_as_html.js diff --git a/src/plugins/ui/public/filters/unique.js b/src/KbnServer/ui/public/filters/unique.js similarity index 100% rename from src/plugins/ui/public/filters/unique.js rename to src/KbnServer/ui/public/filters/unique.js diff --git a/src/plugins/ui/public/filters/uriescape.js b/src/KbnServer/ui/public/filters/uriescape.js similarity index 100% rename from src/plugins/ui/public/filters/uriescape.js rename to src/KbnServer/ui/public/filters/uriescape.js diff --git a/src/plugins/ui/public/images/initial_load.gif b/src/KbnServer/ui/public/images/initial_load.gif similarity index 100% rename from src/plugins/ui/public/images/initial_load.gif rename to src/KbnServer/ui/public/images/initial_load.gif diff --git a/src/plugins/ui/public/images/kibana.png b/src/KbnServer/ui/public/images/kibana.png similarity index 100% rename from src/plugins/ui/public/images/kibana.png rename to src/KbnServer/ui/public/images/kibana.png diff --git a/src/plugins/ui/public/partials/global_config.html b/src/KbnServer/ui/public/partials/global_config.html similarity index 100% rename from src/plugins/ui/public/partials/global_config.html rename to src/KbnServer/ui/public/partials/global_config.html diff --git a/src/plugins/ui/public/partials/info.html b/src/KbnServer/ui/public/partials/info.html similarity index 100% rename from src/plugins/ui/public/partials/info.html rename to src/KbnServer/ui/public/partials/info.html diff --git a/src/plugins/ui/public/partials/nav_config.html b/src/KbnServer/ui/public/partials/nav_config.html similarity index 100% rename from src/plugins/ui/public/partials/nav_config.html rename to src/KbnServer/ui/public/partials/nav_config.html diff --git a/src/plugins/ui/public/partials/paginate_controls.html b/src/KbnServer/ui/public/partials/paginate_controls.html similarity index 100% rename from src/plugins/ui/public/partials/paginate_controls.html rename to src/KbnServer/ui/public/partials/paginate_controls.html diff --git a/src/plugins/ui/public/partials/saved_object_finder.html b/src/KbnServer/ui/public/partials/saved_object_finder.html similarity index 100% rename from src/plugins/ui/public/partials/saved_object_finder.html rename to src/KbnServer/ui/public/partials/saved_object_finder.html diff --git a/src/plugins/ui/public/partials/truncate_by_height.html b/src/KbnServer/ui/public/partials/truncate_by_height.html similarity index 100% rename from src/plugins/ui/public/partials/truncate_by_height.html rename to src/KbnServer/ui/public/partials/truncate_by_height.html diff --git a/src/plugins/ui/public/registry/_registry.js b/src/KbnServer/ui/public/registry/_registry.js similarity index 100% rename from src/plugins/ui/public/registry/_registry.js rename to src/KbnServer/ui/public/registry/_registry.js diff --git a/src/plugins/ui/public/registry/apps.js b/src/KbnServer/ui/public/registry/apps.js similarity index 100% rename from src/plugins/ui/public/registry/apps.js rename to src/KbnServer/ui/public/registry/apps.js diff --git a/src/plugins/ui/public/registry/field_formats.js b/src/KbnServer/ui/public/registry/field_formats.js similarity index 100% rename from src/plugins/ui/public/registry/field_formats.js rename to src/KbnServer/ui/public/registry/field_formats.js diff --git a/src/plugins/ui/public/registry/spy_modes.js b/src/KbnServer/ui/public/registry/spy_modes.js similarity index 100% rename from src/plugins/ui/public/registry/spy_modes.js rename to src/KbnServer/ui/public/registry/spy_modes.js diff --git a/src/plugins/ui/public/registry/vis_types.js b/src/KbnServer/ui/public/registry/vis_types.js similarity index 100% rename from src/plugins/ui/public/registry/vis_types.js rename to src/KbnServer/ui/public/registry/vis_types.js diff --git a/src/plugins/ui/public/require.config.js b/src/KbnServer/ui/public/require.config.js similarity index 100% rename from src/plugins/ui/public/require.config.js rename to src/KbnServer/ui/public/require.config.js diff --git a/src/plugins/ui/public/ui-styles/_bootstrap.less b/src/KbnServer/ui/public/ui-styles/_bootstrap.less similarity index 100% rename from src/plugins/ui/public/ui-styles/_bootstrap.less rename to src/KbnServer/ui/public/ui-styles/_bootstrap.less diff --git a/src/plugins/ui/public/ui-styles/_callout.less b/src/KbnServer/ui/public/ui-styles/_callout.less similarity index 100% rename from src/plugins/ui/public/ui-styles/_callout.less rename to src/KbnServer/ui/public/ui-styles/_callout.less diff --git a/src/plugins/ui/public/ui-styles/_control_group.less b/src/KbnServer/ui/public/ui-styles/_control_group.less similarity index 100% rename from src/plugins/ui/public/ui-styles/_control_group.less rename to src/KbnServer/ui/public/ui-styles/_control_group.less diff --git a/src/plugins/ui/public/ui-styles/_font_icons.less b/src/KbnServer/ui/public/ui-styles/_font_icons.less similarity index 100% rename from src/plugins/ui/public/ui-styles/_font_icons.less rename to src/KbnServer/ui/public/ui-styles/_font_icons.less diff --git a/src/plugins/ui/public/ui-styles/_glyphicons.less b/src/KbnServer/ui/public/ui-styles/_glyphicons.less similarity index 100% rename from src/plugins/ui/public/ui-styles/_glyphicons.less rename to src/KbnServer/ui/public/ui-styles/_glyphicons.less diff --git a/src/plugins/ui/public/ui-styles/_hintbox.less b/src/KbnServer/ui/public/ui-styles/_hintbox.less similarity index 100% rename from src/plugins/ui/public/ui-styles/_hintbox.less rename to src/KbnServer/ui/public/ui-styles/_hintbox.less diff --git a/src/plugins/ui/public/ui-styles/_input.less b/src/KbnServer/ui/public/ui-styles/_input.less similarity index 100% rename from src/plugins/ui/public/ui-styles/_input.less rename to src/KbnServer/ui/public/ui-styles/_input.less diff --git a/src/plugins/ui/public/ui-styles/_mixins.less b/src/KbnServer/ui/public/ui-styles/_mixins.less similarity index 100% rename from src/plugins/ui/public/ui-styles/_mixins.less rename to src/KbnServer/ui/public/ui-styles/_mixins.less diff --git a/src/plugins/ui/public/ui-styles/_navbar.less b/src/KbnServer/ui/public/ui-styles/_navbar.less similarity index 100% rename from src/plugins/ui/public/ui-styles/_navbar.less rename to src/KbnServer/ui/public/ui-styles/_navbar.less diff --git a/src/plugins/ui/public/ui-styles/_notify.less b/src/KbnServer/ui/public/ui-styles/_notify.less similarity index 100% rename from src/plugins/ui/public/ui-styles/_notify.less rename to src/KbnServer/ui/public/ui-styles/_notify.less diff --git a/src/plugins/ui/public/ui-styles/_pagination.less b/src/KbnServer/ui/public/ui-styles/_pagination.less similarity index 100% rename from src/plugins/ui/public/ui-styles/_pagination.less rename to src/KbnServer/ui/public/ui-styles/_pagination.less diff --git a/src/plugins/ui/public/ui-styles/_sidebar.less b/src/KbnServer/ui/public/ui-styles/_sidebar.less similarity index 100% rename from src/plugins/ui/public/ui-styles/_sidebar.less rename to src/KbnServer/ui/public/ui-styles/_sidebar.less diff --git a/src/plugins/ui/public/ui-styles/_spinner.less b/src/KbnServer/ui/public/ui-styles/_spinner.less similarity index 100% rename from src/plugins/ui/public/ui-styles/_spinner.less rename to src/KbnServer/ui/public/ui-styles/_spinner.less diff --git a/src/plugins/ui/public/ui-styles/_table.less b/src/KbnServer/ui/public/ui-styles/_table.less similarity index 100% rename from src/plugins/ui/public/ui-styles/_table.less rename to src/KbnServer/ui/public/ui-styles/_table.less diff --git a/src/plugins/ui/public/ui-styles/_truncate.less b/src/KbnServer/ui/public/ui-styles/_truncate.less similarity index 100% rename from src/plugins/ui/public/ui-styles/_truncate.less rename to src/KbnServer/ui/public/ui-styles/_truncate.less diff --git a/src/plugins/ui/public/ui-styles/_variables.less b/src/KbnServer/ui/public/ui-styles/_variables.less similarity index 100% rename from src/plugins/ui/public/ui-styles/_variables.less rename to src/KbnServer/ui/public/ui-styles/_variables.less diff --git a/src/plugins/ui/public/ui-styles/main.less b/src/KbnServer/ui/public/ui-styles/main.less similarity index 100% rename from src/plugins/ui/public/ui-styles/main.less rename to src/KbnServer/ui/public/ui-styles/main.less diff --git a/src/plugins/ui/public/ui-styles/theme/_theme.less b/src/KbnServer/ui/public/ui-styles/theme/_theme.less similarity index 100% rename from src/plugins/ui/public/ui-styles/theme/_theme.less rename to src/KbnServer/ui/public/ui-styles/theme/_theme.less diff --git a/src/plugins/ui/public/ui-styles/theme/_variables.less b/src/KbnServer/ui/public/ui-styles/theme/_variables.less similarity index 100% rename from src/plugins/ui/public/ui-styles/theme/_variables.less rename to src/KbnServer/ui/public/ui-styles/theme/_variables.less diff --git a/src/plugins/ui/public/ui-styles/theme/elk.ico b/src/KbnServer/ui/public/ui-styles/theme/elk.ico similarity index 100% rename from src/plugins/ui/public/ui-styles/theme/elk.ico rename to src/KbnServer/ui/public/ui-styles/theme/elk.ico diff --git a/src/plugins/ui/public/utils/BaseObject.js b/src/KbnServer/ui/public/utils/BaseObject.js similarity index 100% rename from src/plugins/ui/public/utils/BaseObject.js rename to src/KbnServer/ui/public/utils/BaseObject.js diff --git a/src/plugins/ui/public/utils/SimpleEmitter.js b/src/KbnServer/ui/public/utils/SimpleEmitter.js similarity index 100% rename from src/plugins/ui/public/utils/SimpleEmitter.js rename to src/KbnServer/ui/public/utils/SimpleEmitter.js diff --git a/src/plugins/ui/public/utils/add_word_breaks.js b/src/KbnServer/ui/public/utils/add_word_breaks.js similarity index 100% rename from src/plugins/ui/public/utils/add_word_breaks.js rename to src/KbnServer/ui/public/utils/add_word_breaks.js diff --git a/src/plugins/ui/public/utils/brush_event.js b/src/KbnServer/ui/public/utils/brush_event.js similarity index 100% rename from src/plugins/ui/public/utils/brush_event.js rename to src/KbnServer/ui/public/utils/brush_event.js diff --git a/src/plugins/ui/public/utils/cidr_mask.js b/src/KbnServer/ui/public/utils/cidr_mask.js similarity index 100% rename from src/plugins/ui/public/utils/cidr_mask.js rename to src/KbnServer/ui/public/utils/cidr_mask.js diff --git a/src/plugins/ui/public/utils/config_template.js b/src/KbnServer/ui/public/utils/config_template.js similarity index 100% rename from src/plugins/ui/public/utils/config_template.js rename to src/KbnServer/ui/public/utils/config_template.js diff --git a/src/plugins/ui/public/utils/date_range.js b/src/KbnServer/ui/public/utils/date_range.js similarity index 100% rename from src/plugins/ui/public/utils/date_range.js rename to src/KbnServer/ui/public/utils/date_range.js diff --git a/src/plugins/ui/public/utils/datemath.js b/src/KbnServer/ui/public/utils/datemath.js similarity index 100% rename from src/plugins/ui/public/utils/datemath.js rename to src/KbnServer/ui/public/utils/datemath.js diff --git a/src/plugins/ui/public/utils/decode_geo_hash.js b/src/KbnServer/ui/public/utils/decode_geo_hash.js similarity index 100% rename from src/plugins/ui/public/utils/decode_geo_hash.js rename to src/KbnServer/ui/public/utils/decode_geo_hash.js diff --git a/src/plugins/ui/public/utils/diff_object.js b/src/KbnServer/ui/public/utils/diff_object.js similarity index 100% rename from src/plugins/ui/public/utils/diff_object.js rename to src/KbnServer/ui/public/utils/diff_object.js diff --git a/src/plugins/ui/public/utils/diff_time_picker_vals.js b/src/KbnServer/ui/public/utils/diff_time_picker_vals.js similarity index 100% rename from src/plugins/ui/public/utils/diff_time_picker_vals.js rename to src/KbnServer/ui/public/utils/diff_time_picker_vals.js diff --git a/src/plugins/ui/public/utils/esBool.js b/src/KbnServer/ui/public/utils/esBool.js similarity index 100% rename from src/plugins/ui/public/utils/esBool.js rename to src/KbnServer/ui/public/utils/esBool.js diff --git a/src/plugins/ui/public/utils/ipv4_address.js b/src/KbnServer/ui/public/utils/ipv4_address.js similarity index 100% rename from src/plugins/ui/public/utils/ipv4_address.js rename to src/KbnServer/ui/public/utils/ipv4_address.js diff --git a/src/plugins/ui/public/utils/key_map.js b/src/KbnServer/ui/public/utils/key_map.js similarity index 100% rename from src/plugins/ui/public/utils/key_map.js rename to src/KbnServer/ui/public/utils/key_map.js diff --git a/src/plugins/ui/public/utils/lodash-mixins/collection.js b/src/KbnServer/ui/public/utils/lodash-mixins/collection.js similarity index 100% rename from src/plugins/ui/public/utils/lodash-mixins/collection.js rename to src/KbnServer/ui/public/utils/lodash-mixins/collection.js diff --git a/src/plugins/ui/public/utils/lodash-mixins/function.js b/src/KbnServer/ui/public/utils/lodash-mixins/function.js similarity index 100% rename from src/plugins/ui/public/utils/lodash-mixins/function.js rename to src/KbnServer/ui/public/utils/lodash-mixins/function.js diff --git a/src/plugins/ui/public/utils/lodash-mixins/index.js b/src/KbnServer/ui/public/utils/lodash-mixins/index.js similarity index 100% rename from src/plugins/ui/public/utils/lodash-mixins/index.js rename to src/KbnServer/ui/public/utils/lodash-mixins/index.js diff --git a/src/plugins/ui/public/utils/lodash-mixins/lang.js b/src/KbnServer/ui/public/utils/lodash-mixins/lang.js similarity index 100% rename from src/plugins/ui/public/utils/lodash-mixins/lang.js rename to src/KbnServer/ui/public/utils/lodash-mixins/lang.js diff --git a/src/plugins/ui/public/utils/lodash-mixins/object.js b/src/KbnServer/ui/public/utils/lodash-mixins/object.js similarity index 100% rename from src/plugins/ui/public/utils/lodash-mixins/object.js rename to src/KbnServer/ui/public/utils/lodash-mixins/object.js diff --git a/src/plugins/ui/public/utils/lodash-mixins/oop.js b/src/KbnServer/ui/public/utils/lodash-mixins/oop.js similarity index 100% rename from src/plugins/ui/public/utils/lodash-mixins/oop.js rename to src/KbnServer/ui/public/utils/lodash-mixins/oop.js diff --git a/src/plugins/ui/public/utils/lodash-mixins/string.js b/src/KbnServer/ui/public/utils/lodash-mixins/string.js similarity index 100% rename from src/plugins/ui/public/utils/lodash-mixins/string.js rename to src/KbnServer/ui/public/utils/lodash-mixins/string.js diff --git a/src/plugins/ui/public/utils/mapping_setup.js b/src/KbnServer/ui/public/utils/mapping_setup.js similarity index 100% rename from src/plugins/ui/public/utils/mapping_setup.js rename to src/KbnServer/ui/public/utils/mapping_setup.js diff --git a/src/plugins/ui/public/utils/no_white_space.js b/src/KbnServer/ui/public/utils/no_white_space.js similarity index 100% rename from src/plugins/ui/public/utils/no_white_space.js rename to src/KbnServer/ui/public/utils/no_white_space.js diff --git a/src/plugins/ui/public/utils/obj_define.js b/src/KbnServer/ui/public/utils/obj_define.js similarity index 100% rename from src/plugins/ui/public/utils/obj_define.js rename to src/KbnServer/ui/public/utils/obj_define.js diff --git a/src/plugins/ui/public/utils/ordinal_suffix.js b/src/KbnServer/ui/public/utils/ordinal_suffix.js similarity index 100% rename from src/plugins/ui/public/utils/ordinal_suffix.js rename to src/KbnServer/ui/public/utils/ordinal_suffix.js diff --git a/src/plugins/ui/public/utils/parse_interval.js b/src/KbnServer/ui/public/utils/parse_interval.js similarity index 100% rename from src/plugins/ui/public/utils/parse_interval.js rename to src/KbnServer/ui/public/utils/parse_interval.js diff --git a/src/plugins/ui/public/utils/query_string.js b/src/KbnServer/ui/public/utils/query_string.js similarity index 100% rename from src/plugins/ui/public/utils/query_string.js rename to src/KbnServer/ui/public/utils/query_string.js diff --git a/src/plugins/ui/public/utils/range.js b/src/KbnServer/ui/public/utils/range.js similarity index 100% rename from src/plugins/ui/public/utils/range.js rename to src/KbnServer/ui/public/utils/range.js diff --git a/src/plugins/ui/public/utils/rison.js b/src/KbnServer/ui/public/utils/rison.js similarity index 100% rename from src/plugins/ui/public/utils/rison.js rename to src/KbnServer/ui/public/utils/rison.js diff --git a/src/plugins/ui/public/utils/sequencer.js b/src/KbnServer/ui/public/utils/sequencer.js similarity index 100% rename from src/plugins/ui/public/utils/sequencer.js rename to src/KbnServer/ui/public/utils/sequencer.js diff --git a/src/plugins/ui/public/utils/slugify_id.js b/src/KbnServer/ui/public/utils/slugify_id.js similarity index 100% rename from src/plugins/ui/public/utils/slugify_id.js rename to src/KbnServer/ui/public/utils/slugify_id.js diff --git a/src/plugins/ui/public/utils/supports.js b/src/KbnServer/ui/public/utils/supports.js similarity index 100% rename from src/plugins/ui/public/utils/supports.js rename to src/KbnServer/ui/public/utils/supports.js diff --git a/src/plugins/ui/public/utils/versionmath.js b/src/KbnServer/ui/public/utils/versionmath.js similarity index 100% rename from src/plugins/ui/public/utils/versionmath.js rename to src/KbnServer/ui/public/utils/versionmath.js diff --git a/src/plugins/ui/views/bootstrap.jade b/src/KbnServer/ui/views/bootstrap.jade similarity index 96% rename from src/plugins/ui/views/bootstrap.jade rename to src/KbnServer/ui/views/bootstrap.jade index 5aeaac12fa1d8..4bd0d1e471dcb 100644 --- a/src/plugins/ui/views/bootstrap.jade +++ b/src/KbnServer/ui/views/bootstrap.jade @@ -9,7 +9,7 @@ html(lang='en') link(rel='shortcut icon', href='/ui-styles/theme/elk.ico') title link(rel='stylesheet', href='/ui-styles/main.css?_b=#{buildNumber}') - body(kbn-chrome, ng-class="'application-' + activeApp.id") + body(kbn-chrome) .col-md-offset-4.col-md-4.page-header.initial-load center img(width='128', alt='Loading Kibana', src='/images/initial_load.gif') diff --git a/src/server/utils/closestPackageJson.js b/src/KbnServer/utils/closestPackageJson.js similarity index 100% rename from src/server/utils/closestPackageJson.js rename to src/KbnServer/utils/closestPackageJson.js diff --git a/src/KbnServer/views/index.jade b/src/KbnServer/views/index.jade new file mode 100644 index 0000000000000..07d1b8932c400 --- /dev/null +++ b/src/KbnServer/views/index.jade @@ -0,0 +1,6 @@ +html + head + title Kibana Status + body + h1 Kibana Status Page + p Statusy stuff goes here... it's goign to be totally awesome! diff --git a/src/bin/kibana.sh b/src/bin/kibana.sh index da5516bb2014e..fbea47d0e18f4 100644 --- a/src/bin/kibana.sh +++ b/src/bin/kibana.sh @@ -15,7 +15,7 @@ done DIR=$(dirname "${SCRIPT}")/.. NODE=${DIR}/node/bin/node -SERVER=${DIR}/src/server/cli +SERVER=${DIR}/src/kibana/cli CONFIG_PATH="${DIR}/config/kibana.yml" NODE_ENV="production" exec "${NODE}" ${SERVER} ${@} diff --git a/src/dev_server/index.js b/src/dev_server/index.js index 62a1cdc7df5c2..ee92460925a2b 100644 --- a/src/dev_server/index.js +++ b/src/dev_server/index.js @@ -1,7 +1,7 @@ var _ = require('lodash'); var join = require('path').join; -var KbnServer = require('../server'); +var KbnServer = require('../KbnServer/KbnServer'); function run(port, quiet) { return (new KbnServer({ diff --git a/src/plugins/kbn_vislib_vis_types/index.js b/src/plugins/kbn_vislib_vis_types/index.js index c6308ea47d940..4ce9ae8759ff1 100644 --- a/src/plugins/kbn_vislib_vis_types/index.js +++ b/src/plugins/kbn_vislib_vis_types/index.js @@ -4,7 +4,7 @@ module.exports = function (kibana) { exports: { visTypes: [ - 'plugins/kbn-vislib-vis-types/index' + 'plugins/kbn_vislib_vis_types/index' ] } diff --git a/src/plugins/kibana/index.js b/src/plugins/kibana/index.js index 5d1a6e05ce73b..206c240c08115 100644 --- a/src/plugins/kibana/index.js +++ b/src/plugins/kibana/index.js @@ -9,7 +9,7 @@ module.exports = function (kibana) { icon: 'images/logo.png', main: 'plugins/kibana/index', uses: [ - 'visualizations', + 'visTypes', 'spyModes' ] } diff --git a/src/plugins/kibana/public/dashboard/styles/main.less b/src/plugins/kibana/public/dashboard/styles/main.less index 16364a7e9f92a..260e88a6e0009 100644 --- a/src/plugins/kibana/public/dashboard/styles/main.less +++ b/src/plugins/kibana/public/dashboard/styles/main.less @@ -5,7 +5,7 @@ @dashboard-background: @gray-lighter; -body.application-dashboard { +.application-dashboard { background-color: @dashboard-background; } diff --git a/src/plugins/kibana/public/index.js b/src/plugins/kibana/public/index.js index 59758fb2567eb..f8347858aaf29 100644 --- a/src/plugins/kibana/public/index.js +++ b/src/plugins/kibana/public/index.js @@ -5,6 +5,11 @@ define(function (require) { require('plugins/kibana/settings/index'); require('plugins/kibana/doc/index'); + require('routes') + .otherwise({ + redirectTo: '/discover' + }); + require('chrome') .setTabs([ { diff --git a/src/plugins/markdown_vis/index.js b/src/plugins/markdown_vis/index.js index dc415628c2b5b..7d8d7f836f755 100644 --- a/src/plugins/markdown_vis/index.js +++ b/src/plugins/markdown_vis/index.js @@ -4,7 +4,7 @@ module.exports = function (kibana) { exports: { visTypes: [ - 'plugins/markdown-vis/index' + 'plugins/markdown_vis/index' ] } diff --git a/src/plugins/metric_vis/index.js b/src/plugins/metric_vis/index.js index 03478e3047c9a..85b03da700ddb 100644 --- a/src/plugins/metric_vis/index.js +++ b/src/plugins/metric_vis/index.js @@ -4,7 +4,7 @@ module.exports = function (kibana) { exports: { visTypes: [ - 'plugins/metric-vis/index' + 'plugins/metric_vis/index' ] } diff --git a/src/plugins/table_vis/index.js b/src/plugins/table_vis/index.js index c575271a5c140..0f7696602514b 100644 --- a/src/plugins/table_vis/index.js +++ b/src/plugins/table_vis/index.js @@ -3,7 +3,7 @@ module.exports = function (kibana) { return new kibana.Plugin({ exports: { visTypes: [ - 'plugins/table-vis/index' + 'plugins/table_vis/index' ] } }); diff --git a/src/plugins/ui/bower.json b/src/plugins/ui/bower.json deleted file mode 100644 index a98ae2909e6b0..0000000000000 --- a/src/plugins/ui/bower.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "ui", - "license": "Apache 2.0", - "dependencies": { - "angular": "1.2.28", - "angular-bindonce": "0.3.3", - "angular-bootstrap": "0.10.0", - "angular-elastic": "2.4.2", - "angular-mocks": "1.2.28", - "angular-route": "1.2.28", - "angular-ui-ace": "0.2.3", - "bluebird": "~2.9.27", - "bootstrap": "3.3.4", - "d3": "3.5.5", - "elasticsearch": "~5.0.0", - "Faker": "1.1.0", - "FileSaver": "babc6d9d8f", - "font-awesome": "4.3.0", - "gridster": "0.5.6", - "jquery": "2.1.4", - "leaflet": "0.7.3", - "Leaflet.heat": "Leaflet/Leaflet.heat#627ede7c11bbe43", - "lesshat": "3.0.2", - "lodash": "2.4.2", - "moment": "2.10.3", - "moment-timezone": "0.4.0", - "ng-clip": "0.2.6", - "require-css": "0.1.8", - "requirejs": "2.1.18", - "requirejs-text": "2.0.14", - "lodash-deep": "spenceralger/lodash-deep#1a7eca8344", - "marked": "0.3.3", - "numeral": "1.5.3", - "leaflet-draw": "0.2.4" - }, - "devDependencies": {} -} diff --git a/src/plugins/ui/index.js b/src/plugins/ui/index.js deleted file mode 100644 index d645336f97180..0000000000000 --- a/src/plugins/ui/index.js +++ /dev/null @@ -1,165 +0,0 @@ -module.exports = function (kibana) { - var _ = require('lodash'); - var join = require('path').join; - var Boom = require('boom'); - var exists = require('fs').existsSync; - var stat = require('fs').statSync; - var relative = require('path').relative; - var publicDir = join(__dirname, 'public'); - var foundModuleIds = require('./foundModuleIds'); - - return new kibana.Plugin({ - publicDir: false, // we will serve our own public fir - init: function (server) { - var config = server.config(); - - // setup jade for templates - server.views({ - path: join(__dirname, 'views'), - engines: { - jade: require('jade') - } - }); - - // redirect to the default app - server.route({ - path: '/', - method: 'GET', - handler: function (req, reply) { - return reply.redirect('/app/' + config.get('kibana.defaultAppId') + '/'); - } - }); - - // initialize the browser runtime for the app - server.route({ - path: '/app/{id}/', - method: 'GET', - handler: function (req, reply) { - var id = req.params.id; - var apps = server.getApps(); - - var app = apps[id]; - if (!app) return reply(Boom.notFound('Unkown app ' + id)); - - return reply.view('bootstrap', { - app: app, - version: kibana.package.version, - buildSha: _.get(kibana, 'package.build.sha', '@@buildSha'), - buildNumber: _.get(kibana, 'package.build.number', '@@buildNum'), - kbnIndex: config.get('kibana.index'), - esShardTimeout: config.get('elasticsearch.shardTimeout') - }); - } - }); - - // provide access to an app's public directories - server.exposeStaticDir('/app/{id}/{path*}', function pickDir(req) { - var id = req.params.id; - var app = server.getApps()[id]; - - if (!app) return Boom.notFound('Unkown app ' + id); - return app.publicDir || Boom.notFound(id + ' does not server public files'); - }); - - // expose the first bower_components directory found within kibana's rootDir starting - // in this directory and moving out - server.exposeStaticDir('/bower_components/{path*}', (function findBowerComponents() { - var dir = __dirname; - - while (!exists(join(dir, 'bower_components'))) { - var prev = dir; - dir = join(dir, '..'); - - if (dir === prev || relative(kibana.rootDir, dir) === '..') { - throw new Error('unable to find bower_components'); - } - } - - return join(dir, 'bower_components'); - }())); - - - require('fs') - .readdirSync(publicDir) - .forEach(function (name) { - var path = join(publicDir, name); - - if (stat(path).isDirectory()) { - server.route({ - path: '/' + name + '/{path*}', - method: 'GET', - handler: { - directory: { - path: path - } - } - }); - } else { - server.route({ - path: '/' + name, - method: 'GET', - handler: { - file: path - } - }); - } - }); - }, - exports: { - aliases: { - baseEnv: _.union( - // default bower_components - [ - 'angular-route', - 'angular-bindonce', - 'angular-bootstrap', - 'elasticsearch' - ], - - // all directives - foundModuleIds.directives, - - // all filters - foundModuleIds.filters, - - // default components - [ - 'errors', - 'chrome', - 'components/bind', - 'components/bound_to_config_obj', - 'components/config/config', - 'components/courier/courier', - 'components/debounce', - 'components/doc_title/doc_title', - 'components/elastic_textarea', - 'components/es', - 'components/events', - 'components/fancy_forms/fancy_forms', - 'components/filter_bar/filter_bar', - 'components/filter_manager/filter_manager', - 'components/index_patterns/index_patterns', - 'components/listen', - 'components/notify/notify', - 'components/persisted_log/persisted_log', - 'components/private', - 'components/promises', - 'components/state_management/app_state', - 'components/state_management/global_state', - 'components/storage/storage', - 'components/stringify/register', - 'components/style_compile/style_compile', - 'components/timefilter/timefilter', - 'components/timepicker/timepicker', - 'components/tooltip/tooltip', - 'components/typeahead/typeahead', - 'components/url/url', - 'components/validateDateInterval', - 'components/validate_query/validate_query', - 'components/watch_multi' - ] - ) - } - } - }); -}; diff --git a/src/plugins/ui/package.json b/src/plugins/ui/package.json deleted file mode 100644 index 7cb7cf17345dc..0000000000000 --- a/src/plugins/ui/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "ui", - "version": "1.0.0" -} diff --git a/src/server/connections/index.js b/src/server/connections/index.js deleted file mode 100644 index 7a93abd601db4..0000000000000 --- a/src/server/connections/index.js +++ /dev/null @@ -1,32 +0,0 @@ -module.exports = function (kibana) { - var server = kibana.server; - var config = server.config(); - - // Create a new connection - server.connection({ - host: config.get('kibana.server.host'), - port: config.get('kibana.server.port') - }); - - server.decorate('server', 'exposeStaticDir', function (routePath, dirPath) { - this.route({ - path: routePath, - method: 'GET', - handler: { - directory: { - path: dirPath, - listing: true, - redirectToSlash: true, - lookupCompressed: true - } - } - }); - }); - - server.ext('onPreResponse', function (request, reply) { - var response = request.response; - response.header('X-App-Name', 'kibana'); - return reply.continue(); - }); - -}; diff --git a/src/server/fe-exports/FeApp.js b/src/server/fe-exports/FeApp.js deleted file mode 100644 index b888b55dc4e9b..0000000000000 --- a/src/server/fe-exports/FeApp.js +++ /dev/null @@ -1,23 +0,0 @@ -var _ = require('lodash'); -var join = require('path').join; - -function FeApp(feExports, plugin, spec) { - this.feExports = feExports; - this.spec = spec; - - this.id = spec.id || plugin.name; - this.publicDir = spec.publicDir || join(plugin.path, 'public'); - this.useModuleIds = _.once(this.useModuleIds); -} - -FeApp.prototype.mainModuleId = function () { - return this.spec.main; -}; - -FeApp.prototype.useModuleIds = function () { - return this.feExports - .find(_.get(this, 'spec.uses', [])) - .concat(this.feExports.aliases.baseEnv || []); -}; - -module.exports = FeApp; diff --git a/src/server/fe-exports/index.js b/src/server/fe-exports/index.js deleted file mode 100644 index af2ad1d70458b..0000000000000 --- a/src/server/fe-exports/index.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = function (kibana) { - var server = kibana.server; - var FeExports = require('./FeExports'); - - server.decorate('server', 'getApps', function () { - return kibana.feExports.apps; - }); - - kibana.feExports = new FeExports(); -}; diff --git a/src/server/status/public/index.html b/src/server/status/public/index.html deleted file mode 100644 index e557a0c37d3fe..0000000000000 --- a/src/server/status/public/index.html +++ /dev/null @@ -1,9 +0,0 @@ - - - Kibana Status - - -

Kibana Status Page

-

Statusy stuff goes here... it's goign to be totally awesome!

- - diff --git a/tasks/build.js b/tasks/build.js index 71793a28c346f..9d3754115fd17 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -8,7 +8,6 @@ module.exports = function (grunt) { 'copy:kibana_src', 'clean:dev_only_plugins', 'touch_config', - 'replace:build_props', 'requirejs', 'clean:unneeded_source_in_build', 'copy:server_src', diff --git a/tasks/config/less.js b/tasks/config/less.js index 3c8186024fdc1..64386a46b17eb 100644 --- a/tasks/config/less.js +++ b/tasks/config/less.js @@ -7,7 +7,7 @@ module.exports = { paths: [ 'bower_components/lesshat/build/', 'bower_components', - 'src/plugins/ui/public' + 'src/KbnServer/ui/public' ] }, dev: { diff --git a/tasks/config/replace.js b/tasks/config/replace.js index da3cb556183b6..b2bb032b53d00 100644 --- a/tasks/config/replace.js +++ b/tasks/config/replace.js @@ -28,14 +28,6 @@ module.exports = function (grunt) { dest: join(build, 'dist', 'kibana', 'src', 'config', 'index.js') } ] - }, - build_props: { - files: [ - { - src: [join(app, 'index.html')], - dest: join(build, 'src', 'index.html') - } - ] } }; diff --git a/tasks/config/watch.js b/tasks/config/watch.js index 05250a55006ee..2f45210cc7b1c 100644 --- a/tasks/config/watch.js +++ b/tasks/config/watch.js @@ -2,11 +2,7 @@ module.exports = function (grunt) { var config = { less: { files: [ - '<%= app %>/**/styles/**/*.less', - '<%= plugins %>/*/styles/**/*.less', - '<%= plugins %>/*/*.less', - '<%= app %>/**/components/**/*.less', - '<%= app %>/**/components/vislib/components/styles/**/*.less' + 'src/**/*.less' ], tasks: ['less:dev'] }, From 3ceaf12216f0223c83fa0249bffad7b077e455a2 Mon Sep 17 00:00:00 2001 From: Spencer Alger Date: Thu, 25 Jun 2015 15:59:55 -0700 Subject: [PATCH 009/137] unwrap ui source --- Gruntfile.js | 2 +- src/KbnServer/ui/public/.jshintrc | 3 --- src/bin/kibana.sh | 2 +- src/dev_server/index.js | 2 +- src/{KbnServer => server}/.jshintrc | 0 src/{KbnServer => server}/KbnServer.js | 5 ++--- src/{KbnServer => server}/cli/index.js | 0 src/{KbnServer => server}/cli/readYamlConfig.js | 0 src/{KbnServer => server}/config/config.js | 0 src/{KbnServer => server}/config/explodeBy.js | 0 src/{KbnServer => server}/config/flattenWith.js | 0 src/{KbnServer => server}/config/index.js | 0 src/{KbnServer => server}/config/override.js | 0 src/{KbnServer => server}/config/schema.js | 0 src/{KbnServer => server}/http/index.js | 0 .../logging/good_reporters/_event_to_json.js | 0 .../logging/good_reporters/console.js | 0 .../logging/good_reporters/file.js | 0 src/{KbnServer => server}/logging/index.js | 0 src/{KbnServer => server}/pid/index.js | 0 src/{KbnServer => server}/plugins/Plugin.js | 0 src/{KbnServer => server}/plugins/PluginApi.js | 0 src/{KbnServer => server}/plugins/index.js | 0 src/{KbnServer => server}/plugins/load.js | 0 src/{KbnServer => server}/plugins/scan.js | 0 src/{KbnServer => server}/status/KbnStatus.js | 0 src/{KbnServer => server}/status/PluginStatus.js | 0 src/{KbnServer => server}/status/Samples.js | 0 src/{KbnServer => server}/status/index.js | 0 src/{KbnServer/ui/lib => server/ui}/UiApp.js | 0 src/{KbnServer/ui/lib => server/ui}/UiExports.js | 0 .../ui/lib => server/ui}/defaultModuleIds.js | 0 .../ui/lib => server/ui}/findBowerComponents.js | 0 .../ui/lib => server/ui}/findModuleIds.js | 3 ++- src/{KbnServer => server}/ui/index.js | 15 ++++++++------- src/server/ui/uiDir.js | 1 + .../ui/views/bootstrap.jade | 0 .../utils/closestPackageJson.js | 0 src/server/utils/fromRoot.js | 7 +++++++ src/{KbnServer => server}/views/index.jade | 0 src/ui/.jshintrc | 3 +++ src/{KbnServer/ui/public => ui}/bootstrap.js | 0 .../agg_response/geo_json/_tooltip.html | 0 .../agg_response/geo_json/_tooltip_formatter.js | 0 .../components/agg_response/geo_json/geo_json.js | 0 .../agg_response/geo_json/rowsToFeatures.js | 0 .../hierarchical/_array_to_linked_list.js | 0 .../agg_response/hierarchical/_build_split.js | 0 .../agg_response/hierarchical/_collect_branch.js | 0 .../agg_response/hierarchical/_collect_keys.js | 0 .../hierarchical/_create_raw_data.js | 0 .../hierarchical/_extract_buckets.js | 0 .../_hierarchical_tooltip_formatter.js | 0 .../agg_response/hierarchical/_tooltip.html | 0 .../hierarchical/_transform_aggregation.js | 0 .../hierarchical/build_hierarchical_data.js | 0 .../components/agg_response/index.js | 0 .../agg_response/point_series/_add_to_siri.js | 0 .../agg_response/point_series/_fake_x_aspect.js | 0 .../agg_response/point_series/_get_aspects.js | 0 .../agg_response/point_series/_get_point.js | 0 .../agg_response/point_series/_get_series.js | 0 .../agg_response/point_series/_init_x_axis.js | 0 .../agg_response/point_series/_init_y_axis.js | 0 .../point_series/_ordered_date_axis.js | 0 .../agg_response/point_series/_tooltip.html | 0 .../point_series/_tooltip_formatter.js | 0 .../agg_response/point_series/point_series.js | 0 .../components/agg_response/tabify/_buckets.js | 0 .../agg_response/tabify/_get_columns.js | 0 .../agg_response/tabify/_response_writer.js | 0 .../components/agg_response/tabify/_table.js | 0 .../agg_response/tabify/_table_group.js | 0 .../components/agg_response/tabify/tabify.js | 0 .../components/agg_table/agg_table.html | 0 .../components/agg_table/agg_table.js | 0 .../components/agg_table/agg_table.less | 0 .../components/agg_table/agg_table_group.html | 0 .../components/agg_table/agg_table_group.js | 0 .../public => ui}/components/agg_types/README.md | 0 .../components/agg_types/_agg_params.js | 0 .../components/agg_types/_agg_type.js | 0 .../agg_types/buckets/_bucket_agg_type.js | 0 .../agg_types/buckets/_bucket_count_between.js | 0 .../agg_types/buckets/_interval_options.js | 0 .../buckets/create_filter/date_histogram.js | 0 .../buckets/create_filter/date_range.js | 0 .../agg_types/buckets/create_filter/filters.js | 0 .../agg_types/buckets/create_filter/histogram.js | 0 .../agg_types/buckets/create_filter/ip_range.js | 0 .../agg_types/buckets/create_filter/range.js | 0 .../agg_types/buckets/create_filter/terms.js | 0 .../agg_types/buckets/date_histogram.js | 0 .../components/agg_types/buckets/date_range.js | 0 .../components/agg_types/buckets/filters.js | 0 .../components/agg_types/buckets/geo_hash.js | 0 .../components/agg_types/buckets/histogram.js | 0 .../components/agg_types/buckets/ip_range.js | 0 .../components/agg_types/buckets/range.js | 0 .../agg_types/buckets/significant_terms.js | 0 .../components/agg_types/buckets/terms.js | 0 .../agg_types/controls/date_ranges.html | 0 .../agg_types/controls/extended_bounds.html | 0 .../components/agg_types/controls/field.html | 0 .../components/agg_types/controls/filters.html | 0 .../components/agg_types/controls/interval.html | 0 .../components/agg_types/controls/ip_ranges.html | 0 .../agg_types/controls/min_doc_count.html | 0 .../components/agg_types/controls/order_agg.html | 0 .../agg_types/controls/order_and_size.html | 0 .../agg_types/controls/percentile_ranks.html | 0 .../agg_types/controls/percentiles.html | 0 .../components/agg_types/controls/precision.html | 0 .../components/agg_types/controls/ranges.html | 0 .../components/agg_types/controls/raw_json.html | 0 .../agg_types/controls/regular_expression.html | 0 .../components/agg_types/controls/string.html | 0 .../public => ui}/components/agg_types/index.js | 0 .../metrics/_get_response_agg_config.js | 0 .../agg_types/metrics/_metric_agg_type.js | 0 .../components/agg_types/metrics/avg.js | 0 .../components/agg_types/metrics/cardinality.js | 0 .../components/agg_types/metrics/count.js | 0 .../components/agg_types/metrics/max.js | 0 .../components/agg_types/metrics/min.js | 0 .../agg_types/metrics/percentile_ranks.js | 0 .../components/agg_types/metrics/percentiles.js | 0 .../agg_types/metrics/std_deviation.js | 0 .../components/agg_types/metrics/sum.js | 0 .../components/agg_types/param_types/base.js | 0 .../components/agg_types/param_types/field.js | 0 .../components/agg_types/param_types/optioned.js | 0 .../components/agg_types/param_types/raw_json.js | 0 .../components/agg_types/param_types/regex.js | 0 .../components/agg_types/param_types/string.js | 0 .../ui/public => ui}/components/bind.js | 0 .../components/bound_to_config_obj.js | 0 .../ui/public => ui}/components/chrome/Tab.js | 0 .../components/chrome/TabCollection.js | 0 .../public => ui}/components/chrome/chrome.html | 0 .../ui/public => ui/components/chrome}/chrome.js | 0 .../components/chrome/config/filter.html | 0 .../components/chrome/config/interval.html | 0 .../components/clipboard/clipboard.html | 0 .../components/clipboard/clipboard.js | 0 .../collapsible_sidebar/collapsible_sidebar.js | 0 .../collapsible_sidebar/collapsible_sidebar.less | 0 .../components/compile_recursive_directive.js | 0 .../components/config/_delayed_updater.js | 0 .../ui/public => ui}/components/config/_vals.js | 0 .../ui/public => ui}/components/config/config.js | 0 .../public => ui}/components/config/defaults.js | 0 .../components/config/migrations/_empty_ | 0 .../components/courier/_error_handlers.js | 0 .../components/courier/_redirect_when_missing.js | 0 .../components/courier/_request_queue.js | 0 .../public => ui}/components/courier/courier.js | 0 .../components/courier/data_source/_abstract.js | 0 .../courier/data_source/_decorate_query.js | 0 .../courier/data_source/_doc_send_to_es.js | 0 .../data_source/_normalize_sort_request.js | 0 .../courier/data_source/_root_search_source.js | 0 .../components/courier/data_source/doc_source.js | 0 .../courier/data_source/search_source.js | 0 .../components/courier/fetch/_call_client.js | 0 .../courier/fetch/_call_response_handlers.js | 0 .../courier/fetch/_continue_incomplete.js | 0 .../components/courier/fetch/_fetch_these.js | 0 .../courier/fetch/_for_each_strategy.js | 0 .../components/courier/fetch/_is_request.js | 0 .../courier/fetch/_merge_duplicate_requests.js | 0 .../components/courier/fetch/_notifier.js | 0 .../components/courier/fetch/_req_status.js | 0 .../components/courier/fetch/fetch.js | 0 .../courier/fetch/request/_error_handler.js | 0 .../courier/fetch/request/_segmented_handle.js | 0 .../components/courier/fetch/request/doc.js | 0 .../components/courier/fetch/request/request.js | 0 .../components/courier/fetch/request/search.js | 0 .../courier/fetch/request/segmented.js | 0 .../components/courier/fetch/strategy/doc.js | 0 .../components/courier/fetch/strategy/search.js | 0 .../components/courier/looper/_looper.js | 0 .../components/courier/looper/doc.js | 0 .../components/courier/looper/search.js | 0 .../courier/saved_object/saved_object.js | 0 .../ui/public => ui}/components/debounce.js | 0 .../doc_table/components/table_header.html | 0 .../doc_table/components/table_header.js | 0 .../components/doc_table/components/table_row.js | 0 .../doc_table/components/table_row/cell.html | 0 .../doc_table/components/table_row/details.html | 0 .../doc_table/components/table_row/open.html | 0 .../components/doc_table/doc_table.html | 0 .../components/doc_table/doc_table.js | 0 .../components/doc_table/doc_table.less | 0 .../components/doc_table/lib/get_sort.js | 0 .../components/doc_title/doc_title.js | 0 .../components/doc_viewer/doc_viewer.html | 0 .../components/doc_viewer/doc_viewer.js | 0 .../components/doc_viewer/doc_viewer.less | 0 .../public => ui}/components/elastic_textarea.js | 0 .../ui/public => ui}/components/errors.js | 0 src/{KbnServer/ui/public => ui}/components/es.js | 0 .../ui/public => ui}/components/events.js | 0 .../components/fancy_forms/fancy_forms.js | 0 .../components/fancy_forms/kbn_form.js | 0 .../components/fancy_forms/kbn_model.js | 0 .../components/field_editor/field_editor.html | 0 .../components/field_editor/field_editor.js | 0 .../components/field_editor/scripting_info.html | 0 .../field_editor/scripting_warning.html | 0 .../field_format_editor/field_format_editor.js | 0 .../field_format_editor/numeral/numeral.html | 0 .../field_format_editor/numeral/numeral.js | 0 .../field_format_editor/pattern/pattern.html | 0 .../field_format_editor/pattern/pattern.js | 0 .../field_format_editor/samples/samples.html | 0 .../field_format_editor/samples/samples.js | 0 .../components/filter_bar/filter_bar.html | 0 .../components/filter_bar/filter_bar.js | 0 .../components/filter_bar/filter_bar.less | 0 .../filter_bar/filter_bar_click_handler.js | 0 .../filter_bar/lib/changeTimeFilter.js | 0 .../components/filter_bar/lib/compareFilters.js | 0 .../components/filter_bar/lib/dedupFilters.js | 0 .../filter_bar/lib/extractTimeFilter.js | 0 .../filter_bar/lib/filterAppliedAndUnwrap.js | 0 .../filter_bar/lib/filterOutTimeBasedFilter.js | 0 .../filter_bar/lib/generateMappingChain.js | 0 .../filter_bar/lib/mapAndFlattenFilters.js | 0 .../components/filter_bar/lib/mapDefault.js | 0 .../components/filter_bar/lib/mapExists.js | 0 .../components/filter_bar/lib/mapFilter.js | 0 .../filter_bar/lib/mapFlattenAndWrapFilters.js | 0 .../filter_bar/lib/mapGeoBoundingBox.js | 0 .../components/filter_bar/lib/mapMissing.js | 0 .../components/filter_bar/lib/mapQueryString.js | 0 .../components/filter_bar/lib/mapRange.js | 0 .../components/filter_bar/lib/mapScript.js | 0 .../components/filter_bar/lib/mapTerms.js | 0 .../components/filter_bar/lib/onlyDisabled.js | 0 .../filter_bar/lib/onlyStateChanged.js | 0 .../components/filter_bar/lib/remapFilters.js | 0 .../components/filter_bar/lib/uniqFilters.js | 0 .../components/filter_bar/push_filter.js | 0 .../components/filter_bar/query_filter.js | 0 .../components/filter_manager/filter_manager.js | 0 .../components/filter_manager/lib/phrase.js | 0 .../components/filter_manager/lib/query.js | 0 .../components/filter_manager/lib/range.js | 0 .../ui/public => ui}/components/fixedScroll.js | 0 .../components/highlight/highlight.js | 0 .../components/highlight/highlight_tags.js | 0 .../index_patterns/_cast_mapping_type.js | 0 .../components/index_patterns/_ensure_some.js | 0 .../components/index_patterns/_field.js | 0 .../index_patterns/_field_format/FieldFormat.js | 0 .../index_patterns/_field_format/contentTypes.js | 0 .../components/index_patterns/_field_list.js | 0 .../components/index_patterns/_field_types.js | 0 .../components/index_patterns/_flatten_hit.js | 0 .../components/index_patterns/_format_hit.js | 0 .../index_patterns/_get_computed_fields.js | 0 .../components/index_patterns/_get_ids.js | 0 .../components/index_patterns/_index_pattern.js | 0 .../components/index_patterns/_intervals.js | 0 .../components/index_patterns/_local_cache.js | 0 .../components/index_patterns/_map_field.js | 0 .../components/index_patterns/_mapper.js | 0 .../components/index_patterns/_object.tmpl.html | 0 .../components/index_patterns/_pattern_cache.js | 0 .../index_patterns/_pattern_to_wildcard.js | 0 .../_transform_mapping_into_fields.js | 0 .../components/index_patterns/index_patterns.js | 0 .../components/indexed_array/_inflector.js | 0 .../components/indexed_array/_path_getter.js | 0 .../components/indexed_array/index.js | 0 .../ui/public => ui}/components/listen.js | 0 .../ui/public => ui}/components/modules.js | 0 .../public => ui}/components/notify/_errors.js | 0 .../public => ui}/components/notify/_notifier.js | 0 .../components/notify/directives.js | 0 .../ui/public => ui}/components/notify/notify.js | 0 .../components/notify/partials/fatal.html | 0 .../notify/partials/fatal_splash_screen.html | 0 .../components/notify/partials/toaster.html | 0 .../components/number_list/number_list.html | 0 .../components/number_list/number_list.js | 0 .../components/number_list/number_list_input.js | 0 .../paginated_table/paginated_table.html | 0 .../paginated_table/paginated_table.js | 0 .../components/persisted_log/persisted_log.js | 0 .../ui/public => ui}/components/private.js | 0 .../ui/public => ui}/components/promises.js | 0 .../public => ui}/components/reflow_watcher.js | 0 .../ui/public => ui}/components/routes/_setup.js | 0 .../components/routes/_work_queue.js | 0 .../components/routes/_wrap_route_with_prep.js | 0 .../ui/public => ui}/components/routes/index.js | 0 .../components/state_management/_state_sync.js | 0 .../components/state_management/app_state.js | 0 .../components/state_management/global_state.js | 0 .../components/state_management/state.js | 0 .../public => ui}/components/storage/storage.js | 0 .../public => ui}/components/stringify/.jshintrc | 0 .../components/stringify/editors/date.html | 0 .../components/stringify/editors/string.html | 0 .../components/stringify/editors/url.html | 0 .../components/stringify/icons/cv.png | Bin .../components/stringify/icons/de.png | Bin .../components/stringify/icons/flag-icon.LICENSE | 0 .../components/stringify/icons/go.png | Bin .../components/stringify/icons/ne.png | Bin .../components/stringify/icons/ni.png | Bin .../components/stringify/icons/stop.png | Bin .../components/stringify/icons/us.png | Bin .../components/stringify/register.js | 0 .../components/stringify/types/Bytes.js | 0 .../components/stringify/types/Date.js | 0 .../components/stringify/types/Ip.js | 0 .../components/stringify/types/Number.js | 0 .../components/stringify/types/Percent.js | 0 .../components/stringify/types/Source.js | 0 .../components/stringify/types/String.js | 0 .../components/stringify/types/Url.js | 0 .../components/stringify/types/_Numeral.js | 0 .../components/stringify/types/_source.html | 0 .../style_compile/style_compile.css.tmpl | 0 .../components/style_compile/style_compile.js | 0 .../template_vis_type/TemplateRenderbot.js | 0 .../template_vis_type/TemplateVisType.js | 0 .../time_buckets/calc_auto_interval.js | 0 .../components/time_buckets/calc_es_interval.js | 0 .../components/time_buckets/time_buckets.js | 0 .../components/timefilter/lib/diff_interval.js | 0 .../components/timefilter/lib/diff_time.js | 0 .../components/timefilter/timefilter.js | 0 .../components/timepicker/quick_ranges.js | 0 .../components/timepicker/refresh_intervals.js | 0 .../components/timepicker/time_units.js | 0 .../components/timepicker/timepicker.html | 0 .../components/timepicker/timepicker.js | 0 .../components/tooltip/tooltip.html | 0 .../public => ui}/components/tooltip/tooltip.js | 0 .../public => ui}/components/typeahead/_input.js | 0 .../public => ui}/components/typeahead/_items.js | 0 .../typeahead/partials/typeahead-items.html | 0 .../components/typeahead/typeahead.js | 0 .../components/typeahead/typeahead.less | 0 .../ui/public => ui}/components/url/url.js | 0 .../components/validateDateInterval.js | 0 .../components/validate_query/lib/from_user.js | 0 .../components/validate_query/lib/to_user.js | 0 .../components/validate_query/validate_query.js | 0 .../ui/public => ui}/components/vis/AggConfig.js | 0 .../components/vis/AggConfigResult.js | 0 .../public => ui}/components/vis/AggConfigs.js | 0 .../ui/public => ui}/components/vis/Renderbot.js | 0 .../ui/public => ui}/components/vis/Schemas.js | 0 .../ui/public => ui}/components/vis/VisType.js | 0 .../ui/public => ui}/components/vis/vis.js | 0 .../components/vislib/components/color/color.js | 0 .../vislib/components/color/color_palette.js | 0 .../vislib/components/color/seed_colors.js | 0 .../vislib/components/labels/data_array.js | 0 .../vislib/components/labels/flatten_series.js | 0 .../vislib/components/labels/labels.js | 0 .../vislib/components/labels/uniq_labels.js | 0 .../components/tooltip/_position_tooltip.js | 0 .../vislib/components/tooltip/tooltip.js | 0 .../components/zero_injection/flatten_data.js | 0 .../components/zero_injection/inject_zeros.js | 0 .../components/zero_injection/ordered_x_keys.js | 0 .../components/zero_injection/uniq_keys.js | 0 .../zero_injection/zero_fill_data_array.js | 0 .../zero_injection/zero_filled_array.js | 0 .../ui/public => ui}/components/vislib/index.js | 0 .../components/vislib/lib/_data_label.js | 0 .../components/vislib/lib/_error_handler.js | 0 .../components/vislib/lib/alerts.js | 0 .../components/vislib/lib/axis_title.js | 0 .../components/vislib/lib/chart_title.js | 0 .../public => ui}/components/vislib/lib/data.js | 0 .../components/vislib/lib/dispatch.js | 0 .../components/vislib/lib/handler/handler.js | 0 .../vislib/lib/handler/handler_types.js | 0 .../components/vislib/lib/handler/types/pie.js | 0 .../vislib/lib/handler/types/point_series.js | 0 .../vislib/lib/handler/types/tile_map.js | 0 .../components/vislib/lib/layout/layout.js | 0 .../components/vislib/lib/layout/layout_types.js | 0 .../layout/splits/column_chart/chart_split.js | 0 .../splits/column_chart/chart_title_split.js | 0 .../layout/splits/column_chart/x_axis_split.js | 0 .../layout/splits/column_chart/y_axis_split.js | 0 .../lib/layout/splits/pie_chart/chart_split.js | 0 .../layout/splits/pie_chart/chart_title_split.js | 0 .../lib/layout/splits/tile_map/map_split.js | 0 .../vislib/lib/layout/types/column_layout.js | 0 .../vislib/lib/layout/types/map_layout.js | 0 .../vislib/lib/layout/types/pie_layout.js | 0 .../components/vislib/lib/legend.js | 0 .../components/vislib/lib/resize_checker.js | 0 .../components/vislib/lib/x_axis.js | 0 .../components/vislib/lib/y_axis.js | 0 .../vislib/partials/legend_header.html | 0 .../vislib/partials/touchdown.tmpl.html | 0 .../components/vislib/styles/_alerts.less | 0 .../components/vislib/styles/_error.less | 0 .../components/vislib/styles/_layout.less | 0 .../components/vislib/styles/_legend.less | 0 .../components/vislib/styles/_svg.less | 0 .../components/vislib/styles/_tilemap.less | 0 .../components/vislib/styles/_tooltip.less | 0 .../components/vislib/styles/main.less | 0 .../ui/public => ui}/components/vislib/vis.js | 0 .../components/vislib/visualizations/_chart.js | 0 .../vislib/visualizations/_point_series_chart.js | 0 .../vislib/visualizations/area_chart.js | 0 .../vislib/visualizations/column_chart.js | 0 .../vislib/visualizations/line_chart.js | 0 .../vislib/visualizations/pie_chart.js | 0 .../components/vislib/visualizations/tile_map.js | 0 .../vislib/visualizations/time_marker.js | 0 .../vislib/visualizations/vis_types.js | 0 .../vislib_vis_type/VislibRenderbot.js | 0 .../components/vislib_vis_type/VislibVisType.js | 0 .../components/vislib_vis_type/buildChartData.js | 0 .../visualize/spy/_req_resp_stats.html | 0 .../components/visualize/spy/_req_resp_stats.js | 0 .../components/visualize/spy/_spy.html | 0 .../components/visualize/spy/_table.html | 0 .../components/visualize/spy/_table.js | 0 .../components/visualize/spy/spy.js | 0 .../components/visualize/visualize.html | 0 .../components/visualize/visualize.js | 0 .../components/visualize/visualize.less | 0 .../ui/public => ui}/components/watch_multi.js | 0 .../directives/auto_select_if_only_one.js | 0 .../ui/public => ui}/directives/click_focus.js | 0 .../ui/public => ui}/directives/config.js | 0 .../ui/public => ui}/directives/confirm_click.js | 0 .../ui/public => ui}/directives/css_truncate.js | 0 .../ui/public => ui}/directives/field_name.js | 0 .../ui/public => ui}/directives/file_upload.js | 0 .../ui/public => ui}/directives/inequality.js | 0 .../public => ui}/directives/infinite_scroll.js | 0 .../ui/public => ui}/directives/info.js | 0 .../public => ui}/directives/input_datetime.js | 0 .../ui/public => ui}/directives/input_focus.js | 0 .../directives/input_whole_number.js | 0 .../ui/public => ui}/directives/paginate.js | 0 .../public => ui}/directives/pretty_duration.js | 0 .../ui/public => ui}/directives/rows.js | 0 .../directives/saved_object_finder.js | 0 .../ui/public => ui}/directives/spinner.js | 0 .../ui/public => ui}/directives/truncated.js | 0 .../directives/validate_cidr_mask.js | 0 .../directives/validate_date_math.js | 0 .../directives/validate_index_name.js | 0 .../ui/public => ui}/directives/validate_ip.js | 0 .../ui/public => ui}/directives/validate_json.js | 0 .../ui/public => ui}/filters/_prop_filter.js | 0 .../ui/public => ui}/filters/commaList.js | 0 .../ui/public => ui}/filters/field_type.js | 0 src/{KbnServer/ui/public => ui}/filters/label.js | 0 .../ui/public => ui}/filters/match_any.js | 0 .../ui/public => ui}/filters/moment.js | 0 src/{KbnServer/ui/public => ui}/filters/rison.js | 0 .../ui/public => ui}/filters/short_dots.js | 0 .../ui/public => ui}/filters/start_from.js | 0 .../ui/public => ui}/filters/trust_as_html.js | 0 .../ui/public => ui}/filters/unique.js | 0 .../ui/public => ui}/filters/uriescape.js | 0 .../ui/public => ui}/images/initial_load.gif | Bin .../ui/public => ui}/images/kibana.png | Bin .../ui/public => ui}/partials/global_config.html | 0 .../ui/public => ui}/partials/info.html | 0 .../ui/public => ui}/partials/nav_config.html | 0 .../partials/paginate_controls.html | 0 .../partials/saved_object_finder.html | 0 .../partials/truncate_by_height.html | 0 .../ui/public => ui}/registry/_registry.js | 0 src/{KbnServer/ui/public => ui}/registry/apps.js | 0 .../ui/public => ui}/registry/field_formats.js | 0 .../ui/public => ui}/registry/spy_modes.js | 0 .../ui/public => ui}/registry/vis_types.js | 0 .../ui/public => ui}/require.config.js | 1 + .../ui/public => ui}/ui-styles/_bootstrap.less | 0 .../ui/public => ui}/ui-styles/_callout.less | 0 .../public => ui}/ui-styles/_control_group.less | 0 .../ui/public => ui}/ui-styles/_font_icons.less | 0 .../ui/public => ui}/ui-styles/_glyphicons.less | 0 .../ui/public => ui}/ui-styles/_hintbox.less | 0 .../ui/public => ui}/ui-styles/_input.less | 0 .../ui/public => ui}/ui-styles/_mixins.less | 0 .../ui/public => ui}/ui-styles/_navbar.less | 0 .../ui/public => ui}/ui-styles/_notify.less | 0 .../ui/public => ui}/ui-styles/_pagination.less | 0 .../ui/public => ui}/ui-styles/_sidebar.less | 0 .../ui/public => ui}/ui-styles/_spinner.less | 0 .../ui/public => ui}/ui-styles/_table.less | 0 .../ui/public => ui}/ui-styles/_truncate.less | 0 .../ui/public => ui}/ui-styles/_variables.less | 0 .../ui/public => ui}/ui-styles/main.less | 0 .../ui/public => ui}/ui-styles/theme/_theme.less | 0 .../ui-styles/theme/_variables.less | 0 .../ui/public => ui}/ui-styles/theme/elk.ico | Bin .../ui/public => ui}/utils/BaseObject.js | 0 .../ui/public => ui}/utils/SimpleEmitter.js | 0 .../ui/public => ui}/utils/add_word_breaks.js | 0 .../ui/public => ui}/utils/brush_event.js | 0 .../ui/public => ui}/utils/cidr_mask.js | 0 .../ui/public => ui}/utils/config_template.js | 0 .../ui/public => ui}/utils/date_range.js | 0 .../ui/public => ui}/utils/datemath.js | 0 .../ui/public => ui}/utils/decode_geo_hash.js | 0 .../ui/public => ui}/utils/diff_object.js | 0 .../public => ui}/utils/diff_time_picker_vals.js | 0 src/{KbnServer/ui/public => ui}/utils/esBool.js | 0 .../ui/public => ui}/utils/ipv4_address.js | 0 src/{KbnServer/ui/public => ui}/utils/key_map.js | 0 .../utils/lodash-mixins/collection.js | 0 .../utils/lodash-mixins/function.js | 0 .../public => ui}/utils/lodash-mixins/index.js | 0 .../ui/public => ui}/utils/lodash-mixins/lang.js | 0 .../public => ui}/utils/lodash-mixins/object.js | 0 .../ui/public => ui}/utils/lodash-mixins/oop.js | 0 .../public => ui}/utils/lodash-mixins/string.js | 0 .../ui/public => ui}/utils/mapping_setup.js | 0 .../ui/public => ui}/utils/no_white_space.js | 0 .../ui/public => ui}/utils/obj_define.js | 0 .../ui/public => ui}/utils/ordinal_suffix.js | 0 .../ui/public => ui}/utils/parse_interval.js | 0 .../ui/public => ui}/utils/query_string.js | 0 src/{KbnServer/ui/public => ui}/utils/range.js | 0 src/{KbnServer/ui/public => ui}/utils/rison.js | 0 .../ui/public => ui}/utils/sequencer.js | 0 .../ui/public => ui}/utils/slugify_id.js | 0 .../ui/public => ui}/utils/supports.js | 0 .../ui/public => ui}/utils/versionmath.js | 0 tasks/config/less.js | 2 +- 543 files changed, 28 insertions(+), 18 deletions(-) delete mode 100644 src/KbnServer/ui/public/.jshintrc rename src/{KbnServer => server}/.jshintrc (100%) rename src/{KbnServer => server}/KbnServer.js (91%) rename src/{KbnServer => server}/cli/index.js (100%) rename src/{KbnServer => server}/cli/readYamlConfig.js (100%) rename src/{KbnServer => server}/config/config.js (100%) rename src/{KbnServer => server}/config/explodeBy.js (100%) rename src/{KbnServer => server}/config/flattenWith.js (100%) rename src/{KbnServer => server}/config/index.js (100%) rename src/{KbnServer => server}/config/override.js (100%) rename src/{KbnServer => server}/config/schema.js (100%) rename src/{KbnServer => server}/http/index.js (100%) rename src/{KbnServer => server}/logging/good_reporters/_event_to_json.js (100%) rename src/{KbnServer => server}/logging/good_reporters/console.js (100%) rename src/{KbnServer => server}/logging/good_reporters/file.js (100%) rename src/{KbnServer => server}/logging/index.js (100%) rename src/{KbnServer => server}/pid/index.js (100%) rename src/{KbnServer => server}/plugins/Plugin.js (100%) rename src/{KbnServer => server}/plugins/PluginApi.js (100%) rename src/{KbnServer => server}/plugins/index.js (100%) rename src/{KbnServer => server}/plugins/load.js (100%) rename src/{KbnServer => server}/plugins/scan.js (100%) rename src/{KbnServer => server}/status/KbnStatus.js (100%) rename src/{KbnServer => server}/status/PluginStatus.js (100%) rename src/{KbnServer => server}/status/Samples.js (100%) rename src/{KbnServer => server}/status/index.js (100%) rename src/{KbnServer/ui/lib => server/ui}/UiApp.js (100%) rename src/{KbnServer/ui/lib => server/ui}/UiExports.js (100%) rename src/{KbnServer/ui/lib => server/ui}/defaultModuleIds.js (100%) rename src/{KbnServer/ui/lib => server/ui}/findBowerComponents.js (100%) rename src/{KbnServer/ui/lib => server/ui}/findModuleIds.js (93%) rename src/{KbnServer => server}/ui/index.js (86%) create mode 100644 src/server/ui/uiDir.js rename src/{KbnServer => server}/ui/views/bootstrap.jade (100%) rename src/{KbnServer => server}/utils/closestPackageJson.js (100%) create mode 100644 src/server/utils/fromRoot.js rename src/{KbnServer => server}/views/index.jade (100%) create mode 100644 src/ui/.jshintrc rename src/{KbnServer/ui/public => ui}/bootstrap.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/geo_json/_tooltip.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/geo_json/_tooltip_formatter.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/geo_json/geo_json.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/geo_json/rowsToFeatures.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/hierarchical/_array_to_linked_list.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/hierarchical/_build_split.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/hierarchical/_collect_branch.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/hierarchical/_collect_keys.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/hierarchical/_create_raw_data.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/hierarchical/_extract_buckets.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/hierarchical/_tooltip.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/hierarchical/_transform_aggregation.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/hierarchical/build_hierarchical_data.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/index.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/point_series/_add_to_siri.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/point_series/_fake_x_aspect.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/point_series/_get_aspects.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/point_series/_get_point.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/point_series/_get_series.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/point_series/_init_x_axis.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/point_series/_init_y_axis.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/point_series/_ordered_date_axis.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/point_series/_tooltip.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/point_series/_tooltip_formatter.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/point_series/point_series.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/tabify/_buckets.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/tabify/_get_columns.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/tabify/_response_writer.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/tabify/_table.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/tabify/_table_group.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_response/tabify/tabify.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_table/agg_table.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_table/agg_table.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_table/agg_table.less (100%) rename src/{KbnServer/ui/public => ui}/components/agg_table/agg_table_group.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_table/agg_table_group.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/README.md (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/_agg_params.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/_agg_type.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/buckets/_bucket_agg_type.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/buckets/_bucket_count_between.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/buckets/_interval_options.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/buckets/create_filter/date_histogram.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/buckets/create_filter/date_range.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/buckets/create_filter/filters.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/buckets/create_filter/histogram.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/buckets/create_filter/ip_range.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/buckets/create_filter/range.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/buckets/create_filter/terms.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/buckets/date_histogram.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/buckets/date_range.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/buckets/filters.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/buckets/geo_hash.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/buckets/histogram.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/buckets/ip_range.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/buckets/range.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/buckets/significant_terms.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/buckets/terms.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/controls/date_ranges.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/controls/extended_bounds.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/controls/field.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/controls/filters.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/controls/interval.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/controls/ip_ranges.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/controls/min_doc_count.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/controls/order_agg.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/controls/order_and_size.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/controls/percentile_ranks.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/controls/percentiles.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/controls/precision.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/controls/ranges.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/controls/raw_json.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/controls/regular_expression.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/controls/string.html (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/index.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/metrics/_get_response_agg_config.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/metrics/_metric_agg_type.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/metrics/avg.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/metrics/cardinality.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/metrics/count.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/metrics/max.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/metrics/min.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/metrics/percentile_ranks.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/metrics/percentiles.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/metrics/std_deviation.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/metrics/sum.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/param_types/base.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/param_types/field.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/param_types/optioned.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/param_types/raw_json.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/param_types/regex.js (100%) rename src/{KbnServer/ui/public => ui}/components/agg_types/param_types/string.js (100%) rename src/{KbnServer/ui/public => ui}/components/bind.js (100%) rename src/{KbnServer/ui/public => ui}/components/bound_to_config_obj.js (100%) rename src/{KbnServer/ui/public => ui}/components/chrome/Tab.js (100%) rename src/{KbnServer/ui/public => ui}/components/chrome/TabCollection.js (100%) rename src/{KbnServer/ui/public => ui}/components/chrome/chrome.html (100%) rename src/{KbnServer/ui/public => ui/components/chrome}/chrome.js (100%) rename src/{KbnServer/ui/public => ui}/components/chrome/config/filter.html (100%) rename src/{KbnServer/ui/public => ui}/components/chrome/config/interval.html (100%) rename src/{KbnServer/ui/public => ui}/components/clipboard/clipboard.html (100%) rename src/{KbnServer/ui/public => ui}/components/clipboard/clipboard.js (100%) rename src/{KbnServer/ui/public => ui}/components/collapsible_sidebar/collapsible_sidebar.js (100%) rename src/{KbnServer/ui/public => ui}/components/collapsible_sidebar/collapsible_sidebar.less (100%) rename src/{KbnServer/ui/public => ui}/components/compile_recursive_directive.js (100%) rename src/{KbnServer/ui/public => ui}/components/config/_delayed_updater.js (100%) rename src/{KbnServer/ui/public => ui}/components/config/_vals.js (100%) rename src/{KbnServer/ui/public => ui}/components/config/config.js (100%) rename src/{KbnServer/ui/public => ui}/components/config/defaults.js (100%) rename src/{KbnServer/ui/public => ui}/components/config/migrations/_empty_ (100%) rename src/{KbnServer/ui/public => ui}/components/courier/_error_handlers.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/_redirect_when_missing.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/_request_queue.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/courier.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/data_source/_abstract.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/data_source/_decorate_query.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/data_source/_doc_send_to_es.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/data_source/_normalize_sort_request.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/data_source/_root_search_source.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/data_source/doc_source.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/data_source/search_source.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/fetch/_call_client.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/fetch/_call_response_handlers.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/fetch/_continue_incomplete.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/fetch/_fetch_these.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/fetch/_for_each_strategy.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/fetch/_is_request.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/fetch/_merge_duplicate_requests.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/fetch/_notifier.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/fetch/_req_status.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/fetch/fetch.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/fetch/request/_error_handler.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/fetch/request/_segmented_handle.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/fetch/request/doc.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/fetch/request/request.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/fetch/request/search.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/fetch/request/segmented.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/fetch/strategy/doc.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/fetch/strategy/search.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/looper/_looper.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/looper/doc.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/looper/search.js (100%) rename src/{KbnServer/ui/public => ui}/components/courier/saved_object/saved_object.js (100%) rename src/{KbnServer/ui/public => ui}/components/debounce.js (100%) rename src/{KbnServer/ui/public => ui}/components/doc_table/components/table_header.html (100%) rename src/{KbnServer/ui/public => ui}/components/doc_table/components/table_header.js (100%) rename src/{KbnServer/ui/public => ui}/components/doc_table/components/table_row.js (100%) rename src/{KbnServer/ui/public => ui}/components/doc_table/components/table_row/cell.html (100%) rename src/{KbnServer/ui/public => ui}/components/doc_table/components/table_row/details.html (100%) rename src/{KbnServer/ui/public => ui}/components/doc_table/components/table_row/open.html (100%) rename src/{KbnServer/ui/public => ui}/components/doc_table/doc_table.html (100%) rename src/{KbnServer/ui/public => ui}/components/doc_table/doc_table.js (100%) rename src/{KbnServer/ui/public => ui}/components/doc_table/doc_table.less (100%) rename src/{KbnServer/ui/public => ui}/components/doc_table/lib/get_sort.js (100%) rename src/{KbnServer/ui/public => ui}/components/doc_title/doc_title.js (100%) rename src/{KbnServer/ui/public => ui}/components/doc_viewer/doc_viewer.html (100%) rename src/{KbnServer/ui/public => ui}/components/doc_viewer/doc_viewer.js (100%) rename src/{KbnServer/ui/public => ui}/components/doc_viewer/doc_viewer.less (100%) rename src/{KbnServer/ui/public => ui}/components/elastic_textarea.js (100%) rename src/{KbnServer/ui/public => ui}/components/errors.js (100%) rename src/{KbnServer/ui/public => ui}/components/es.js (100%) rename src/{KbnServer/ui/public => ui}/components/events.js (100%) rename src/{KbnServer/ui/public => ui}/components/fancy_forms/fancy_forms.js (100%) rename src/{KbnServer/ui/public => ui}/components/fancy_forms/kbn_form.js (100%) rename src/{KbnServer/ui/public => ui}/components/fancy_forms/kbn_model.js (100%) rename src/{KbnServer/ui/public => ui}/components/field_editor/field_editor.html (100%) rename src/{KbnServer/ui/public => ui}/components/field_editor/field_editor.js (100%) rename src/{KbnServer/ui/public => ui}/components/field_editor/scripting_info.html (100%) rename src/{KbnServer/ui/public => ui}/components/field_editor/scripting_warning.html (100%) rename src/{KbnServer/ui/public => ui}/components/field_format_editor/field_format_editor.js (100%) rename src/{KbnServer/ui/public => ui}/components/field_format_editor/numeral/numeral.html (100%) rename src/{KbnServer/ui/public => ui}/components/field_format_editor/numeral/numeral.js (100%) rename src/{KbnServer/ui/public => ui}/components/field_format_editor/pattern/pattern.html (100%) rename src/{KbnServer/ui/public => ui}/components/field_format_editor/pattern/pattern.js (100%) rename src/{KbnServer/ui/public => ui}/components/field_format_editor/samples/samples.html (100%) rename src/{KbnServer/ui/public => ui}/components/field_format_editor/samples/samples.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/filter_bar.html (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/filter_bar.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/filter_bar.less (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/filter_bar_click_handler.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/changeTimeFilter.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/compareFilters.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/dedupFilters.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/extractTimeFilter.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/filterAppliedAndUnwrap.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/filterOutTimeBasedFilter.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/generateMappingChain.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/mapAndFlattenFilters.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/mapDefault.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/mapExists.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/mapFilter.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/mapFlattenAndWrapFilters.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/mapGeoBoundingBox.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/mapMissing.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/mapQueryString.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/mapRange.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/mapScript.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/mapTerms.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/onlyDisabled.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/onlyStateChanged.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/remapFilters.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/lib/uniqFilters.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/push_filter.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_bar/query_filter.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_manager/filter_manager.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_manager/lib/phrase.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_manager/lib/query.js (100%) rename src/{KbnServer/ui/public => ui}/components/filter_manager/lib/range.js (100%) rename src/{KbnServer/ui/public => ui}/components/fixedScroll.js (100%) rename src/{KbnServer/ui/public => ui}/components/highlight/highlight.js (100%) rename src/{KbnServer/ui/public => ui}/components/highlight/highlight_tags.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_cast_mapping_type.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_ensure_some.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_field.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_field_format/FieldFormat.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_field_format/contentTypes.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_field_list.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_field_types.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_flatten_hit.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_format_hit.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_get_computed_fields.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_get_ids.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_index_pattern.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_intervals.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_local_cache.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_map_field.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_mapper.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_object.tmpl.html (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_pattern_cache.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_pattern_to_wildcard.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/_transform_mapping_into_fields.js (100%) rename src/{KbnServer/ui/public => ui}/components/index_patterns/index_patterns.js (100%) rename src/{KbnServer/ui/public => ui}/components/indexed_array/_inflector.js (100%) rename src/{KbnServer/ui/public => ui}/components/indexed_array/_path_getter.js (100%) rename src/{KbnServer/ui/public => ui}/components/indexed_array/index.js (100%) rename src/{KbnServer/ui/public => ui}/components/listen.js (100%) rename src/{KbnServer/ui/public => ui}/components/modules.js (100%) rename src/{KbnServer/ui/public => ui}/components/notify/_errors.js (100%) rename src/{KbnServer/ui/public => ui}/components/notify/_notifier.js (100%) rename src/{KbnServer/ui/public => ui}/components/notify/directives.js (100%) rename src/{KbnServer/ui/public => ui}/components/notify/notify.js (100%) rename src/{KbnServer/ui/public => ui}/components/notify/partials/fatal.html (100%) rename src/{KbnServer/ui/public => ui}/components/notify/partials/fatal_splash_screen.html (100%) rename src/{KbnServer/ui/public => ui}/components/notify/partials/toaster.html (100%) rename src/{KbnServer/ui/public => ui}/components/number_list/number_list.html (100%) rename src/{KbnServer/ui/public => ui}/components/number_list/number_list.js (100%) rename src/{KbnServer/ui/public => ui}/components/number_list/number_list_input.js (100%) rename src/{KbnServer/ui/public => ui}/components/paginated_table/paginated_table.html (100%) rename src/{KbnServer/ui/public => ui}/components/paginated_table/paginated_table.js (100%) rename src/{KbnServer/ui/public => ui}/components/persisted_log/persisted_log.js (100%) rename src/{KbnServer/ui/public => ui}/components/private.js (100%) rename src/{KbnServer/ui/public => ui}/components/promises.js (100%) rename src/{KbnServer/ui/public => ui}/components/reflow_watcher.js (100%) rename src/{KbnServer/ui/public => ui}/components/routes/_setup.js (100%) rename src/{KbnServer/ui/public => ui}/components/routes/_work_queue.js (100%) rename src/{KbnServer/ui/public => ui}/components/routes/_wrap_route_with_prep.js (100%) rename src/{KbnServer/ui/public => ui}/components/routes/index.js (100%) rename src/{KbnServer/ui/public => ui}/components/state_management/_state_sync.js (100%) rename src/{KbnServer/ui/public => ui}/components/state_management/app_state.js (100%) rename src/{KbnServer/ui/public => ui}/components/state_management/global_state.js (100%) rename src/{KbnServer/ui/public => ui}/components/state_management/state.js (100%) rename src/{KbnServer/ui/public => ui}/components/storage/storage.js (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/.jshintrc (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/editors/date.html (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/editors/string.html (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/editors/url.html (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/icons/cv.png (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/icons/de.png (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/icons/flag-icon.LICENSE (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/icons/go.png (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/icons/ne.png (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/icons/ni.png (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/icons/stop.png (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/icons/us.png (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/register.js (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/types/Bytes.js (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/types/Date.js (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/types/Ip.js (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/types/Number.js (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/types/Percent.js (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/types/Source.js (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/types/String.js (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/types/Url.js (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/types/_Numeral.js (100%) rename src/{KbnServer/ui/public => ui}/components/stringify/types/_source.html (100%) rename src/{KbnServer/ui/public => ui}/components/style_compile/style_compile.css.tmpl (100%) rename src/{KbnServer/ui/public => ui}/components/style_compile/style_compile.js (100%) rename src/{KbnServer/ui/public => ui}/components/template_vis_type/TemplateRenderbot.js (100%) rename src/{KbnServer/ui/public => ui}/components/template_vis_type/TemplateVisType.js (100%) rename src/{KbnServer/ui/public => ui}/components/time_buckets/calc_auto_interval.js (100%) rename src/{KbnServer/ui/public => ui}/components/time_buckets/calc_es_interval.js (100%) rename src/{KbnServer/ui/public => ui}/components/time_buckets/time_buckets.js (100%) rename src/{KbnServer/ui/public => ui}/components/timefilter/lib/diff_interval.js (100%) rename src/{KbnServer/ui/public => ui}/components/timefilter/lib/diff_time.js (100%) rename src/{KbnServer/ui/public => ui}/components/timefilter/timefilter.js (100%) rename src/{KbnServer/ui/public => ui}/components/timepicker/quick_ranges.js (100%) rename src/{KbnServer/ui/public => ui}/components/timepicker/refresh_intervals.js (100%) rename src/{KbnServer/ui/public => ui}/components/timepicker/time_units.js (100%) rename src/{KbnServer/ui/public => ui}/components/timepicker/timepicker.html (100%) rename src/{KbnServer/ui/public => ui}/components/timepicker/timepicker.js (100%) rename src/{KbnServer/ui/public => ui}/components/tooltip/tooltip.html (100%) rename src/{KbnServer/ui/public => ui}/components/tooltip/tooltip.js (100%) rename src/{KbnServer/ui/public => ui}/components/typeahead/_input.js (100%) rename src/{KbnServer/ui/public => ui}/components/typeahead/_items.js (100%) rename src/{KbnServer/ui/public => ui}/components/typeahead/partials/typeahead-items.html (100%) rename src/{KbnServer/ui/public => ui}/components/typeahead/typeahead.js (100%) rename src/{KbnServer/ui/public => ui}/components/typeahead/typeahead.less (100%) rename src/{KbnServer/ui/public => ui}/components/url/url.js (100%) rename src/{KbnServer/ui/public => ui}/components/validateDateInterval.js (100%) rename src/{KbnServer/ui/public => ui}/components/validate_query/lib/from_user.js (100%) rename src/{KbnServer/ui/public => ui}/components/validate_query/lib/to_user.js (100%) rename src/{KbnServer/ui/public => ui}/components/validate_query/validate_query.js (100%) rename src/{KbnServer/ui/public => ui}/components/vis/AggConfig.js (100%) rename src/{KbnServer/ui/public => ui}/components/vis/AggConfigResult.js (100%) rename src/{KbnServer/ui/public => ui}/components/vis/AggConfigs.js (100%) rename src/{KbnServer/ui/public => ui}/components/vis/Renderbot.js (100%) rename src/{KbnServer/ui/public => ui}/components/vis/Schemas.js (100%) rename src/{KbnServer/ui/public => ui}/components/vis/VisType.js (100%) rename src/{KbnServer/ui/public => ui}/components/vis/vis.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/components/color/color.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/components/color/color_palette.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/components/color/seed_colors.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/components/labels/data_array.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/components/labels/flatten_series.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/components/labels/labels.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/components/labels/uniq_labels.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/components/tooltip/_position_tooltip.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/components/tooltip/tooltip.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/components/zero_injection/flatten_data.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/components/zero_injection/inject_zeros.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/components/zero_injection/ordered_x_keys.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/components/zero_injection/uniq_keys.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/components/zero_injection/zero_fill_data_array.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/components/zero_injection/zero_filled_array.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/index.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/_data_label.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/_error_handler.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/alerts.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/axis_title.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/chart_title.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/data.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/dispatch.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/handler/handler.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/handler/handler_types.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/handler/types/pie.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/handler/types/point_series.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/handler/types/tile_map.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/layout/layout.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/layout/layout_types.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/layout/splits/column_chart/chart_split.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/layout/splits/column_chart/chart_title_split.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/layout/splits/column_chart/x_axis_split.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/layout/splits/column_chart/y_axis_split.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/layout/splits/pie_chart/chart_split.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/layout/splits/tile_map/map_split.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/layout/types/column_layout.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/layout/types/map_layout.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/layout/types/pie_layout.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/legend.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/resize_checker.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/x_axis.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/lib/y_axis.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/partials/legend_header.html (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/partials/touchdown.tmpl.html (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/styles/_alerts.less (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/styles/_error.less (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/styles/_layout.less (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/styles/_legend.less (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/styles/_svg.less (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/styles/_tilemap.less (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/styles/_tooltip.less (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/styles/main.less (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/vis.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/visualizations/_chart.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/visualizations/_point_series_chart.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/visualizations/area_chart.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/visualizations/column_chart.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/visualizations/line_chart.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/visualizations/pie_chart.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/visualizations/tile_map.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/visualizations/time_marker.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib/visualizations/vis_types.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib_vis_type/VislibRenderbot.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib_vis_type/VislibVisType.js (100%) rename src/{KbnServer/ui/public => ui}/components/vislib_vis_type/buildChartData.js (100%) rename src/{KbnServer/ui/public => ui}/components/visualize/spy/_req_resp_stats.html (100%) rename src/{KbnServer/ui/public => ui}/components/visualize/spy/_req_resp_stats.js (100%) rename src/{KbnServer/ui/public => ui}/components/visualize/spy/_spy.html (100%) rename src/{KbnServer/ui/public => ui}/components/visualize/spy/_table.html (100%) rename src/{KbnServer/ui/public => ui}/components/visualize/spy/_table.js (100%) rename src/{KbnServer/ui/public => ui}/components/visualize/spy/spy.js (100%) rename src/{KbnServer/ui/public => ui}/components/visualize/visualize.html (100%) rename src/{KbnServer/ui/public => ui}/components/visualize/visualize.js (100%) rename src/{KbnServer/ui/public => ui}/components/visualize/visualize.less (100%) rename src/{KbnServer/ui/public => ui}/components/watch_multi.js (100%) rename src/{KbnServer/ui/public => ui}/directives/auto_select_if_only_one.js (100%) rename src/{KbnServer/ui/public => ui}/directives/click_focus.js (100%) rename src/{KbnServer/ui/public => ui}/directives/config.js (100%) rename src/{KbnServer/ui/public => ui}/directives/confirm_click.js (100%) rename src/{KbnServer/ui/public => ui}/directives/css_truncate.js (100%) rename src/{KbnServer/ui/public => ui}/directives/field_name.js (100%) rename src/{KbnServer/ui/public => ui}/directives/file_upload.js (100%) rename src/{KbnServer/ui/public => ui}/directives/inequality.js (100%) rename src/{KbnServer/ui/public => ui}/directives/infinite_scroll.js (100%) rename src/{KbnServer/ui/public => ui}/directives/info.js (100%) rename src/{KbnServer/ui/public => ui}/directives/input_datetime.js (100%) rename src/{KbnServer/ui/public => ui}/directives/input_focus.js (100%) rename src/{KbnServer/ui/public => ui}/directives/input_whole_number.js (100%) rename src/{KbnServer/ui/public => ui}/directives/paginate.js (100%) rename src/{KbnServer/ui/public => ui}/directives/pretty_duration.js (100%) rename src/{KbnServer/ui/public => ui}/directives/rows.js (100%) rename src/{KbnServer/ui/public => ui}/directives/saved_object_finder.js (100%) rename src/{KbnServer/ui/public => ui}/directives/spinner.js (100%) rename src/{KbnServer/ui/public => ui}/directives/truncated.js (100%) rename src/{KbnServer/ui/public => ui}/directives/validate_cidr_mask.js (100%) rename src/{KbnServer/ui/public => ui}/directives/validate_date_math.js (100%) rename src/{KbnServer/ui/public => ui}/directives/validate_index_name.js (100%) rename src/{KbnServer/ui/public => ui}/directives/validate_ip.js (100%) rename src/{KbnServer/ui/public => ui}/directives/validate_json.js (100%) rename src/{KbnServer/ui/public => ui}/filters/_prop_filter.js (100%) rename src/{KbnServer/ui/public => ui}/filters/commaList.js (100%) rename src/{KbnServer/ui/public => ui}/filters/field_type.js (100%) rename src/{KbnServer/ui/public => ui}/filters/label.js (100%) rename src/{KbnServer/ui/public => ui}/filters/match_any.js (100%) rename src/{KbnServer/ui/public => ui}/filters/moment.js (100%) rename src/{KbnServer/ui/public => ui}/filters/rison.js (100%) rename src/{KbnServer/ui/public => ui}/filters/short_dots.js (100%) rename src/{KbnServer/ui/public => ui}/filters/start_from.js (100%) rename src/{KbnServer/ui/public => ui}/filters/trust_as_html.js (100%) rename src/{KbnServer/ui/public => ui}/filters/unique.js (100%) rename src/{KbnServer/ui/public => ui}/filters/uriescape.js (100%) rename src/{KbnServer/ui/public => ui}/images/initial_load.gif (100%) rename src/{KbnServer/ui/public => ui}/images/kibana.png (100%) rename src/{KbnServer/ui/public => ui}/partials/global_config.html (100%) rename src/{KbnServer/ui/public => ui}/partials/info.html (100%) rename src/{KbnServer/ui/public => ui}/partials/nav_config.html (100%) rename src/{KbnServer/ui/public => ui}/partials/paginate_controls.html (100%) rename src/{KbnServer/ui/public => ui}/partials/saved_object_finder.html (100%) rename src/{KbnServer/ui/public => ui}/partials/truncate_by_height.html (100%) rename src/{KbnServer/ui/public => ui}/registry/_registry.js (100%) rename src/{KbnServer/ui/public => ui}/registry/apps.js (100%) rename src/{KbnServer/ui/public => ui}/registry/field_formats.js (100%) rename src/{KbnServer/ui/public => ui}/registry/spy_modes.js (100%) rename src/{KbnServer/ui/public => ui}/registry/vis_types.js (100%) rename src/{KbnServer/ui/public => ui}/require.config.js (98%) rename src/{KbnServer/ui/public => ui}/ui-styles/_bootstrap.less (100%) rename src/{KbnServer/ui/public => ui}/ui-styles/_callout.less (100%) rename src/{KbnServer/ui/public => ui}/ui-styles/_control_group.less (100%) rename src/{KbnServer/ui/public => ui}/ui-styles/_font_icons.less (100%) rename src/{KbnServer/ui/public => ui}/ui-styles/_glyphicons.less (100%) rename src/{KbnServer/ui/public => ui}/ui-styles/_hintbox.less (100%) rename src/{KbnServer/ui/public => ui}/ui-styles/_input.less (100%) rename src/{KbnServer/ui/public => ui}/ui-styles/_mixins.less (100%) rename src/{KbnServer/ui/public => ui}/ui-styles/_navbar.less (100%) rename src/{KbnServer/ui/public => ui}/ui-styles/_notify.less (100%) rename src/{KbnServer/ui/public => ui}/ui-styles/_pagination.less (100%) rename src/{KbnServer/ui/public => ui}/ui-styles/_sidebar.less (100%) rename src/{KbnServer/ui/public => ui}/ui-styles/_spinner.less (100%) rename src/{KbnServer/ui/public => ui}/ui-styles/_table.less (100%) rename src/{KbnServer/ui/public => ui}/ui-styles/_truncate.less (100%) rename src/{KbnServer/ui/public => ui}/ui-styles/_variables.less (100%) rename src/{KbnServer/ui/public => ui}/ui-styles/main.less (100%) rename src/{KbnServer/ui/public => ui}/ui-styles/theme/_theme.less (100%) rename src/{KbnServer/ui/public => ui}/ui-styles/theme/_variables.less (100%) rename src/{KbnServer/ui/public => ui}/ui-styles/theme/elk.ico (100%) rename src/{KbnServer/ui/public => ui}/utils/BaseObject.js (100%) rename src/{KbnServer/ui/public => ui}/utils/SimpleEmitter.js (100%) rename src/{KbnServer/ui/public => ui}/utils/add_word_breaks.js (100%) rename src/{KbnServer/ui/public => ui}/utils/brush_event.js (100%) rename src/{KbnServer/ui/public => ui}/utils/cidr_mask.js (100%) rename src/{KbnServer/ui/public => ui}/utils/config_template.js (100%) rename src/{KbnServer/ui/public => ui}/utils/date_range.js (100%) rename src/{KbnServer/ui/public => ui}/utils/datemath.js (100%) rename src/{KbnServer/ui/public => ui}/utils/decode_geo_hash.js (100%) rename src/{KbnServer/ui/public => ui}/utils/diff_object.js (100%) rename src/{KbnServer/ui/public => ui}/utils/diff_time_picker_vals.js (100%) rename src/{KbnServer/ui/public => ui}/utils/esBool.js (100%) rename src/{KbnServer/ui/public => ui}/utils/ipv4_address.js (100%) rename src/{KbnServer/ui/public => ui}/utils/key_map.js (100%) rename src/{KbnServer/ui/public => ui}/utils/lodash-mixins/collection.js (100%) rename src/{KbnServer/ui/public => ui}/utils/lodash-mixins/function.js (100%) rename src/{KbnServer/ui/public => ui}/utils/lodash-mixins/index.js (100%) rename src/{KbnServer/ui/public => ui}/utils/lodash-mixins/lang.js (100%) rename src/{KbnServer/ui/public => ui}/utils/lodash-mixins/object.js (100%) rename src/{KbnServer/ui/public => ui}/utils/lodash-mixins/oop.js (100%) rename src/{KbnServer/ui/public => ui}/utils/lodash-mixins/string.js (100%) rename src/{KbnServer/ui/public => ui}/utils/mapping_setup.js (100%) rename src/{KbnServer/ui/public => ui}/utils/no_white_space.js (100%) rename src/{KbnServer/ui/public => ui}/utils/obj_define.js (100%) rename src/{KbnServer/ui/public => ui}/utils/ordinal_suffix.js (100%) rename src/{KbnServer/ui/public => ui}/utils/parse_interval.js (100%) rename src/{KbnServer/ui/public => ui}/utils/query_string.js (100%) rename src/{KbnServer/ui/public => ui}/utils/range.js (100%) rename src/{KbnServer/ui/public => ui}/utils/rison.js (100%) rename src/{KbnServer/ui/public => ui}/utils/sequencer.js (100%) rename src/{KbnServer/ui/public => ui}/utils/slugify_id.js (100%) rename src/{KbnServer/ui/public => ui}/utils/supports.js (100%) rename src/{KbnServer/ui/public => ui}/utils/versionmath.js (100%) diff --git a/Gruntfile.js b/Gruntfile.js index 43b812640d8d6..29175ab92a172 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -8,7 +8,7 @@ module.exports = function (grunt) { src: __dirname + '/src', build: __dirname + '/build', // temporary build directory plugins: __dirname + '/src/plugins', - server: __dirname + '/src/KbnServer', + server: __dirname + '/src/server', target: __dirname + '/target', // location of the compressed build targets configFile: __dirname + '/src/config/kibana.yml', diff --git a/src/KbnServer/ui/public/.jshintrc b/src/KbnServer/ui/public/.jshintrc deleted file mode 100644 index 04baeaf2ad6cf..0000000000000 --- a/src/KbnServer/ui/public/.jshintrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../../../../.jshintrc.browser" -} diff --git a/src/bin/kibana.sh b/src/bin/kibana.sh index fbea47d0e18f4..da5516bb2014e 100644 --- a/src/bin/kibana.sh +++ b/src/bin/kibana.sh @@ -15,7 +15,7 @@ done DIR=$(dirname "${SCRIPT}")/.. NODE=${DIR}/node/bin/node -SERVER=${DIR}/src/kibana/cli +SERVER=${DIR}/src/server/cli CONFIG_PATH="${DIR}/config/kibana.yml" NODE_ENV="production" exec "${NODE}" ${SERVER} ${@} diff --git a/src/dev_server/index.js b/src/dev_server/index.js index ee92460925a2b..eea6f5bebf233 100644 --- a/src/dev_server/index.js +++ b/src/dev_server/index.js @@ -1,7 +1,7 @@ var _ = require('lodash'); var join = require('path').join; -var KbnServer = require('../KbnServer/KbnServer'); +var KbnServer = require('../server/KbnServer'); function run(port, quiet) { return (new KbnServer({ diff --git a/src/KbnServer/.jshintrc b/src/server/.jshintrc similarity index 100% rename from src/KbnServer/.jshintrc rename to src/server/.jshintrc diff --git a/src/KbnServer/KbnServer.js b/src/server/KbnServer.js similarity index 91% rename from src/KbnServer/KbnServer.js rename to src/server/KbnServer.js index 38db7bf8b0c7e..56576ef1f0466 100644 --- a/src/KbnServer/KbnServer.js +++ b/src/server/KbnServer.js @@ -3,9 +3,8 @@ var Promise = require('bluebird'); var Hapi = require('hapi'); var dirname = require('path').dirname; -var packagePath = require('./utils/closestPackageJson').findSync(); -var rootDir = dirname(packagePath); -var package = require(packagePath); +var rootDir = require('./utils/fromRoot')('.'); +var package = require('./utils/closestPackageJson').getSync(); function KbnServer(settings) { this.name = package.name; diff --git a/src/KbnServer/cli/index.js b/src/server/cli/index.js similarity index 100% rename from src/KbnServer/cli/index.js rename to src/server/cli/index.js diff --git a/src/KbnServer/cli/readYamlConfig.js b/src/server/cli/readYamlConfig.js similarity index 100% rename from src/KbnServer/cli/readYamlConfig.js rename to src/server/cli/readYamlConfig.js diff --git a/src/KbnServer/config/config.js b/src/server/config/config.js similarity index 100% rename from src/KbnServer/config/config.js rename to src/server/config/config.js diff --git a/src/KbnServer/config/explodeBy.js b/src/server/config/explodeBy.js similarity index 100% rename from src/KbnServer/config/explodeBy.js rename to src/server/config/explodeBy.js diff --git a/src/KbnServer/config/flattenWith.js b/src/server/config/flattenWith.js similarity index 100% rename from src/KbnServer/config/flattenWith.js rename to src/server/config/flattenWith.js diff --git a/src/KbnServer/config/index.js b/src/server/config/index.js similarity index 100% rename from src/KbnServer/config/index.js rename to src/server/config/index.js diff --git a/src/KbnServer/config/override.js b/src/server/config/override.js similarity index 100% rename from src/KbnServer/config/override.js rename to src/server/config/override.js diff --git a/src/KbnServer/config/schema.js b/src/server/config/schema.js similarity index 100% rename from src/KbnServer/config/schema.js rename to src/server/config/schema.js diff --git a/src/KbnServer/http/index.js b/src/server/http/index.js similarity index 100% rename from src/KbnServer/http/index.js rename to src/server/http/index.js diff --git a/src/KbnServer/logging/good_reporters/_event_to_json.js b/src/server/logging/good_reporters/_event_to_json.js similarity index 100% rename from src/KbnServer/logging/good_reporters/_event_to_json.js rename to src/server/logging/good_reporters/_event_to_json.js diff --git a/src/KbnServer/logging/good_reporters/console.js b/src/server/logging/good_reporters/console.js similarity index 100% rename from src/KbnServer/logging/good_reporters/console.js rename to src/server/logging/good_reporters/console.js diff --git a/src/KbnServer/logging/good_reporters/file.js b/src/server/logging/good_reporters/file.js similarity index 100% rename from src/KbnServer/logging/good_reporters/file.js rename to src/server/logging/good_reporters/file.js diff --git a/src/KbnServer/logging/index.js b/src/server/logging/index.js similarity index 100% rename from src/KbnServer/logging/index.js rename to src/server/logging/index.js diff --git a/src/KbnServer/pid/index.js b/src/server/pid/index.js similarity index 100% rename from src/KbnServer/pid/index.js rename to src/server/pid/index.js diff --git a/src/KbnServer/plugins/Plugin.js b/src/server/plugins/Plugin.js similarity index 100% rename from src/KbnServer/plugins/Plugin.js rename to src/server/plugins/Plugin.js diff --git a/src/KbnServer/plugins/PluginApi.js b/src/server/plugins/PluginApi.js similarity index 100% rename from src/KbnServer/plugins/PluginApi.js rename to src/server/plugins/PluginApi.js diff --git a/src/KbnServer/plugins/index.js b/src/server/plugins/index.js similarity index 100% rename from src/KbnServer/plugins/index.js rename to src/server/plugins/index.js diff --git a/src/KbnServer/plugins/load.js b/src/server/plugins/load.js similarity index 100% rename from src/KbnServer/plugins/load.js rename to src/server/plugins/load.js diff --git a/src/KbnServer/plugins/scan.js b/src/server/plugins/scan.js similarity index 100% rename from src/KbnServer/plugins/scan.js rename to src/server/plugins/scan.js diff --git a/src/KbnServer/status/KbnStatus.js b/src/server/status/KbnStatus.js similarity index 100% rename from src/KbnServer/status/KbnStatus.js rename to src/server/status/KbnStatus.js diff --git a/src/KbnServer/status/PluginStatus.js b/src/server/status/PluginStatus.js similarity index 100% rename from src/KbnServer/status/PluginStatus.js rename to src/server/status/PluginStatus.js diff --git a/src/KbnServer/status/Samples.js b/src/server/status/Samples.js similarity index 100% rename from src/KbnServer/status/Samples.js rename to src/server/status/Samples.js diff --git a/src/KbnServer/status/index.js b/src/server/status/index.js similarity index 100% rename from src/KbnServer/status/index.js rename to src/server/status/index.js diff --git a/src/KbnServer/ui/lib/UiApp.js b/src/server/ui/UiApp.js similarity index 100% rename from src/KbnServer/ui/lib/UiApp.js rename to src/server/ui/UiApp.js diff --git a/src/KbnServer/ui/lib/UiExports.js b/src/server/ui/UiExports.js similarity index 100% rename from src/KbnServer/ui/lib/UiExports.js rename to src/server/ui/UiExports.js diff --git a/src/KbnServer/ui/lib/defaultModuleIds.js b/src/server/ui/defaultModuleIds.js similarity index 100% rename from src/KbnServer/ui/lib/defaultModuleIds.js rename to src/server/ui/defaultModuleIds.js diff --git a/src/KbnServer/ui/lib/findBowerComponents.js b/src/server/ui/findBowerComponents.js similarity index 100% rename from src/KbnServer/ui/lib/findBowerComponents.js rename to src/server/ui/findBowerComponents.js diff --git a/src/KbnServer/ui/lib/findModuleIds.js b/src/server/ui/findModuleIds.js similarity index 93% rename from src/KbnServer/ui/lib/findModuleIds.js rename to src/server/ui/findModuleIds.js index b8bc28adc593d..8fb6afe4d9c78 100644 --- a/src/KbnServer/ui/lib/findModuleIds.js +++ b/src/server/ui/findModuleIds.js @@ -4,13 +4,14 @@ var basename = require('path').basename; var readdir = require('fs').readdirSync; var stat = require('fs').statSync; var exists = require('fs').existsSync; +var uiDir = require('./uiDir'); function hidden(name) { return name[0] !== '.' && name[0] !== '_'; } function scan(type) { - var dir = join(__dirname, '..', 'public', type); + var dir = join(uiDir, type); return readdir(dir) .filter(hidden) diff --git a/src/KbnServer/ui/index.js b/src/server/ui/index.js similarity index 86% rename from src/KbnServer/ui/index.js rename to src/server/ui/index.js index df7344be84e36..625d134a43b9f 100644 --- a/src/KbnServer/ui/index.js +++ b/src/server/ui/index.js @@ -6,11 +6,11 @@ module.exports = function (kibana, server, config) { var stat = require('fs').statSync; var relative = require('path').relative; - var UiExports = require('./lib/UiExports'); - var defaultModuleIds = require('./lib/defaultModuleIds'); - var findBowerComponents = require('./lib/findBowerComponents'); + var UiExports = require('./UiExports'); + var defaultModuleIds = require('./defaultModuleIds'); + var findBowerComponents = require('./findBowerComponents'); - var publicDir = join(__dirname, 'public'); + var uiDir = require('./uiDir'); // setup jade for templates server.views({ @@ -20,6 +20,7 @@ module.exports = function (kibana, server, config) { } }); + // export manager kibana.uiExports = new UiExports(defaultModuleIds()); server.decorate('server', 'getApps', function () { @@ -72,11 +73,11 @@ module.exports = function (kibana, server, config) { // in this directory and moving out server.exposeStaticDir('/bower_components/{path*}', findBowerComponents(__dirname, kibana.rootDir)); - // expose our public files at the server root + // expose our public files at the server root explicitly, rather than with a catch all route require('fs') - .readdirSync(publicDir) + .readdirSync(uiDir) .forEach(function (name) { - var path = join(publicDir, name); + var path = join(uiDir, name); if (stat(path).isDirectory()) { server.exposeStaticDir('/' + name + '/{path*}', path); diff --git a/src/server/ui/uiDir.js b/src/server/ui/uiDir.js new file mode 100644 index 0000000000000..d576178d288cc --- /dev/null +++ b/src/server/ui/uiDir.js @@ -0,0 +1 @@ +module.exports = require('../utils/fromRoot')('src/ui'); diff --git a/src/KbnServer/ui/views/bootstrap.jade b/src/server/ui/views/bootstrap.jade similarity index 100% rename from src/KbnServer/ui/views/bootstrap.jade rename to src/server/ui/views/bootstrap.jade diff --git a/src/KbnServer/utils/closestPackageJson.js b/src/server/utils/closestPackageJson.js similarity index 100% rename from src/KbnServer/utils/closestPackageJson.js rename to src/server/utils/closestPackageJson.js diff --git a/src/server/utils/fromRoot.js b/src/server/utils/fromRoot.js new file mode 100644 index 0000000000000..1d0527d782422 --- /dev/null +++ b/src/server/utils/fromRoot.js @@ -0,0 +1,7 @@ +var dirname = require('path').dirname; +var join = require('path').join; +var root = dirname(require('./closestPackageJson').findSync()); + +module.exports = function (dir) { + return join(root, dir); +}; diff --git a/src/KbnServer/views/index.jade b/src/server/views/index.jade similarity index 100% rename from src/KbnServer/views/index.jade rename to src/server/views/index.jade diff --git a/src/ui/.jshintrc b/src/ui/.jshintrc new file mode 100644 index 0000000000000..483b2410e7ba7 --- /dev/null +++ b/src/ui/.jshintrc @@ -0,0 +1,3 @@ +{ + "extends": "../../.jshintrc.browser" +} diff --git a/src/KbnServer/ui/public/bootstrap.js b/src/ui/bootstrap.js similarity index 100% rename from src/KbnServer/ui/public/bootstrap.js rename to src/ui/bootstrap.js diff --git a/src/KbnServer/ui/public/components/agg_response/geo_json/_tooltip.html b/src/ui/components/agg_response/geo_json/_tooltip.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/geo_json/_tooltip.html rename to src/ui/components/agg_response/geo_json/_tooltip.html diff --git a/src/KbnServer/ui/public/components/agg_response/geo_json/_tooltip_formatter.js b/src/ui/components/agg_response/geo_json/_tooltip_formatter.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/geo_json/_tooltip_formatter.js rename to src/ui/components/agg_response/geo_json/_tooltip_formatter.js diff --git a/src/KbnServer/ui/public/components/agg_response/geo_json/geo_json.js b/src/ui/components/agg_response/geo_json/geo_json.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/geo_json/geo_json.js rename to src/ui/components/agg_response/geo_json/geo_json.js diff --git a/src/KbnServer/ui/public/components/agg_response/geo_json/rowsToFeatures.js b/src/ui/components/agg_response/geo_json/rowsToFeatures.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/geo_json/rowsToFeatures.js rename to src/ui/components/agg_response/geo_json/rowsToFeatures.js diff --git a/src/KbnServer/ui/public/components/agg_response/hierarchical/_array_to_linked_list.js b/src/ui/components/agg_response/hierarchical/_array_to_linked_list.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/hierarchical/_array_to_linked_list.js rename to src/ui/components/agg_response/hierarchical/_array_to_linked_list.js diff --git a/src/KbnServer/ui/public/components/agg_response/hierarchical/_build_split.js b/src/ui/components/agg_response/hierarchical/_build_split.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/hierarchical/_build_split.js rename to src/ui/components/agg_response/hierarchical/_build_split.js diff --git a/src/KbnServer/ui/public/components/agg_response/hierarchical/_collect_branch.js b/src/ui/components/agg_response/hierarchical/_collect_branch.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/hierarchical/_collect_branch.js rename to src/ui/components/agg_response/hierarchical/_collect_branch.js diff --git a/src/KbnServer/ui/public/components/agg_response/hierarchical/_collect_keys.js b/src/ui/components/agg_response/hierarchical/_collect_keys.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/hierarchical/_collect_keys.js rename to src/ui/components/agg_response/hierarchical/_collect_keys.js diff --git a/src/KbnServer/ui/public/components/agg_response/hierarchical/_create_raw_data.js b/src/ui/components/agg_response/hierarchical/_create_raw_data.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/hierarchical/_create_raw_data.js rename to src/ui/components/agg_response/hierarchical/_create_raw_data.js diff --git a/src/KbnServer/ui/public/components/agg_response/hierarchical/_extract_buckets.js b/src/ui/components/agg_response/hierarchical/_extract_buckets.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/hierarchical/_extract_buckets.js rename to src/ui/components/agg_response/hierarchical/_extract_buckets.js diff --git a/src/KbnServer/ui/public/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js b/src/ui/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js rename to src/ui/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js diff --git a/src/KbnServer/ui/public/components/agg_response/hierarchical/_tooltip.html b/src/ui/components/agg_response/hierarchical/_tooltip.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/hierarchical/_tooltip.html rename to src/ui/components/agg_response/hierarchical/_tooltip.html diff --git a/src/KbnServer/ui/public/components/agg_response/hierarchical/_transform_aggregation.js b/src/ui/components/agg_response/hierarchical/_transform_aggregation.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/hierarchical/_transform_aggregation.js rename to src/ui/components/agg_response/hierarchical/_transform_aggregation.js diff --git a/src/KbnServer/ui/public/components/agg_response/hierarchical/build_hierarchical_data.js b/src/ui/components/agg_response/hierarchical/build_hierarchical_data.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/hierarchical/build_hierarchical_data.js rename to src/ui/components/agg_response/hierarchical/build_hierarchical_data.js diff --git a/src/KbnServer/ui/public/components/agg_response/index.js b/src/ui/components/agg_response/index.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/index.js rename to src/ui/components/agg_response/index.js diff --git a/src/KbnServer/ui/public/components/agg_response/point_series/_add_to_siri.js b/src/ui/components/agg_response/point_series/_add_to_siri.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/point_series/_add_to_siri.js rename to src/ui/components/agg_response/point_series/_add_to_siri.js diff --git a/src/KbnServer/ui/public/components/agg_response/point_series/_fake_x_aspect.js b/src/ui/components/agg_response/point_series/_fake_x_aspect.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/point_series/_fake_x_aspect.js rename to src/ui/components/agg_response/point_series/_fake_x_aspect.js diff --git a/src/KbnServer/ui/public/components/agg_response/point_series/_get_aspects.js b/src/ui/components/agg_response/point_series/_get_aspects.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/point_series/_get_aspects.js rename to src/ui/components/agg_response/point_series/_get_aspects.js diff --git a/src/KbnServer/ui/public/components/agg_response/point_series/_get_point.js b/src/ui/components/agg_response/point_series/_get_point.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/point_series/_get_point.js rename to src/ui/components/agg_response/point_series/_get_point.js diff --git a/src/KbnServer/ui/public/components/agg_response/point_series/_get_series.js b/src/ui/components/agg_response/point_series/_get_series.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/point_series/_get_series.js rename to src/ui/components/agg_response/point_series/_get_series.js diff --git a/src/KbnServer/ui/public/components/agg_response/point_series/_init_x_axis.js b/src/ui/components/agg_response/point_series/_init_x_axis.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/point_series/_init_x_axis.js rename to src/ui/components/agg_response/point_series/_init_x_axis.js diff --git a/src/KbnServer/ui/public/components/agg_response/point_series/_init_y_axis.js b/src/ui/components/agg_response/point_series/_init_y_axis.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/point_series/_init_y_axis.js rename to src/ui/components/agg_response/point_series/_init_y_axis.js diff --git a/src/KbnServer/ui/public/components/agg_response/point_series/_ordered_date_axis.js b/src/ui/components/agg_response/point_series/_ordered_date_axis.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/point_series/_ordered_date_axis.js rename to src/ui/components/agg_response/point_series/_ordered_date_axis.js diff --git a/src/KbnServer/ui/public/components/agg_response/point_series/_tooltip.html b/src/ui/components/agg_response/point_series/_tooltip.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/point_series/_tooltip.html rename to src/ui/components/agg_response/point_series/_tooltip.html diff --git a/src/KbnServer/ui/public/components/agg_response/point_series/_tooltip_formatter.js b/src/ui/components/agg_response/point_series/_tooltip_formatter.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/point_series/_tooltip_formatter.js rename to src/ui/components/agg_response/point_series/_tooltip_formatter.js diff --git a/src/KbnServer/ui/public/components/agg_response/point_series/point_series.js b/src/ui/components/agg_response/point_series/point_series.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/point_series/point_series.js rename to src/ui/components/agg_response/point_series/point_series.js diff --git a/src/KbnServer/ui/public/components/agg_response/tabify/_buckets.js b/src/ui/components/agg_response/tabify/_buckets.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/tabify/_buckets.js rename to src/ui/components/agg_response/tabify/_buckets.js diff --git a/src/KbnServer/ui/public/components/agg_response/tabify/_get_columns.js b/src/ui/components/agg_response/tabify/_get_columns.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/tabify/_get_columns.js rename to src/ui/components/agg_response/tabify/_get_columns.js diff --git a/src/KbnServer/ui/public/components/agg_response/tabify/_response_writer.js b/src/ui/components/agg_response/tabify/_response_writer.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/tabify/_response_writer.js rename to src/ui/components/agg_response/tabify/_response_writer.js diff --git a/src/KbnServer/ui/public/components/agg_response/tabify/_table.js b/src/ui/components/agg_response/tabify/_table.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/tabify/_table.js rename to src/ui/components/agg_response/tabify/_table.js diff --git a/src/KbnServer/ui/public/components/agg_response/tabify/_table_group.js b/src/ui/components/agg_response/tabify/_table_group.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/tabify/_table_group.js rename to src/ui/components/agg_response/tabify/_table_group.js diff --git a/src/KbnServer/ui/public/components/agg_response/tabify/tabify.js b/src/ui/components/agg_response/tabify/tabify.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_response/tabify/tabify.js rename to src/ui/components/agg_response/tabify/tabify.js diff --git a/src/KbnServer/ui/public/components/agg_table/agg_table.html b/src/ui/components/agg_table/agg_table.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_table/agg_table.html rename to src/ui/components/agg_table/agg_table.html diff --git a/src/KbnServer/ui/public/components/agg_table/agg_table.js b/src/ui/components/agg_table/agg_table.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_table/agg_table.js rename to src/ui/components/agg_table/agg_table.js diff --git a/src/KbnServer/ui/public/components/agg_table/agg_table.less b/src/ui/components/agg_table/agg_table.less similarity index 100% rename from src/KbnServer/ui/public/components/agg_table/agg_table.less rename to src/ui/components/agg_table/agg_table.less diff --git a/src/KbnServer/ui/public/components/agg_table/agg_table_group.html b/src/ui/components/agg_table/agg_table_group.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_table/agg_table_group.html rename to src/ui/components/agg_table/agg_table_group.html diff --git a/src/KbnServer/ui/public/components/agg_table/agg_table_group.js b/src/ui/components/agg_table/agg_table_group.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_table/agg_table_group.js rename to src/ui/components/agg_table/agg_table_group.js diff --git a/src/KbnServer/ui/public/components/agg_types/README.md b/src/ui/components/agg_types/README.md similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/README.md rename to src/ui/components/agg_types/README.md diff --git a/src/KbnServer/ui/public/components/agg_types/_agg_params.js b/src/ui/components/agg_types/_agg_params.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/_agg_params.js rename to src/ui/components/agg_types/_agg_params.js diff --git a/src/KbnServer/ui/public/components/agg_types/_agg_type.js b/src/ui/components/agg_types/_agg_type.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/_agg_type.js rename to src/ui/components/agg_types/_agg_type.js diff --git a/src/KbnServer/ui/public/components/agg_types/buckets/_bucket_agg_type.js b/src/ui/components/agg_types/buckets/_bucket_agg_type.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/buckets/_bucket_agg_type.js rename to src/ui/components/agg_types/buckets/_bucket_agg_type.js diff --git a/src/KbnServer/ui/public/components/agg_types/buckets/_bucket_count_between.js b/src/ui/components/agg_types/buckets/_bucket_count_between.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/buckets/_bucket_count_between.js rename to src/ui/components/agg_types/buckets/_bucket_count_between.js diff --git a/src/KbnServer/ui/public/components/agg_types/buckets/_interval_options.js b/src/ui/components/agg_types/buckets/_interval_options.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/buckets/_interval_options.js rename to src/ui/components/agg_types/buckets/_interval_options.js diff --git a/src/KbnServer/ui/public/components/agg_types/buckets/create_filter/date_histogram.js b/src/ui/components/agg_types/buckets/create_filter/date_histogram.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/buckets/create_filter/date_histogram.js rename to src/ui/components/agg_types/buckets/create_filter/date_histogram.js diff --git a/src/KbnServer/ui/public/components/agg_types/buckets/create_filter/date_range.js b/src/ui/components/agg_types/buckets/create_filter/date_range.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/buckets/create_filter/date_range.js rename to src/ui/components/agg_types/buckets/create_filter/date_range.js diff --git a/src/KbnServer/ui/public/components/agg_types/buckets/create_filter/filters.js b/src/ui/components/agg_types/buckets/create_filter/filters.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/buckets/create_filter/filters.js rename to src/ui/components/agg_types/buckets/create_filter/filters.js diff --git a/src/KbnServer/ui/public/components/agg_types/buckets/create_filter/histogram.js b/src/ui/components/agg_types/buckets/create_filter/histogram.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/buckets/create_filter/histogram.js rename to src/ui/components/agg_types/buckets/create_filter/histogram.js diff --git a/src/KbnServer/ui/public/components/agg_types/buckets/create_filter/ip_range.js b/src/ui/components/agg_types/buckets/create_filter/ip_range.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/buckets/create_filter/ip_range.js rename to src/ui/components/agg_types/buckets/create_filter/ip_range.js diff --git a/src/KbnServer/ui/public/components/agg_types/buckets/create_filter/range.js b/src/ui/components/agg_types/buckets/create_filter/range.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/buckets/create_filter/range.js rename to src/ui/components/agg_types/buckets/create_filter/range.js diff --git a/src/KbnServer/ui/public/components/agg_types/buckets/create_filter/terms.js b/src/ui/components/agg_types/buckets/create_filter/terms.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/buckets/create_filter/terms.js rename to src/ui/components/agg_types/buckets/create_filter/terms.js diff --git a/src/KbnServer/ui/public/components/agg_types/buckets/date_histogram.js b/src/ui/components/agg_types/buckets/date_histogram.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/buckets/date_histogram.js rename to src/ui/components/agg_types/buckets/date_histogram.js diff --git a/src/KbnServer/ui/public/components/agg_types/buckets/date_range.js b/src/ui/components/agg_types/buckets/date_range.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/buckets/date_range.js rename to src/ui/components/agg_types/buckets/date_range.js diff --git a/src/KbnServer/ui/public/components/agg_types/buckets/filters.js b/src/ui/components/agg_types/buckets/filters.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/buckets/filters.js rename to src/ui/components/agg_types/buckets/filters.js diff --git a/src/KbnServer/ui/public/components/agg_types/buckets/geo_hash.js b/src/ui/components/agg_types/buckets/geo_hash.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/buckets/geo_hash.js rename to src/ui/components/agg_types/buckets/geo_hash.js diff --git a/src/KbnServer/ui/public/components/agg_types/buckets/histogram.js b/src/ui/components/agg_types/buckets/histogram.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/buckets/histogram.js rename to src/ui/components/agg_types/buckets/histogram.js diff --git a/src/KbnServer/ui/public/components/agg_types/buckets/ip_range.js b/src/ui/components/agg_types/buckets/ip_range.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/buckets/ip_range.js rename to src/ui/components/agg_types/buckets/ip_range.js diff --git a/src/KbnServer/ui/public/components/agg_types/buckets/range.js b/src/ui/components/agg_types/buckets/range.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/buckets/range.js rename to src/ui/components/agg_types/buckets/range.js diff --git a/src/KbnServer/ui/public/components/agg_types/buckets/significant_terms.js b/src/ui/components/agg_types/buckets/significant_terms.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/buckets/significant_terms.js rename to src/ui/components/agg_types/buckets/significant_terms.js diff --git a/src/KbnServer/ui/public/components/agg_types/buckets/terms.js b/src/ui/components/agg_types/buckets/terms.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/buckets/terms.js rename to src/ui/components/agg_types/buckets/terms.js diff --git a/src/KbnServer/ui/public/components/agg_types/controls/date_ranges.html b/src/ui/components/agg_types/controls/date_ranges.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/controls/date_ranges.html rename to src/ui/components/agg_types/controls/date_ranges.html diff --git a/src/KbnServer/ui/public/components/agg_types/controls/extended_bounds.html b/src/ui/components/agg_types/controls/extended_bounds.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/controls/extended_bounds.html rename to src/ui/components/agg_types/controls/extended_bounds.html diff --git a/src/KbnServer/ui/public/components/agg_types/controls/field.html b/src/ui/components/agg_types/controls/field.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/controls/field.html rename to src/ui/components/agg_types/controls/field.html diff --git a/src/KbnServer/ui/public/components/agg_types/controls/filters.html b/src/ui/components/agg_types/controls/filters.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/controls/filters.html rename to src/ui/components/agg_types/controls/filters.html diff --git a/src/KbnServer/ui/public/components/agg_types/controls/interval.html b/src/ui/components/agg_types/controls/interval.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/controls/interval.html rename to src/ui/components/agg_types/controls/interval.html diff --git a/src/KbnServer/ui/public/components/agg_types/controls/ip_ranges.html b/src/ui/components/agg_types/controls/ip_ranges.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/controls/ip_ranges.html rename to src/ui/components/agg_types/controls/ip_ranges.html diff --git a/src/KbnServer/ui/public/components/agg_types/controls/min_doc_count.html b/src/ui/components/agg_types/controls/min_doc_count.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/controls/min_doc_count.html rename to src/ui/components/agg_types/controls/min_doc_count.html diff --git a/src/KbnServer/ui/public/components/agg_types/controls/order_agg.html b/src/ui/components/agg_types/controls/order_agg.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/controls/order_agg.html rename to src/ui/components/agg_types/controls/order_agg.html diff --git a/src/KbnServer/ui/public/components/agg_types/controls/order_and_size.html b/src/ui/components/agg_types/controls/order_and_size.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/controls/order_and_size.html rename to src/ui/components/agg_types/controls/order_and_size.html diff --git a/src/KbnServer/ui/public/components/agg_types/controls/percentile_ranks.html b/src/ui/components/agg_types/controls/percentile_ranks.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/controls/percentile_ranks.html rename to src/ui/components/agg_types/controls/percentile_ranks.html diff --git a/src/KbnServer/ui/public/components/agg_types/controls/percentiles.html b/src/ui/components/agg_types/controls/percentiles.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/controls/percentiles.html rename to src/ui/components/agg_types/controls/percentiles.html diff --git a/src/KbnServer/ui/public/components/agg_types/controls/precision.html b/src/ui/components/agg_types/controls/precision.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/controls/precision.html rename to src/ui/components/agg_types/controls/precision.html diff --git a/src/KbnServer/ui/public/components/agg_types/controls/ranges.html b/src/ui/components/agg_types/controls/ranges.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/controls/ranges.html rename to src/ui/components/agg_types/controls/ranges.html diff --git a/src/KbnServer/ui/public/components/agg_types/controls/raw_json.html b/src/ui/components/agg_types/controls/raw_json.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/controls/raw_json.html rename to src/ui/components/agg_types/controls/raw_json.html diff --git a/src/KbnServer/ui/public/components/agg_types/controls/regular_expression.html b/src/ui/components/agg_types/controls/regular_expression.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/controls/regular_expression.html rename to src/ui/components/agg_types/controls/regular_expression.html diff --git a/src/KbnServer/ui/public/components/agg_types/controls/string.html b/src/ui/components/agg_types/controls/string.html similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/controls/string.html rename to src/ui/components/agg_types/controls/string.html diff --git a/src/KbnServer/ui/public/components/agg_types/index.js b/src/ui/components/agg_types/index.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/index.js rename to src/ui/components/agg_types/index.js diff --git a/src/KbnServer/ui/public/components/agg_types/metrics/_get_response_agg_config.js b/src/ui/components/agg_types/metrics/_get_response_agg_config.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/metrics/_get_response_agg_config.js rename to src/ui/components/agg_types/metrics/_get_response_agg_config.js diff --git a/src/KbnServer/ui/public/components/agg_types/metrics/_metric_agg_type.js b/src/ui/components/agg_types/metrics/_metric_agg_type.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/metrics/_metric_agg_type.js rename to src/ui/components/agg_types/metrics/_metric_agg_type.js diff --git a/src/KbnServer/ui/public/components/agg_types/metrics/avg.js b/src/ui/components/agg_types/metrics/avg.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/metrics/avg.js rename to src/ui/components/agg_types/metrics/avg.js diff --git a/src/KbnServer/ui/public/components/agg_types/metrics/cardinality.js b/src/ui/components/agg_types/metrics/cardinality.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/metrics/cardinality.js rename to src/ui/components/agg_types/metrics/cardinality.js diff --git a/src/KbnServer/ui/public/components/agg_types/metrics/count.js b/src/ui/components/agg_types/metrics/count.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/metrics/count.js rename to src/ui/components/agg_types/metrics/count.js diff --git a/src/KbnServer/ui/public/components/agg_types/metrics/max.js b/src/ui/components/agg_types/metrics/max.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/metrics/max.js rename to src/ui/components/agg_types/metrics/max.js diff --git a/src/KbnServer/ui/public/components/agg_types/metrics/min.js b/src/ui/components/agg_types/metrics/min.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/metrics/min.js rename to src/ui/components/agg_types/metrics/min.js diff --git a/src/KbnServer/ui/public/components/agg_types/metrics/percentile_ranks.js b/src/ui/components/agg_types/metrics/percentile_ranks.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/metrics/percentile_ranks.js rename to src/ui/components/agg_types/metrics/percentile_ranks.js diff --git a/src/KbnServer/ui/public/components/agg_types/metrics/percentiles.js b/src/ui/components/agg_types/metrics/percentiles.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/metrics/percentiles.js rename to src/ui/components/agg_types/metrics/percentiles.js diff --git a/src/KbnServer/ui/public/components/agg_types/metrics/std_deviation.js b/src/ui/components/agg_types/metrics/std_deviation.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/metrics/std_deviation.js rename to src/ui/components/agg_types/metrics/std_deviation.js diff --git a/src/KbnServer/ui/public/components/agg_types/metrics/sum.js b/src/ui/components/agg_types/metrics/sum.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/metrics/sum.js rename to src/ui/components/agg_types/metrics/sum.js diff --git a/src/KbnServer/ui/public/components/agg_types/param_types/base.js b/src/ui/components/agg_types/param_types/base.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/param_types/base.js rename to src/ui/components/agg_types/param_types/base.js diff --git a/src/KbnServer/ui/public/components/agg_types/param_types/field.js b/src/ui/components/agg_types/param_types/field.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/param_types/field.js rename to src/ui/components/agg_types/param_types/field.js diff --git a/src/KbnServer/ui/public/components/agg_types/param_types/optioned.js b/src/ui/components/agg_types/param_types/optioned.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/param_types/optioned.js rename to src/ui/components/agg_types/param_types/optioned.js diff --git a/src/KbnServer/ui/public/components/agg_types/param_types/raw_json.js b/src/ui/components/agg_types/param_types/raw_json.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/param_types/raw_json.js rename to src/ui/components/agg_types/param_types/raw_json.js diff --git a/src/KbnServer/ui/public/components/agg_types/param_types/regex.js b/src/ui/components/agg_types/param_types/regex.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/param_types/regex.js rename to src/ui/components/agg_types/param_types/regex.js diff --git a/src/KbnServer/ui/public/components/agg_types/param_types/string.js b/src/ui/components/agg_types/param_types/string.js similarity index 100% rename from src/KbnServer/ui/public/components/agg_types/param_types/string.js rename to src/ui/components/agg_types/param_types/string.js diff --git a/src/KbnServer/ui/public/components/bind.js b/src/ui/components/bind.js similarity index 100% rename from src/KbnServer/ui/public/components/bind.js rename to src/ui/components/bind.js diff --git a/src/KbnServer/ui/public/components/bound_to_config_obj.js b/src/ui/components/bound_to_config_obj.js similarity index 100% rename from src/KbnServer/ui/public/components/bound_to_config_obj.js rename to src/ui/components/bound_to_config_obj.js diff --git a/src/KbnServer/ui/public/components/chrome/Tab.js b/src/ui/components/chrome/Tab.js similarity index 100% rename from src/KbnServer/ui/public/components/chrome/Tab.js rename to src/ui/components/chrome/Tab.js diff --git a/src/KbnServer/ui/public/components/chrome/TabCollection.js b/src/ui/components/chrome/TabCollection.js similarity index 100% rename from src/KbnServer/ui/public/components/chrome/TabCollection.js rename to src/ui/components/chrome/TabCollection.js diff --git a/src/KbnServer/ui/public/components/chrome/chrome.html b/src/ui/components/chrome/chrome.html similarity index 100% rename from src/KbnServer/ui/public/components/chrome/chrome.html rename to src/ui/components/chrome/chrome.html diff --git a/src/KbnServer/ui/public/chrome.js b/src/ui/components/chrome/chrome.js similarity index 100% rename from src/KbnServer/ui/public/chrome.js rename to src/ui/components/chrome/chrome.js diff --git a/src/KbnServer/ui/public/components/chrome/config/filter.html b/src/ui/components/chrome/config/filter.html similarity index 100% rename from src/KbnServer/ui/public/components/chrome/config/filter.html rename to src/ui/components/chrome/config/filter.html diff --git a/src/KbnServer/ui/public/components/chrome/config/interval.html b/src/ui/components/chrome/config/interval.html similarity index 100% rename from src/KbnServer/ui/public/components/chrome/config/interval.html rename to src/ui/components/chrome/config/interval.html diff --git a/src/KbnServer/ui/public/components/clipboard/clipboard.html b/src/ui/components/clipboard/clipboard.html similarity index 100% rename from src/KbnServer/ui/public/components/clipboard/clipboard.html rename to src/ui/components/clipboard/clipboard.html diff --git a/src/KbnServer/ui/public/components/clipboard/clipboard.js b/src/ui/components/clipboard/clipboard.js similarity index 100% rename from src/KbnServer/ui/public/components/clipboard/clipboard.js rename to src/ui/components/clipboard/clipboard.js diff --git a/src/KbnServer/ui/public/components/collapsible_sidebar/collapsible_sidebar.js b/src/ui/components/collapsible_sidebar/collapsible_sidebar.js similarity index 100% rename from src/KbnServer/ui/public/components/collapsible_sidebar/collapsible_sidebar.js rename to src/ui/components/collapsible_sidebar/collapsible_sidebar.js diff --git a/src/KbnServer/ui/public/components/collapsible_sidebar/collapsible_sidebar.less b/src/ui/components/collapsible_sidebar/collapsible_sidebar.less similarity index 100% rename from src/KbnServer/ui/public/components/collapsible_sidebar/collapsible_sidebar.less rename to src/ui/components/collapsible_sidebar/collapsible_sidebar.less diff --git a/src/KbnServer/ui/public/components/compile_recursive_directive.js b/src/ui/components/compile_recursive_directive.js similarity index 100% rename from src/KbnServer/ui/public/components/compile_recursive_directive.js rename to src/ui/components/compile_recursive_directive.js diff --git a/src/KbnServer/ui/public/components/config/_delayed_updater.js b/src/ui/components/config/_delayed_updater.js similarity index 100% rename from src/KbnServer/ui/public/components/config/_delayed_updater.js rename to src/ui/components/config/_delayed_updater.js diff --git a/src/KbnServer/ui/public/components/config/_vals.js b/src/ui/components/config/_vals.js similarity index 100% rename from src/KbnServer/ui/public/components/config/_vals.js rename to src/ui/components/config/_vals.js diff --git a/src/KbnServer/ui/public/components/config/config.js b/src/ui/components/config/config.js similarity index 100% rename from src/KbnServer/ui/public/components/config/config.js rename to src/ui/components/config/config.js diff --git a/src/KbnServer/ui/public/components/config/defaults.js b/src/ui/components/config/defaults.js similarity index 100% rename from src/KbnServer/ui/public/components/config/defaults.js rename to src/ui/components/config/defaults.js diff --git a/src/KbnServer/ui/public/components/config/migrations/_empty_ b/src/ui/components/config/migrations/_empty_ similarity index 100% rename from src/KbnServer/ui/public/components/config/migrations/_empty_ rename to src/ui/components/config/migrations/_empty_ diff --git a/src/KbnServer/ui/public/components/courier/_error_handlers.js b/src/ui/components/courier/_error_handlers.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/_error_handlers.js rename to src/ui/components/courier/_error_handlers.js diff --git a/src/KbnServer/ui/public/components/courier/_redirect_when_missing.js b/src/ui/components/courier/_redirect_when_missing.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/_redirect_when_missing.js rename to src/ui/components/courier/_redirect_when_missing.js diff --git a/src/KbnServer/ui/public/components/courier/_request_queue.js b/src/ui/components/courier/_request_queue.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/_request_queue.js rename to src/ui/components/courier/_request_queue.js diff --git a/src/KbnServer/ui/public/components/courier/courier.js b/src/ui/components/courier/courier.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/courier.js rename to src/ui/components/courier/courier.js diff --git a/src/KbnServer/ui/public/components/courier/data_source/_abstract.js b/src/ui/components/courier/data_source/_abstract.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/data_source/_abstract.js rename to src/ui/components/courier/data_source/_abstract.js diff --git a/src/KbnServer/ui/public/components/courier/data_source/_decorate_query.js b/src/ui/components/courier/data_source/_decorate_query.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/data_source/_decorate_query.js rename to src/ui/components/courier/data_source/_decorate_query.js diff --git a/src/KbnServer/ui/public/components/courier/data_source/_doc_send_to_es.js b/src/ui/components/courier/data_source/_doc_send_to_es.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/data_source/_doc_send_to_es.js rename to src/ui/components/courier/data_source/_doc_send_to_es.js diff --git a/src/KbnServer/ui/public/components/courier/data_source/_normalize_sort_request.js b/src/ui/components/courier/data_source/_normalize_sort_request.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/data_source/_normalize_sort_request.js rename to src/ui/components/courier/data_source/_normalize_sort_request.js diff --git a/src/KbnServer/ui/public/components/courier/data_source/_root_search_source.js b/src/ui/components/courier/data_source/_root_search_source.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/data_source/_root_search_source.js rename to src/ui/components/courier/data_source/_root_search_source.js diff --git a/src/KbnServer/ui/public/components/courier/data_source/doc_source.js b/src/ui/components/courier/data_source/doc_source.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/data_source/doc_source.js rename to src/ui/components/courier/data_source/doc_source.js diff --git a/src/KbnServer/ui/public/components/courier/data_source/search_source.js b/src/ui/components/courier/data_source/search_source.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/data_source/search_source.js rename to src/ui/components/courier/data_source/search_source.js diff --git a/src/KbnServer/ui/public/components/courier/fetch/_call_client.js b/src/ui/components/courier/fetch/_call_client.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/fetch/_call_client.js rename to src/ui/components/courier/fetch/_call_client.js diff --git a/src/KbnServer/ui/public/components/courier/fetch/_call_response_handlers.js b/src/ui/components/courier/fetch/_call_response_handlers.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/fetch/_call_response_handlers.js rename to src/ui/components/courier/fetch/_call_response_handlers.js diff --git a/src/KbnServer/ui/public/components/courier/fetch/_continue_incomplete.js b/src/ui/components/courier/fetch/_continue_incomplete.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/fetch/_continue_incomplete.js rename to src/ui/components/courier/fetch/_continue_incomplete.js diff --git a/src/KbnServer/ui/public/components/courier/fetch/_fetch_these.js b/src/ui/components/courier/fetch/_fetch_these.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/fetch/_fetch_these.js rename to src/ui/components/courier/fetch/_fetch_these.js diff --git a/src/KbnServer/ui/public/components/courier/fetch/_for_each_strategy.js b/src/ui/components/courier/fetch/_for_each_strategy.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/fetch/_for_each_strategy.js rename to src/ui/components/courier/fetch/_for_each_strategy.js diff --git a/src/KbnServer/ui/public/components/courier/fetch/_is_request.js b/src/ui/components/courier/fetch/_is_request.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/fetch/_is_request.js rename to src/ui/components/courier/fetch/_is_request.js diff --git a/src/KbnServer/ui/public/components/courier/fetch/_merge_duplicate_requests.js b/src/ui/components/courier/fetch/_merge_duplicate_requests.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/fetch/_merge_duplicate_requests.js rename to src/ui/components/courier/fetch/_merge_duplicate_requests.js diff --git a/src/KbnServer/ui/public/components/courier/fetch/_notifier.js b/src/ui/components/courier/fetch/_notifier.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/fetch/_notifier.js rename to src/ui/components/courier/fetch/_notifier.js diff --git a/src/KbnServer/ui/public/components/courier/fetch/_req_status.js b/src/ui/components/courier/fetch/_req_status.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/fetch/_req_status.js rename to src/ui/components/courier/fetch/_req_status.js diff --git a/src/KbnServer/ui/public/components/courier/fetch/fetch.js b/src/ui/components/courier/fetch/fetch.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/fetch/fetch.js rename to src/ui/components/courier/fetch/fetch.js diff --git a/src/KbnServer/ui/public/components/courier/fetch/request/_error_handler.js b/src/ui/components/courier/fetch/request/_error_handler.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/fetch/request/_error_handler.js rename to src/ui/components/courier/fetch/request/_error_handler.js diff --git a/src/KbnServer/ui/public/components/courier/fetch/request/_segmented_handle.js b/src/ui/components/courier/fetch/request/_segmented_handle.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/fetch/request/_segmented_handle.js rename to src/ui/components/courier/fetch/request/_segmented_handle.js diff --git a/src/KbnServer/ui/public/components/courier/fetch/request/doc.js b/src/ui/components/courier/fetch/request/doc.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/fetch/request/doc.js rename to src/ui/components/courier/fetch/request/doc.js diff --git a/src/KbnServer/ui/public/components/courier/fetch/request/request.js b/src/ui/components/courier/fetch/request/request.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/fetch/request/request.js rename to src/ui/components/courier/fetch/request/request.js diff --git a/src/KbnServer/ui/public/components/courier/fetch/request/search.js b/src/ui/components/courier/fetch/request/search.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/fetch/request/search.js rename to src/ui/components/courier/fetch/request/search.js diff --git a/src/KbnServer/ui/public/components/courier/fetch/request/segmented.js b/src/ui/components/courier/fetch/request/segmented.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/fetch/request/segmented.js rename to src/ui/components/courier/fetch/request/segmented.js diff --git a/src/KbnServer/ui/public/components/courier/fetch/strategy/doc.js b/src/ui/components/courier/fetch/strategy/doc.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/fetch/strategy/doc.js rename to src/ui/components/courier/fetch/strategy/doc.js diff --git a/src/KbnServer/ui/public/components/courier/fetch/strategy/search.js b/src/ui/components/courier/fetch/strategy/search.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/fetch/strategy/search.js rename to src/ui/components/courier/fetch/strategy/search.js diff --git a/src/KbnServer/ui/public/components/courier/looper/_looper.js b/src/ui/components/courier/looper/_looper.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/looper/_looper.js rename to src/ui/components/courier/looper/_looper.js diff --git a/src/KbnServer/ui/public/components/courier/looper/doc.js b/src/ui/components/courier/looper/doc.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/looper/doc.js rename to src/ui/components/courier/looper/doc.js diff --git a/src/KbnServer/ui/public/components/courier/looper/search.js b/src/ui/components/courier/looper/search.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/looper/search.js rename to src/ui/components/courier/looper/search.js diff --git a/src/KbnServer/ui/public/components/courier/saved_object/saved_object.js b/src/ui/components/courier/saved_object/saved_object.js similarity index 100% rename from src/KbnServer/ui/public/components/courier/saved_object/saved_object.js rename to src/ui/components/courier/saved_object/saved_object.js diff --git a/src/KbnServer/ui/public/components/debounce.js b/src/ui/components/debounce.js similarity index 100% rename from src/KbnServer/ui/public/components/debounce.js rename to src/ui/components/debounce.js diff --git a/src/KbnServer/ui/public/components/doc_table/components/table_header.html b/src/ui/components/doc_table/components/table_header.html similarity index 100% rename from src/KbnServer/ui/public/components/doc_table/components/table_header.html rename to src/ui/components/doc_table/components/table_header.html diff --git a/src/KbnServer/ui/public/components/doc_table/components/table_header.js b/src/ui/components/doc_table/components/table_header.js similarity index 100% rename from src/KbnServer/ui/public/components/doc_table/components/table_header.js rename to src/ui/components/doc_table/components/table_header.js diff --git a/src/KbnServer/ui/public/components/doc_table/components/table_row.js b/src/ui/components/doc_table/components/table_row.js similarity index 100% rename from src/KbnServer/ui/public/components/doc_table/components/table_row.js rename to src/ui/components/doc_table/components/table_row.js diff --git a/src/KbnServer/ui/public/components/doc_table/components/table_row/cell.html b/src/ui/components/doc_table/components/table_row/cell.html similarity index 100% rename from src/KbnServer/ui/public/components/doc_table/components/table_row/cell.html rename to src/ui/components/doc_table/components/table_row/cell.html diff --git a/src/KbnServer/ui/public/components/doc_table/components/table_row/details.html b/src/ui/components/doc_table/components/table_row/details.html similarity index 100% rename from src/KbnServer/ui/public/components/doc_table/components/table_row/details.html rename to src/ui/components/doc_table/components/table_row/details.html diff --git a/src/KbnServer/ui/public/components/doc_table/components/table_row/open.html b/src/ui/components/doc_table/components/table_row/open.html similarity index 100% rename from src/KbnServer/ui/public/components/doc_table/components/table_row/open.html rename to src/ui/components/doc_table/components/table_row/open.html diff --git a/src/KbnServer/ui/public/components/doc_table/doc_table.html b/src/ui/components/doc_table/doc_table.html similarity index 100% rename from src/KbnServer/ui/public/components/doc_table/doc_table.html rename to src/ui/components/doc_table/doc_table.html diff --git a/src/KbnServer/ui/public/components/doc_table/doc_table.js b/src/ui/components/doc_table/doc_table.js similarity index 100% rename from src/KbnServer/ui/public/components/doc_table/doc_table.js rename to src/ui/components/doc_table/doc_table.js diff --git a/src/KbnServer/ui/public/components/doc_table/doc_table.less b/src/ui/components/doc_table/doc_table.less similarity index 100% rename from src/KbnServer/ui/public/components/doc_table/doc_table.less rename to src/ui/components/doc_table/doc_table.less diff --git a/src/KbnServer/ui/public/components/doc_table/lib/get_sort.js b/src/ui/components/doc_table/lib/get_sort.js similarity index 100% rename from src/KbnServer/ui/public/components/doc_table/lib/get_sort.js rename to src/ui/components/doc_table/lib/get_sort.js diff --git a/src/KbnServer/ui/public/components/doc_title/doc_title.js b/src/ui/components/doc_title/doc_title.js similarity index 100% rename from src/KbnServer/ui/public/components/doc_title/doc_title.js rename to src/ui/components/doc_title/doc_title.js diff --git a/src/KbnServer/ui/public/components/doc_viewer/doc_viewer.html b/src/ui/components/doc_viewer/doc_viewer.html similarity index 100% rename from src/KbnServer/ui/public/components/doc_viewer/doc_viewer.html rename to src/ui/components/doc_viewer/doc_viewer.html diff --git a/src/KbnServer/ui/public/components/doc_viewer/doc_viewer.js b/src/ui/components/doc_viewer/doc_viewer.js similarity index 100% rename from src/KbnServer/ui/public/components/doc_viewer/doc_viewer.js rename to src/ui/components/doc_viewer/doc_viewer.js diff --git a/src/KbnServer/ui/public/components/doc_viewer/doc_viewer.less b/src/ui/components/doc_viewer/doc_viewer.less similarity index 100% rename from src/KbnServer/ui/public/components/doc_viewer/doc_viewer.less rename to src/ui/components/doc_viewer/doc_viewer.less diff --git a/src/KbnServer/ui/public/components/elastic_textarea.js b/src/ui/components/elastic_textarea.js similarity index 100% rename from src/KbnServer/ui/public/components/elastic_textarea.js rename to src/ui/components/elastic_textarea.js diff --git a/src/KbnServer/ui/public/components/errors.js b/src/ui/components/errors.js similarity index 100% rename from src/KbnServer/ui/public/components/errors.js rename to src/ui/components/errors.js diff --git a/src/KbnServer/ui/public/components/es.js b/src/ui/components/es.js similarity index 100% rename from src/KbnServer/ui/public/components/es.js rename to src/ui/components/es.js diff --git a/src/KbnServer/ui/public/components/events.js b/src/ui/components/events.js similarity index 100% rename from src/KbnServer/ui/public/components/events.js rename to src/ui/components/events.js diff --git a/src/KbnServer/ui/public/components/fancy_forms/fancy_forms.js b/src/ui/components/fancy_forms/fancy_forms.js similarity index 100% rename from src/KbnServer/ui/public/components/fancy_forms/fancy_forms.js rename to src/ui/components/fancy_forms/fancy_forms.js diff --git a/src/KbnServer/ui/public/components/fancy_forms/kbn_form.js b/src/ui/components/fancy_forms/kbn_form.js similarity index 100% rename from src/KbnServer/ui/public/components/fancy_forms/kbn_form.js rename to src/ui/components/fancy_forms/kbn_form.js diff --git a/src/KbnServer/ui/public/components/fancy_forms/kbn_model.js b/src/ui/components/fancy_forms/kbn_model.js similarity index 100% rename from src/KbnServer/ui/public/components/fancy_forms/kbn_model.js rename to src/ui/components/fancy_forms/kbn_model.js diff --git a/src/KbnServer/ui/public/components/field_editor/field_editor.html b/src/ui/components/field_editor/field_editor.html similarity index 100% rename from src/KbnServer/ui/public/components/field_editor/field_editor.html rename to src/ui/components/field_editor/field_editor.html diff --git a/src/KbnServer/ui/public/components/field_editor/field_editor.js b/src/ui/components/field_editor/field_editor.js similarity index 100% rename from src/KbnServer/ui/public/components/field_editor/field_editor.js rename to src/ui/components/field_editor/field_editor.js diff --git a/src/KbnServer/ui/public/components/field_editor/scripting_info.html b/src/ui/components/field_editor/scripting_info.html similarity index 100% rename from src/KbnServer/ui/public/components/field_editor/scripting_info.html rename to src/ui/components/field_editor/scripting_info.html diff --git a/src/KbnServer/ui/public/components/field_editor/scripting_warning.html b/src/ui/components/field_editor/scripting_warning.html similarity index 100% rename from src/KbnServer/ui/public/components/field_editor/scripting_warning.html rename to src/ui/components/field_editor/scripting_warning.html diff --git a/src/KbnServer/ui/public/components/field_format_editor/field_format_editor.js b/src/ui/components/field_format_editor/field_format_editor.js similarity index 100% rename from src/KbnServer/ui/public/components/field_format_editor/field_format_editor.js rename to src/ui/components/field_format_editor/field_format_editor.js diff --git a/src/KbnServer/ui/public/components/field_format_editor/numeral/numeral.html b/src/ui/components/field_format_editor/numeral/numeral.html similarity index 100% rename from src/KbnServer/ui/public/components/field_format_editor/numeral/numeral.html rename to src/ui/components/field_format_editor/numeral/numeral.html diff --git a/src/KbnServer/ui/public/components/field_format_editor/numeral/numeral.js b/src/ui/components/field_format_editor/numeral/numeral.js similarity index 100% rename from src/KbnServer/ui/public/components/field_format_editor/numeral/numeral.js rename to src/ui/components/field_format_editor/numeral/numeral.js diff --git a/src/KbnServer/ui/public/components/field_format_editor/pattern/pattern.html b/src/ui/components/field_format_editor/pattern/pattern.html similarity index 100% rename from src/KbnServer/ui/public/components/field_format_editor/pattern/pattern.html rename to src/ui/components/field_format_editor/pattern/pattern.html diff --git a/src/KbnServer/ui/public/components/field_format_editor/pattern/pattern.js b/src/ui/components/field_format_editor/pattern/pattern.js similarity index 100% rename from src/KbnServer/ui/public/components/field_format_editor/pattern/pattern.js rename to src/ui/components/field_format_editor/pattern/pattern.js diff --git a/src/KbnServer/ui/public/components/field_format_editor/samples/samples.html b/src/ui/components/field_format_editor/samples/samples.html similarity index 100% rename from src/KbnServer/ui/public/components/field_format_editor/samples/samples.html rename to src/ui/components/field_format_editor/samples/samples.html diff --git a/src/KbnServer/ui/public/components/field_format_editor/samples/samples.js b/src/ui/components/field_format_editor/samples/samples.js similarity index 100% rename from src/KbnServer/ui/public/components/field_format_editor/samples/samples.js rename to src/ui/components/field_format_editor/samples/samples.js diff --git a/src/KbnServer/ui/public/components/filter_bar/filter_bar.html b/src/ui/components/filter_bar/filter_bar.html similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/filter_bar.html rename to src/ui/components/filter_bar/filter_bar.html diff --git a/src/KbnServer/ui/public/components/filter_bar/filter_bar.js b/src/ui/components/filter_bar/filter_bar.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/filter_bar.js rename to src/ui/components/filter_bar/filter_bar.js diff --git a/src/KbnServer/ui/public/components/filter_bar/filter_bar.less b/src/ui/components/filter_bar/filter_bar.less similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/filter_bar.less rename to src/ui/components/filter_bar/filter_bar.less diff --git a/src/KbnServer/ui/public/components/filter_bar/filter_bar_click_handler.js b/src/ui/components/filter_bar/filter_bar_click_handler.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/filter_bar_click_handler.js rename to src/ui/components/filter_bar/filter_bar_click_handler.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/changeTimeFilter.js b/src/ui/components/filter_bar/lib/changeTimeFilter.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/changeTimeFilter.js rename to src/ui/components/filter_bar/lib/changeTimeFilter.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/compareFilters.js b/src/ui/components/filter_bar/lib/compareFilters.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/compareFilters.js rename to src/ui/components/filter_bar/lib/compareFilters.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/dedupFilters.js b/src/ui/components/filter_bar/lib/dedupFilters.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/dedupFilters.js rename to src/ui/components/filter_bar/lib/dedupFilters.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/extractTimeFilter.js b/src/ui/components/filter_bar/lib/extractTimeFilter.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/extractTimeFilter.js rename to src/ui/components/filter_bar/lib/extractTimeFilter.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/filterAppliedAndUnwrap.js b/src/ui/components/filter_bar/lib/filterAppliedAndUnwrap.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/filterAppliedAndUnwrap.js rename to src/ui/components/filter_bar/lib/filterAppliedAndUnwrap.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/filterOutTimeBasedFilter.js b/src/ui/components/filter_bar/lib/filterOutTimeBasedFilter.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/filterOutTimeBasedFilter.js rename to src/ui/components/filter_bar/lib/filterOutTimeBasedFilter.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/generateMappingChain.js b/src/ui/components/filter_bar/lib/generateMappingChain.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/generateMappingChain.js rename to src/ui/components/filter_bar/lib/generateMappingChain.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/mapAndFlattenFilters.js b/src/ui/components/filter_bar/lib/mapAndFlattenFilters.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/mapAndFlattenFilters.js rename to src/ui/components/filter_bar/lib/mapAndFlattenFilters.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/mapDefault.js b/src/ui/components/filter_bar/lib/mapDefault.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/mapDefault.js rename to src/ui/components/filter_bar/lib/mapDefault.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/mapExists.js b/src/ui/components/filter_bar/lib/mapExists.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/mapExists.js rename to src/ui/components/filter_bar/lib/mapExists.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/mapFilter.js b/src/ui/components/filter_bar/lib/mapFilter.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/mapFilter.js rename to src/ui/components/filter_bar/lib/mapFilter.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/mapFlattenAndWrapFilters.js b/src/ui/components/filter_bar/lib/mapFlattenAndWrapFilters.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/mapFlattenAndWrapFilters.js rename to src/ui/components/filter_bar/lib/mapFlattenAndWrapFilters.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/mapGeoBoundingBox.js b/src/ui/components/filter_bar/lib/mapGeoBoundingBox.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/mapGeoBoundingBox.js rename to src/ui/components/filter_bar/lib/mapGeoBoundingBox.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/mapMissing.js b/src/ui/components/filter_bar/lib/mapMissing.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/mapMissing.js rename to src/ui/components/filter_bar/lib/mapMissing.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/mapQueryString.js b/src/ui/components/filter_bar/lib/mapQueryString.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/mapQueryString.js rename to src/ui/components/filter_bar/lib/mapQueryString.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/mapRange.js b/src/ui/components/filter_bar/lib/mapRange.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/mapRange.js rename to src/ui/components/filter_bar/lib/mapRange.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/mapScript.js b/src/ui/components/filter_bar/lib/mapScript.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/mapScript.js rename to src/ui/components/filter_bar/lib/mapScript.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/mapTerms.js b/src/ui/components/filter_bar/lib/mapTerms.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/mapTerms.js rename to src/ui/components/filter_bar/lib/mapTerms.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/onlyDisabled.js b/src/ui/components/filter_bar/lib/onlyDisabled.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/onlyDisabled.js rename to src/ui/components/filter_bar/lib/onlyDisabled.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/onlyStateChanged.js b/src/ui/components/filter_bar/lib/onlyStateChanged.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/onlyStateChanged.js rename to src/ui/components/filter_bar/lib/onlyStateChanged.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/remapFilters.js b/src/ui/components/filter_bar/lib/remapFilters.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/remapFilters.js rename to src/ui/components/filter_bar/lib/remapFilters.js diff --git a/src/KbnServer/ui/public/components/filter_bar/lib/uniqFilters.js b/src/ui/components/filter_bar/lib/uniqFilters.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/lib/uniqFilters.js rename to src/ui/components/filter_bar/lib/uniqFilters.js diff --git a/src/KbnServer/ui/public/components/filter_bar/push_filter.js b/src/ui/components/filter_bar/push_filter.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/push_filter.js rename to src/ui/components/filter_bar/push_filter.js diff --git a/src/KbnServer/ui/public/components/filter_bar/query_filter.js b/src/ui/components/filter_bar/query_filter.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_bar/query_filter.js rename to src/ui/components/filter_bar/query_filter.js diff --git a/src/KbnServer/ui/public/components/filter_manager/filter_manager.js b/src/ui/components/filter_manager/filter_manager.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_manager/filter_manager.js rename to src/ui/components/filter_manager/filter_manager.js diff --git a/src/KbnServer/ui/public/components/filter_manager/lib/phrase.js b/src/ui/components/filter_manager/lib/phrase.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_manager/lib/phrase.js rename to src/ui/components/filter_manager/lib/phrase.js diff --git a/src/KbnServer/ui/public/components/filter_manager/lib/query.js b/src/ui/components/filter_manager/lib/query.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_manager/lib/query.js rename to src/ui/components/filter_manager/lib/query.js diff --git a/src/KbnServer/ui/public/components/filter_manager/lib/range.js b/src/ui/components/filter_manager/lib/range.js similarity index 100% rename from src/KbnServer/ui/public/components/filter_manager/lib/range.js rename to src/ui/components/filter_manager/lib/range.js diff --git a/src/KbnServer/ui/public/components/fixedScroll.js b/src/ui/components/fixedScroll.js similarity index 100% rename from src/KbnServer/ui/public/components/fixedScroll.js rename to src/ui/components/fixedScroll.js diff --git a/src/KbnServer/ui/public/components/highlight/highlight.js b/src/ui/components/highlight/highlight.js similarity index 100% rename from src/KbnServer/ui/public/components/highlight/highlight.js rename to src/ui/components/highlight/highlight.js diff --git a/src/KbnServer/ui/public/components/highlight/highlight_tags.js b/src/ui/components/highlight/highlight_tags.js similarity index 100% rename from src/KbnServer/ui/public/components/highlight/highlight_tags.js rename to src/ui/components/highlight/highlight_tags.js diff --git a/src/KbnServer/ui/public/components/index_patterns/_cast_mapping_type.js b/src/ui/components/index_patterns/_cast_mapping_type.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_cast_mapping_type.js rename to src/ui/components/index_patterns/_cast_mapping_type.js diff --git a/src/KbnServer/ui/public/components/index_patterns/_ensure_some.js b/src/ui/components/index_patterns/_ensure_some.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_ensure_some.js rename to src/ui/components/index_patterns/_ensure_some.js diff --git a/src/KbnServer/ui/public/components/index_patterns/_field.js b/src/ui/components/index_patterns/_field.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_field.js rename to src/ui/components/index_patterns/_field.js diff --git a/src/KbnServer/ui/public/components/index_patterns/_field_format/FieldFormat.js b/src/ui/components/index_patterns/_field_format/FieldFormat.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_field_format/FieldFormat.js rename to src/ui/components/index_patterns/_field_format/FieldFormat.js diff --git a/src/KbnServer/ui/public/components/index_patterns/_field_format/contentTypes.js b/src/ui/components/index_patterns/_field_format/contentTypes.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_field_format/contentTypes.js rename to src/ui/components/index_patterns/_field_format/contentTypes.js diff --git a/src/KbnServer/ui/public/components/index_patterns/_field_list.js b/src/ui/components/index_patterns/_field_list.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_field_list.js rename to src/ui/components/index_patterns/_field_list.js diff --git a/src/KbnServer/ui/public/components/index_patterns/_field_types.js b/src/ui/components/index_patterns/_field_types.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_field_types.js rename to src/ui/components/index_patterns/_field_types.js diff --git a/src/KbnServer/ui/public/components/index_patterns/_flatten_hit.js b/src/ui/components/index_patterns/_flatten_hit.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_flatten_hit.js rename to src/ui/components/index_patterns/_flatten_hit.js diff --git a/src/KbnServer/ui/public/components/index_patterns/_format_hit.js b/src/ui/components/index_patterns/_format_hit.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_format_hit.js rename to src/ui/components/index_patterns/_format_hit.js diff --git a/src/KbnServer/ui/public/components/index_patterns/_get_computed_fields.js b/src/ui/components/index_patterns/_get_computed_fields.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_get_computed_fields.js rename to src/ui/components/index_patterns/_get_computed_fields.js diff --git a/src/KbnServer/ui/public/components/index_patterns/_get_ids.js b/src/ui/components/index_patterns/_get_ids.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_get_ids.js rename to src/ui/components/index_patterns/_get_ids.js diff --git a/src/KbnServer/ui/public/components/index_patterns/_index_pattern.js b/src/ui/components/index_patterns/_index_pattern.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_index_pattern.js rename to src/ui/components/index_patterns/_index_pattern.js diff --git a/src/KbnServer/ui/public/components/index_patterns/_intervals.js b/src/ui/components/index_patterns/_intervals.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_intervals.js rename to src/ui/components/index_patterns/_intervals.js diff --git a/src/KbnServer/ui/public/components/index_patterns/_local_cache.js b/src/ui/components/index_patterns/_local_cache.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_local_cache.js rename to src/ui/components/index_patterns/_local_cache.js diff --git a/src/KbnServer/ui/public/components/index_patterns/_map_field.js b/src/ui/components/index_patterns/_map_field.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_map_field.js rename to src/ui/components/index_patterns/_map_field.js diff --git a/src/KbnServer/ui/public/components/index_patterns/_mapper.js b/src/ui/components/index_patterns/_mapper.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_mapper.js rename to src/ui/components/index_patterns/_mapper.js diff --git a/src/KbnServer/ui/public/components/index_patterns/_object.tmpl.html b/src/ui/components/index_patterns/_object.tmpl.html similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_object.tmpl.html rename to src/ui/components/index_patterns/_object.tmpl.html diff --git a/src/KbnServer/ui/public/components/index_patterns/_pattern_cache.js b/src/ui/components/index_patterns/_pattern_cache.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_pattern_cache.js rename to src/ui/components/index_patterns/_pattern_cache.js diff --git a/src/KbnServer/ui/public/components/index_patterns/_pattern_to_wildcard.js b/src/ui/components/index_patterns/_pattern_to_wildcard.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_pattern_to_wildcard.js rename to src/ui/components/index_patterns/_pattern_to_wildcard.js diff --git a/src/KbnServer/ui/public/components/index_patterns/_transform_mapping_into_fields.js b/src/ui/components/index_patterns/_transform_mapping_into_fields.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/_transform_mapping_into_fields.js rename to src/ui/components/index_patterns/_transform_mapping_into_fields.js diff --git a/src/KbnServer/ui/public/components/index_patterns/index_patterns.js b/src/ui/components/index_patterns/index_patterns.js similarity index 100% rename from src/KbnServer/ui/public/components/index_patterns/index_patterns.js rename to src/ui/components/index_patterns/index_patterns.js diff --git a/src/KbnServer/ui/public/components/indexed_array/_inflector.js b/src/ui/components/indexed_array/_inflector.js similarity index 100% rename from src/KbnServer/ui/public/components/indexed_array/_inflector.js rename to src/ui/components/indexed_array/_inflector.js diff --git a/src/KbnServer/ui/public/components/indexed_array/_path_getter.js b/src/ui/components/indexed_array/_path_getter.js similarity index 100% rename from src/KbnServer/ui/public/components/indexed_array/_path_getter.js rename to src/ui/components/indexed_array/_path_getter.js diff --git a/src/KbnServer/ui/public/components/indexed_array/index.js b/src/ui/components/indexed_array/index.js similarity index 100% rename from src/KbnServer/ui/public/components/indexed_array/index.js rename to src/ui/components/indexed_array/index.js diff --git a/src/KbnServer/ui/public/components/listen.js b/src/ui/components/listen.js similarity index 100% rename from src/KbnServer/ui/public/components/listen.js rename to src/ui/components/listen.js diff --git a/src/KbnServer/ui/public/components/modules.js b/src/ui/components/modules.js similarity index 100% rename from src/KbnServer/ui/public/components/modules.js rename to src/ui/components/modules.js diff --git a/src/KbnServer/ui/public/components/notify/_errors.js b/src/ui/components/notify/_errors.js similarity index 100% rename from src/KbnServer/ui/public/components/notify/_errors.js rename to src/ui/components/notify/_errors.js diff --git a/src/KbnServer/ui/public/components/notify/_notifier.js b/src/ui/components/notify/_notifier.js similarity index 100% rename from src/KbnServer/ui/public/components/notify/_notifier.js rename to src/ui/components/notify/_notifier.js diff --git a/src/KbnServer/ui/public/components/notify/directives.js b/src/ui/components/notify/directives.js similarity index 100% rename from src/KbnServer/ui/public/components/notify/directives.js rename to src/ui/components/notify/directives.js diff --git a/src/KbnServer/ui/public/components/notify/notify.js b/src/ui/components/notify/notify.js similarity index 100% rename from src/KbnServer/ui/public/components/notify/notify.js rename to src/ui/components/notify/notify.js diff --git a/src/KbnServer/ui/public/components/notify/partials/fatal.html b/src/ui/components/notify/partials/fatal.html similarity index 100% rename from src/KbnServer/ui/public/components/notify/partials/fatal.html rename to src/ui/components/notify/partials/fatal.html diff --git a/src/KbnServer/ui/public/components/notify/partials/fatal_splash_screen.html b/src/ui/components/notify/partials/fatal_splash_screen.html similarity index 100% rename from src/KbnServer/ui/public/components/notify/partials/fatal_splash_screen.html rename to src/ui/components/notify/partials/fatal_splash_screen.html diff --git a/src/KbnServer/ui/public/components/notify/partials/toaster.html b/src/ui/components/notify/partials/toaster.html similarity index 100% rename from src/KbnServer/ui/public/components/notify/partials/toaster.html rename to src/ui/components/notify/partials/toaster.html diff --git a/src/KbnServer/ui/public/components/number_list/number_list.html b/src/ui/components/number_list/number_list.html similarity index 100% rename from src/KbnServer/ui/public/components/number_list/number_list.html rename to src/ui/components/number_list/number_list.html diff --git a/src/KbnServer/ui/public/components/number_list/number_list.js b/src/ui/components/number_list/number_list.js similarity index 100% rename from src/KbnServer/ui/public/components/number_list/number_list.js rename to src/ui/components/number_list/number_list.js diff --git a/src/KbnServer/ui/public/components/number_list/number_list_input.js b/src/ui/components/number_list/number_list_input.js similarity index 100% rename from src/KbnServer/ui/public/components/number_list/number_list_input.js rename to src/ui/components/number_list/number_list_input.js diff --git a/src/KbnServer/ui/public/components/paginated_table/paginated_table.html b/src/ui/components/paginated_table/paginated_table.html similarity index 100% rename from src/KbnServer/ui/public/components/paginated_table/paginated_table.html rename to src/ui/components/paginated_table/paginated_table.html diff --git a/src/KbnServer/ui/public/components/paginated_table/paginated_table.js b/src/ui/components/paginated_table/paginated_table.js similarity index 100% rename from src/KbnServer/ui/public/components/paginated_table/paginated_table.js rename to src/ui/components/paginated_table/paginated_table.js diff --git a/src/KbnServer/ui/public/components/persisted_log/persisted_log.js b/src/ui/components/persisted_log/persisted_log.js similarity index 100% rename from src/KbnServer/ui/public/components/persisted_log/persisted_log.js rename to src/ui/components/persisted_log/persisted_log.js diff --git a/src/KbnServer/ui/public/components/private.js b/src/ui/components/private.js similarity index 100% rename from src/KbnServer/ui/public/components/private.js rename to src/ui/components/private.js diff --git a/src/KbnServer/ui/public/components/promises.js b/src/ui/components/promises.js similarity index 100% rename from src/KbnServer/ui/public/components/promises.js rename to src/ui/components/promises.js diff --git a/src/KbnServer/ui/public/components/reflow_watcher.js b/src/ui/components/reflow_watcher.js similarity index 100% rename from src/KbnServer/ui/public/components/reflow_watcher.js rename to src/ui/components/reflow_watcher.js diff --git a/src/KbnServer/ui/public/components/routes/_setup.js b/src/ui/components/routes/_setup.js similarity index 100% rename from src/KbnServer/ui/public/components/routes/_setup.js rename to src/ui/components/routes/_setup.js diff --git a/src/KbnServer/ui/public/components/routes/_work_queue.js b/src/ui/components/routes/_work_queue.js similarity index 100% rename from src/KbnServer/ui/public/components/routes/_work_queue.js rename to src/ui/components/routes/_work_queue.js diff --git a/src/KbnServer/ui/public/components/routes/_wrap_route_with_prep.js b/src/ui/components/routes/_wrap_route_with_prep.js similarity index 100% rename from src/KbnServer/ui/public/components/routes/_wrap_route_with_prep.js rename to src/ui/components/routes/_wrap_route_with_prep.js diff --git a/src/KbnServer/ui/public/components/routes/index.js b/src/ui/components/routes/index.js similarity index 100% rename from src/KbnServer/ui/public/components/routes/index.js rename to src/ui/components/routes/index.js diff --git a/src/KbnServer/ui/public/components/state_management/_state_sync.js b/src/ui/components/state_management/_state_sync.js similarity index 100% rename from src/KbnServer/ui/public/components/state_management/_state_sync.js rename to src/ui/components/state_management/_state_sync.js diff --git a/src/KbnServer/ui/public/components/state_management/app_state.js b/src/ui/components/state_management/app_state.js similarity index 100% rename from src/KbnServer/ui/public/components/state_management/app_state.js rename to src/ui/components/state_management/app_state.js diff --git a/src/KbnServer/ui/public/components/state_management/global_state.js b/src/ui/components/state_management/global_state.js similarity index 100% rename from src/KbnServer/ui/public/components/state_management/global_state.js rename to src/ui/components/state_management/global_state.js diff --git a/src/KbnServer/ui/public/components/state_management/state.js b/src/ui/components/state_management/state.js similarity index 100% rename from src/KbnServer/ui/public/components/state_management/state.js rename to src/ui/components/state_management/state.js diff --git a/src/KbnServer/ui/public/components/storage/storage.js b/src/ui/components/storage/storage.js similarity index 100% rename from src/KbnServer/ui/public/components/storage/storage.js rename to src/ui/components/storage/storage.js diff --git a/src/KbnServer/ui/public/components/stringify/.jshintrc b/src/ui/components/stringify/.jshintrc similarity index 100% rename from src/KbnServer/ui/public/components/stringify/.jshintrc rename to src/ui/components/stringify/.jshintrc diff --git a/src/KbnServer/ui/public/components/stringify/editors/date.html b/src/ui/components/stringify/editors/date.html similarity index 100% rename from src/KbnServer/ui/public/components/stringify/editors/date.html rename to src/ui/components/stringify/editors/date.html diff --git a/src/KbnServer/ui/public/components/stringify/editors/string.html b/src/ui/components/stringify/editors/string.html similarity index 100% rename from src/KbnServer/ui/public/components/stringify/editors/string.html rename to src/ui/components/stringify/editors/string.html diff --git a/src/KbnServer/ui/public/components/stringify/editors/url.html b/src/ui/components/stringify/editors/url.html similarity index 100% rename from src/KbnServer/ui/public/components/stringify/editors/url.html rename to src/ui/components/stringify/editors/url.html diff --git a/src/KbnServer/ui/public/components/stringify/icons/cv.png b/src/ui/components/stringify/icons/cv.png similarity index 100% rename from src/KbnServer/ui/public/components/stringify/icons/cv.png rename to src/ui/components/stringify/icons/cv.png diff --git a/src/KbnServer/ui/public/components/stringify/icons/de.png b/src/ui/components/stringify/icons/de.png similarity index 100% rename from src/KbnServer/ui/public/components/stringify/icons/de.png rename to src/ui/components/stringify/icons/de.png diff --git a/src/KbnServer/ui/public/components/stringify/icons/flag-icon.LICENSE b/src/ui/components/stringify/icons/flag-icon.LICENSE similarity index 100% rename from src/KbnServer/ui/public/components/stringify/icons/flag-icon.LICENSE rename to src/ui/components/stringify/icons/flag-icon.LICENSE diff --git a/src/KbnServer/ui/public/components/stringify/icons/go.png b/src/ui/components/stringify/icons/go.png similarity index 100% rename from src/KbnServer/ui/public/components/stringify/icons/go.png rename to src/ui/components/stringify/icons/go.png diff --git a/src/KbnServer/ui/public/components/stringify/icons/ne.png b/src/ui/components/stringify/icons/ne.png similarity index 100% rename from src/KbnServer/ui/public/components/stringify/icons/ne.png rename to src/ui/components/stringify/icons/ne.png diff --git a/src/KbnServer/ui/public/components/stringify/icons/ni.png b/src/ui/components/stringify/icons/ni.png similarity index 100% rename from src/KbnServer/ui/public/components/stringify/icons/ni.png rename to src/ui/components/stringify/icons/ni.png diff --git a/src/KbnServer/ui/public/components/stringify/icons/stop.png b/src/ui/components/stringify/icons/stop.png similarity index 100% rename from src/KbnServer/ui/public/components/stringify/icons/stop.png rename to src/ui/components/stringify/icons/stop.png diff --git a/src/KbnServer/ui/public/components/stringify/icons/us.png b/src/ui/components/stringify/icons/us.png similarity index 100% rename from src/KbnServer/ui/public/components/stringify/icons/us.png rename to src/ui/components/stringify/icons/us.png diff --git a/src/KbnServer/ui/public/components/stringify/register.js b/src/ui/components/stringify/register.js similarity index 100% rename from src/KbnServer/ui/public/components/stringify/register.js rename to src/ui/components/stringify/register.js diff --git a/src/KbnServer/ui/public/components/stringify/types/Bytes.js b/src/ui/components/stringify/types/Bytes.js similarity index 100% rename from src/KbnServer/ui/public/components/stringify/types/Bytes.js rename to src/ui/components/stringify/types/Bytes.js diff --git a/src/KbnServer/ui/public/components/stringify/types/Date.js b/src/ui/components/stringify/types/Date.js similarity index 100% rename from src/KbnServer/ui/public/components/stringify/types/Date.js rename to src/ui/components/stringify/types/Date.js diff --git a/src/KbnServer/ui/public/components/stringify/types/Ip.js b/src/ui/components/stringify/types/Ip.js similarity index 100% rename from src/KbnServer/ui/public/components/stringify/types/Ip.js rename to src/ui/components/stringify/types/Ip.js diff --git a/src/KbnServer/ui/public/components/stringify/types/Number.js b/src/ui/components/stringify/types/Number.js similarity index 100% rename from src/KbnServer/ui/public/components/stringify/types/Number.js rename to src/ui/components/stringify/types/Number.js diff --git a/src/KbnServer/ui/public/components/stringify/types/Percent.js b/src/ui/components/stringify/types/Percent.js similarity index 100% rename from src/KbnServer/ui/public/components/stringify/types/Percent.js rename to src/ui/components/stringify/types/Percent.js diff --git a/src/KbnServer/ui/public/components/stringify/types/Source.js b/src/ui/components/stringify/types/Source.js similarity index 100% rename from src/KbnServer/ui/public/components/stringify/types/Source.js rename to src/ui/components/stringify/types/Source.js diff --git a/src/KbnServer/ui/public/components/stringify/types/String.js b/src/ui/components/stringify/types/String.js similarity index 100% rename from src/KbnServer/ui/public/components/stringify/types/String.js rename to src/ui/components/stringify/types/String.js diff --git a/src/KbnServer/ui/public/components/stringify/types/Url.js b/src/ui/components/stringify/types/Url.js similarity index 100% rename from src/KbnServer/ui/public/components/stringify/types/Url.js rename to src/ui/components/stringify/types/Url.js diff --git a/src/KbnServer/ui/public/components/stringify/types/_Numeral.js b/src/ui/components/stringify/types/_Numeral.js similarity index 100% rename from src/KbnServer/ui/public/components/stringify/types/_Numeral.js rename to src/ui/components/stringify/types/_Numeral.js diff --git a/src/KbnServer/ui/public/components/stringify/types/_source.html b/src/ui/components/stringify/types/_source.html similarity index 100% rename from src/KbnServer/ui/public/components/stringify/types/_source.html rename to src/ui/components/stringify/types/_source.html diff --git a/src/KbnServer/ui/public/components/style_compile/style_compile.css.tmpl b/src/ui/components/style_compile/style_compile.css.tmpl similarity index 100% rename from src/KbnServer/ui/public/components/style_compile/style_compile.css.tmpl rename to src/ui/components/style_compile/style_compile.css.tmpl diff --git a/src/KbnServer/ui/public/components/style_compile/style_compile.js b/src/ui/components/style_compile/style_compile.js similarity index 100% rename from src/KbnServer/ui/public/components/style_compile/style_compile.js rename to src/ui/components/style_compile/style_compile.js diff --git a/src/KbnServer/ui/public/components/template_vis_type/TemplateRenderbot.js b/src/ui/components/template_vis_type/TemplateRenderbot.js similarity index 100% rename from src/KbnServer/ui/public/components/template_vis_type/TemplateRenderbot.js rename to src/ui/components/template_vis_type/TemplateRenderbot.js diff --git a/src/KbnServer/ui/public/components/template_vis_type/TemplateVisType.js b/src/ui/components/template_vis_type/TemplateVisType.js similarity index 100% rename from src/KbnServer/ui/public/components/template_vis_type/TemplateVisType.js rename to src/ui/components/template_vis_type/TemplateVisType.js diff --git a/src/KbnServer/ui/public/components/time_buckets/calc_auto_interval.js b/src/ui/components/time_buckets/calc_auto_interval.js similarity index 100% rename from src/KbnServer/ui/public/components/time_buckets/calc_auto_interval.js rename to src/ui/components/time_buckets/calc_auto_interval.js diff --git a/src/KbnServer/ui/public/components/time_buckets/calc_es_interval.js b/src/ui/components/time_buckets/calc_es_interval.js similarity index 100% rename from src/KbnServer/ui/public/components/time_buckets/calc_es_interval.js rename to src/ui/components/time_buckets/calc_es_interval.js diff --git a/src/KbnServer/ui/public/components/time_buckets/time_buckets.js b/src/ui/components/time_buckets/time_buckets.js similarity index 100% rename from src/KbnServer/ui/public/components/time_buckets/time_buckets.js rename to src/ui/components/time_buckets/time_buckets.js diff --git a/src/KbnServer/ui/public/components/timefilter/lib/diff_interval.js b/src/ui/components/timefilter/lib/diff_interval.js similarity index 100% rename from src/KbnServer/ui/public/components/timefilter/lib/diff_interval.js rename to src/ui/components/timefilter/lib/diff_interval.js diff --git a/src/KbnServer/ui/public/components/timefilter/lib/diff_time.js b/src/ui/components/timefilter/lib/diff_time.js similarity index 100% rename from src/KbnServer/ui/public/components/timefilter/lib/diff_time.js rename to src/ui/components/timefilter/lib/diff_time.js diff --git a/src/KbnServer/ui/public/components/timefilter/timefilter.js b/src/ui/components/timefilter/timefilter.js similarity index 100% rename from src/KbnServer/ui/public/components/timefilter/timefilter.js rename to src/ui/components/timefilter/timefilter.js diff --git a/src/KbnServer/ui/public/components/timepicker/quick_ranges.js b/src/ui/components/timepicker/quick_ranges.js similarity index 100% rename from src/KbnServer/ui/public/components/timepicker/quick_ranges.js rename to src/ui/components/timepicker/quick_ranges.js diff --git a/src/KbnServer/ui/public/components/timepicker/refresh_intervals.js b/src/ui/components/timepicker/refresh_intervals.js similarity index 100% rename from src/KbnServer/ui/public/components/timepicker/refresh_intervals.js rename to src/ui/components/timepicker/refresh_intervals.js diff --git a/src/KbnServer/ui/public/components/timepicker/time_units.js b/src/ui/components/timepicker/time_units.js similarity index 100% rename from src/KbnServer/ui/public/components/timepicker/time_units.js rename to src/ui/components/timepicker/time_units.js diff --git a/src/KbnServer/ui/public/components/timepicker/timepicker.html b/src/ui/components/timepicker/timepicker.html similarity index 100% rename from src/KbnServer/ui/public/components/timepicker/timepicker.html rename to src/ui/components/timepicker/timepicker.html diff --git a/src/KbnServer/ui/public/components/timepicker/timepicker.js b/src/ui/components/timepicker/timepicker.js similarity index 100% rename from src/KbnServer/ui/public/components/timepicker/timepicker.js rename to src/ui/components/timepicker/timepicker.js diff --git a/src/KbnServer/ui/public/components/tooltip/tooltip.html b/src/ui/components/tooltip/tooltip.html similarity index 100% rename from src/KbnServer/ui/public/components/tooltip/tooltip.html rename to src/ui/components/tooltip/tooltip.html diff --git a/src/KbnServer/ui/public/components/tooltip/tooltip.js b/src/ui/components/tooltip/tooltip.js similarity index 100% rename from src/KbnServer/ui/public/components/tooltip/tooltip.js rename to src/ui/components/tooltip/tooltip.js diff --git a/src/KbnServer/ui/public/components/typeahead/_input.js b/src/ui/components/typeahead/_input.js similarity index 100% rename from src/KbnServer/ui/public/components/typeahead/_input.js rename to src/ui/components/typeahead/_input.js diff --git a/src/KbnServer/ui/public/components/typeahead/_items.js b/src/ui/components/typeahead/_items.js similarity index 100% rename from src/KbnServer/ui/public/components/typeahead/_items.js rename to src/ui/components/typeahead/_items.js diff --git a/src/KbnServer/ui/public/components/typeahead/partials/typeahead-items.html b/src/ui/components/typeahead/partials/typeahead-items.html similarity index 100% rename from src/KbnServer/ui/public/components/typeahead/partials/typeahead-items.html rename to src/ui/components/typeahead/partials/typeahead-items.html diff --git a/src/KbnServer/ui/public/components/typeahead/typeahead.js b/src/ui/components/typeahead/typeahead.js similarity index 100% rename from src/KbnServer/ui/public/components/typeahead/typeahead.js rename to src/ui/components/typeahead/typeahead.js diff --git a/src/KbnServer/ui/public/components/typeahead/typeahead.less b/src/ui/components/typeahead/typeahead.less similarity index 100% rename from src/KbnServer/ui/public/components/typeahead/typeahead.less rename to src/ui/components/typeahead/typeahead.less diff --git a/src/KbnServer/ui/public/components/url/url.js b/src/ui/components/url/url.js similarity index 100% rename from src/KbnServer/ui/public/components/url/url.js rename to src/ui/components/url/url.js diff --git a/src/KbnServer/ui/public/components/validateDateInterval.js b/src/ui/components/validateDateInterval.js similarity index 100% rename from src/KbnServer/ui/public/components/validateDateInterval.js rename to src/ui/components/validateDateInterval.js diff --git a/src/KbnServer/ui/public/components/validate_query/lib/from_user.js b/src/ui/components/validate_query/lib/from_user.js similarity index 100% rename from src/KbnServer/ui/public/components/validate_query/lib/from_user.js rename to src/ui/components/validate_query/lib/from_user.js diff --git a/src/KbnServer/ui/public/components/validate_query/lib/to_user.js b/src/ui/components/validate_query/lib/to_user.js similarity index 100% rename from src/KbnServer/ui/public/components/validate_query/lib/to_user.js rename to src/ui/components/validate_query/lib/to_user.js diff --git a/src/KbnServer/ui/public/components/validate_query/validate_query.js b/src/ui/components/validate_query/validate_query.js similarity index 100% rename from src/KbnServer/ui/public/components/validate_query/validate_query.js rename to src/ui/components/validate_query/validate_query.js diff --git a/src/KbnServer/ui/public/components/vis/AggConfig.js b/src/ui/components/vis/AggConfig.js similarity index 100% rename from src/KbnServer/ui/public/components/vis/AggConfig.js rename to src/ui/components/vis/AggConfig.js diff --git a/src/KbnServer/ui/public/components/vis/AggConfigResult.js b/src/ui/components/vis/AggConfigResult.js similarity index 100% rename from src/KbnServer/ui/public/components/vis/AggConfigResult.js rename to src/ui/components/vis/AggConfigResult.js diff --git a/src/KbnServer/ui/public/components/vis/AggConfigs.js b/src/ui/components/vis/AggConfigs.js similarity index 100% rename from src/KbnServer/ui/public/components/vis/AggConfigs.js rename to src/ui/components/vis/AggConfigs.js diff --git a/src/KbnServer/ui/public/components/vis/Renderbot.js b/src/ui/components/vis/Renderbot.js similarity index 100% rename from src/KbnServer/ui/public/components/vis/Renderbot.js rename to src/ui/components/vis/Renderbot.js diff --git a/src/KbnServer/ui/public/components/vis/Schemas.js b/src/ui/components/vis/Schemas.js similarity index 100% rename from src/KbnServer/ui/public/components/vis/Schemas.js rename to src/ui/components/vis/Schemas.js diff --git a/src/KbnServer/ui/public/components/vis/VisType.js b/src/ui/components/vis/VisType.js similarity index 100% rename from src/KbnServer/ui/public/components/vis/VisType.js rename to src/ui/components/vis/VisType.js diff --git a/src/KbnServer/ui/public/components/vis/vis.js b/src/ui/components/vis/vis.js similarity index 100% rename from src/KbnServer/ui/public/components/vis/vis.js rename to src/ui/components/vis/vis.js diff --git a/src/KbnServer/ui/public/components/vislib/components/color/color.js b/src/ui/components/vislib/components/color/color.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/components/color/color.js rename to src/ui/components/vislib/components/color/color.js diff --git a/src/KbnServer/ui/public/components/vislib/components/color/color_palette.js b/src/ui/components/vislib/components/color/color_palette.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/components/color/color_palette.js rename to src/ui/components/vislib/components/color/color_palette.js diff --git a/src/KbnServer/ui/public/components/vislib/components/color/seed_colors.js b/src/ui/components/vislib/components/color/seed_colors.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/components/color/seed_colors.js rename to src/ui/components/vislib/components/color/seed_colors.js diff --git a/src/KbnServer/ui/public/components/vislib/components/labels/data_array.js b/src/ui/components/vislib/components/labels/data_array.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/components/labels/data_array.js rename to src/ui/components/vislib/components/labels/data_array.js diff --git a/src/KbnServer/ui/public/components/vislib/components/labels/flatten_series.js b/src/ui/components/vislib/components/labels/flatten_series.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/components/labels/flatten_series.js rename to src/ui/components/vislib/components/labels/flatten_series.js diff --git a/src/KbnServer/ui/public/components/vislib/components/labels/labels.js b/src/ui/components/vislib/components/labels/labels.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/components/labels/labels.js rename to src/ui/components/vislib/components/labels/labels.js diff --git a/src/KbnServer/ui/public/components/vislib/components/labels/uniq_labels.js b/src/ui/components/vislib/components/labels/uniq_labels.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/components/labels/uniq_labels.js rename to src/ui/components/vislib/components/labels/uniq_labels.js diff --git a/src/KbnServer/ui/public/components/vislib/components/tooltip/_position_tooltip.js b/src/ui/components/vislib/components/tooltip/_position_tooltip.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/components/tooltip/_position_tooltip.js rename to src/ui/components/vislib/components/tooltip/_position_tooltip.js diff --git a/src/KbnServer/ui/public/components/vislib/components/tooltip/tooltip.js b/src/ui/components/vislib/components/tooltip/tooltip.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/components/tooltip/tooltip.js rename to src/ui/components/vislib/components/tooltip/tooltip.js diff --git a/src/KbnServer/ui/public/components/vislib/components/zero_injection/flatten_data.js b/src/ui/components/vislib/components/zero_injection/flatten_data.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/components/zero_injection/flatten_data.js rename to src/ui/components/vislib/components/zero_injection/flatten_data.js diff --git a/src/KbnServer/ui/public/components/vislib/components/zero_injection/inject_zeros.js b/src/ui/components/vislib/components/zero_injection/inject_zeros.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/components/zero_injection/inject_zeros.js rename to src/ui/components/vislib/components/zero_injection/inject_zeros.js diff --git a/src/KbnServer/ui/public/components/vislib/components/zero_injection/ordered_x_keys.js b/src/ui/components/vislib/components/zero_injection/ordered_x_keys.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/components/zero_injection/ordered_x_keys.js rename to src/ui/components/vislib/components/zero_injection/ordered_x_keys.js diff --git a/src/KbnServer/ui/public/components/vislib/components/zero_injection/uniq_keys.js b/src/ui/components/vislib/components/zero_injection/uniq_keys.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/components/zero_injection/uniq_keys.js rename to src/ui/components/vislib/components/zero_injection/uniq_keys.js diff --git a/src/KbnServer/ui/public/components/vislib/components/zero_injection/zero_fill_data_array.js b/src/ui/components/vislib/components/zero_injection/zero_fill_data_array.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/components/zero_injection/zero_fill_data_array.js rename to src/ui/components/vislib/components/zero_injection/zero_fill_data_array.js diff --git a/src/KbnServer/ui/public/components/vislib/components/zero_injection/zero_filled_array.js b/src/ui/components/vislib/components/zero_injection/zero_filled_array.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/components/zero_injection/zero_filled_array.js rename to src/ui/components/vislib/components/zero_injection/zero_filled_array.js diff --git a/src/KbnServer/ui/public/components/vislib/index.js b/src/ui/components/vislib/index.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/index.js rename to src/ui/components/vislib/index.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/_data_label.js b/src/ui/components/vislib/lib/_data_label.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/_data_label.js rename to src/ui/components/vislib/lib/_data_label.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/_error_handler.js b/src/ui/components/vislib/lib/_error_handler.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/_error_handler.js rename to src/ui/components/vislib/lib/_error_handler.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/alerts.js b/src/ui/components/vislib/lib/alerts.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/alerts.js rename to src/ui/components/vislib/lib/alerts.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/axis_title.js b/src/ui/components/vislib/lib/axis_title.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/axis_title.js rename to src/ui/components/vislib/lib/axis_title.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/chart_title.js b/src/ui/components/vislib/lib/chart_title.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/chart_title.js rename to src/ui/components/vislib/lib/chart_title.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/data.js b/src/ui/components/vislib/lib/data.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/data.js rename to src/ui/components/vislib/lib/data.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/dispatch.js b/src/ui/components/vislib/lib/dispatch.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/dispatch.js rename to src/ui/components/vislib/lib/dispatch.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/handler/handler.js b/src/ui/components/vislib/lib/handler/handler.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/handler/handler.js rename to src/ui/components/vislib/lib/handler/handler.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/handler/handler_types.js b/src/ui/components/vislib/lib/handler/handler_types.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/handler/handler_types.js rename to src/ui/components/vislib/lib/handler/handler_types.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/handler/types/pie.js b/src/ui/components/vislib/lib/handler/types/pie.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/handler/types/pie.js rename to src/ui/components/vislib/lib/handler/types/pie.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/handler/types/point_series.js b/src/ui/components/vislib/lib/handler/types/point_series.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/handler/types/point_series.js rename to src/ui/components/vislib/lib/handler/types/point_series.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/handler/types/tile_map.js b/src/ui/components/vislib/lib/handler/types/tile_map.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/handler/types/tile_map.js rename to src/ui/components/vislib/lib/handler/types/tile_map.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/layout/layout.js b/src/ui/components/vislib/lib/layout/layout.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/layout/layout.js rename to src/ui/components/vislib/lib/layout/layout.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/layout/layout_types.js b/src/ui/components/vislib/lib/layout/layout_types.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/layout/layout_types.js rename to src/ui/components/vislib/lib/layout/layout_types.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/layout/splits/column_chart/chart_split.js b/src/ui/components/vislib/lib/layout/splits/column_chart/chart_split.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/layout/splits/column_chart/chart_split.js rename to src/ui/components/vislib/lib/layout/splits/column_chart/chart_split.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/layout/splits/column_chart/chart_title_split.js b/src/ui/components/vislib/lib/layout/splits/column_chart/chart_title_split.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/layout/splits/column_chart/chart_title_split.js rename to src/ui/components/vislib/lib/layout/splits/column_chart/chart_title_split.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/layout/splits/column_chart/x_axis_split.js b/src/ui/components/vislib/lib/layout/splits/column_chart/x_axis_split.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/layout/splits/column_chart/x_axis_split.js rename to src/ui/components/vislib/lib/layout/splits/column_chart/x_axis_split.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/layout/splits/column_chart/y_axis_split.js b/src/ui/components/vislib/lib/layout/splits/column_chart/y_axis_split.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/layout/splits/column_chart/y_axis_split.js rename to src/ui/components/vislib/lib/layout/splits/column_chart/y_axis_split.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/layout/splits/pie_chart/chart_split.js b/src/ui/components/vislib/lib/layout/splits/pie_chart/chart_split.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/layout/splits/pie_chart/chart_split.js rename to src/ui/components/vislib/lib/layout/splits/pie_chart/chart_split.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js b/src/ui/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js rename to src/ui/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/layout/splits/tile_map/map_split.js b/src/ui/components/vislib/lib/layout/splits/tile_map/map_split.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/layout/splits/tile_map/map_split.js rename to src/ui/components/vislib/lib/layout/splits/tile_map/map_split.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/layout/types/column_layout.js b/src/ui/components/vislib/lib/layout/types/column_layout.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/layout/types/column_layout.js rename to src/ui/components/vislib/lib/layout/types/column_layout.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/layout/types/map_layout.js b/src/ui/components/vislib/lib/layout/types/map_layout.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/layout/types/map_layout.js rename to src/ui/components/vislib/lib/layout/types/map_layout.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/layout/types/pie_layout.js b/src/ui/components/vislib/lib/layout/types/pie_layout.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/layout/types/pie_layout.js rename to src/ui/components/vislib/lib/layout/types/pie_layout.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/legend.js b/src/ui/components/vislib/lib/legend.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/legend.js rename to src/ui/components/vislib/lib/legend.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/resize_checker.js b/src/ui/components/vislib/lib/resize_checker.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/resize_checker.js rename to src/ui/components/vislib/lib/resize_checker.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/x_axis.js b/src/ui/components/vislib/lib/x_axis.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/x_axis.js rename to src/ui/components/vislib/lib/x_axis.js diff --git a/src/KbnServer/ui/public/components/vislib/lib/y_axis.js b/src/ui/components/vislib/lib/y_axis.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/lib/y_axis.js rename to src/ui/components/vislib/lib/y_axis.js diff --git a/src/KbnServer/ui/public/components/vislib/partials/legend_header.html b/src/ui/components/vislib/partials/legend_header.html similarity index 100% rename from src/KbnServer/ui/public/components/vislib/partials/legend_header.html rename to src/ui/components/vislib/partials/legend_header.html diff --git a/src/KbnServer/ui/public/components/vislib/partials/touchdown.tmpl.html b/src/ui/components/vislib/partials/touchdown.tmpl.html similarity index 100% rename from src/KbnServer/ui/public/components/vislib/partials/touchdown.tmpl.html rename to src/ui/components/vislib/partials/touchdown.tmpl.html diff --git a/src/KbnServer/ui/public/components/vislib/styles/_alerts.less b/src/ui/components/vislib/styles/_alerts.less similarity index 100% rename from src/KbnServer/ui/public/components/vislib/styles/_alerts.less rename to src/ui/components/vislib/styles/_alerts.less diff --git a/src/KbnServer/ui/public/components/vislib/styles/_error.less b/src/ui/components/vislib/styles/_error.less similarity index 100% rename from src/KbnServer/ui/public/components/vislib/styles/_error.less rename to src/ui/components/vislib/styles/_error.less diff --git a/src/KbnServer/ui/public/components/vislib/styles/_layout.less b/src/ui/components/vislib/styles/_layout.less similarity index 100% rename from src/KbnServer/ui/public/components/vislib/styles/_layout.less rename to src/ui/components/vislib/styles/_layout.less diff --git a/src/KbnServer/ui/public/components/vislib/styles/_legend.less b/src/ui/components/vislib/styles/_legend.less similarity index 100% rename from src/KbnServer/ui/public/components/vislib/styles/_legend.less rename to src/ui/components/vislib/styles/_legend.less diff --git a/src/KbnServer/ui/public/components/vislib/styles/_svg.less b/src/ui/components/vislib/styles/_svg.less similarity index 100% rename from src/KbnServer/ui/public/components/vislib/styles/_svg.less rename to src/ui/components/vislib/styles/_svg.less diff --git a/src/KbnServer/ui/public/components/vislib/styles/_tilemap.less b/src/ui/components/vislib/styles/_tilemap.less similarity index 100% rename from src/KbnServer/ui/public/components/vislib/styles/_tilemap.less rename to src/ui/components/vislib/styles/_tilemap.less diff --git a/src/KbnServer/ui/public/components/vislib/styles/_tooltip.less b/src/ui/components/vislib/styles/_tooltip.less similarity index 100% rename from src/KbnServer/ui/public/components/vislib/styles/_tooltip.less rename to src/ui/components/vislib/styles/_tooltip.less diff --git a/src/KbnServer/ui/public/components/vislib/styles/main.less b/src/ui/components/vislib/styles/main.less similarity index 100% rename from src/KbnServer/ui/public/components/vislib/styles/main.less rename to src/ui/components/vislib/styles/main.less diff --git a/src/KbnServer/ui/public/components/vislib/vis.js b/src/ui/components/vislib/vis.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/vis.js rename to src/ui/components/vislib/vis.js diff --git a/src/KbnServer/ui/public/components/vislib/visualizations/_chart.js b/src/ui/components/vislib/visualizations/_chart.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/visualizations/_chart.js rename to src/ui/components/vislib/visualizations/_chart.js diff --git a/src/KbnServer/ui/public/components/vislib/visualizations/_point_series_chart.js b/src/ui/components/vislib/visualizations/_point_series_chart.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/visualizations/_point_series_chart.js rename to src/ui/components/vislib/visualizations/_point_series_chart.js diff --git a/src/KbnServer/ui/public/components/vislib/visualizations/area_chart.js b/src/ui/components/vislib/visualizations/area_chart.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/visualizations/area_chart.js rename to src/ui/components/vislib/visualizations/area_chart.js diff --git a/src/KbnServer/ui/public/components/vislib/visualizations/column_chart.js b/src/ui/components/vislib/visualizations/column_chart.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/visualizations/column_chart.js rename to src/ui/components/vislib/visualizations/column_chart.js diff --git a/src/KbnServer/ui/public/components/vislib/visualizations/line_chart.js b/src/ui/components/vislib/visualizations/line_chart.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/visualizations/line_chart.js rename to src/ui/components/vislib/visualizations/line_chart.js diff --git a/src/KbnServer/ui/public/components/vislib/visualizations/pie_chart.js b/src/ui/components/vislib/visualizations/pie_chart.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/visualizations/pie_chart.js rename to src/ui/components/vislib/visualizations/pie_chart.js diff --git a/src/KbnServer/ui/public/components/vislib/visualizations/tile_map.js b/src/ui/components/vislib/visualizations/tile_map.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/visualizations/tile_map.js rename to src/ui/components/vislib/visualizations/tile_map.js diff --git a/src/KbnServer/ui/public/components/vislib/visualizations/time_marker.js b/src/ui/components/vislib/visualizations/time_marker.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/visualizations/time_marker.js rename to src/ui/components/vislib/visualizations/time_marker.js diff --git a/src/KbnServer/ui/public/components/vislib/visualizations/vis_types.js b/src/ui/components/vislib/visualizations/vis_types.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib/visualizations/vis_types.js rename to src/ui/components/vislib/visualizations/vis_types.js diff --git a/src/KbnServer/ui/public/components/vislib_vis_type/VislibRenderbot.js b/src/ui/components/vislib_vis_type/VislibRenderbot.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib_vis_type/VislibRenderbot.js rename to src/ui/components/vislib_vis_type/VislibRenderbot.js diff --git a/src/KbnServer/ui/public/components/vislib_vis_type/VislibVisType.js b/src/ui/components/vislib_vis_type/VislibVisType.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib_vis_type/VislibVisType.js rename to src/ui/components/vislib_vis_type/VislibVisType.js diff --git a/src/KbnServer/ui/public/components/vislib_vis_type/buildChartData.js b/src/ui/components/vislib_vis_type/buildChartData.js similarity index 100% rename from src/KbnServer/ui/public/components/vislib_vis_type/buildChartData.js rename to src/ui/components/vislib_vis_type/buildChartData.js diff --git a/src/KbnServer/ui/public/components/visualize/spy/_req_resp_stats.html b/src/ui/components/visualize/spy/_req_resp_stats.html similarity index 100% rename from src/KbnServer/ui/public/components/visualize/spy/_req_resp_stats.html rename to src/ui/components/visualize/spy/_req_resp_stats.html diff --git a/src/KbnServer/ui/public/components/visualize/spy/_req_resp_stats.js b/src/ui/components/visualize/spy/_req_resp_stats.js similarity index 100% rename from src/KbnServer/ui/public/components/visualize/spy/_req_resp_stats.js rename to src/ui/components/visualize/spy/_req_resp_stats.js diff --git a/src/KbnServer/ui/public/components/visualize/spy/_spy.html b/src/ui/components/visualize/spy/_spy.html similarity index 100% rename from src/KbnServer/ui/public/components/visualize/spy/_spy.html rename to src/ui/components/visualize/spy/_spy.html diff --git a/src/KbnServer/ui/public/components/visualize/spy/_table.html b/src/ui/components/visualize/spy/_table.html similarity index 100% rename from src/KbnServer/ui/public/components/visualize/spy/_table.html rename to src/ui/components/visualize/spy/_table.html diff --git a/src/KbnServer/ui/public/components/visualize/spy/_table.js b/src/ui/components/visualize/spy/_table.js similarity index 100% rename from src/KbnServer/ui/public/components/visualize/spy/_table.js rename to src/ui/components/visualize/spy/_table.js diff --git a/src/KbnServer/ui/public/components/visualize/spy/spy.js b/src/ui/components/visualize/spy/spy.js similarity index 100% rename from src/KbnServer/ui/public/components/visualize/spy/spy.js rename to src/ui/components/visualize/spy/spy.js diff --git a/src/KbnServer/ui/public/components/visualize/visualize.html b/src/ui/components/visualize/visualize.html similarity index 100% rename from src/KbnServer/ui/public/components/visualize/visualize.html rename to src/ui/components/visualize/visualize.html diff --git a/src/KbnServer/ui/public/components/visualize/visualize.js b/src/ui/components/visualize/visualize.js similarity index 100% rename from src/KbnServer/ui/public/components/visualize/visualize.js rename to src/ui/components/visualize/visualize.js diff --git a/src/KbnServer/ui/public/components/visualize/visualize.less b/src/ui/components/visualize/visualize.less similarity index 100% rename from src/KbnServer/ui/public/components/visualize/visualize.less rename to src/ui/components/visualize/visualize.less diff --git a/src/KbnServer/ui/public/components/watch_multi.js b/src/ui/components/watch_multi.js similarity index 100% rename from src/KbnServer/ui/public/components/watch_multi.js rename to src/ui/components/watch_multi.js diff --git a/src/KbnServer/ui/public/directives/auto_select_if_only_one.js b/src/ui/directives/auto_select_if_only_one.js similarity index 100% rename from src/KbnServer/ui/public/directives/auto_select_if_only_one.js rename to src/ui/directives/auto_select_if_only_one.js diff --git a/src/KbnServer/ui/public/directives/click_focus.js b/src/ui/directives/click_focus.js similarity index 100% rename from src/KbnServer/ui/public/directives/click_focus.js rename to src/ui/directives/click_focus.js diff --git a/src/KbnServer/ui/public/directives/config.js b/src/ui/directives/config.js similarity index 100% rename from src/KbnServer/ui/public/directives/config.js rename to src/ui/directives/config.js diff --git a/src/KbnServer/ui/public/directives/confirm_click.js b/src/ui/directives/confirm_click.js similarity index 100% rename from src/KbnServer/ui/public/directives/confirm_click.js rename to src/ui/directives/confirm_click.js diff --git a/src/KbnServer/ui/public/directives/css_truncate.js b/src/ui/directives/css_truncate.js similarity index 100% rename from src/KbnServer/ui/public/directives/css_truncate.js rename to src/ui/directives/css_truncate.js diff --git a/src/KbnServer/ui/public/directives/field_name.js b/src/ui/directives/field_name.js similarity index 100% rename from src/KbnServer/ui/public/directives/field_name.js rename to src/ui/directives/field_name.js diff --git a/src/KbnServer/ui/public/directives/file_upload.js b/src/ui/directives/file_upload.js similarity index 100% rename from src/KbnServer/ui/public/directives/file_upload.js rename to src/ui/directives/file_upload.js diff --git a/src/KbnServer/ui/public/directives/inequality.js b/src/ui/directives/inequality.js similarity index 100% rename from src/KbnServer/ui/public/directives/inequality.js rename to src/ui/directives/inequality.js diff --git a/src/KbnServer/ui/public/directives/infinite_scroll.js b/src/ui/directives/infinite_scroll.js similarity index 100% rename from src/KbnServer/ui/public/directives/infinite_scroll.js rename to src/ui/directives/infinite_scroll.js diff --git a/src/KbnServer/ui/public/directives/info.js b/src/ui/directives/info.js similarity index 100% rename from src/KbnServer/ui/public/directives/info.js rename to src/ui/directives/info.js diff --git a/src/KbnServer/ui/public/directives/input_datetime.js b/src/ui/directives/input_datetime.js similarity index 100% rename from src/KbnServer/ui/public/directives/input_datetime.js rename to src/ui/directives/input_datetime.js diff --git a/src/KbnServer/ui/public/directives/input_focus.js b/src/ui/directives/input_focus.js similarity index 100% rename from src/KbnServer/ui/public/directives/input_focus.js rename to src/ui/directives/input_focus.js diff --git a/src/KbnServer/ui/public/directives/input_whole_number.js b/src/ui/directives/input_whole_number.js similarity index 100% rename from src/KbnServer/ui/public/directives/input_whole_number.js rename to src/ui/directives/input_whole_number.js diff --git a/src/KbnServer/ui/public/directives/paginate.js b/src/ui/directives/paginate.js similarity index 100% rename from src/KbnServer/ui/public/directives/paginate.js rename to src/ui/directives/paginate.js diff --git a/src/KbnServer/ui/public/directives/pretty_duration.js b/src/ui/directives/pretty_duration.js similarity index 100% rename from src/KbnServer/ui/public/directives/pretty_duration.js rename to src/ui/directives/pretty_duration.js diff --git a/src/KbnServer/ui/public/directives/rows.js b/src/ui/directives/rows.js similarity index 100% rename from src/KbnServer/ui/public/directives/rows.js rename to src/ui/directives/rows.js diff --git a/src/KbnServer/ui/public/directives/saved_object_finder.js b/src/ui/directives/saved_object_finder.js similarity index 100% rename from src/KbnServer/ui/public/directives/saved_object_finder.js rename to src/ui/directives/saved_object_finder.js diff --git a/src/KbnServer/ui/public/directives/spinner.js b/src/ui/directives/spinner.js similarity index 100% rename from src/KbnServer/ui/public/directives/spinner.js rename to src/ui/directives/spinner.js diff --git a/src/KbnServer/ui/public/directives/truncated.js b/src/ui/directives/truncated.js similarity index 100% rename from src/KbnServer/ui/public/directives/truncated.js rename to src/ui/directives/truncated.js diff --git a/src/KbnServer/ui/public/directives/validate_cidr_mask.js b/src/ui/directives/validate_cidr_mask.js similarity index 100% rename from src/KbnServer/ui/public/directives/validate_cidr_mask.js rename to src/ui/directives/validate_cidr_mask.js diff --git a/src/KbnServer/ui/public/directives/validate_date_math.js b/src/ui/directives/validate_date_math.js similarity index 100% rename from src/KbnServer/ui/public/directives/validate_date_math.js rename to src/ui/directives/validate_date_math.js diff --git a/src/KbnServer/ui/public/directives/validate_index_name.js b/src/ui/directives/validate_index_name.js similarity index 100% rename from src/KbnServer/ui/public/directives/validate_index_name.js rename to src/ui/directives/validate_index_name.js diff --git a/src/KbnServer/ui/public/directives/validate_ip.js b/src/ui/directives/validate_ip.js similarity index 100% rename from src/KbnServer/ui/public/directives/validate_ip.js rename to src/ui/directives/validate_ip.js diff --git a/src/KbnServer/ui/public/directives/validate_json.js b/src/ui/directives/validate_json.js similarity index 100% rename from src/KbnServer/ui/public/directives/validate_json.js rename to src/ui/directives/validate_json.js diff --git a/src/KbnServer/ui/public/filters/_prop_filter.js b/src/ui/filters/_prop_filter.js similarity index 100% rename from src/KbnServer/ui/public/filters/_prop_filter.js rename to src/ui/filters/_prop_filter.js diff --git a/src/KbnServer/ui/public/filters/commaList.js b/src/ui/filters/commaList.js similarity index 100% rename from src/KbnServer/ui/public/filters/commaList.js rename to src/ui/filters/commaList.js diff --git a/src/KbnServer/ui/public/filters/field_type.js b/src/ui/filters/field_type.js similarity index 100% rename from src/KbnServer/ui/public/filters/field_type.js rename to src/ui/filters/field_type.js diff --git a/src/KbnServer/ui/public/filters/label.js b/src/ui/filters/label.js similarity index 100% rename from src/KbnServer/ui/public/filters/label.js rename to src/ui/filters/label.js diff --git a/src/KbnServer/ui/public/filters/match_any.js b/src/ui/filters/match_any.js similarity index 100% rename from src/KbnServer/ui/public/filters/match_any.js rename to src/ui/filters/match_any.js diff --git a/src/KbnServer/ui/public/filters/moment.js b/src/ui/filters/moment.js similarity index 100% rename from src/KbnServer/ui/public/filters/moment.js rename to src/ui/filters/moment.js diff --git a/src/KbnServer/ui/public/filters/rison.js b/src/ui/filters/rison.js similarity index 100% rename from src/KbnServer/ui/public/filters/rison.js rename to src/ui/filters/rison.js diff --git a/src/KbnServer/ui/public/filters/short_dots.js b/src/ui/filters/short_dots.js similarity index 100% rename from src/KbnServer/ui/public/filters/short_dots.js rename to src/ui/filters/short_dots.js diff --git a/src/KbnServer/ui/public/filters/start_from.js b/src/ui/filters/start_from.js similarity index 100% rename from src/KbnServer/ui/public/filters/start_from.js rename to src/ui/filters/start_from.js diff --git a/src/KbnServer/ui/public/filters/trust_as_html.js b/src/ui/filters/trust_as_html.js similarity index 100% rename from src/KbnServer/ui/public/filters/trust_as_html.js rename to src/ui/filters/trust_as_html.js diff --git a/src/KbnServer/ui/public/filters/unique.js b/src/ui/filters/unique.js similarity index 100% rename from src/KbnServer/ui/public/filters/unique.js rename to src/ui/filters/unique.js diff --git a/src/KbnServer/ui/public/filters/uriescape.js b/src/ui/filters/uriescape.js similarity index 100% rename from src/KbnServer/ui/public/filters/uriescape.js rename to src/ui/filters/uriescape.js diff --git a/src/KbnServer/ui/public/images/initial_load.gif b/src/ui/images/initial_load.gif similarity index 100% rename from src/KbnServer/ui/public/images/initial_load.gif rename to src/ui/images/initial_load.gif diff --git a/src/KbnServer/ui/public/images/kibana.png b/src/ui/images/kibana.png similarity index 100% rename from src/KbnServer/ui/public/images/kibana.png rename to src/ui/images/kibana.png diff --git a/src/KbnServer/ui/public/partials/global_config.html b/src/ui/partials/global_config.html similarity index 100% rename from src/KbnServer/ui/public/partials/global_config.html rename to src/ui/partials/global_config.html diff --git a/src/KbnServer/ui/public/partials/info.html b/src/ui/partials/info.html similarity index 100% rename from src/KbnServer/ui/public/partials/info.html rename to src/ui/partials/info.html diff --git a/src/KbnServer/ui/public/partials/nav_config.html b/src/ui/partials/nav_config.html similarity index 100% rename from src/KbnServer/ui/public/partials/nav_config.html rename to src/ui/partials/nav_config.html diff --git a/src/KbnServer/ui/public/partials/paginate_controls.html b/src/ui/partials/paginate_controls.html similarity index 100% rename from src/KbnServer/ui/public/partials/paginate_controls.html rename to src/ui/partials/paginate_controls.html diff --git a/src/KbnServer/ui/public/partials/saved_object_finder.html b/src/ui/partials/saved_object_finder.html similarity index 100% rename from src/KbnServer/ui/public/partials/saved_object_finder.html rename to src/ui/partials/saved_object_finder.html diff --git a/src/KbnServer/ui/public/partials/truncate_by_height.html b/src/ui/partials/truncate_by_height.html similarity index 100% rename from src/KbnServer/ui/public/partials/truncate_by_height.html rename to src/ui/partials/truncate_by_height.html diff --git a/src/KbnServer/ui/public/registry/_registry.js b/src/ui/registry/_registry.js similarity index 100% rename from src/KbnServer/ui/public/registry/_registry.js rename to src/ui/registry/_registry.js diff --git a/src/KbnServer/ui/public/registry/apps.js b/src/ui/registry/apps.js similarity index 100% rename from src/KbnServer/ui/public/registry/apps.js rename to src/ui/registry/apps.js diff --git a/src/KbnServer/ui/public/registry/field_formats.js b/src/ui/registry/field_formats.js similarity index 100% rename from src/KbnServer/ui/public/registry/field_formats.js rename to src/ui/registry/field_formats.js diff --git a/src/KbnServer/ui/public/registry/spy_modes.js b/src/ui/registry/spy_modes.js similarity index 100% rename from src/KbnServer/ui/public/registry/spy_modes.js rename to src/ui/registry/spy_modes.js diff --git a/src/KbnServer/ui/public/registry/vis_types.js b/src/ui/registry/vis_types.js similarity index 100% rename from src/KbnServer/ui/public/registry/vis_types.js rename to src/ui/registry/vis_types.js diff --git a/src/KbnServer/ui/public/require.config.js b/src/ui/require.config.js similarity index 98% rename from src/KbnServer/ui/public/require.config.js rename to src/ui/require.config.js index 66fce0a28c217..acf02d0e79042 100644 --- a/src/KbnServer/ui/public/require.config.js +++ b/src/ui/require.config.js @@ -4,6 +4,7 @@ require.config({ // common modules, shortcut for clarity lodash: 'utils/lodash-mixins/index', errors: 'components/errors', + chrome: 'components/chrome/chrome', modules: 'components/modules', routes: 'components/routes/index', diff --git a/src/KbnServer/ui/public/ui-styles/_bootstrap.less b/src/ui/ui-styles/_bootstrap.less similarity index 100% rename from src/KbnServer/ui/public/ui-styles/_bootstrap.less rename to src/ui/ui-styles/_bootstrap.less diff --git a/src/KbnServer/ui/public/ui-styles/_callout.less b/src/ui/ui-styles/_callout.less similarity index 100% rename from src/KbnServer/ui/public/ui-styles/_callout.less rename to src/ui/ui-styles/_callout.less diff --git a/src/KbnServer/ui/public/ui-styles/_control_group.less b/src/ui/ui-styles/_control_group.less similarity index 100% rename from src/KbnServer/ui/public/ui-styles/_control_group.less rename to src/ui/ui-styles/_control_group.less diff --git a/src/KbnServer/ui/public/ui-styles/_font_icons.less b/src/ui/ui-styles/_font_icons.less similarity index 100% rename from src/KbnServer/ui/public/ui-styles/_font_icons.less rename to src/ui/ui-styles/_font_icons.less diff --git a/src/KbnServer/ui/public/ui-styles/_glyphicons.less b/src/ui/ui-styles/_glyphicons.less similarity index 100% rename from src/KbnServer/ui/public/ui-styles/_glyphicons.less rename to src/ui/ui-styles/_glyphicons.less diff --git a/src/KbnServer/ui/public/ui-styles/_hintbox.less b/src/ui/ui-styles/_hintbox.less similarity index 100% rename from src/KbnServer/ui/public/ui-styles/_hintbox.less rename to src/ui/ui-styles/_hintbox.less diff --git a/src/KbnServer/ui/public/ui-styles/_input.less b/src/ui/ui-styles/_input.less similarity index 100% rename from src/KbnServer/ui/public/ui-styles/_input.less rename to src/ui/ui-styles/_input.less diff --git a/src/KbnServer/ui/public/ui-styles/_mixins.less b/src/ui/ui-styles/_mixins.less similarity index 100% rename from src/KbnServer/ui/public/ui-styles/_mixins.less rename to src/ui/ui-styles/_mixins.less diff --git a/src/KbnServer/ui/public/ui-styles/_navbar.less b/src/ui/ui-styles/_navbar.less similarity index 100% rename from src/KbnServer/ui/public/ui-styles/_navbar.less rename to src/ui/ui-styles/_navbar.less diff --git a/src/KbnServer/ui/public/ui-styles/_notify.less b/src/ui/ui-styles/_notify.less similarity index 100% rename from src/KbnServer/ui/public/ui-styles/_notify.less rename to src/ui/ui-styles/_notify.less diff --git a/src/KbnServer/ui/public/ui-styles/_pagination.less b/src/ui/ui-styles/_pagination.less similarity index 100% rename from src/KbnServer/ui/public/ui-styles/_pagination.less rename to src/ui/ui-styles/_pagination.less diff --git a/src/KbnServer/ui/public/ui-styles/_sidebar.less b/src/ui/ui-styles/_sidebar.less similarity index 100% rename from src/KbnServer/ui/public/ui-styles/_sidebar.less rename to src/ui/ui-styles/_sidebar.less diff --git a/src/KbnServer/ui/public/ui-styles/_spinner.less b/src/ui/ui-styles/_spinner.less similarity index 100% rename from src/KbnServer/ui/public/ui-styles/_spinner.less rename to src/ui/ui-styles/_spinner.less diff --git a/src/KbnServer/ui/public/ui-styles/_table.less b/src/ui/ui-styles/_table.less similarity index 100% rename from src/KbnServer/ui/public/ui-styles/_table.less rename to src/ui/ui-styles/_table.less diff --git a/src/KbnServer/ui/public/ui-styles/_truncate.less b/src/ui/ui-styles/_truncate.less similarity index 100% rename from src/KbnServer/ui/public/ui-styles/_truncate.less rename to src/ui/ui-styles/_truncate.less diff --git a/src/KbnServer/ui/public/ui-styles/_variables.less b/src/ui/ui-styles/_variables.less similarity index 100% rename from src/KbnServer/ui/public/ui-styles/_variables.less rename to src/ui/ui-styles/_variables.less diff --git a/src/KbnServer/ui/public/ui-styles/main.less b/src/ui/ui-styles/main.less similarity index 100% rename from src/KbnServer/ui/public/ui-styles/main.less rename to src/ui/ui-styles/main.less diff --git a/src/KbnServer/ui/public/ui-styles/theme/_theme.less b/src/ui/ui-styles/theme/_theme.less similarity index 100% rename from src/KbnServer/ui/public/ui-styles/theme/_theme.less rename to src/ui/ui-styles/theme/_theme.less diff --git a/src/KbnServer/ui/public/ui-styles/theme/_variables.less b/src/ui/ui-styles/theme/_variables.less similarity index 100% rename from src/KbnServer/ui/public/ui-styles/theme/_variables.less rename to src/ui/ui-styles/theme/_variables.less diff --git a/src/KbnServer/ui/public/ui-styles/theme/elk.ico b/src/ui/ui-styles/theme/elk.ico similarity index 100% rename from src/KbnServer/ui/public/ui-styles/theme/elk.ico rename to src/ui/ui-styles/theme/elk.ico diff --git a/src/KbnServer/ui/public/utils/BaseObject.js b/src/ui/utils/BaseObject.js similarity index 100% rename from src/KbnServer/ui/public/utils/BaseObject.js rename to src/ui/utils/BaseObject.js diff --git a/src/KbnServer/ui/public/utils/SimpleEmitter.js b/src/ui/utils/SimpleEmitter.js similarity index 100% rename from src/KbnServer/ui/public/utils/SimpleEmitter.js rename to src/ui/utils/SimpleEmitter.js diff --git a/src/KbnServer/ui/public/utils/add_word_breaks.js b/src/ui/utils/add_word_breaks.js similarity index 100% rename from src/KbnServer/ui/public/utils/add_word_breaks.js rename to src/ui/utils/add_word_breaks.js diff --git a/src/KbnServer/ui/public/utils/brush_event.js b/src/ui/utils/brush_event.js similarity index 100% rename from src/KbnServer/ui/public/utils/brush_event.js rename to src/ui/utils/brush_event.js diff --git a/src/KbnServer/ui/public/utils/cidr_mask.js b/src/ui/utils/cidr_mask.js similarity index 100% rename from src/KbnServer/ui/public/utils/cidr_mask.js rename to src/ui/utils/cidr_mask.js diff --git a/src/KbnServer/ui/public/utils/config_template.js b/src/ui/utils/config_template.js similarity index 100% rename from src/KbnServer/ui/public/utils/config_template.js rename to src/ui/utils/config_template.js diff --git a/src/KbnServer/ui/public/utils/date_range.js b/src/ui/utils/date_range.js similarity index 100% rename from src/KbnServer/ui/public/utils/date_range.js rename to src/ui/utils/date_range.js diff --git a/src/KbnServer/ui/public/utils/datemath.js b/src/ui/utils/datemath.js similarity index 100% rename from src/KbnServer/ui/public/utils/datemath.js rename to src/ui/utils/datemath.js diff --git a/src/KbnServer/ui/public/utils/decode_geo_hash.js b/src/ui/utils/decode_geo_hash.js similarity index 100% rename from src/KbnServer/ui/public/utils/decode_geo_hash.js rename to src/ui/utils/decode_geo_hash.js diff --git a/src/KbnServer/ui/public/utils/diff_object.js b/src/ui/utils/diff_object.js similarity index 100% rename from src/KbnServer/ui/public/utils/diff_object.js rename to src/ui/utils/diff_object.js diff --git a/src/KbnServer/ui/public/utils/diff_time_picker_vals.js b/src/ui/utils/diff_time_picker_vals.js similarity index 100% rename from src/KbnServer/ui/public/utils/diff_time_picker_vals.js rename to src/ui/utils/diff_time_picker_vals.js diff --git a/src/KbnServer/ui/public/utils/esBool.js b/src/ui/utils/esBool.js similarity index 100% rename from src/KbnServer/ui/public/utils/esBool.js rename to src/ui/utils/esBool.js diff --git a/src/KbnServer/ui/public/utils/ipv4_address.js b/src/ui/utils/ipv4_address.js similarity index 100% rename from src/KbnServer/ui/public/utils/ipv4_address.js rename to src/ui/utils/ipv4_address.js diff --git a/src/KbnServer/ui/public/utils/key_map.js b/src/ui/utils/key_map.js similarity index 100% rename from src/KbnServer/ui/public/utils/key_map.js rename to src/ui/utils/key_map.js diff --git a/src/KbnServer/ui/public/utils/lodash-mixins/collection.js b/src/ui/utils/lodash-mixins/collection.js similarity index 100% rename from src/KbnServer/ui/public/utils/lodash-mixins/collection.js rename to src/ui/utils/lodash-mixins/collection.js diff --git a/src/KbnServer/ui/public/utils/lodash-mixins/function.js b/src/ui/utils/lodash-mixins/function.js similarity index 100% rename from src/KbnServer/ui/public/utils/lodash-mixins/function.js rename to src/ui/utils/lodash-mixins/function.js diff --git a/src/KbnServer/ui/public/utils/lodash-mixins/index.js b/src/ui/utils/lodash-mixins/index.js similarity index 100% rename from src/KbnServer/ui/public/utils/lodash-mixins/index.js rename to src/ui/utils/lodash-mixins/index.js diff --git a/src/KbnServer/ui/public/utils/lodash-mixins/lang.js b/src/ui/utils/lodash-mixins/lang.js similarity index 100% rename from src/KbnServer/ui/public/utils/lodash-mixins/lang.js rename to src/ui/utils/lodash-mixins/lang.js diff --git a/src/KbnServer/ui/public/utils/lodash-mixins/object.js b/src/ui/utils/lodash-mixins/object.js similarity index 100% rename from src/KbnServer/ui/public/utils/lodash-mixins/object.js rename to src/ui/utils/lodash-mixins/object.js diff --git a/src/KbnServer/ui/public/utils/lodash-mixins/oop.js b/src/ui/utils/lodash-mixins/oop.js similarity index 100% rename from src/KbnServer/ui/public/utils/lodash-mixins/oop.js rename to src/ui/utils/lodash-mixins/oop.js diff --git a/src/KbnServer/ui/public/utils/lodash-mixins/string.js b/src/ui/utils/lodash-mixins/string.js similarity index 100% rename from src/KbnServer/ui/public/utils/lodash-mixins/string.js rename to src/ui/utils/lodash-mixins/string.js diff --git a/src/KbnServer/ui/public/utils/mapping_setup.js b/src/ui/utils/mapping_setup.js similarity index 100% rename from src/KbnServer/ui/public/utils/mapping_setup.js rename to src/ui/utils/mapping_setup.js diff --git a/src/KbnServer/ui/public/utils/no_white_space.js b/src/ui/utils/no_white_space.js similarity index 100% rename from src/KbnServer/ui/public/utils/no_white_space.js rename to src/ui/utils/no_white_space.js diff --git a/src/KbnServer/ui/public/utils/obj_define.js b/src/ui/utils/obj_define.js similarity index 100% rename from src/KbnServer/ui/public/utils/obj_define.js rename to src/ui/utils/obj_define.js diff --git a/src/KbnServer/ui/public/utils/ordinal_suffix.js b/src/ui/utils/ordinal_suffix.js similarity index 100% rename from src/KbnServer/ui/public/utils/ordinal_suffix.js rename to src/ui/utils/ordinal_suffix.js diff --git a/src/KbnServer/ui/public/utils/parse_interval.js b/src/ui/utils/parse_interval.js similarity index 100% rename from src/KbnServer/ui/public/utils/parse_interval.js rename to src/ui/utils/parse_interval.js diff --git a/src/KbnServer/ui/public/utils/query_string.js b/src/ui/utils/query_string.js similarity index 100% rename from src/KbnServer/ui/public/utils/query_string.js rename to src/ui/utils/query_string.js diff --git a/src/KbnServer/ui/public/utils/range.js b/src/ui/utils/range.js similarity index 100% rename from src/KbnServer/ui/public/utils/range.js rename to src/ui/utils/range.js diff --git a/src/KbnServer/ui/public/utils/rison.js b/src/ui/utils/rison.js similarity index 100% rename from src/KbnServer/ui/public/utils/rison.js rename to src/ui/utils/rison.js diff --git a/src/KbnServer/ui/public/utils/sequencer.js b/src/ui/utils/sequencer.js similarity index 100% rename from src/KbnServer/ui/public/utils/sequencer.js rename to src/ui/utils/sequencer.js diff --git a/src/KbnServer/ui/public/utils/slugify_id.js b/src/ui/utils/slugify_id.js similarity index 100% rename from src/KbnServer/ui/public/utils/slugify_id.js rename to src/ui/utils/slugify_id.js diff --git a/src/KbnServer/ui/public/utils/supports.js b/src/ui/utils/supports.js similarity index 100% rename from src/KbnServer/ui/public/utils/supports.js rename to src/ui/utils/supports.js diff --git a/src/KbnServer/ui/public/utils/versionmath.js b/src/ui/utils/versionmath.js similarity index 100% rename from src/KbnServer/ui/public/utils/versionmath.js rename to src/ui/utils/versionmath.js diff --git a/tasks/config/less.js b/tasks/config/less.js index 64386a46b17eb..e2f02a5460f00 100644 --- a/tasks/config/less.js +++ b/tasks/config/less.js @@ -7,7 +7,7 @@ module.exports = { paths: [ 'bower_components/lesshat/build/', 'bower_components', - 'src/KbnServer/ui/public' + 'src/ui' ] }, dev: { From daadf9709ba2dc03772ee66ff782405d735b3c32 Mon Sep 17 00:00:00 2001 From: Spencer Alger Date: Thu, 25 Jun 2015 16:53:12 -0700 Subject: [PATCH 010/137] document KbnServer class --- src/server/KbnServer.js | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/server/KbnServer.js b/src/server/KbnServer.js index 56576ef1f0466..b310e452ac5d8 100644 --- a/src/server/KbnServer.js +++ b/src/server/KbnServer.js @@ -23,16 +23,33 @@ function KbnServer(settings) { )); } -KbnServer.prototype.mixin = function () { +/** + * Extend the KbnServer outside of the constraits of a plugin. This allows access + * to APIs that are not exposed (intentionally) to the plugins and should only + * be used when the code will be kept up to date with Kibana. + * + * @param {...function} - functions that should be called to mixin functionality. + * They are called with the arguments (kibana, server, config) + * and can return a promise to delay execution of the next mixin + * @return {Promise} - promise that is resolved when the final mixin completes. + */ +KbnServer.prototype.mixin = function (/* ...fns */) { + var fns = _.toArray(arguments); var self = this; var server = self.server; - return Promise.each(_.toArray(arguments), function (fn) { + return Promise.each(fns, function (fn) { return fn(self, server, server.config && server.config()); }) + // clear the return value .then(_.noop); }; +/** + * Tell the server to listen for incoming requests. + * + * @return {Promise} resolved with the server once it is listening + */ KbnServer.prototype.listen = function () { var self = this; var server = self.server; @@ -54,6 +71,7 @@ KbnServer.prototype.listen = function () { ); }; +// if this module was called from the command line, go ahead and start listening if (require.main === module) { (new KbnServer()) .listen() From 1d35cff063146f356491270d451e356accf320ec Mon Sep 17 00:00:00 2001 From: Spencer Alger Date: Thu, 25 Jun 2015 20:24:49 -0700 Subject: [PATCH 011/137] added app switcher --- src/plugins/kibana/index.js | 4 +- src/server/KbnServer.js | 4 +- src/server/config/index.js | 9 +-- src/server/http/index.js | 21 ++++- src/server/plugins/index.js | 17 +--- src/server/ui/UiApp.js | 21 ----- src/server/ui/apps.js | 45 +++++++++++ src/server/ui/helpers.js | 22 +++++ src/server/ui/index.js | 80 ++----------------- src/server/ui/lib/UiApp.js | 29 +++++++ src/server/ui/{ => lib}/UiExports.js | 2 + src/server/ui/{ => lib}/defaultModuleIds.js | 0 .../ui/{ => lib}/findBowerComponents.js | 0 src/server/ui/{ => lib}/findModuleIds.js | 0 src/server/ui/lib/uiDir.js | 1 + src/server/ui/statics.js | 34 ++++++++ src/server/ui/uiDir.js | 1 - src/server/ui/views/bootstrap.jade | 20 ++--- src/ui/appSwitcher/appSwitcher.html | 12 +++ src/ui/appSwitcher/appSwitcher.less | 43 ++++++++++ src/ui/appSwitcher/index.js | 19 +++++ src/ui/bootstrap.js | 17 ++-- src/ui/components/chrome/chrome.html | 5 ++ src/ui/components/chrome/chrome.js | 10 +++ src/ui/components/clipboard/clipboard.js | 6 +- src/ui/registry/apps.js | 7 -- src/ui/require.config.js | 2 +- 27 files changed, 278 insertions(+), 153 deletions(-) delete mode 100644 src/server/ui/UiApp.js create mode 100644 src/server/ui/apps.js create mode 100644 src/server/ui/helpers.js create mode 100644 src/server/ui/lib/UiApp.js rename src/server/ui/{ => lib}/UiExports.js (97%) rename src/server/ui/{ => lib}/defaultModuleIds.js (100%) rename src/server/ui/{ => lib}/findBowerComponents.js (100%) rename src/server/ui/{ => lib}/findModuleIds.js (100%) create mode 100644 src/server/ui/lib/uiDir.js create mode 100644 src/server/ui/statics.js delete mode 100644 src/server/ui/uiDir.js create mode 100644 src/ui/appSwitcher/appSwitcher.html create mode 100644 src/ui/appSwitcher/appSwitcher.less create mode 100644 src/ui/appSwitcher/index.js delete mode 100644 src/ui/registry/apps.js diff --git a/src/plugins/kibana/index.js b/src/plugins/kibana/index.js index 206c240c08115..7a80e4b86cdb9 100644 --- a/src/plugins/kibana/index.js +++ b/src/plugins/kibana/index.js @@ -1,12 +1,11 @@ module.exports = function (kibana) { return new kibana.Plugin({ - exports: { app: { title: 'Kibana', description: 'the kibana you know and love', - icon: 'images/logo.png', + icon: 'images/kibana.png', main: 'plugins/kibana/index', uses: [ 'visTypes', @@ -14,7 +13,6 @@ module.exports = function (kibana) { ] } } - }); }; diff --git a/src/server/KbnServer.js b/src/server/KbnServer.js index b310e452ac5d8..7238bdf1f9f36 100644 --- a/src/server/KbnServer.js +++ b/src/server/KbnServer.js @@ -11,8 +11,10 @@ function KbnServer(settings) { this.version = package.version; this.build = package.build || false; this.rootDir = rootDir; - this.server = new Hapi.Server(); this.settings = settings || {}; + + this.server = new Hapi.Server(); + this.ready = _.constant(this.mixin( require('./config'), require('./logging'), diff --git a/src/server/config/index.js b/src/server/config/index.js index 8a4d4a509e175..7d342f296a7fd 100644 --- a/src/server/config/index.js +++ b/src/server/config/index.js @@ -1,9 +1,8 @@ -var _ = require('lodash'); -var Config = require('./config'); -var schema = require('./schema'); +module.exports = function (kibana, server) { + var _ = require('lodash'); + var Config = require('./config'); + var schema = require('./schema'); -module.exports = function (kibana) { - var server = kibana.server; var settings = kibana.settings; server.decorate('server', 'config', _.constant(new Config(schema, settings))); diff --git a/src/server/http/index.js b/src/server/http/index.js index 6194ecade7fec..741b9c5bdac01 100644 --- a/src/server/http/index.js +++ b/src/server/http/index.js @@ -1,4 +1,7 @@ module.exports = function (kibana, server, config) { + var Boom = require('boom'); + var parse = require('url').parse; + var format = require('url').format; // Create a new connection server.connection({ @@ -6,6 +9,19 @@ module.exports = function (kibana, server, config) { port: config.get('kibana.server.port') }); + server.ext('onRequest', function (req, reply) { + var path = req.path; + if (path.charAt(path.length - 1) !== '/') { + return reply.continue(); + } + + return reply.redirect(format({ + search: req.url.search, + pathname: path.slice(0, -1), + })) + .permanent(true); + }); + // provide a simple way to expose static directories server.decorate('server', 'exposeStaticDir', function (routePath, dirPath) { this.route({ @@ -15,7 +31,6 @@ module.exports = function (kibana, server, config) { directory: { path: dirPath, listing: true, - redirectToSlash: true, lookupCompressed: true } } @@ -34,8 +49,8 @@ module.exports = function (kibana, server, config) { }); // attach the app name to the server, so we can be sure we are actually talking to kibana - server.ext('onPreResponse', function (request, reply) { - var response = request.response; + server.ext('onPreResponse', function (req, reply) { + var response = req.response; if (response.isBoom) { response.output.headers['x-app-name'] = kibana.name; diff --git a/src/server/plugins/index.js b/src/server/plugins/index.js index fd2fa0de30b86..d51680f8f06de 100644 --- a/src/server/plugins/index.js +++ b/src/server/plugins/index.js @@ -12,19 +12,10 @@ module.exports = function (kibana) { var scanDirs = [].concat(config.get('kibana.pluginScanDirs')); var absolutePaths = [].concat(config.get('kibana.pluginPaths')); - server.route({ - path: '/plugins/{id}/{path*}', - method: 'GET', - handler: function (req, reply) { - var id = req.params.id; - var path = req.params.path; - var plugin = _.get(server.plugins, [id, 'plugin']); - if (!plugin || !plugin.publicDir || !path) { - return reply(Boom.notFound()); - } - - return reply.file(join(plugin.publicDir, path)); - } + server.exposeStaticDir('/plugins/{id}/{path*}', function (req) { + var id = req.params.id; + var plugin = _.get(server.plugins, [id, 'plugin']); + return (plugin && plugin.publicDir) ? plugin.publicDir : Boom.notFound(); }); return Promise.try(scan, [server, scanDirs]) diff --git a/src/server/ui/UiApp.js b/src/server/ui/UiApp.js deleted file mode 100644 index 9407c97b4658e..0000000000000 --- a/src/server/ui/UiApp.js +++ /dev/null @@ -1,21 +0,0 @@ -var _ = require('lodash'); -var join = require('path').join; - -function UiApp(uiExports, plugin, spec) { - this.uiExports = uiExports; - this.spec = spec; - - this.id = spec.id || plugin.name; - this.publicDir = spec.publicDir || join(plugin.path, 'public'); - this.useModuleIds = _.once(this.useModuleIds); -} - -UiApp.prototype.mainModuleId = function () { - return this.spec.main; -}; - -UiApp.prototype.useModuleIds = function () { - return this.uiExports.find(_.get(this, 'spec.uses', [])); -}; - -module.exports = UiApp; diff --git a/src/server/ui/apps.js b/src/server/ui/apps.js new file mode 100644 index 0000000000000..0c942f2c581cd --- /dev/null +++ b/src/server/ui/apps.js @@ -0,0 +1,45 @@ +module.exports = function (kibana, server, config) { + var _ = require('lodash'); + var Boom = require('boom'); + + var defaultModuleIds = require('./lib/defaultModuleIds'); + var UiExports = require('./lib/UiExports'); + var UiApp = require('./lib/UiApp'); + + // export manager + kibana.uiExports = new UiExports(defaultModuleIds()); + var switcherApp = new UiApp(kibana.uiExports, null, { + id: 'appSwitcher', + main: 'appSwitcher/index' + }); + + // serve the app switcher + server.route({ + path: '/apps', + method: 'GET', + handler: function (req, reply) { + return reply.renderApp(switcherApp); + } + }); + + // serve the app switcher + server.route({ + path: '/api/apps', + method: 'GET', + handler: function (req, reply) { + return reply(_.values(kibana.uiExports.apps)); + } + }); + + server.route({ + path: '/app/{id}', + method: 'GET', + handler: function (req, reply) { + var id = req.params.id; + var app = kibana.uiExports.apps[id]; + if (!app) return reply(Boom.notFound('Unkown app ' + id)); + + return reply.renderApp(app); + } + }); +}; diff --git a/src/server/ui/helpers.js b/src/server/ui/helpers.js new file mode 100644 index 0000000000000..1d2ab0680c7ac --- /dev/null +++ b/src/server/ui/helpers.js @@ -0,0 +1,22 @@ +module.exports = function (kibana, server, config) { + var _ = require('lodash'); + + server.decorate('reply', 'renderApp', function (app) { + var payload = { + app: app, + appCount: kibana.uiExports.appCount, + version: kibana.version, + buildSha: _.get(kibana, 'build.sha', '@@buildSha'), + buildNumber: _.get(kibana, 'build.number', '@@buildNum'), + cacheBust: _.get(kibana, 'build.number', ''), + kbnIndex: config.get('kibana.index'), + esShardTimeout: config.get('elasticsearch.shardTimeout') + }; + + return this.view('bootstrap', { + app: app, + cacheBust: payload.cacheBust, + kibanaPayload: payload + }); + }); +}; diff --git a/src/server/ui/index.js b/src/server/ui/index.js index 625d134a43b9f..0c1c13d888e29 100644 --- a/src/server/ui/index.js +++ b/src/server/ui/index.js @@ -1,16 +1,6 @@ module.exports = function (kibana, server, config) { var _ = require('lodash'); var join = require('path').join; - var Boom = require('boom'); - var exists = require('fs').existsSync; - var stat = require('fs').statSync; - var relative = require('path').relative; - - var UiExports = require('./UiExports'); - var defaultModuleIds = require('./defaultModuleIds'); - var findBowerComponents = require('./findBowerComponents'); - - var uiDir = require('./uiDir'); // setup jade for templates server.views({ @@ -20,70 +10,10 @@ module.exports = function (kibana, server, config) { } }); - // export manager - kibana.uiExports = new UiExports(defaultModuleIds()); - - server.decorate('server', 'getApps', function () { - return kibana.uiExports.apps || {}; - }); - - server.decorate('server', 'getApp', function (id) { - return this.getApps()[id]; - }); + return kibana.mixin( + require('./helpers'), + require('./statics'), + require('./apps') + ); - // initialize the browser runtime for the app - server.route({ - path: '/app/{id}/', - method: 'GET', - handler: function (req, reply) { - var id = req.params.id; - var app = server.getApp(id); - if (!app) return reply(Boom.notFound('Unkown app ' + id)); - - return reply.view('bootstrap', { - app: app, - version: kibana.version, - buildSha: _.get(kibana, 'build.sha', '@@buildSha'), - buildNumber: _.get(kibana, 'build.number', '@@buildNum'), - kbnIndex: config.get('kibana.index'), - esShardTimeout: config.get('elasticsearch.shardTimeout') - }); - } - }); - - // redirect missing slashes - server.route({ - path: '/app/{id}', - method: 'GET', - handler: function (req, reply) { - reply.redirect('/app/' + req.params.id + '/').permanent(true); - } - }); - - // provide access to an app's public directories - server.exposeStaticDir('/app/{id}/{path*}', function pickDir(req) { - var id = req.params.id; - var app = server.getApps()[id]; - - if (!app) return Boom.notFound('Unkown app ' + id); - return app.publicDir || Boom.notFound(id + ' does not server public files'); - }); - - // expose the first bower_components directory found within kibana's rootDir starting - // in this directory and moving out - server.exposeStaticDir('/bower_components/{path*}', findBowerComponents(__dirname, kibana.rootDir)); - - // expose our public files at the server root explicitly, rather than with a catch all route - require('fs') - .readdirSync(uiDir) - .forEach(function (name) { - var path = join(uiDir, name); - - if (stat(path).isDirectory()) { - server.exposeStaticDir('/' + name + '/{path*}', path); - } - else { - server.exposeStaticFile('/' + name, path); - } - }); }; diff --git a/src/server/ui/lib/UiApp.js b/src/server/ui/lib/UiApp.js new file mode 100644 index 0000000000000..ef562b5538dec --- /dev/null +++ b/src/server/ui/lib/UiApp.js @@ -0,0 +1,29 @@ +var _ = require('lodash'); +var join = require('path').join; + +function UiApp(uiExports, plugin, spec) { + this.uiExports = uiExports; + this.plugin = plugin || null; + this.spec = spec || {}; + + this.id = this.spec.id || _.get(this, 'plugin.name'); + if (!this.id) { + throw new Error('Every app must specify it\'s id'); + } + + this.main = this.spec.main; + this.title = this.spec.title; + this.description = this.spec.description; + this.icon = this.spec.icon; + this.useModuleIds = _.once(this.useModuleIds); +} + +UiApp.prototype.useModuleIds = function () { + return this.uiExports.find(_.get(this, 'spec.uses', [])); +}; + +UiApp.prototype.toJSON = function () { + return _.pick(this, ['id', 'title', 'description', 'icon', 'publicDir', 'main']); +}; + +module.exports = UiApp; diff --git a/src/server/ui/UiExports.js b/src/server/ui/lib/UiExports.js similarity index 97% rename from src/server/ui/UiExports.js rename to src/server/ui/lib/UiExports.js index 6d37742316129..b7428547bdd2f 100644 --- a/src/server/ui/UiExports.js +++ b/src/server/ui/lib/UiExports.js @@ -5,6 +5,7 @@ var UiApp = require('./UiApp'); function UiExports(defaultModules) { this.apps = {}; + this.appCount = 0; this.aliases = {}; this.defaultModules = defaultModules || []; this.exportConsumer = _.memoize(this.exportConsumer); @@ -34,6 +35,7 @@ UiExports.prototype.exportConsumer = function (type) { } self.apps[app.id] = app; + self.appCount += 1; }; case 'visTypes': case 'fieldFormats': diff --git a/src/server/ui/defaultModuleIds.js b/src/server/ui/lib/defaultModuleIds.js similarity index 100% rename from src/server/ui/defaultModuleIds.js rename to src/server/ui/lib/defaultModuleIds.js diff --git a/src/server/ui/findBowerComponents.js b/src/server/ui/lib/findBowerComponents.js similarity index 100% rename from src/server/ui/findBowerComponents.js rename to src/server/ui/lib/findBowerComponents.js diff --git a/src/server/ui/findModuleIds.js b/src/server/ui/lib/findModuleIds.js similarity index 100% rename from src/server/ui/findModuleIds.js rename to src/server/ui/lib/findModuleIds.js diff --git a/src/server/ui/lib/uiDir.js b/src/server/ui/lib/uiDir.js new file mode 100644 index 0000000000000..fb499ccc07ebb --- /dev/null +++ b/src/server/ui/lib/uiDir.js @@ -0,0 +1 @@ +module.exports = require('../../utils/fromRoot')('src/ui'); diff --git a/src/server/ui/statics.js b/src/server/ui/statics.js new file mode 100644 index 0000000000000..bcc7ff77e63de --- /dev/null +++ b/src/server/ui/statics.js @@ -0,0 +1,34 @@ +module.exports = function (kibana, server, config) { + var Boom = require('boom'); + var findBowerComponents = require('./lib/findBowerComponents'); + var uiDir = require('./lib/uiDir'); + var join = require('path').join; + var stat = require('fs').statSync; + + // provide access to an app's public directories + server.exposeStaticDir('/app/{id}/{path*}', function pickDir(req) { + var id = req.params.id; + var app = server.getApps()[id]; + + if (!app) return Boom.notFound('Unkown app ' + id); + return app.publicDir || Boom.notFound(id + ' does not server public files'); + }); + + // expose the first bower_components directory found within kibana's rootDir starting + // in this directory and moving out + server.exposeStaticDir('/bower_components/{path*}', findBowerComponents(__dirname, kibana.rootDir)); + + // expose our public files at the server root explicitly, rather than with a catch all route + require('fs') + .readdirSync(uiDir) + .forEach(function (name) { + var path = join(uiDir, name); + + if (stat(path).isDirectory()) { + server.exposeStaticDir('/' + name + '/{path*}', path); + } + else { + server.exposeStaticFile('/' + name, path); + } + }); +}; diff --git a/src/server/ui/uiDir.js b/src/server/ui/uiDir.js deleted file mode 100644 index d576178d288cc..0000000000000 --- a/src/server/ui/uiDir.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../utils/fromRoot')('src/ui'); diff --git a/src/server/ui/views/bootstrap.jade b/src/server/ui/views/bootstrap.jade index 4bd0d1e471dcb..436995f1935c1 100644 --- a/src/server/ui/views/bootstrap.jade +++ b/src/server/ui/views/bootstrap.jade @@ -8,7 +8,7 @@ html(lang='en') meta(name='viewport', content='width=device-width') link(rel='shortcut icon', href='/ui-styles/theme/elk.ico') title - link(rel='stylesheet', href='/ui-styles/main.css?_b=#{buildNumber}') + link(rel='stylesheet', href='/ui-styles/main.css#{cacheBust}') body(kbn-chrome) .col-md-offset-4.col-md-4.page-header.initial-load center @@ -18,25 +18,17 @@ html(lang='en') small#cache-message | is loading. Give me a moment here. I'm loading a whole bunch of code. Don't worry, all this good stuff will be cached up for next time! script. - window.KIBANA_VERSION = !{ j(version) }; - window.KIBANA_BUILD_NUM = !{ j(buildNumber) }; - window.KIBANA_BUILD_SHA = !{ j(buildSha) }; - window.KIBANA_INDEX = !{ j(kbnIndex) } - window.ES_SHARD_TIMEOUT = !{ j(esShardTimeout) } - var showCacheMessage = location.href.indexOf('?embed') < 0 && location.href.indexOf('&embed') < 0; if (!showCacheMessage) document.getElementById('cache-message').style.display = 'none'; - script(src='/bower_components/requirejs/require.js?_b=#{buildNumber}') - script(src='/require.config.js?_b=#{buildNumber}') + script(src='/bower_components/requirejs/require.js#{cacheBust}') + script(src='/require.config.js#{cacheBust}') script. - if (window.KIBANA_BUILD_NUM.substr(0, 2) !== '@@') { - // only cache bust if this is really the build number - require.config({ urlArgs: '_b=' + window.KIBANA_BUILD_NUM }); - } + window.KIBANA = !{ j(kibanaPayload) }; + require.config({ urlArgs: !{ j(cacheBust) } }); require(!{ j(['bootstrap'].concat(app.useModuleIds() || [])) }, function () { - require(!{ j([app.mainModuleId()]) }, function () { + require(!{ j([app.main]) }, function () { $(function () { angular .bootstrap(document, ['kibana']) diff --git a/src/ui/appSwitcher/appSwitcher.html b/src/ui/appSwitcher/appSwitcher.html new file mode 100644 index 0000000000000..9807ef0a014c4 --- /dev/null +++ b/src/ui/appSwitcher/appSwitcher.html @@ -0,0 +1,12 @@ +
\n * ```\n */\n module.directive('kbnTableRow', function ($compile) {\n var noWhiteSpace = require('utils/no_white_space');\n var openRowHtml = require('components/doc_table/components/table_row/open.html');\n var detailsHtml = require('components/doc_table/components/table_row/details.html');\n var cellTemplate = _.template(noWhiteSpace(require('components/doc_table/components/table_row/cell.html')));\n var truncateByHeightTemplate = _.template(noWhiteSpace(require('partials/truncate_by_height.html')));\n\n return {\n restrict: 'A',\n scope: {\n columns: '=',\n filter: '=',\n indexPattern: '=',\n row: '=kbnTableRow'\n },\n link: function ($scope, $el) {\n $el.after('');\n $el.empty();\n\n var init = function () {\n createSummaryRow($scope.row, $scope.row._id);\n };\n\n // when we compile the details, we use this $scope\n var $detailsScope;\n\n // when we compile the toggle button in the summary, we use this $scope\n var $toggleScope;\n\n // toggle display of the rows details, a full list of the fields from each row\n $scope.toggleRow = function () {\n var $detailsTr = $el.next();\n\n $scope.open = !$scope.open;\n\n ///\n // add/remove $details children\n ///\n\n $detailsTr.toggle($scope.open);\n\n if (!$scope.open) {\n // close the child scope if it exists\n $detailsScope.$destroy();\n // no need to go any further\n return;\n } else {\n $detailsScope = $scope.$new();\n }\n\n // empty the details and rebuild it\n $detailsTr.html(detailsHtml);\n\n $detailsScope.row = $scope.row;\n\n $compile($detailsTr)($detailsScope);\n };\n\n $scope.$watchCollection('columns', function () {\n createSummaryRow($scope.row, $scope.row._id);\n });\n\n $scope.$watchMulti(['indexPattern.timeFieldName', 'row.highlight'], function () {\n createSummaryRow($scope.row, $scope.row._id);\n });\n\n // create a tr element that lists the value for each *column*\n function createSummaryRow(row) {\n var indexPattern = $scope.indexPattern;\n\n // We just create a string here because its faster.\n var newHtmls = [\n openRowHtml\n ];\n\n if (indexPattern.timeFieldName) {\n newHtmls.push(cellTemplate({\n timefield: true,\n formatted: _displayField(row, indexPattern.timeFieldName)\n }));\n }\n\n $scope.columns.forEach(function (column) {\n newHtmls.push(cellTemplate({\n timefield: false,\n sourcefield: (column === '_source'),\n formatted: _displayField(row, column, true)\n }));\n });\n\n var $cells = $el.children();\n newHtmls.forEach(function (html, i) {\n var $cell = $cells.eq(i);\n if ($cell.data('discover:html') === html) return;\n\n var reuse = _.find($cells.slice(i + 1), function (cell) {\n return $.data(cell, 'discover:html') === html;\n });\n\n var $target = reuse ? $(reuse).detach() : $(html);\n $target.data('discover:html', html);\n var $before = $cells.eq(i - 1);\n if ($before.size()) {\n $before.after($target);\n } else {\n $el.append($target);\n }\n\n // rebuild cells since we modified the children\n $cells = $el.children();\n\n if (i === 0 && !reuse) {\n $toggleScope = $scope.$new();\n $compile($target)($toggleScope);\n }\n });\n\n if ($scope.open) {\n $detailsScope.row = row;\n }\n\n // trim off cells that were not used rest of the cells\n $cells.filter(':gt(' + (newHtmls.length - 1) + ')').remove();\n }\n\n /**\n * Fill an element with the value of a field\n */\n function _displayField(row, fieldName, breakWords) {\n var indexPattern = $scope.indexPattern;\n var text = indexPattern.formatField(row, fieldName);\n\n if (breakWords) {\n text = addWordBreaks(text, MIN_LINE_LENGTH);\n\n if (text.length > MIN_LINE_LENGTH) {\n return truncateByHeightTemplate({\n body: text\n });\n }\n }\n\n return text;\n }\n\n init();\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/doc_table/components/table_row.js\n ** module id = 693\n ** module chunks = 0\n **/","define(function (require) {\n\n require('components/field_format_editor/field_format_editor');\n\n require('modules')\n .get('kibana')\n .directive('fieldEditor', function (Private, $sce) {\n var _ = require('lodash');\n var fieldFormats = Private(require('registry/field_formats'));\n var Field = Private(require('components/index_patterns/_field'));\n var scriptingInfo = $sce.trustAsHtml(require('components/field_editor/scripting_info.html'));\n var scriptingWarning = $sce.trustAsHtml(require('components/field_editor/scripting_warning.html'));\n\n return {\n restrict: 'E',\n template: require('components/field_editor/field_editor.html'),\n scope: {\n getIndexPattern: '&indexPattern',\n getField: '&field'\n },\n controllerAs: 'editor',\n controller: function ($scope, Notifier, kbnUrl) {\n var self = this;\n var notify = new Notifier({ location: 'Field Editor' });\n\n self.scriptingInfo = scriptingInfo;\n self.scriptingWarning = scriptingWarning;\n\n self.indexPattern = $scope.getIndexPattern();\n self.field = shadowCopy($scope.getField());\n self.formatParams = self.field.format.params();\n\n // only init on first create\n self.creating = !self.indexPattern.fields.byName[self.field.name];\n self.selectedFormatId = _.get(self.indexPattern, ['fieldFormatMap', self.field.name, 'type', 'id']);\n self.defFormatType = initDefaultFormat();\n self.fieldFormatTypes = [self.defFormatType].concat(fieldFormats.byFieldType[self.field.type] || []);\n\n self.cancel = redirectAway;\n self.save = function () {\n var indexPattern = self.indexPattern;\n var fields = indexPattern.fields;\n var field = self.field.toActualField();\n\n _.remove(fields, { name: field.name });\n fields.push(field);\n\n if (!self.selectedFormatId) {\n delete indexPattern.fieldFormatMap[field.name];\n } else {\n indexPattern.fieldFormatMap[field.name] = self.field.format;\n }\n\n return indexPattern.save()\n .then(function () {\n notify.info('Saved Field \"' + self.field.name + '\"');\n redirectAway();\n });\n };\n\n self.delete = function () {\n var indexPattern = self.indexPattern;\n var field = self.field;\n\n _.remove(indexPattern.fields, { name: field.name });\n return indexPattern.save()\n .then(function () {\n notify.info('Deleted Field \"' + field.name + '\"');\n redirectAway();\n });\n };\n\n $scope.$watch('editor.selectedFormatId', function (cur, prev) {\n var format = self.field.format;\n var changedFormat = cur !== prev;\n var missingFormat = cur && (!format || format.type.id !== cur);\n\n if (!changedFormat || !missingFormat) return;\n\n // reset to the defaults, but make sure it's an object\n self.formatParams = _.assign({}, getFieldFormatType().paramDefaults);\n });\n\n $scope.$watch('editor.formatParams', function () {\n var FieldFormat = getFieldFormatType();\n self.field.format = new FieldFormat(self.formatParams);\n }, true);\n\n // copy the defined properties of the field to a plain object\n // which is mutable, and capture the changed seperately.\n function shadowCopy(field) {\n var changes = {};\n var shadowProps = {\n toActualField: {\n // bring the shadow copy out of the shadows\n value: function toActualField() {\n return new Field(self.indexPattern, _.defaults({}, changes, field.$$spec));\n }\n }\n };\n\n Object.getOwnPropertyNames(field).forEach(function (prop) {\n var desc = Object.getOwnPropertyDescriptor(field, prop);\n shadowProps[prop] = {\n enumerable: desc.enumerable,\n get: function () {\n return _.has(changes, prop) ? changes[prop] : field[prop];\n },\n set: function (v) {\n changes[prop] = v;\n }\n };\n });\n\n return Object.create(null, shadowProps);\n }\n\n function redirectAway() {\n kbnUrl.changeToRoute(self.indexPattern, self.field.scripted ? 'scriptedFields' : 'indexedFields');\n }\n\n function getFieldFormatType() {\n if (self.selectedFormatId) return fieldFormats.getType(self.selectedFormatId);\n else return fieldFormats.getDefaultType(self.field.type);\n }\n\n function initDefaultFormat() {\n var def = Object.create(fieldFormats.getDefaultType(self.field.type));\n\n // explicitly set to undefined to prevent inheritting the prototypes id\n def.id = undefined;\n def.resolvedTitle = def.title;\n def.title = '- default - ';\n\n return def;\n }\n }\n };\n });\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/field_editor/field_editor.js\n ** module id = 694\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var $ = require('jquery');\n\n require('modules')\n .get('app/settings')\n .directive('fieldFormatEditor', function (Private, $compile) {\n return {\n restrict: 'A',\n scope: {\n getField: '&field',\n getFormatParams: '&formatParams'\n },\n controllerAs: 'editor',\n controller: function ($scope) {\n var self = this;\n\n // bind the scope values to the controller, down with $scope.values\n $scope.editor = this;\n $scope.$bind('editor.field', 'getField()', $scope);\n $scope.$bind('editor.formatParams', 'getFormatParams()', $scope);\n\n /**\n * Read the FieldFormat's editor property and convert it into\n * a \"pseudoDirective\". For clarity I'm reusing the directive def\n * object api, but for simplicity not implementing the entire thing.\n *\n * possible configs:\n * string:\n * - used as an angular template\n * directive def object, with support for the following opts:\n * - template\n * - compile or link\n * - scope (creates isolate, reads from parent scope, not attributes)\n * - controller\n * - controllerAs\n *\n * @param {angular.element} $el - template\n * @param {object} directiveDef - the directive definition object\n * @return {undefined}\n */\n $scope.$watch('editor.field.format.type', function (FieldFormat) {\n var opts = FieldFormat && FieldFormat.editor;\n\n if (!opts) {\n delete self.$$pseudoDirective;\n return;\n }\n\n if (typeof opts === 'string') {\n self.$$pseudoDirective = {\n template: opts\n };\n return;\n }\n\n self.$$pseudoDirective = {\n template: opts.template,\n compile: opts.compile || function () {\n return opts.link;\n },\n scope: opts.scope || false,\n controller: opts.controller,\n controllerAs: opts.controllerAs\n };\n });\n\n },\n link: function ($scope, $el) {\n var scopesToTeardown = [];\n\n function setupScope(opts) {\n if (typeof opts !== 'object') {\n return scopesToTeardown[scopesToTeardown.push($scope.$new()) - 1];\n }\n\n var isolate = scopesToTeardown[scopesToTeardown.push($scope.$new(true)) - 1];\n _.forOwn(opts, function (from, to) {\n isolate.$bind(to, from, $scope);\n });\n return isolate;\n }\n\n $scope.$watch('editor.$$pseudoDirective', function (directive) {\n $el.empty();\n _.invoke(scopesToTeardown.splice(0), '$destroy');\n\n if (!directive) return $el.hide();\n else $el.show();\n\n var askedForChild = !!directive.scope;\n var reuseScope = !askedForChild && !directive.controller;\n\n var $formatEditor = $('
').html(directive.template);\n var $formatEditorScope = reuseScope ? $scope : setupScope(directive.scope);\n\n if (directive.controller) {\n // bind the controller to the injected element\n var cntrlAs = (directive.controllerAs ? ' as ' + directive.controllerAs : '');\n $formatEditorScope.Controller = directive.controller;\n $formatEditor.attr('ng-controller', 'Controller' + cntrlAs);\n }\n\n var attrs = {};\n var linkFns = directive.compile && directive.compile($el, attrs);\n if (!linkFns || _.isFunction(linkFns)) {\n linkFns = {\n pre: _.noop,\n post: linkFns || _.noop\n };\n }\n\n $el.html($formatEditor);\n linkFns.pre($formatEditorScope, $formatEditor, attrs);\n $compile($formatEditor)($formatEditorScope);\n linkFns.post($formatEditorScope, $formatEditor, attrs);\n });\n\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/field_format_editor/field_format_editor.js\n ** module id = 695\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n return function () {\n return function ($state) {\n if (!_.isObject($state)) throw new Error ('pushFilters requires a state object');\n return function (filter, negate, index) {\n // Hierarchical and tabular data set their aggConfigResult parameter\n // differently because of how the point is rewritten between the two. So\n // we need to check if the point.orig is set, if not use try the point.aggConfigResult\n var filters = _.clone($state.filters || []);\n var pendingFilter = { meta: { negate: negate, index: index }};\n _.extend(pendingFilter, filter);\n filters.push(pendingFilter);\n $state.filters = filters;\n };\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/filter_bar/push_filter.js\n ** module id = 696\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n return function buildPhraseFilter(field, value, indexPattern) {\n var filter = { meta: { index: indexPattern.id} };\n\n if (field.scripted) {\n filter.script = {\n script: '(' + field.script + ') == value',\n lang: field.lang,\n params: {\n value: value\n }\n };\n filter.meta.field = field.name;\n } else {\n filter.query = { match: {} };\n filter.query.match[field.name] = {\n query: value,\n type: 'phrase'\n };\n }\n return filter;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/filter_manager/lib/phrase.js\n ** module id = 697\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n return function buildQueryFilter(query, index) {\n return {\n query: query,\n meta: {\n index: index\n }\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/filter_manager/lib/query.js\n ** module id = 698\n ** module chunks = 0\n **/","define(function (require) {\n var $ = require('jquery');\n var _ = require('lodash');\n\n var SCROLLER_HEIGHT = 20;\n\n require('modules')\n .get('kibana')\n .directive('fixedScroll', function ($timeout) {\n return {\n restrict: 'A',\n link: function ($scope, $el) {\n var $window = $(window);\n var $scroller = $('
').height(SCROLLER_HEIGHT);\n\n /**\n * Listen for scroll events on the $scroller and the $el, sets unlisten()\n *\n * unlisten must be called before calling or listen() will throw an Error\n *\n * Since the browser emits \"scroll\" events after setting scrollLeft\n * the listeners also prevent tug-of-war\n *\n * @throws {Error} If unlisten was not called first\n * @return {undefined}\n */\n function listen() {\n if (unlisten !== _.noop) {\n throw new Error('fixedScroll listeners were not cleaned up properly before re-listening!');\n }\n\n var blockTo;\n function bind($from, $to) {\n function handler() {\n if (blockTo === $to) return (blockTo = null);\n $to.scrollLeft((blockTo = $from).scrollLeft());\n }\n\n $from.on('scroll', handler);\n return function () {\n $from.off('scroll', handler);\n };\n }\n\n unlisten = _.flow(\n bind($el, $scroller),\n bind($scroller, $el),\n function () { unlisten = _.noop; }\n );\n }\n\n /**\n * Remove the listeners bound in listen()\n * @type {function}\n */\n var unlisten = _.noop;\n\n /**\n * Revert DOM changes and event listeners\n * @return {undefined}\n */\n function cleanUp() {\n unlisten();\n $scroller.detach();\n $el.css('padding-bottom', 0);\n }\n\n /**\n * Modify the DOM and attach event listeners based on need.\n * Is called many times to re-setup, must be idempotent\n * @return {undefined}\n */\n function setup() {\n cleanUp();\n\n var containerWidth = $el.width();\n var contentWidth = $el.prop('scrollWidth');\n var containerHorizOverflow = contentWidth - containerWidth;\n\n var elTop = $el.offset().top - $window.scrollTop();\n var elBottom = elTop + $el.height();\n var windowVertOverflow = elBottom - $window.height();\n\n var requireScroller = containerHorizOverflow > 0 && windowVertOverflow > 0;\n if (!requireScroller) return;\n\n // push the content away from the scroller\n $el.css('padding-bottom', SCROLLER_HEIGHT);\n\n // fill the scroller with a dummy element that mimics the content\n $scroller\n .width(containerWidth)\n .html($('
').css({ width: contentWidth, height: SCROLLER_HEIGHT }))\n .insertAfter($el);\n\n // listen for scroll events\n listen();\n }\n\n // reset when the width or scrollWidth of the $el changes\n $scope.$watchMulti([\n function () { return $el.prop('scrollWidth'); },\n function () { return $el.width(); }\n ], setup);\n\n // cleanup when the scope is destroyed\n $scope.$on('$destroy', function () {\n cleanUp();\n $scroller = $window = null;\n });\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/fixedScroll.js\n ** module id = 699\n ** module chunks = 0\n **/","define(function (require) {\n var $ = require('jquery');\n var _ = require('lodash');\n var keyMap = require('utils/key_map');\n\n var INVALID = {}; // invalid flag\n var FLOATABLE = /^[\\d\\.e\\-\\+]+$/i;\n\n var VALIDATION_ERROR = 'numberListRangeAndOrder';\n var DIRECTIVE_ATTR = 'kbn-number-list-input';\n\n require('modules')\n .get('kibana')\n .directive('kbnNumberListInput', function ($parse) {\n return {\n restrict: 'A',\n require: ['ngModel', '^kbnNumberList'],\n link: function ($scope, $el, attrs, controllers) {\n var ngModelCntr = controllers[0];\n var numberListCntr = controllers[1];\n\n var $setModel = $parse(attrs.ngModel).assign;\n var $repeater = $el.closest('[ng-repeat]');\n\n var handlers = {\n up: change(add, 1),\n 'shift-up': change(addTenth, 1),\n\n down: change(add, -1),\n 'shift-down': change(addTenth, -1),\n\n tab: go('next'),\n 'shift-tab': go('prev'),\n\n 'shift-enter': numberListCntr.add,\n\n backspace: removeIfEmpty,\n delete: removeIfEmpty\n };\n\n function removeIfEmpty(event) {\n if (!ngModelCntr.$viewValue) {\n $get('prev').focus();\n numberListCntr.remove($scope.$index);\n event.preventDefault();\n }\n\n return false;\n }\n\n function $get(dir) {\n return $repeater[dir]().find('[' + DIRECTIVE_ATTR + ']');\n }\n\n function go(dir) {\n return function () {\n var $to = $get(dir);\n if ($to.size()) $to.focus();\n else return false;\n };\n }\n\n function idKey(event) {\n var id = [];\n if (event.ctrlKey) id.push('ctrl');\n if (event.shiftKey) id.push('shift');\n if (event.metaKey) id.push('meta');\n if (event.altKey) id.push('alt');\n id.push(keyMap[event.keyCode] || event.keyCode);\n return id.join('-');\n }\n\n function add(n, val) {\n return parse(val + n);\n }\n\n function addTenth(n, val, str) {\n var int = Math.floor(val);\n var dec = parseInt(str.split('.')[1] || 0, 10);\n dec = dec + parseInt(n, 10);\n\n if (dec < 0 || dec > 9) {\n int += Math.floor(dec / 10);\n if (dec < 0) {\n dec = 10 + (dec % 10);\n } else {\n dec = dec % 10;\n }\n }\n\n return parse(int + '.' + dec);\n }\n\n function change(using, mod) {\n return function () {\n var str = String(ngModelCntr.$viewValue);\n var val = parse(str);\n if (val === INVALID) return;\n\n var next = using(mod, val, str);\n if (next === INVALID) return;\n\n $el.val(next);\n ngModelCntr.$setViewValue(next);\n };\n }\n\n function onKeydown(event) {\n var handler = handlers[idKey(event)];\n if (!handler) return;\n\n if (handler(event) !== false) {\n event.preventDefault();\n }\n\n $scope.$apply();\n }\n\n $el.on('keydown', onKeydown);\n $scope.$on('$destroy', function () {\n $el.off('keydown', onKeydown);\n });\n\n function parse(viewValue) {\n var num = viewValue;\n\n if (typeof num !== 'number' || isNaN(num)) {\n // parse non-numbers\n num = String(viewValue || 0).trim();\n if (!FLOATABLE.test(num)) return INVALID;\n\n num = parseFloat(num);\n if (isNaN(num)) return INVALID;\n }\n\n var range = numberListCntr.range;\n if (!range.within(num)) return INVALID;\n\n if ($scope.$index > 0) {\n var i = $scope.$index - 1;\n var list = numberListCntr.getList();\n var prev = list[i];\n if (num <= prev) return INVALID;\n }\n\n return num;\n }\n\n $scope.$watchMulti([\n '$index',\n {\n fn: $scope.$watchCollection,\n get: function () {\n return numberListCntr.getList();\n }\n }\n ], function () {\n var valid = parse(ngModelCntr.$viewValue) !== INVALID;\n ngModelCntr.$setValidity(VALIDATION_ERROR, valid);\n });\n\n function validate(then) {\n return function (input) {\n var value = parse(input);\n var valid = value !== INVALID;\n value = valid ? value : input;\n ngModelCntr.$setValidity(VALIDATION_ERROR, valid);\n then && then(input, value);\n return value;\n };\n }\n\n ngModelCntr.$parsers.push(validate());\n ngModelCntr.$formatters.push(validate(function (input, value) {\n if (input !== value) $setModel($scope, value);\n }));\n\n if (parse(ngModelCntr.$viewValue) === INVALID) {\n ngModelCntr.$setTouched();\n }\n }\n };\n });\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/number_list/number_list_input.js\n ** module id = 700\n ** module chunks = 0\n **/","define(function (require) {\n return function ReflowWatcherService(Private, $rootScope, $http) {\n var angular = require('angular');\n var $ = require('jquery');\n var _ = require('lodash');\n\n var EventEmitter = Private(require('components/events'));\n var $body = $(document.body);\n var $window = $(window);\n\n var MOUSE_EVENTS = 'mouseup';\n var WINDOW_EVENTS = 'resize';\n\n _.class(ReflowWatcher).inherits(EventEmitter);\n /**\n * Watches global activity which might hint at a change in the content, which\n * in turn provides a hint to resizers that they should check their size\n */\n function ReflowWatcher() {\n ReflowWatcher.Super.call(this);\n\n // bound version of trigger that can be used as a handler\n this.trigger = _.bind(this.trigger, this);\n this._emitReflow = _.bind(this._emitReflow, this);\n\n // list of functions to call that will unbind our watchers\n this._unwatchers = [\n $rootScope.$watchCollection(function () {\n return $http.pendingRequests;\n }, this.trigger)\n ];\n\n $body.on(MOUSE_EVENTS, this.trigger);\n $window.on(WINDOW_EVENTS, this.trigger);\n }\n\n /**\n * Simply emit reflow, but in a way that can be bound and passed to\n * other functions. Using _.bind caused extra arguments to be added, and\n * then emitted to other places. No Bueno\n *\n * @return {void}\n */\n ReflowWatcher.prototype._emitReflow = function () {\n this.emit('reflow');\n };\n\n /**\n * Emit the \"reflow\" event in the next tick of the digest cycle\n * @return {void}\n */\n ReflowWatcher.prototype.trigger = function () {\n $rootScope.$evalAsync(this._emitReflow);\n };\n\n /**\n * Signal to the ReflowWatcher that it should clean up it's listeners\n * @return {void}\n */\n ReflowWatcher.prototype.destroy = function () {\n $body.off(MOUSE_EVENTS, this.trigger);\n $window.off(WINDOW_EVENTS, this.trigger);\n _.callEach(this._unwatchers);\n };\n\n return new ReflowWatcher();\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/reflow_watcher.js\n ** module id = 701\n ** module chunks = 0\n **/","define(function (require) {\n return function TemplateRenderbotFactory(Private, $compile, $rootScope) {\n var _ = require('lodash');\n var Renderbot = Private(require('components/vis/Renderbot'));\n\n _.class(TemplateRenderbot).inherits(Renderbot);\n function TemplateRenderbot(vis, $el) {\n TemplateRenderbot.Super.call(this, vis, $el);\n\n this.$scope = $rootScope.$new();\n this.$scope.vis = vis;\n\n $el.html($compile(this.vis.type.template)(this.$scope));\n }\n\n TemplateRenderbot.prototype.render = function (esResponse) {\n this.$scope.esResponse = esResponse;\n };\n\n TemplateRenderbot.prototype.destroy = function () {\n this.$scope.$destroy();\n };\n\n return TemplateRenderbot;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/template_vis_type/TemplateRenderbot.js\n ** module id = 702\n ** module chunks = 0\n **/","define(function (require) {\n return function DateIntervalRoundingRulesProvider() {\n var moment = require('moment');\n // these are the rounding rules used by roundInterval()\n var d = require('moment').duration;\n\n var roundingRules = [\n [ d(500, 'ms'), d(100, 'ms') ],\n [ d(5, 'second'), d(1, 'second') ],\n [ d(7.5, 'second'), d(5, 'second') ],\n [ d(15, 'second'), d(10, 'second') ],\n [ d(45, 'second'), d(30, 'second') ],\n [ d(3, 'minute'), d(1, 'minute') ],\n [ d(9, 'minute'), d(5, 'minute') ],\n [ d(20, 'minute'), d(10, 'minute') ],\n [ d(45, 'minute'), d(30, 'minute') ],\n [ d(2, 'hour'), d(1, 'hour') ],\n [ d(6, 'hour'), d(3, 'hour') ],\n [ d(24, 'hour'), d(12, 'hour') ],\n [ d(1, 'week'), d(1, 'd') ],\n [ d(3, 'week'), d(1, 'week') ],\n [ d(1, 'year'), d(1, 'month') ],\n [ Infinity, d(1, 'year') ]\n ];\n\n var revRoundingRules = roundingRules.slice(0).reverse();\n\n function find(rules, check, last) {\n function pick(buckets, duration) {\n var target = duration / buckets;\n var lastResp;\n\n for (var i = 0; i < rules.length; i++) {\n var rule = rules[i];\n var resp = check(rule[0], rule[1], target);\n\n if (resp == null) {\n if (!last) continue;\n if (lastResp) return lastResp;\n break;\n }\n\n if (!last) return resp;\n lastResp = resp;\n }\n\n // fallback to just a number of milliseconds, ensure ms is >= 1\n var ms = Math.max(Math.floor(target), 1);\n return moment.duration(ms, 'ms');\n }\n\n return function (buckets, duration) {\n var interval = pick(buckets, duration);\n if (interval) return moment.duration(interval._data);\n };\n }\n\n return {\n near: find(revRoundingRules, function near(bound, interval, target) {\n if (bound > target) return interval;\n }, true),\n\n lessThan: find(revRoundingRules, function (bound, interval, target) {\n if (interval < target) return interval;\n }),\n\n atLeast: find(revRoundingRules, function atLeast(bound, interval, target) {\n if (interval <= target) return interval;\n }),\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/time_buckets/calc_auto_interval.js\n ** module id = 703\n ** module chunks = 0\n **/","define(function (require) {\n return function () {\n var moment = require('moment');\n var datemath = require('utils/datemath');\n\n var unitsDesc = datemath.unitsDesc;\n var largeMax = unitsDesc.indexOf('M');\n\n /**\n * Convert a moment.duration into an es\n * compatible expression, and provide\n * associated metadata\n *\n * @param {moment.duration} duration\n * @return {object}\n */\n function esDuration(duration) {\n for (var i = 0; i < unitsDesc.length; i++) {\n var unit = unitsDesc[i];\n var val = duration.as(unit);\n // find a unit that rounds neatly\n if (val >= 1 && Math.floor(val) === val) {\n\n // if the unit is \"large\", like years, but\n // isn't set to 1 ES will puke. So keep going until\n // we get out of the \"large\" units\n if (i <= largeMax && val !== 1) {\n continue;\n }\n\n return {\n value: val,\n unit: unit,\n expression: val + unit\n };\n }\n }\n\n var ms = duration.as('ms');\n return {\n value: ms,\n unit: 'ms',\n expression: ms + 'ms'\n };\n }\n\n\n return esDuration;\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/time_buckets/calc_es_interval.js\n ** module id = 704\n ** module chunks = 0\n **/","define(function (require) {\n return function IntervalHelperProvider(Private, timefilter, config) {\n var _ = require('lodash');\n var moment = require('moment');\n\n var datemath = require('utils/datemath');\n var parseInterval = require('utils/parse_interval');\n var calcAuto = Private(require('components/time_buckets/calc_auto_interval'));\n var calcEsInterval = Private(require('components/time_buckets/calc_es_interval'));\n var tzOffset = moment().format('Z');\n\n function isValidMoment(m) {\n return m && ('isValid' in m) && m.isValid();\n }\n\n /**\n * Helper class for wrapping the concept of an \"Interval\",\n * which describes a timespan that will seperate moments.\n *\n * @param {state} object - one of \"\"\n * @param {[type]} display [description]\n */\n function TimeBuckets() {\n return TimeBuckets.__cached__(this);\n }\n\n /****\n * PUBLIC API\n ****/\n\n /**\n * Set the bounds that these buckets are expected to cover.\n * This is required to support interval \"auto\" as well\n * as interval scaling.\n *\n * @param {object} input - an object with properties min and max,\n * representing the edges for the time span\n * we should cover\n *\n * @returns {undefined}\n */\n TimeBuckets.prototype.setBounds = function (input) {\n if (!input) return this.clearBounds();\n\n var bounds;\n if (_.isPlainObject(input)) {\n // accept the response from timefilter.getActiveBounds()\n bounds = [input.min, input.max];\n } else {\n bounds = _.isArray(input) ? input : [];\n }\n\n var moments = _(bounds)\n .map(_.ary(moment, 1))\n .sortBy(Number);\n\n var valid = moments.size() === 2 && moments.every(isValidMoment);\n if (!valid) {\n this.clearBounds();\n throw new Error('invalid bounds set: ' + input);\n }\n\n this._lb = moments.shift();\n this._ub = moments.pop();\n if (this.getDuration().asSeconds() < 0) {\n throw new TypeError('Intervals must be positive');\n }\n };\n\n /**\n * Clear the stored bounds\n *\n * @return {undefined}\n */\n TimeBuckets.prototype.clearBounds = function () {\n this._lb = this._ub = null;\n };\n\n /**\n * Check to see if we have received bounds yet\n *\n * @return {Boolean}\n */\n TimeBuckets.prototype.hasBounds = function () {\n return isValidMoment(this._ub) && isValidMoment(this._lb);\n };\n\n /**\n * Return the current bounds, if we have any.\n *\n * THIS DOES NOT CLONE THE BOUNDS, so editting them\n * may have unexpected side-effects. Always\n * call bounds.min.clone() before editting\n *\n * @return {object|undefined} - If bounds are not defined, this\n * returns undefined, else it returns the bounds\n * for these buckets. This object has two props,\n * min and max. Each property will be a moment()\n * object\n *\n */\n TimeBuckets.prototype.getBounds = function () {\n if (!this.hasBounds()) return;\n return {\n min: this._lb,\n max: this._ub\n };\n };\n\n /**\n * Get a moment duration object representing\n * the distance between the bounds, if the bounds\n * are set.\n *\n * @return {moment.duration|undefined}\n */\n TimeBuckets.prototype.getDuration = function () {\n if (!this.hasBounds()) return;\n return moment.duration(this._ub - this._lb, 'ms');\n };\n\n /**\n * Update the interval at which buckets should be\n * generated.\n *\n * Input can be one of the following:\n * - Any object from src/kibana/components/agg_types/buckets/_interval_options.js\n * - \"auto\"\n * - Pass a valid moment unit\n * - a moment.duration object.\n *\n * @param {object|string|moment.duration} input - see desc\n */\n TimeBuckets.prototype.setInterval = function (input) {\n var interval = input;\n\n // selection object -> val\n if (_.isObject(input)) {\n interval = input.val;\n }\n\n if (!interval || interval === 'auto') {\n this._i = 'auto';\n return;\n }\n\n if (_.isString(interval)) {\n input = interval;\n interval = parseInterval(interval);\n if (+interval === 0) {\n interval = null;\n }\n }\n\n // if the value wasn't converted to a duration, and isn't\n // already a duration, we have a problem\n if (!moment.isDuration(interval)) {\n throw new TypeError('\"' + input + '\" is not a valid interval.');\n }\n\n this._i = interval;\n };\n\n /**\n * Get the interval for the buckets. If the\n * number of buckets created by the interval set\n * is larger than config:histogram:maxBars then the\n * interval will be scaled up. If the number of buckets\n * created is less than one, the interval is scaled back.\n *\n * The interval object returned is a moment.duration\n * object that has been decorated with the following\n * properties.\n *\n * interval.description: a text description of the interval.\n * designed to be used list \"field per {{ desc }}\".\n * - \"minute\"\n * - \"10 days\"\n * - \"3 years\"\n *\n * interval.expr: the elasticsearch expression that creates this\n * interval. If the interval does not properly form an elasticsearch\n * expression it will be forced into one.\n *\n * interval.scaled: the interval was adjusted to\n * accomidate the maxBars setting.\n *\n * interval.scale: the numer that y-values should be\n * multiplied by\n *\n * interval.scaleDescription: a description that reflects\n * the values which will be produced by using the\n * interval.scale.\n *\n *\n * @return {[type]} [description]\n */\n TimeBuckets.prototype.getInterval = function () {\n var self = this;\n var duration = self.getDuration();\n return decorateInterval(maybeScaleInterval(readInterval()));\n\n // either pull the interval from state or calculate the auto-interval\n function readInterval() {\n var interval = self._i;\n if (moment.isDuration(interval)) return interval;\n return calcAuto.near(config.get('histogram:barTarget'), duration);\n }\n\n // check to see if the interval should be scaled, and scale it if so\n function maybeScaleInterval(interval) {\n if (!self.hasBounds()) return interval;\n\n var maxLength = config.get('histogram:maxBars');\n var approxLen = duration / interval;\n var scaled;\n\n if (approxLen > maxLength) {\n scaled = calcAuto.lessThan(maxLength, duration);\n } else {\n return interval;\n }\n\n if (+scaled === +interval) return interval;\n\n decorateInterval(interval);\n return _.assign(scaled, {\n preScaled: interval,\n scale: interval / scaled,\n scaled: true\n });\n }\n\n // append some TimeBuckets specific props to the interval\n function decorateInterval(interval) {\n var esInterval = calcEsInterval(interval);\n interval.esValue = esInterval.value;\n interval.esUnit = esInterval.unit;\n interval.expression = esInterval.expression;\n interval.overflow = duration > interval ? moment.duration(interval - duration) : false;\n\n var prettyUnits = moment.normalizeUnits(esInterval.unit);\n if (esInterval.value === 1) {\n interval.description = prettyUnits;\n } else {\n interval.description = esInterval.value + ' ' + prettyUnits + 's';\n }\n\n return interval;\n }\n };\n\n /**\n * Get a date format string that will represent dates that\n * progress at our interval.\n *\n * Since our interval can be as small as 1ms, the default\n * date format is usually way too much. with `dateFormat:scaled`\n * users can modify how dates are formatted within series\n * produced by TimeBuckets\n *\n * @return {string}\n */\n TimeBuckets.prototype.getScaledDateFormat = function () {\n var interval = this.getInterval();\n var rules = config.get('dateFormat:scaled');\n\n for (var i = rules.length - 1; i >= 0; i--) {\n var rule = rules[i];\n if (!rule[0] || interval >= moment.duration(rule[0])) {\n return rule[1];\n }\n }\n\n return config.get('dateFormat');\n };\n\n\n TimeBuckets.__cached__ = function (self) {\n var cache = {};\n\n function cachedGetter(prop) {\n return {\n value: function cachedGetter() {\n if (cache.hasOwnProperty(prop)) {\n return cache[prop];\n }\n\n return cache[prop] = self[prop]();\n }\n };\n }\n\n function cacheBreaker(prop) {\n var resource = resources[breakers[prop]];\n var setup = resource.setup;\n var changes = resource.changes;\n var deps = resource.deps;\n var fn = self[prop];\n\n return {\n value: function cacheBreaker(input) {\n var prev = setup.call(self);\n var ret = fn.apply(self, arguments);\n\n if (changes.call(self, prev)) {\n cache = {};\n }\n\n return ret;\n }\n };\n }\n\n function same(checkType) {\n return function (a, b) {\n if (a === b) return true;\n if (checkType(a) === checkType(b)) return +a === +b;\n return false;\n };\n }\n\n var sameMoment = same(moment.isMoment);\n var sameDuration = same(moment.isDuration);\n\n var desc = {\n __cached__: {\n value: self\n },\n };\n\n var breakers = {\n setBounds: 'bounds',\n clearBounds: 'bounds',\n setInterval: 'interval'\n };\n\n var resources = {\n bounds: {\n setup: function () {\n return [self._lb, self._ub];\n },\n changes: function (prev) {\n return !sameMoment(prev[0], self._lb) || !sameMoment(prev[1], self._ub);\n }\n },\n interval: {\n setup: function () {\n return self._i;\n },\n changes: function (prev) {\n return !sameDuration(prev, this._i);\n }\n }\n };\n\n _.forOwn(TimeBuckets.prototype, function (fn, prop) {\n if (prop[0] === '_') return;\n\n if (breakers.hasOwnProperty(prop)) {\n desc[prop] = cacheBreaker(prop);\n } else {\n desc[prop] = cachedGetter(prop);\n }\n });\n\n return Object.create(self, desc);\n };\n\n return TimeBuckets;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/time_buckets/time_buckets.js\n ** module id = 705\n ** module chunks = 0\n **/","define(function (require) {\n return function AggConfigsFactory(Private) {\n var _ = require('lodash');\n var AggConfig = Private(require('components/vis/AggConfig'));\n var IndexedArray = require('components/indexed_array/index');\n\n AggConfig.aggTypes = Private(require('components/agg_types/index'));\n\n _.class(AggConfigs).inherits(IndexedArray);\n function AggConfigs(vis, configStates) {\n var self = this;\n self.vis = vis;\n\n configStates = AggConfig.ensureIds(configStates || []);\n\n AggConfigs.Super.call(self, {\n index: ['id'],\n group: ['schema.group', 'type.name', 'schema.name'],\n initialSet: configStates.map(function (aggConfigState) {\n if (aggConfigState instanceof AggConfig) return aggConfigState;\n return new AggConfig(vis, aggConfigState);\n })\n });\n\n\n // Set the defaults for any schema which has them. If the defaults\n // for some reason has more then the max only set the max number\n // of defaults (not sure why a someone define more...\n // but whatever). Also if a schema.name is already set then don't\n // set anything.\n if (vis && vis.type && vis.type.schemas && vis.type.schemas.all) {\n _(vis.type.schemas.all)\n .filter(function (schema) {\n return _.isArray(schema.defaults) && schema.defaults.length > 0;\n })\n .each(function (schema) {\n if (!self.bySchemaName[schema.name]) {\n var defaults = schema.defaults.slice(0, schema.max);\n _.each(defaults, function (defaultState) {\n var state = _.defaults({ id: AggConfig.nextId(self) }, defaultState);\n self.push(new AggConfig(vis, state));\n });\n }\n })\n .commit();\n }\n }\n\n AggConfigs.prototype.toDsl = function () {\n var dslTopLvl = {};\n var dslLvlCursor;\n var nestedMetric;\n\n if (this.vis.isHierarchical()) {\n // collect all metrics, and filter out the ones that we won't be copying\n var nestedMetrics = _(this.vis.aggs.bySchemaGroup.metrics)\n .filter(function (agg) {\n return agg.type.name !== 'count';\n })\n .map(function (agg) {\n return {\n config: agg,\n dsl: agg.toDsl()\n };\n })\n .value();\n }\n\n this.getRequestAggs()\n .filter(function (config) {\n return !config.type.hasNoDsl;\n })\n .forEach(function nestEachConfig(config, i, list) {\n if (!dslLvlCursor) {\n // start at the top level\n dslLvlCursor = dslTopLvl;\n } else {\n var prevConfig = list[i - 1];\n var prevDsl = dslLvlCursor[prevConfig.id];\n\n // advance the cursor and nest under the previous agg, or\n // put it on the same level if the previous agg doesn't accept\n // sub aggs\n dslLvlCursor = prevDsl.aggs || dslLvlCursor;\n }\n\n var dsl = dslLvlCursor[config.id] = config.toDsl();\n var subAggs;\n\n if (config.schema.group === 'buckets' && i < list.length - 1) {\n // buckets that are not the last item in the list accept sub-aggs\n subAggs = dsl.aggs || (dsl.aggs = {});\n }\n\n if (subAggs && nestedMetrics) {\n nestedMetrics.forEach(function (agg) {\n subAggs[agg.config.id] = agg.dsl;\n });\n }\n });\n\n return dslTopLvl;\n };\n\n AggConfigs.prototype.getRequestAggs = function () {\n return _.sortBy(this, function (agg) {\n return agg.schema.group === 'metrics' ? 1 : 0;\n });\n };\n\n /**\n * Gets the AggConfigs (and possibly ResponseAggConfigs) that\n * represent the values that will be produced when all aggs\n * are run.\n *\n * With multi-value metric aggs it is possible for a single agg\n * request to result in multiple agg values, which is why the length\n * of a vis' responseValuesAggs may be different than the vis' aggs\n *\n * @return {array[AggConfig]}\n */\n AggConfigs.prototype.getResponseAggs = function () {\n return this.getRequestAggs().reduce(function (responseValuesAggs, agg) {\n var aggs = agg.getResponseAggs();\n return aggs ? responseValuesAggs.concat(aggs) : responseValuesAggs;\n }, []);\n };\n\n\n /**\n * Find a response agg by it's id. This may be an agg in the aggConfigs, or one\n * created specifically for a response value\n *\n * @param {string} id - the id of the agg to find\n * @return {AggConfig}\n */\n AggConfigs.prototype.getResponseAggById = function (id) {\n id = String(id);\n var reqAgg = _.find(this.getRequestAggs(), function (agg) {\n return id.substr(0, String(agg.id).length) === agg.id;\n });\n if (!reqAgg) return;\n return _.find(reqAgg.getResponseAggs(), { id: id });\n };\n\n return AggConfigs;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vis/AggConfigs.js\n ** module id = 706\n ** module chunks = 0\n **/","define(function (require) {\n return function ColorUtilService(Private) {\n var _ = require('lodash');\n\n var createColorPalette = Private(require('components/vislib/components/color/color_palette'));\n\n /*\n * Accepts an array of strings or numbers that are used to create a\n * a lookup table that associates the values (key) with a hex color (value).\n * Returns a function that accepts a value (i.e. a string or number)\n * and returns a hex color associated with that value.\n */\n\n return function (arrayOfStringsOrNumbers) {\n if (!_.isArray(arrayOfStringsOrNumbers)) {\n throw new Error('ColorUtil expects an array');\n }\n\n arrayOfStringsOrNumbers.forEach(function (val) {\n if (!_.isString(val) && !_.isNumber(val) && !_.isUndefined(val)) {\n throw new TypeError('ColorUtil expects an array of strings, numbers, or undefined values');\n }\n });\n\n var arrayLength = arrayOfStringsOrNumbers.length;\n var colorObj = _.zipObject(arrayOfStringsOrNumbers, createColorPalette(arrayLength));\n\n return function (value) {\n return colorObj[value];\n };\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/color/color.js\n ** module id = 707\n ** module chunks = 0\n **/","define(function () {\n /*\n * Using a random color generator presented awful colors and unpredictable color schemes.\n * So we needed to come up with a color scheme of our own that creates consistent, pleasing color patterns.\n * The order allows us to guarantee that 1st, 2nd, 3rd, etc values always get the same color.\n * Returns an array of 72 colors.\n */\n\n return function SeedColorUtilService() {\n return [\n '#57c17b',\n '#006e8a',\n '#6f87d8',\n '#663db8',\n '#bc52bc',\n '#9e3533',\n '#daa05d'\n ];\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/color/seed_colors.js\n ** module id = 708\n ** module chunks = 0\n **/","define(function (require) {\n return function GetArrayUtilService(Private) {\n var _ = require('lodash');\n\n var flattenSeries = Private(require('components/vislib/components/labels/flatten_series'));\n\n /*\n * Accepts a Kibana data object and returns an array of values objects.\n */\n\n return function (obj) {\n if (!_.isObject(obj) || !obj.rows && !obj.columns && !obj.series) {\n throw new TypeError('GetArrayUtilService expects an object with a series, rows, or columns key');\n }\n\n if (!obj.series) {\n return flattenSeries(obj);\n }\n\n return obj.series;\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/labels/data_array.js\n ** module id = 709\n ** module chunks = 0\n **/","define(function (require) {\n return function GetSeriesUtilService() {\n var _ = require('lodash');\n\n /*\n * Accepts a Kibana data object with a rows or columns key\n * and returns an array of flattened series values.\n */\n\n return function (obj) {\n if (!_.isObject(obj) || !obj.rows && !obj.columns) {\n throw new TypeError('GetSeriesUtilService expects an object with either a rows or columns key');\n }\n\n obj = obj.rows ? obj.rows : obj.columns;\n\n return _.chain(obj)\n .pluck('series')\n .flattenDeep()\n .value();\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/labels/flatten_series.js\n ** module id = 710\n ** module chunks = 0\n **/","define(function (require) {\n return function LabelUtilService(Private) {\n var _ = require('lodash');\n\n var createArr = Private(require('components/vislib/components/labels/data_array'));\n var getArrOfUniqLabels = Private(require('components/vislib/components/labels/uniq_labels'));\n\n /*\n * Accepts a Kibana data object and returns an array of unique labels (strings).\n * Extracts the field formatter from the raw object and passes it to the\n * getArrOfUniqLabels function.\n *\n * Currently, this service is only used for vertical bar charts and line charts.\n */\n\n return function (obj) {\n if (!_.isObject(obj)) {\n throw new TypeError('LabelUtil expects an object');\n }\n\n return getArrOfUniqLabels(createArr(obj));\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/labels/labels.js\n ** module id = 711\n ** module chunks = 0\n **/","define(function (require) {\n return function UniqLabelUtilService() {\n var _ = require('lodash');\n\n /*\n * Accepts an array of data objects and a formatter function.\n * Returns a unique list of formatted labels (strings).\n */\n\n return function (arr) {\n if (!_.isArray(arr)) {\n throw new TypeError('UniqLabelUtil expects an array of objects');\n }\n\n return _(arr)\n .pluck('label')\n .unique()\n .value();\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/labels/uniq_labels.js\n ** module id = 712\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var $ = require('jquery');\n\n var OFFSET = 10;\n var $clone;\n\n // translate css properties into their basic direction\n var propDirs = {\n top: 'north',\n left: 'west'\n };\n\n function positionTooltip(opts, html) {\n if (!opts) return;\n var $chart = $(opts.$chart);\n var $el = $(opts.$el);\n var $window = $(opts.$window || window);\n var $sizer = $(opts.$sizer);\n var prev = $chart.data('previousPlacement') || {};\n var event = opts.event;\n\n if (!$chart.size() || !$el.size()) return;\n\n var size = getTtSize(html || $el.html(), $sizer);\n var pos = getBasePosition(size, event);\n var overflow = getOverflow(size, pos, [$chart, $window]);\n\n var placement = placeToAvoidOverflow(pos, prev, overflow);\n $chart.data('previousPlacement', placement);\n return placement;\n }\n\n function getTtSize(ttHtml, $sizer) {\n if ($sizer.html() !== ttHtml) {\n $sizer.html(ttHtml);\n }\n\n var size = {\n width: $sizer.outerWidth(),\n height: $sizer.outerHeight()\n };\n\n return size;\n }\n\n function getBasePosition(size, event) {\n return {\n east: event.clientX + OFFSET,\n west: event.clientX - size.width - OFFSET,\n south: event.clientY + OFFSET,\n north: event.clientY - size.height - OFFSET\n };\n }\n\n function getBounds($el) {\n // in testing, $window is not actually a window, so we need to add\n // the offsets to make it work right.\n var bounds = $el.offset() || { top: 0, left: 0 };\n bounds.top += $el.scrollTop();\n bounds.left += $el.scrollLeft();\n bounds.bottom = bounds.top + $el.outerHeight();\n bounds.right = bounds.left + $el.outerWidth();\n return bounds;\n }\n\n function getOverflow(size, pos, containers) {\n var overflow = {};\n\n containers.map(getBounds).forEach(function (bounds) {\n // number of pixels that the toolip would overflow it's far\n // side, if we placed it that way. (negative === no overflow)\n mergeOverflows(overflow, {\n north: bounds.top - pos.north,\n east: (pos.east + size.width) - bounds.right,\n south: (pos.south + size.height) - bounds.bottom,\n west: bounds.left - pos.west\n });\n });\n\n (window.overflows || (window.overflows = [])).push(overflow);\n return overflow;\n }\n\n function mergeOverflows(dest, src) {\n return _.merge(dest, src, function (a, b) {\n if (a == null || b == null) return a || b;\n if (a < 0 && b < 0) return Math.min(a, b);\n return Math.max(a, b);\n });\n }\n\n function pickPlacement(prop, pos, overflow, prev, pref, fallback, placement) {\n var stash = '_' + prop;\n\n // list of directions in order of preference\n var dirs = _.unique([prev[stash], pref, fallback].filter(Boolean));\n\n var dir;\n var value;\n\n // find the first direction that doesn't overflow\n for (var i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (overflow[dir] > 0) continue;\n value = pos[dir];\n break;\n }\n\n // if we don't find one that doesn't overflow, use\n // the first choice and offset based on overflo\n if (value == null) {\n dir = dirs[0];\n\n var offset = overflow[dir];\n if (propDirs[prop] === dir) {\n // when the property represents the same direction\n // as dir, we flip the overflow\n offset = offset * -1;\n }\n\n value = pos[dir] - offset;\n }\n\n placement[prop] = value;\n placement[stash] = dir;\n }\n\n function placeToAvoidOverflow(pos, prev, overflow) {\n var placement = {};\n pickPlacement('top', pos, overflow, prev, 'south', 'north', placement);\n pickPlacement('left', pos, overflow, prev, 'east', 'west', placement);\n return placement;\n }\n\n // expose units/helpers for testing\n positionTooltip.getTtSize = getTtSize;\n positionTooltip.getBasePosition = getBasePosition;\n positionTooltip.getOverflow = getOverflow;\n positionTooltip.getBounds = getBounds;\n positionTooltip.placeToAvoidOverflow = placeToAvoidOverflow;\n positionTooltip.removeClone = function () {\n $clone && $clone.remove();\n $clone = null;\n };\n\n return positionTooltip;\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/tooltip/_position_tooltip.js\n ** module id = 713\n ** module chunks = 0\n **/","define(function (require) {\n return function FlattenDataObjectUtilService() {\n var _ = require('lodash');\n\n /*\n * Accepts a Kibana data object, flattens the data.series values array,\n * and returns an array of values objects.\n */\n\n return function (obj) {\n var charts;\n\n if (!_.isObject(obj) || !obj.rows && !obj.columns && !obj.series) {\n throw new TypeError('FlattenDataObjUtilService expects an object with a series, rows, or columns key');\n }\n\n if (!obj.series) {\n charts = obj.rows ? obj.rows : obj.columns;\n }\n\n return _(charts ? charts : [obj])\n .pluck('series')\n .flattenDeep()\n .pluck('values')\n .flattenDeep()\n .filter(Boolean)\n .value();\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/zero_injection/flatten_data.js\n ** module id = 714\n ** module chunks = 0\n **/","define(function (require) {\n return function UniqueXValuesUtilService(Private) {\n var _ = require('lodash');\n\n var flattenDataArray = Private(require('components/vislib/components/zero_injection/flatten_data'));\n\n /*\n * Accepts a Kibana data object.\n * Returns an object with unique x axis values as keys with an object of\n * their index numbers and an isNumber boolean as their values.\n * e.g. { 'xAxisValue': { index: 1, isNumber: false }}, ...\n */\n\n return function (obj) {\n if (!_.isObject(obj)) {\n throw new TypeError('UniqueXValuesUtilService expects an object');\n }\n\n var flattenedData = flattenDataArray(obj);\n var uniqueXValues = {};\n\n var charts;\n if (!obj.series) {\n charts = obj.rows ? obj.rows : obj.columns;\n } else {\n charts = [obj];\n }\n\n var isDate = charts.every(function (chart) {\n return chart.ordered && chart.ordered.date;\n });\n\n var isOrdered = charts.every(function (chart) {\n return chart.ordered;\n });\n\n flattenedData.forEach(function (d, i) {\n var key = d.x;\n var prev = uniqueXValues[key];\n\n if (d.xi != null) {\n i = d.xi;\n }\n\n if (prev) {\n i = Math.min(i, prev.index);\n }\n\n uniqueXValues[key] = {\n index: i,\n isDate: isDate,\n isOrdered: isOrdered,\n isNumber: _.isNumber(key)\n };\n });\n\n return uniqueXValues;\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/zero_injection/uniq_keys.js\n ** module id = 715\n ** module chunks = 0\n **/","define(function (require) {\n return function ZeroFillDataArrayUtilService(Private) {\n var _ = require('lodash');\n\n /*\n * Accepts an array of zero-filled y value objects (arr1)\n * and a kibana data.series[i].values array of objects (arr2).\n * Return a zero-filled array of objects (arr1).\n */\n\n return function (arr1, arr2) {\n if (!_.isArray(arr1) || !_.isArray(arr2)) {\n throw new TypeError('ZeroFillDataArrayUtilService expects 2 arrays');\n }\n\n var max = arr2.length;\n var getX = function (d) {\n return d.x === val.x;\n };\n var i;\n var val;\n var index;\n\n for (i = 0; i < max; i++) {\n val = arr2[i];\n index = _.findIndex(arr1, getX);\n arr1.splice(index, 1, val);\n }\n\n return arr1;\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/zero_injection/zero_fill_data_array.js\n ** module id = 716\n ** module chunks = 0\n **/","define(function () {\n return function ZeroFilledArrayUtilService() {\n var _ = require('lodash');\n\n /*\n * Accepts an array of x axis values (strings or numbers).\n * Returns a zero filled array.\n */\n\n return function (arr) {\n if (!_.isArray(arr)) {\n throw new Error('ZeroFilledArrayUtilService expects an array of strings or numbers');\n }\n\n var zeroFilledArray = [];\n\n arr.forEach(function (val) {\n zeroFilledArray.push({\n x: val,\n xi: Infinity,\n y: 0\n });\n });\n\n return zeroFilledArray;\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/zero_injection/zero_filled_array.js\n ** module id = 717\n ** module chunks = 0\n **/","define(function (require) {\n var module = require('modules').get('kibana/vislib', ['kibana']);\n\n require('components/private');\n\n module.service('d3', function () {\n return require('d3');\n });\n\n /**\n * Provides the Kibana4 Visualization Library\n *\n * @module vislib\n * @main vislib\n * @return {Object} Contains the version number and the Vis Class for creating visualizations\n */\n module.service('vislib', function (Private) {\n return {\n version: '0.0.0',\n Vis: Private(require('components/vislib/vis'))\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/index.js\n ** module id = 718\n ** module chunks = 0\n **/","define(function (require) {\n return function AlertsFactory(d3, Private) {\n var $ = require('jquery');\n var _ = require('lodash');\n\n /**\n * Adds allerts that float in front of a visualization\n *\n * @class Alerts\n * @constructor\n * @param el {HTMLElement} Reference to DOM element\n */\n function Alerts(vis, data, alertDefs) {\n if (!(this instanceof Alerts)) {\n return new Alerts(vis, data, alertDefs);\n }\n\n this.vis = vis;\n this.data = data;\n this.alertDefs = alertDefs || [];\n\n $(vis.el).on('mouseenter', '.vis-alerts-tray', function () {\n var $tray = $(this);\n hide();\n $(vis.el).on('mousemove', checkForExit);\n\n function hide() {\n $tray.css({\n 'pointer-events': 'none',\n opacity: 0.3\n });\n }\n\n function show() {\n $(vis.el).off('mousemove', checkForExit);\n $tray.css({\n 'pointer-events': 'auto',\n opacity: 1\n });\n }\n\n function checkForExit(event) {\n var pos = $tray.offset();\n if (pos.top > event.clientY || pos.left > event.clientX) return show();\n\n var bottom = pos.top + $tray.height();\n if (event.clientY > bottom) return show();\n\n var right = pos.left + $tray.width();\n if (event.clientX > right) return show();\n }\n });\n }\n\n /**\n * Renders chart titles\n *\n * @method render\n * @returns {D3.Selection|D3.Transition.Transition} DOM element with chart titles\n */\n Alerts.prototype.render = function () {\n var vis = this.vis;\n var data = this.data;\n\n var alerts = _(this.alertDefs)\n .map(function (alertDef) {\n if (!alertDef) return;\n if (alertDef.test && !alertDef.test(vis, data)) return;\n\n var type = alertDef.type || 'info';\n var icon = alertDef.icon || type;\n var msg = alertDef.msg;\n\n // alert container\n var $icon = $('').addClass('vis-alerts-icon fa fa-' + icon);\n var $text = $('

').addClass('vis-alerts-text').text(msg);\n\n return $('

').addClass('vis-alert vis-alert-' + type).append([$icon, $text]);\n })\n .compact();\n\n if (!alerts.size()) return;\n\n $(vis.el).find('.vis-alerts').append(\n $('
').addClass('vis-alerts-tray').append(alerts.value())\n );\n };\n\n return Alerts;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/alerts.js\n ** module id = 719\n ** module chunks = 0\n **/","define(function (require) {\n return function AxisTitleFactory(d3, Private) {\n var $ = require('jquery');\n var _ = require('lodash');\n\n var ErrorHandler = Private(require('components/vislib/lib/_error_handler'));\n\n /**\n * Appends axis title(s) to the visualization\n *\n * @class AxisTitle\n * @constructor\n * @param el {HTMLElement} DOM element\n * @param xTitle {String} X-axis title\n * @param yTitle {String} Y-axis title\n */\n _.class(AxisTitle).inherits(ErrorHandler);\n function AxisTitle(el, xTitle, yTitle) {\n if (!(this instanceof AxisTitle)) {\n return new AxisTitle(el, xTitle, yTitle);\n }\n\n this.el = el;\n this.xTitle = xTitle;\n this.yTitle = yTitle;\n }\n\n /**\n * Renders both x and y axis titles\n *\n * @method render\n * @returns {HTMLElement} DOM Element with axis titles\n */\n AxisTitle.prototype.render = function () {\n d3.select(this.el).select('.x-axis-title').call(this.draw(this.xTitle));\n d3.select(this.el).select('.y-axis-title').call(this.draw(this.yTitle));\n };\n\n /**\n * Appends an SVG with title text\n *\n * @method draw\n * @param title {String} Axis title\n * @returns {Function} Appends axis title to a D3 selection\n */\n AxisTitle.prototype.draw = function (title) {\n var self = this;\n\n return function (selection) {\n selection.each(function () {\n var el = this;\n var div = d3.select(el);\n var width = $(el).width();\n var height = $(el).height();\n\n self.validateWidthandHeight(width, height);\n\n div.append('svg')\n .attr('width', width)\n .attr('height', height)\n .append('text')\n .attr('transform', function () {\n if (div.attr('class') === 'x-axis-title') {\n return 'translate(' + width / 2 + ',11)';\n }\n return 'translate(11,' + height / 2 + ')rotate(270)';\n })\n .attr('text-anchor', 'middle')\n .text(title);\n });\n };\n };\n\n return AxisTitle;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/axis_title.js\n ** module id = 720\n ** module chunks = 0\n **/","define(function (require) {\n return function DispatchClass(d3, Private) {\n var _ = require('lodash');\n var $ = require('jquery');\n var Tooltip = Private(require('components/vislib/components/tooltip/tooltip'));\n var SimpleEmitter = require('utils/SimpleEmitter');\n\n /**\n * Handles event responses\n *\n * @class Dispatch\n * @constructor\n * @param handler {Object} Reference to Handler Class Object\n */\n\n _.class(Dispatch).inherits(SimpleEmitter);\n function Dispatch(handler) {\n if (!(this instanceof Dispatch)) {\n return new Dispatch(handler);\n }\n\n Dispatch.Super.call(this);\n this.handler = handler;\n this._listeners = {};\n }\n\n /**\n * Response to click and hover events\n *\n * @param d {Object} Data point\n * @param i {Number} Index number of data point\n * @returns {{value: *, point: *, label: *, color: *, pointIndex: *,\n * series: *, config: *, data: (Object|*),\n * e: (d3.event|*), handler: (Object|*)}} Event response object\n */\n Dispatch.prototype.eventResponse = function (d, i) {\n var datum = d._input || d;\n var data = d3.event.target.nearestViewportElement.__data__;\n var label = d.label ? d.label : d.name;\n var isSeries = !!(data.series);\n var isSlices = !!(data.slices);\n var series = isSeries ? data.series : undefined;\n var slices = isSlices ? data.slices : undefined;\n var handler = this.handler;\n var color = handler.data.color;\n var isPercentage = (handler._attr.mode === 'percentage');\n\n var eventData = {\n value: d.y,\n point: datum,\n datum: datum,\n label: label,\n color: color(label),\n pointIndex: i,\n series: series,\n slices: slices,\n config: handler._attr,\n data: data,\n e: d3.event,\n handler: handler\n };\n\n if (isSeries) {\n // Find object with the actual d value and add it to the point object\n var object = _.find(series, { 'label': d.label });\n eventData.value = +object.values[i].y;\n\n if (isPercentage) {\n // Add the formatted percentage to the point object\n eventData.percent = (100 * d.y).toFixed(1) + '%';\n }\n }\n\n return eventData;\n };\n\n /**\n * Returns a function that adds events and listeners to a D3 selection\n *\n * @method addEvent\n * @param event {String}\n * @param callback {Function}\n * @returns {Function}\n */\n Dispatch.prototype.addEvent = function (event, callback) {\n return function (selection) {\n selection.each(function () {\n var element = d3.select(this);\n\n if (typeof callback === 'function') {\n return element.on(event, callback);\n }\n });\n };\n };\n\n /**\n *\n * @method addHoverEvent\n * @returns {Function}\n */\n Dispatch.prototype.addHoverEvent = function () {\n var self = this;\n var isClickable = this.listenerCount('click') > 0;\n var addEvent = this.addEvent;\n var $el = this.handler.el;\n\n function hover(d, i) {\n // Add pointer if item is clickable\n if (isClickable) {\n self.addMousePointer.call(this, arguments);\n }\n\n self.highlightLegend.call(this, $el);\n self.emit('hover', self.eventResponse(d, i));\n }\n\n return addEvent('mouseover', hover);\n };\n\n /**\n *\n * @method addMouseoutEvent\n * @returns {Function}\n */\n Dispatch.prototype.addMouseoutEvent = function () {\n var self = this;\n var addEvent = this.addEvent;\n var $el = this.handler.el;\n\n function mouseout() {\n self.unHighlightLegend.call(this, $el);\n }\n\n return addEvent('mouseout', mouseout);\n };\n\n /**\n *\n * @method addClickEvent\n * @returns {Function}\n */\n Dispatch.prototype.addClickEvent = function () {\n var self = this;\n var addEvent = this.addEvent;\n\n function click(d, i) {\n self.emit('click', self.eventResponse(d, i));\n }\n\n return addEvent('click', click);\n };\n\n /**\n * Determine if we will allow brushing\n *\n * @method allowBrushing\n * @returns {Boolean}\n */\n Dispatch.prototype.allowBrushing = function () {\n var xAxis = this.handler.xAxis;\n return Boolean(xAxis.ordered && xAxis.xScale && _.isFunction(xAxis.xScale.invert));\n };\n\n /**\n * Determine if brushing is currently enabled\n *\n * @method isBrushable\n * @returns {Boolean}\n */\n Dispatch.prototype.isBrushable = function () {\n return this.allowBrushing() && this.listenerCount('brush') > 0;\n };\n\n /**\n *\n * @param svg\n * @returns {Function}\n */\n Dispatch.prototype.addBrushEvent = function (svg) {\n if (!this.isBrushable()) return;\n\n var xScale = this.handler.xAxis.xScale;\n var yScale = this.handler.xAxis.yScale;\n var brush = this.createBrush(xScale, svg);\n\n function brushEnd() {\n if (!validBrushClick(d3.event)) return;\n\n var bar = d3.select(this);\n var startX = d3.mouse(svg.node());\n var startXInv = xScale.invert(startX[0]);\n\n // Reset the brush value\n brush.extent([startXInv, startXInv]);\n\n // Magic!\n // Need to call brush on svg to see brush when brushing\n // while on top of bars.\n // Need to call brush on bar to allow the click event to be registered\n svg.call(brush);\n bar.call(brush);\n }\n\n return this.addEvent('mousedown', brushEnd);\n };\n\n\n /**\n * Mouseover Behavior\n *\n * @method addMousePointer\n * @returns {D3.Selection}\n */\n Dispatch.prototype.addMousePointer = function () {\n return d3.select(this).style('cursor', 'pointer');\n };\n\n /**\n * Mouseover Behavior\n *\n * @param element {D3.Selection}\n * @method highlightLegend\n */\n Dispatch.prototype.highlightLegend = function (element) {\n var label = this.getAttribute('data-label');\n\n if (!label) return;\n\n d3.select(element)\n .select('.legend-ul')\n .selectAll('li.color')\n .filter(function (d, i) {\n return this.getAttribute('data-label') !== label;\n })\n .classed('blur_shape', true);\n };\n\n /**\n * Mouseout Behavior\n *\n * @param element {D3.Selection}\n * @method unHighlightLegend\n */\n Dispatch.prototype.unHighlightLegend = function (element) {\n d3.select(element)\n .select('.legend-ul')\n .selectAll('li.color')\n .classed('blur_shape', false);\n };\n\n /**\n * Adds D3 brush to SVG and returns the brush function\n *\n * @param xScale {Function} D3 xScale function\n * @param svg {HTMLElement} Reference to SVG\n * @returns {*} Returns a D3 brush function and a SVG with a brush group attached\n */\n Dispatch.prototype.createBrush = function (xScale, svg) {\n var self = this;\n var attr = self.handler._attr;\n var height = attr.height;\n var margin = attr.margin;\n\n // Brush scale\n var brush = d3.svg.brush()\n .x(xScale)\n .on('brushend', function brushEnd() {\n\n // Assumes data is selected at the chart level\n // In this case, the number of data objects should always be 1\n var data = d3.select(this).data()[0];\n var isTimeSeries = (data.ordered && data.ordered.date);\n\n // Allows for brushing on d3.scale.ordinal()\n var selected = xScale.domain().filter(function (d) {\n return (brush.extent()[0] <= xScale(d)) && (xScale(d) <= brush.extent()[1]);\n });\n var range = isTimeSeries ? brush.extent() : selected;\n\n return self.emit('brush', {\n range: range,\n config: attr,\n e: d3.event,\n data: data\n });\n });\n\n // if `addBrushing` is true, add brush canvas\n if (self.listenerCount('brush')) {\n svg.insert('g', 'g')\n .attr('class', 'brush')\n .call(brush)\n .call(function (brushG) {\n // hijack the brush start event to filter out right/middle clicks\n var brushHandler = brushG.on('mousedown.brush');\n if (!brushHandler) return; // touch events in use\n brushG.on('mousedown.brush', function () {\n if (validBrushClick(d3.event)) brushHandler.apply(this, arguments);\n });\n })\n .selectAll('rect')\n .attr('height', height - margin.top - margin.bottom);\n\n return brush;\n }\n };\n\n function validBrushClick(event) {\n return event.button === 0;\n }\n\n\n return Dispatch;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/dispatch.js\n ** module id = 721\n ** module chunks = 0\n **/","define(function (require) {\n return function HandlerTypeFactory(Private) {\n var pointSeries = Private(require('components/vislib/lib/handler/types/point_series'));\n\n /**\n * Handles the building of each visualization\n *\n * @return {Function} Returns an Object of Handler types\n */\n return {\n histogram: pointSeries.column,\n line: pointSeries.line,\n pie: Private(require('components/vislib/lib/handler/types/pie')),\n area: pointSeries.area,\n tile_map: Private(require('components/vislib/lib/handler/types/tile_map'))\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/handler/handler_types.js\n ** module id = 722\n ** module chunks = 0\n **/","define(function (require) {\n return function PieHandler(d3, Private) {\n var Handler = Private(require('components/vislib/lib/handler/handler'));\n var Data = Private(require('components/vislib/lib/data'));\n var Legend = Private(require('components/vislib/lib/legend'));\n var ChartTitle = Private(require('components/vislib/lib/chart_title'));\n\n /*\n * Handler for Pie visualizations.\n */\n\n return function (vis) {\n var data = new Data(vis.data, vis._attr);\n\n return new Handler(vis, {\n legend: new Legend(vis, vis.el, data.pieNames(), data.getPieColorFunc(), vis._attr),\n chartTitle: new ChartTitle(vis.el)\n });\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/handler/types/pie.js\n ** module id = 723\n ** module chunks = 0\n **/","define(function (require) {\n return function ColumnHandler(d3, Private) {\n var injectZeros = Private(require('components/vislib/components/zero_injection/inject_zeros'));\n var Handler = Private(require('components/vislib/lib/handler/handler'));\n var Data = Private(require('components/vislib/lib/data'));\n var Legend = Private(require('components/vislib/lib/legend'));\n var XAxis = Private(require('components/vislib/lib/x_axis'));\n var YAxis = Private(require('components/vislib/lib/y_axis'));\n var AxisTitle = Private(require('components/vislib/lib/axis_title'));\n var ChartTitle = Private(require('components/vislib/lib/chart_title'));\n var Alerts = Private(require('components/vislib/lib/alerts'));\n\n /*\n * Create handlers for Area, Column, and Line charts which\n * are all nearly the same minus a few details\n */\n function create(opts) {\n opts = opts || {};\n\n return function (vis) {\n var isUserDefinedYAxis = vis._attr.setYExtents;\n var data;\n\n if (opts.zeroFill) {\n data = new Data(injectZeros(vis.data), vis._attr);\n } else {\n data = new Data(vis.data, vis._attr);\n }\n\n return new Handler(vis, {\n data: data,\n legend: new Legend(vis, vis.el, data.labels, data.color, vis._attr),\n axisTitle: new AxisTitle(vis.el, data.get('xAxisLabel'), data.get('yAxisLabel')),\n chartTitle: new ChartTitle(vis.el),\n xAxis: new XAxis({\n el : vis.el,\n xValues : data.xValues(),\n ordered : data.get('ordered'),\n xAxisFormatter : data.get('xAxisFormatter'),\n expandLastBucket : opts.expandLastBucket,\n _attr : vis._attr\n }),\n alerts: new Alerts(vis, data, opts.alerts),\n yAxis: new YAxis({\n el : vis.el,\n yMin : isUserDefinedYAxis ? vis._attr.yAxis.min : data.getYMin(),\n yMax : isUserDefinedYAxis ? vis._attr.yAxis.max : data.getYMax(),\n yAxisFormatter: data.get('yAxisFormatter'),\n _attr: vis._attr\n })\n });\n\n };\n }\n\n return {\n line: create(),\n\n column: create({\n zeroFill: true,\n expandLastBucket: true\n }),\n\n area: create({\n zeroFill: true,\n alerts: [\n {\n type: 'warning',\n msg: 'Positive and negative values are not accurately represented by stacked ' +\n 'area charts. Either changing the chart mode to \"overlay\" or using a ' +\n 'bar chart is recommended.',\n test: function (vis, data) {\n if (!data.shouldBeStacked() || data.maxNumberOfSeries() < 2) return;\n\n var hasPos = data.getYMax(data._getY) > 0;\n var hasNeg = data.getYMin(data._getY) < 0;\n return (hasPos && hasNeg);\n }\n }\n ]\n })\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/handler/types/point_series.js\n ** module id = 724\n ** module chunks = 0\n **/","define(function (require) {\n return function MapHandler(d3, Private) {\n var _ = require('lodash');\n\n var Handler = Private(require('components/vislib/lib/handler/handler'));\n var Data = Private(require('components/vislib/lib/data'));\n\n return function (vis) {\n var data = new Data(vis.data, vis._attr);\n\n var MapHandler = new Handler(vis, {\n data: data\n });\n\n MapHandler.resize = function () {\n this.charts.forEach(function (chart) {\n chart.resizeArea();\n });\n };\n\n return MapHandler;\n };\n };\n});\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/handler/types/tile_map.js\n ** module id = 725\n ** module chunks = 0\n **/","define(function (require) {\n return function LayoutFactory(d3, Private) {\n var _ = require('lodash');\n\n var layoutType = Private(require('components/vislib/lib/layout/layout_types'));\n\n /**\n * Builds the visualization DOM layout\n *\n * The Layout Constructor is responsible for rendering the visualization\n * layout, which includes all the DOM div elements.\n * Input:\n * 1. DOM div - parent element for which the layout is attached\n * 2. data - data is bound to the div element\n * 3. chartType (e.g. 'histogram') - specifies the layout type to grab\n *\n * @class Layout\n * @constructor\n * @param el {HTMLElement} HTML element to which the chart will be appended\n * @param data {Object} Elasticsearch query results for this specific chart\n * @param chartType {Object} Reference to chart functions, i.e. Pie\n */\n function Layout(el, data, chartType, opts) {\n if (!(this instanceof Layout)) {\n return new Layout(el, data, chartType, opts);\n }\n\n this.el = el;\n this.data = data;\n this.opts = opts;\n this.layoutType = layoutType[chartType](this.el, this.data);\n }\n\n // Render the layout\n /**\n * Renders visualization HTML layout\n * Remove all elements from the current visualization and creates the layout\n *\n * @method render\n */\n Layout.prototype.render = function () {\n this.removeAll(this.el);\n this.createLayout(this.layoutType);\n };\n\n /**\n * Create the layout based on the json array provided\n * for each object in the layout array, call the layout function\n *\n * @method createLayout\n * @param arr {Array} Json array\n * @returns {*} Creates the visualization layout\n */\n Layout.prototype.createLayout = function (arr) {\n var self = this;\n\n return _.each(arr, function (obj) {\n self.layout(obj);\n });\n };\n\n /**\n * Appends a DOM element based on the object keys\n * check to see if reference to DOM element is string but not class selector\n * Create a class selector\n *\n * @method layout\n * @param obj {Object} Instructions for creating the layout of a DOM Element\n * @returns {*} DOM Element\n */\n Layout.prototype.layout = function (obj) {\n if (!obj.parent) {\n throw new Error('No parent element provided');\n }\n\n if (!obj.type) {\n throw new Error('No element type provided');\n }\n\n if (typeof obj.type !== 'string') {\n throw new Error(obj.type + ' must be a string');\n }\n\n if (typeof obj.parent === 'string' && obj.parent.charAt(0) !== '.') {\n obj.parent = '.' + obj.parent;\n }\n\n var childEl = this.appendElem(obj.parent, obj.type, obj.class);\n\n if (obj.datum) {\n childEl.datum(obj.datum);\n }\n\n if (obj.splits) {\n childEl.call(obj.splits, obj.parent, this.opts);\n }\n\n if (obj.children) {\n var newParent = childEl[0][0];\n\n _.forEach(obj.children, function (obj) {\n if (!obj.parent) {\n obj.parent = newParent;\n }\n });\n\n this.createLayout(obj.children);\n }\n\n return childEl;\n };\n\n /**\n * Appends a `type` of DOM element to `el` and gives it a class name attribute `className`\n *\n * @method appendElem\n * @param el {HTMLElement} Reference to a DOM Element\n * @param type {String} DOM element type\n * @param className {String} CSS class name\n * @returns {*} Reference to D3 Selection\n */\n Layout.prototype.appendElem = function (el, type, className) {\n if (!el || !type || !className) {\n throw new Error('Function requires that an el, type, and class be provided');\n }\n\n if (typeof el === 'string') {\n // Create a DOM reference with a d3 selection\n // Need to make sure that the `el` is bound to this object\n // to prevent it from being appended to another Layout\n el = d3.select(this.el)\n .select(el)[0][0];\n }\n\n return d3.select(el)\n .append(type)\n .attr('class', className);\n };\n\n /**\n * Removes all DOM elements from DOM element\n *\n * @method removeAll\n * @param el {HTMLElement} Reference to DOM element\n * @returns {D3.Selection|D3.Transition.Transition} Reference to an empty DOM element\n */\n Layout.prototype.removeAll = function (el) {\n return d3.select(el).selectAll('*').remove();\n };\n\n return Layout;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/layout.js\n ** module id = 726\n ** module chunks = 0\n **/","define(function (require) {\n return function LayoutTypeFactory(Private) {\n\n /**\n * Provides the HTML layouts for each visualization class\n *\n * @module vislib\n * @submodule LayoutTypeFactory\n * @param Private {Service} Loads any function as an angular module\n * @return {Function} Returns an Object of HTML layouts for each visualization class\n */\n return {\n histogram: Private(require('components/vislib/lib/layout/types/column_layout')),\n line: Private(require('components/vislib/lib/layout/types/column_layout')),\n area: Private(require('components/vislib/lib/layout/types/column_layout')),\n pie: Private(require('components/vislib/lib/layout/types/pie_layout')),\n tile_map: Private(require('components/vislib/lib/layout/types/map_layout'))\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/layout_types.js\n ** module id = 727\n ** module chunks = 0\n **/","define(function () {\n return function ChartSplitFactory(d3) {\n /*\n * Adds div DOM elements to the `.chart-wrapper` element based on the data layout.\n * For example, if the data has rows, it returns the same number of\n * `.chart` elements as row objects.\n */\n return function split(selection) {\n selection.each(function (data) {\n var div = d3.select(this)\n .attr('class', function () {\n if (data.rows) {\n return 'chart-wrapper-row';\n } else if (data.columns) {\n return 'chart-wrapper-column';\n } else {\n return 'chart-wrapper';\n }\n });\n var divClass;\n\n var charts = div.selectAll('charts')\n .append('div')\n .data(function (d) {\n if (d.rows) {\n divClass = 'chart-row';\n return d.rows;\n } else if (d.columns) {\n divClass = 'chart-column';\n return d.columns;\n } else {\n divClass = 'chart';\n return [d];\n }\n })\n .enter()\n .append('div')\n .attr('class', function () {\n return divClass;\n });\n\n if (!data.series) {\n charts.call(split);\n }\n });\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/splits/column_chart/chart_split.js\n ** module id = 728\n ** module chunks = 0\n **/","define(function () {\n return function ChartTitleSplitFactory(d3) {\n /*\n * Adds div DOM elements to either the `.y-axis-chart-title` element or the\n * `.x-axis-chart-title` element based on the data layout.\n * For example, if the data has rows, it returns the same number of\n * `.chart-title` elements as row objects.\n * if not data.rows or data.columns, return no chart titles\n */\n return function (selection) {\n selection.each(function (data) {\n var div = d3.select(this);\n\n if (!data.series) {\n div.selectAll('.chart-title')\n .append('div')\n .data(function (d) {\n return d.rows ? d.rows : d.columns;\n })\n .enter()\n .append('div')\n .attr('class', 'chart-title');\n\n if (data.rows) {\n d3.select('.x-axis-chart-title').remove();\n } else {\n d3.select('.y-axis-chart-title').remove();\n }\n\n return div;\n }\n\n return d3.select(this).remove();\n });\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/splits/column_chart/chart_title_split.js\n ** module id = 729\n ** module chunks = 0\n **/","define(function () {\n return function XAxisSplitFactory(d3) {\n\n /*\n * Adds div DOM elements to the `.x-axis-div-wrapper` element based on the data layout.\n * For example, if the data has rows, it returns the same number of\n * `.x-axis-div` elements as row objects.\n */\n\n return function (selection) {\n selection.each(function () {\n var div = d3.select(this);\n\n div.selectAll('.x-axis-div')\n .append('div')\n .data(function (d) {\n return d.columns ? d.columns : [d];\n })\n .enter()\n .append('div')\n .attr('class', 'x-axis-div');\n });\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/splits/column_chart/x_axis_split.js\n ** module id = 730\n ** module chunks = 0\n **/","define(function () {\n return function YAxisSplitFactory(d3) {\n /*\n * Adds div DOM elements to the `.y-axis-div-wrapper` element based on the data layout.\n * For example, if the data has rows, it returns the same number of\n * `.y-axis-div` elements as row objects.\n */\n\n // render and get bounding box width\n return function (selection, parent, opts) {\n var yAxis = opts && opts.yAxis;\n\n selection.each(function () {\n var div = d3.select(this);\n\n div.call(setWidth, yAxis);\n\n div.selectAll('.y-axis-div')\n .append('div')\n .data(function (d) {\n return d.rows ? d.rows : [d];\n })\n .enter()\n .append('div')\n .attr('class', 'y-axis-div');\n });\n };\n\n function setWidth(el, yAxis) {\n if (!yAxis) return;\n\n var padding = 5;\n var height = parseInt(el.node().clientHeight, 10);\n\n // render svg and get the width of the bounding box\n var svg = d3.select('body')\n .append('svg')\n .attr('style', 'position:absolute; top:-10000; left:-10000');\n var width = svg.append('g')\n .call(yAxis.getYAxis(height)).node().getBBox().width + padding;\n svg.remove();\n\n el.style('width', (width + padding) + 'px');\n }\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/splits/column_chart/y_axis_split.js\n ** module id = 731\n ** module chunks = 0\n **/","define(function () {\n return function ChartSplitFactory(d3) {\n\n /*\n * Adds div DOM elements to the `.chart-wrapper` element based on the data layout.\n * For example, if the data has rows, it returns the same number of\n * `.chart` elements as row objects.\n */\n\n return function split(selection) {\n selection.each(function (data) {\n var div = d3.select(this)\n .attr('class', function () {\n if (data.rows) {\n return 'chart-wrapper-row';\n } else if (data.columns) {\n return 'chart-wrapper-column';\n } else {\n return 'chart-wrapper';\n }\n });\n var divClass;\n\n var charts = div.selectAll('charts')\n .append('div')\n .data(function (d) {\n if (d.rows) {\n divClass = 'chart-row';\n return d.rows;\n } else if (d.columns) {\n divClass = 'chart-column';\n return d.columns;\n } else {\n divClass = 'chart';\n return [d];\n }\n })\n .enter()\n .append('div')\n .attr('class', function () {\n return divClass;\n });\n\n if (!data.slices) {\n charts.call(split);\n }\n });\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/splits/pie_chart/chart_split.js\n ** module id = 732\n ** module chunks = 0\n **/","define(function () {\n return function ChartTitleSplitFactory(d3) {\n\n /*\n * Adds div DOM elements to either the `.y-axis-chart-title` element or the\n * `.x-axis-chart-title` element based on the data layout.\n * For example, if the data has rows, it returns the same number of\n * `.chart-title` elements as row objects.\n * if not data.rows or data.columns, return no chart titles\n */\n\n return function (selection, parent) {\n selection.each(function (data) {\n var div = d3.select(this);\n\n if (!data.slices) {\n div.selectAll('.chart-title')\n .append('div')\n .data(function (d) {\n return d.rows ? d.rows : d.columns;\n })\n .enter()\n .append('div')\n .attr('class', 'chart-title');\n\n if (data.rows) {\n d3.select(parent).select('.x-axis-chart-title').remove();\n } else {\n d3.select(parent).select('.y-axis-chart-title').remove();\n }\n\n return div;\n }\n\n return d3.select(this).remove();\n });\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js\n ** module id = 733\n ** module chunks = 0\n **/","define(function () {\n return function ChartSplitFactory(d3) {\n /*\n * Adds div DOM elements to the `.chart-wrapper` element based on the data layout.\n * For example, if the data has rows, it returns the same number of\n * `.chart` elements as row objects.\n */\n return function split(selection) {\n selection.each(function (data) {\n var div = d3.select(this)\n .attr('class', function () {\n // Determine the parent class\n if (data.rows) {\n return 'chart-wrapper-row';\n } else if (data.columns) {\n return 'chart-wrapper-column';\n } else {\n return 'chart-wrapper';\n }\n });\n var divClass;\n\n var charts = div.selectAll('charts')\n .append('div')\n .data(function (d) {\n // Determine the child class\n if (d.rows) {\n divClass = 'chart-row';\n return d.rows;\n } else if (d.columns) {\n divClass = 'chart-column';\n return d.columns;\n } else {\n divClass = 'chart';\n return [d];\n }\n })\n .enter()\n .append('div')\n .attr('class', function () {\n return divClass;\n });\n\n if (!data.geoJson) {\n charts.call(split);\n }\n });\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/splits/tile_map/map_split.js\n ** module id = 734\n ** module chunks = 0\n **/","define(function (require) {\n return function ColumnLayoutFactory(d3, Private) {\n\n var mapSplit = Private(require('components/vislib/lib/layout/splits/tile_map/map_split'));\n\n /*\n * Specifies the visualization layout for tile maps.\n *\n * This is done using an array of objects. The first object has\n * a `parent` DOM element, a DOM `type` (e.g. div, svg, etc),\n * and a `class` (required). Each child can omit the parent object,\n * but must include a type and class.\n *\n * Optionally, you can specify `datum` to be bound to the DOM\n * element, a `splits` function that divides the selected element\n * into more DOM elements based on a callback function provided, or\n * a children array which nests other layout objects.\n *\n * Objects in children arrays are children of the current object and return\n * DOM elements which are children of their respective parent element.\n */\n\n return function (el, data) {\n if (!el || !data) {\n throw new Error('Both an el and data need to be specified');\n }\n\n return [\n {\n parent: el,\n type: 'div',\n class: 'vis-wrapper',\n datum: data,\n children: [\n {\n type: 'div',\n class: 'vis-col-wrapper',\n children: [\n {\n type: 'div',\n class: 'chart-wrapper',\n splits: mapSplit\n }\n ]\n }\n ]\n }\n ];\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/types/map_layout.js\n ** module id = 735\n ** module chunks = 0\n **/","define(function (require) {\n return function ColumnLayoutFactory(d3, Private) {\n var chartSplit = Private(require('components/vislib/lib/layout/splits/pie_chart/chart_split'));\n var chartTitleSplit = Private(require('components/vislib/lib/layout/splits/pie_chart/chart_title_split'));\n\n /**\n * Specifies the visualization layout for column charts.\n *\n * This is done using an array of objects. The first object has\n * a `parent` DOM element, a DOM `type` (e.g. div, svg, etc),\n * and a `class` (required). Each child can omit the parent object,\n * but must include a type and class.\n *\n * Optionally, you can specify `datum` to be bound to the DOM\n * element, a `splits` function that divides the selected element\n * into more DOM elements based on a callback function provided, or\n * a children array which nests other layout objects.\n *\n * Objects in children arrays are children of the current object and return\n * DOM elements which are children of their respective parent element.\n */\n\n return function (el, data) {\n if (!el || !data) {\n throw new Error('Both an el and data need to be specified');\n }\n\n return [\n {\n parent: el,\n type: 'div',\n class: 'vis-wrapper',\n datum: data,\n children: [\n {\n type: 'div',\n class: 'y-axis-chart-title',\n splits: chartTitleSplit\n },\n {\n type: 'div',\n class: 'vis-col-wrapper',\n children: [\n {\n type: 'div',\n class: 'chart-wrapper',\n splits: chartSplit\n },\n {\n type: 'div',\n class: 'x-axis-chart-title',\n splits: chartTitleSplit\n }\n ]\n },\n {\n type: 'div',\n class: 'legend-col-wrapper'\n }\n ]\n }\n ];\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/types/pie_layout.js\n ** module id = 736\n ** module chunks = 0\n **/","define(function (require) {\n return function ResizeCheckerFactory(Private, Notifier, $rootScope) {\n var $ = require('jquery');\n var _ = require('lodash');\n\n var EventEmitter = Private(require('components/events'));\n var reflowWatcher = Private(require('components/reflow_watcher'));\n var sequencer = require('utils/sequencer');\n\n var SCHEDULE = ResizeChecker.SCHEDULE = sequencer.createEaseIn(\n 100, // shortest delay\n 10000, // longest delay\n 50 // tick count\n );\n\n // maximum ms that we can delay emitting 'resize'. This is only used\n // to debounce resizes when the size of the element is constantly changing\n var MS_MAX_RESIZE_DELAY = ResizeChecker.MS_MAX_RESIZE_DELAY = 500;\n\n /**\n * Checks the size of an element on a regular basis. Provides\n * an event that is emited when the element has changed size.\n *\n * @class ResizeChecker\n * @param {HtmlElement} el - the element to track the size of\n */\n _.class(ResizeChecker).inherits(EventEmitter);\n function ResizeChecker(el) {\n ResizeChecker.Super.call(this);\n\n this.$el = $(el);\n this.notify = new Notifier({ location: 'Vislib ResizeChecker ' + _.uniqueId() });\n\n this.saveSize();\n\n this.check = _.bind(this.check, this);\n this.check();\n\n this.onReflow = _.bind(this.onReflow, this);\n reflowWatcher.on('reflow', this.onReflow);\n }\n\n ResizeChecker.prototype.onReflow = function () {\n this.startSchedule(SCHEDULE);\n };\n\n /**\n * Read the size of the element\n *\n * @method read\n * @return {object} - an object with keys `w` (width) and `h` (height)\n */\n ResizeChecker.prototype.read = function () {\n return {\n w: this.$el[0].clientWidth,\n h: this.$el[0].clientHeight\n };\n };\n\n\n /**\n * Save the element size, preventing it from being considered as an\n * update.\n *\n * @method save\n * @param {object} [size] - optional size to save, otherwise #read() is called\n * @return {boolean} - true if their was a change in the new\n */\n ResizeChecker.prototype.saveSize = function (size) {\n if (!size) size = this.read();\n\n if (this._equalsSavedSize(size)) {\n return false;\n }\n\n this._savedSize = size;\n return true;\n };\n\n\n /**\n * Determine if a given size matches the currently saved size.\n *\n * @private\n * @method _equalsSavedSize\n * @param {object} a - an object that matches the return value of #read()\n * @return {boolean} - true if the passed in value matches the saved size\n */\n ResizeChecker.prototype._equalsSavedSize = function (a) {\n var b = this._savedSize || {};\n return a.w === b.w && a.h === b.h;\n };\n\n /**\n * Read the time that the dirty state last changed.\n *\n * @method lastDirtyChange\n * @return {timestamp} - the unix timestamp (in ms) of the last update\n * to the dirty state\n */\n ResizeChecker.prototype.lastDirtyChange = function () {\n return this._dirtyChangeStamp;\n };\n\n /**\n * Record the dirty state\n *\n * @method saveDirty\n * @param {boolean} val\n * @return {boolean} - true if the dirty state changed by this save\n */\n ResizeChecker.prototype.saveDirty = function (val) {\n val = !!val;\n\n if (val === this._isDirty) return false;\n\n this._isDirty = val;\n this._dirtyChangeStamp = Date.now();\n return true;\n };\n\n /**\n * The check routine that executes regularly and will reschedule itself\n * to run again in the future. It determines the state of the elements\n * size and decides when to emit the \"update\" event.\n *\n * @method check\n * @return {void}\n */\n ResizeChecker.prototype.check = function () {\n if (window.DISABLE_RESIZE_CHECKER) return;\n\n var newSize = this.read();\n var dirty = this.saveSize(newSize);\n var dirtyChanged = this.saveDirty(dirty);\n\n var doneDirty = !dirty && dirtyChanged;\n var muchDirty = dirty && (this.lastDirtyChange() - Date.now() > MS_MAX_RESIZE_DELAY);\n if (doneDirty || muchDirty) {\n this.emit('resize', newSize);\n }\n\n // if the dirty state is unchanged, continue using the previous schedule\n if (!dirtyChanged) {\n return this.continueSchedule();\n }\n\n return this.startSchedule(SCHEDULE);\n };\n\n /**\n * Start running a new schedule, using one of the SCHEDULE_* constants.\n *\n * @method startSchedule\n * @param {integer[]} schedule - an array of millisecond times that should\n * be used to schedule calls to #check();\n * @return {integer} - the id of the next timer\n */\n ResizeChecker.prototype.startSchedule = function (schedule) {\n if (window.DISABLE_RESIZE_CHECKER) return;\n\n this._tick = -1;\n this._currentSchedule = schedule;\n return this.continueSchedule();\n };\n\n /**\n * Continue running the current schedule. MUST BE CALLED AFTER #startSchedule()\n *\n * @method continueSchedule\n * @return {integer} - the id of the next timer\n */\n ResizeChecker.prototype.continueSchedule = function () {\n if (window.DISABLE_RESIZE_CHECKER) return;\n\n clearTimeout(this._timerId);\n\n if (this._tick < this._currentSchedule.length - 1) {\n // at the end of the schedule, don't progress any further but repeat the last value\n this._tick += 1;\n }\n\n var check = this.check; // already bound\n var tick = this._tick;\n var notify = this.notify;\n var ms = this._currentSchedule[this._tick];\n return (this._timerId = setTimeout(function () {\n check();\n }, ms));\n };\n\n /**\n * Signal that the ResizeChecker should shutdown.\n *\n * Cleans up it's listeners and timers.\n *\n * @method destroy\n * @return {void}\n */\n ResizeChecker.prototype.destroy = function () {\n reflowWatcher.off('reflow', this.onReflow);\n clearTimeout(this._timerId);\n };\n\n return ResizeChecker;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/resize_checker.js\n ** module id = 737\n ** module chunks = 0\n **/","define(function (require) {\n return function XAxisFactory(d3, Private) {\n var $ = require('jquery');\n var _ = require('lodash');\n var moment = require('moment');\n\n var ErrorHandler = Private(require('components/vislib/lib/_error_handler'));\n\n /**\n * Adds an x axis to the visualization\n *\n * @class XAxis\n * @constructor\n * @param args {{el: (HTMLElement), xValues: (Array), ordered: (Object|*),\n * xAxisFormatter: (Function), _attr: (Object|*)}}\n */\n _.class(XAxis).inherits(ErrorHandler);\n function XAxis(args) {\n if (!(this instanceof XAxis)) {\n return new XAxis(args);\n }\n\n this.el = args.el;\n this.xValues = args.xValues;\n this.ordered = args.ordered;\n this.xAxisFormatter = args.xAxisFormatter;\n this.expandLastBucket = args.expandLastBucket == null ? true : args.expandLastBucket;\n this._attr = _.defaults(args._attr || {});\n }\n\n /**\n * Renders the x axis\n *\n * @method render\n * @returns {D3.UpdateSelection} Appends x axis to visualization\n */\n XAxis.prototype.render = function () {\n d3.select(this.el).selectAll('.x-axis-div').call(this.draw());\n };\n\n /**\n * Returns d3 x axis scale function.\n * If time, return time scale, else return d3 ordinal scale for nominal data\n *\n * @method getScale\n * @returns {*} D3 scale function\n */\n XAxis.prototype.getScale = function () {\n var ordered = this.ordered;\n\n if (ordered && ordered.date) {\n return d3.time.scale.utc();\n }\n return d3.scale.ordinal();\n };\n\n /**\n * Add domain to the x axis scale.\n * if time, return a time domain, and calculate the min date, max date, and time interval\n * else, return a nominal (d3.scale.ordinal) domain, i.e. array of x axis values\n *\n * @method getDomain\n * @param scale {Function} D3 scale\n * @returns {*} D3 scale function\n */\n XAxis.prototype.getDomain = function (scale) {\n var ordered = this.ordered;\n\n if (ordered && ordered.date) {\n return this.getTimeDomain(scale, this.xValues);\n }\n return this.getOrdinalDomain(scale, this.xValues);\n };\n\n /**\n * Returns D3 time domain\n *\n * @method getTimeDomain\n * @param scale {Function} D3 scale function\n * @param data {Array}\n * @returns {*} D3 scale function\n */\n XAxis.prototype.getTimeDomain = function (scale, data) {\n return scale.domain([this.minExtent(data), this.maxExtent(data)]);\n };\n\n XAxis.prototype.minExtent = function (data) {\n return this._calculateExtent(data || this.xValues, 'min');\n };\n\n XAxis.prototype.maxExtent = function (data) {\n return this._calculateExtent(data || this.xValues, 'max');\n };\n\n /**\n *\n * @param data\n * @param extent\n */\n XAxis.prototype._calculateExtent = function (data, extent) {\n var ordered = this.ordered;\n var opts = [ordered[extent]];\n\n var point = d3[extent](data);\n if (this.expandLastBucket && extent === 'max') {\n point = this.addInterval(point);\n }\n opts.push(point);\n\n return d3[extent](opts.reduce(function (opts, v) {\n if (!_.isNumber(v)) v = +v;\n if (!isNaN(v)) opts.push(v);\n return opts;\n }, []));\n };\n\n /**\n * Add the interval to a point on the x axis,\n * this properly adds dates if needed.\n *\n * @param {number} x - a value on the x-axis\n * @returns {number} - x + the ordered interval\n */\n XAxis.prototype.addInterval = function (x) {\n return this.modByInterval(x, +1);\n };\n\n /**\n * Subtract the interval to a point on the x axis,\n * this properly subtracts dates if needed.\n *\n * @param {number} x - a value on the x-axis\n * @returns {number} - x - the ordered interval\n */\n XAxis.prototype.subtractInterval = function (x) {\n return this.modByInterval(x, -1);\n };\n\n /**\n * Modify the x value by n intervals, properly\n * handling dates if needed.\n *\n * @param {number} x - a value on the x-axis\n * @param {number} n - the number of intervals\n * @returns {number} - x + n intervals\n */\n XAxis.prototype.modByInterval = function (x, n) {\n var ordered = this.ordered;\n if (!ordered) return x;\n var interval = ordered.interval;\n if (!interval) return x;\n\n if (!ordered.date) {\n return x += (ordered.interval * n);\n }\n\n var y = moment(x);\n var method = n > 0 ? 'add' : 'subtract';\n\n _.times(Math.abs(n), function () {\n y[method](interval);\n });\n\n return y.valueOf();\n };\n\n /**\n * Return a nominal(d3 ordinal) domain\n *\n * @method getOrdinalDomain\n * @param scale {Function} D3 scale function\n * @param xValues {Array} Array of x axis values\n * @returns {*} D3 scale function\n */\n XAxis.prototype.getOrdinalDomain = function (scale, xValues) {\n return scale.domain(xValues);\n };\n\n /**\n * Return the range for the x axis scale\n * if time, return a normal range, else if nominal, return rangeBands with a default (0.1) spacer specified\n *\n * @method getRange\n * @param scale {Function} D3 scale function\n * @param width {Number} HTML Element width\n * @returns {*} D3 scale function\n */\n XAxis.prototype.getRange = function (domain, width) {\n var ordered = this.ordered;\n\n if (ordered && ordered.date) {\n return domain.range([0, width]);\n }\n return domain.rangeBands([0, width], 0.1);\n };\n\n /**\n * Return the x axis scale\n *\n * @method getXScale\n * @param width {Number} HTML Element width\n * @returns {*} D3 x scale function\n */\n XAxis.prototype.getXScale = function (width) {\n var domain = this.getDomain(this.getScale());\n\n return this.getRange(domain, width);\n };\n\n /**\n * Creates d3 xAxis function\n *\n * @method getXAxis\n * @param width {Number} HTML Element width\n */\n XAxis.prototype.getXAxis = function (width) {\n this.xScale = this.getXScale(width);\n\n if (!this.xScale || _.isNaN(this.xScale)) {\n throw new Error('xScale is ' + this.xScale);\n }\n\n this.xAxis = d3.svg.axis()\n .scale(this.xScale)\n .ticks(10)\n .tickFormat(this.xAxisFormatter)\n .orient('bottom');\n };\n\n /**\n * Renders the x axis\n *\n * @method draw\n * @returns {Function} Renders the x axis to a D3 selection\n */\n XAxis.prototype.draw = function () {\n var self = this;\n var div;\n var width;\n var height;\n var svg;\n var parentWidth;\n var n;\n this._attr.isRotated = false;\n\n return function (selection) {\n n = selection[0].length;\n parentWidth = $(self.el)\n .find('.x-axis-div-wrapper')\n .width();\n\n selection.each(function () {\n\n div = d3.select(this);\n width = parentWidth / n;\n height = $(this.parentElement).height();\n\n self.validateWidthandHeight(width, height);\n\n self.getXAxis(width);\n\n svg = div.append('svg')\n .attr('width', width)\n .attr('height', height);\n\n svg.append('g')\n .attr('class', 'x axis')\n .attr('transform', 'translate(0,0)')\n .call(self.xAxis);\n });\n\n selection.call(self.filterOrRotate());\n };\n };\n\n /**\n * Returns a function that evaluates scale type and\n * applies filter to tick labels on time scales\n * rotates and truncates tick labels on nominal/ordinal scales\n *\n * @method filterOrRotate\n * @returns {Function} Filters or rotates x axis tick labels\n */\n XAxis.prototype.filterOrRotate = function () {\n var self = this;\n var ordered = self.ordered;\n var axis;\n var labels;\n\n return function (selection) {\n selection.each(function () {\n axis = d3.select(this);\n labels = axis.selectAll('.tick text');\n if (ordered && ordered.date) {\n axis.call(self.filterAxisLabels());\n } else {\n axis.call(self.rotateAxisLabels());\n }\n });\n\n self.updateXaxisHeight();\n\n selection.call(self.fitTitles());\n\n };\n };\n\n /**\n * Rotate the axis tick labels within selection\n *\n * @returns {Function} Rotates x axis tick labels of a D3 selection\n */\n XAxis.prototype.rotateAxisLabels = function () {\n var self = this;\n var text;\n var barWidth = self.xScale.rangeBand();\n var maxRotatedLength = 180;\n var xAxisPadding = 15;\n var svg;\n var lengths = [];\n var length;\n self._attr.isRotated = false;\n\n return function (selection) {\n text = selection.selectAll('.tick text');\n\n text.each(function textWidths() {\n lengths.push(d3.select(this).node().getBBox().width);\n });\n length = _.max(lengths);\n self._attr.xAxisLabelHt = length + xAxisPadding;\n\n // if longer than bar width, rotate\n if (length > barWidth) {\n self._attr.isRotated = true;\n }\n\n // if longer than maxRotatedLength, truncate\n if (length > maxRotatedLength) {\n self._attr.xAxisLabelHt = maxRotatedLength;\n }\n\n if (self._attr.isRotated) {\n text\n .text(function truncate() {\n return self.truncateLabel(this, self._attr.xAxisLabelHt);\n })\n .style('text-anchor', 'end')\n .attr('dx', '-.8em')\n .attr('dy', '-.60em')\n .attr('transform', function rotate() {\n return 'rotate(-90)';\n });\n selection.select('svg')\n .attr('height', self._attr.xAxisLabelHt);\n }\n };\n };\n\n /**\n * Returns a string that is truncated to fit size\n *\n * @method truncateLabel\n * @param text {HTMLElement}\n * @param size {Number}\n * @returns {*|jQuery}\n */\n XAxis.prototype.truncateLabel = function (text, size) {\n var node = d3.select(text).node();\n var str = $(node).text();\n var width = node.getBBox().width;\n var chars = str.length;\n var pxPerChar = width / chars;\n var endChar = 0;\n var ellipsesPad = 4;\n\n if (width > size) {\n endChar = Math.floor((size / pxPerChar) - ellipsesPad);\n while (str[endChar - 1] === ' ' || str[endChar - 1] === '-' || str[endChar - 1] === ',') {\n endChar = endChar - 1;\n }\n str = str.substr(0, endChar) + '...';\n }\n return str;\n };\n\n /**\n * Filter out text labels by width and position on axis\n * trims labels that would overlap each other\n * or extend past left or right edges\n * if prev label pos (or 0) + half of label width is < label pos\n * and label pos + half width is not > width of axis\n *\n * @method filterAxisLabels\n * @returns {Function}\n */\n XAxis.prototype.filterAxisLabels = function () {\n var self = this;\n var startX = 0;\n var maxW;\n var par;\n var myX;\n var myWidth;\n var halfWidth;\n var padding = 1.1;\n\n return function (selection) {\n selection.selectAll('.tick text')\n .text(function (d) {\n par = d3.select(this.parentNode).node();\n myX = self.xScale(d);\n myWidth = par.getBBox().width * padding;\n halfWidth = myWidth / 2;\n maxW = $(self.el).find('.x-axis-div').width();\n\n if ((startX + halfWidth) < myX && maxW > (myX + halfWidth)) {\n startX = myX + halfWidth;\n return self.xAxisFormatter(d);\n } else {\n d3.select(this.parentNode).remove();\n }\n });\n };\n };\n\n /**\n * Returns a function that adjusts axis titles and\n * chart title transforms to fit axis label divs.\n * Sets transform of x-axis-title to fit .x-axis-title div width\n * if x-axis-chart-titles, set transform of x-axis-chart-titles\n * to fit .chart-title div width\n *\n * @method fitTitles\n * @returns {Function}\n */\n XAxis.prototype.fitTitles = function () {\n var visEls = $('.vis-wrapper');\n var xAxisChartTitle;\n var yAxisChartTitle;\n var text;\n var titles;\n\n return function () {\n\n visEls.each(function () {\n var visEl = d3.select(this);\n var $visEl = $(this);\n var xAxisTitle = $visEl.find('.x-axis-title');\n var yAxisTitle = $visEl.find('.y-axis-title');\n var titleWidth = xAxisTitle.width();\n var titleHeight = yAxisTitle.height();\n\n text = visEl.select('.x-axis-title')\n .select('svg')\n .attr('width', titleWidth)\n .select('text')\n .attr('transform', 'translate(' + (titleWidth / 2) + ',11)');\n\n text = visEl.select('.y-axis-title')\n .select('svg')\n .attr('height', titleHeight)\n .select('text')\n .attr('transform', 'translate(11,' + (titleHeight / 2) + ')rotate(-90)');\n\n if ($visEl.find('.x-axis-chart-title').length) {\n xAxisChartTitle = $visEl.find('.x-axis-chart-title');\n titleWidth = xAxisChartTitle.find('.chart-title').width();\n\n titles = visEl.select('.x-axis-chart-title').selectAll('.chart-title');\n titles.each(function () {\n text = d3.select(this)\n .select('svg')\n .attr('width', titleWidth)\n .select('text')\n .attr('transform', 'translate(' + (titleWidth / 2) + ',11)');\n });\n }\n\n if ($visEl.find('.y-axis-chart-title').length) {\n yAxisChartTitle = $visEl.find('.y-axis-chart-title');\n titleHeight = yAxisChartTitle.find('.chart-title').height();\n\n titles = visEl.select('.y-axis-chart-title').selectAll('.chart-title');\n titles.each(function () {\n text = d3.select(this)\n .select('svg')\n .attr('height', titleHeight)\n .select('text')\n .attr('transform', 'translate(11,' + (titleHeight / 2) + ')rotate(-90)');\n });\n }\n\n });\n\n };\n };\n\n /**\n * Appends div to make .y-axis-spacer-block\n * match height of .x-axis-wrapper\n *\n * @method updateXaxisHeight\n */\n XAxis.prototype.updateXaxisHeight = function () {\n var selection = d3.select(this.el).selectAll('.vis-wrapper');\n\n selection.each(function () {\n var visEl = d3.select(this);\n\n if (visEl.select('.inner-spacer-block').node() === null) {\n visEl.select('.y-axis-spacer-block')\n .append('div')\n .attr('class', 'inner-spacer-block');\n }\n var xAxisHt = visEl.select('.x-axis-wrapper').style('height');\n\n visEl.select('.inner-spacer-block').style('height', xAxisHt);\n });\n\n };\n\n return XAxis;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/x_axis.js\n ** module id = 738\n ** module chunks = 0\n **/","define(function (require) {\n return function YAxisFactory(d3, Private) {\n var _ = require('lodash');\n var $ = require('jquery');\n var errors = require('errors');\n\n var ErrorHandler = Private(require('components/vislib/lib/_error_handler'));\n\n /**\n * Appends y axis to the visualization\n *\n * @class YAxis\n * @constructor\n * @param args {{el: (HTMLElement), yMax: (Number), _attr: (Object|*)}}\n */\n _.class(YAxis).inherits(ErrorHandler);\n function YAxis(args) {\n this.el = args.el;\n this.scale = null;\n this.domain = [args.yMin, args.yMax];\n this.yAxisFormatter = args.yAxisFormatter;\n this._attr = args._attr || {};\n }\n\n /**\n * Renders the y axis\n *\n * @method render\n * @return {D3.UpdateSelection} Renders y axis to visualization\n */\n YAxis.prototype.render = function () {\n d3.select(this.el).selectAll('.y-axis-div').call(this.draw());\n };\n\n YAxis.prototype._isPercentage = function () {\n return (this._attr.mode === 'percentage');\n };\n\n YAxis.prototype._isUserDefined = function () {\n return (this._attr.setYExtents);\n };\n\n YAxis.prototype._isYExtents = function () {\n return (this._attr.defaultYExtents);\n };\n\n YAxis.prototype._validateUserExtents = function (domain) {\n var self = this;\n\n return domain.map(function (val) {\n val = parseInt(val, 10);\n\n if (isNaN(val)) throw new Error(val + ' is not a valid number');\n if (self._isPercentage() && self._attr.setYExtents) return val / 100;\n return val;\n });\n };\n\n YAxis.prototype._getExtents = function (domain) {\n var min = domain[0];\n var max = domain[1];\n\n if (this._isUserDefined()) return this._validateUserExtents(domain);\n if (this._isYExtents()) return domain;\n if (this._attr.scale === 'log') return this._logDomain(min, max); // Negative values cannot be displayed with a log scale.\n if (!this._isYExtents() && !this._isUserDefined()) return [Math.min(0, min), Math.max(0, max)];\n return domain;\n };\n\n YAxis.prototype._throwCustomError = function (message) {\n throw new Error(message);\n };\n\n YAxis.prototype._throwLogScaleValuesError = function () {\n throw new errors.InvalidLogScaleValues();\n };\n\n /**\n * Returns the appropriate D3 scale\n *\n * @param fnName {String} D3 scale\n * @returns {*}\n */\n YAxis.prototype._getScaleType = function (fnName) {\n if (fnName === 'square root') fnName = 'sqrt'; // Rename 'square root' to 'sqrt'\n fnName = fnName || 'linear';\n\n if (typeof d3.scale[fnName] !== 'function') return this._throwCustomError('YAxis.getScaleType: ' + fnName + ' is not a function');\n\n return d3.scale[fnName]();\n };\n\n /**\n * Return the domain for log scale, i.e. the extent of the log scale.\n * Log scales must begin at 1 since the log(0) = -Infinity\n *\n * @param scale\n * @param yMin\n * @param yMax\n * @returns {*[]}\n */\n YAxis.prototype._logDomain = function (min, max) {\n if (min < 0 || max < 0) return this._throwLogScaleValuesError();\n return [1, max];\n };\n\n /**\n * Creates the d3 y scale function\n *\n * @method getYScale\n * @param height {Number} DOM Element height\n * @returns {D3.Scale.QuantitiveScale|*} D3 yScale function\n */\n YAxis.prototype.getYScale = function (height) {\n var scale = this._getScaleType(this._attr.scale);\n var domain = this._getExtents(this.domain);\n\n this.yScale = scale\n .domain(domain)\n .range([height, 0]);\n\n if (!this._isUserDefined()) this.yScale.nice(); // round extents when not user defined\n // Prevents bars from going off the chart when the y extents are within the domain range\n if (this._attr.type === 'histogram') this.yScale.clamp(true);\n return this.yScale;\n };\n\n YAxis.prototype.getScaleType = function () {\n return this._attr.scale;\n };\n\n YAxis.prototype.tickFormat = function () {\n var isPercentage = this._attr.mode === 'percentage';\n if (isPercentage) return d3.format('%');\n if (this.yAxisFormatter) return this.yAxisFormatter;\n return d3.format('n');\n };\n\n YAxis.prototype._validateYScale = function (yScale) {\n if (!yScale || _.isNaN(yScale)) throw new Error('yScale is ' + yScale);\n };\n\n /**\n * Creates the d3 y axis function\n *\n * @method getYAxis\n * @param height {Number} DOM Element height\n * @returns {D3.Svg.Axis|*} D3 yAxis function\n */\n YAxis.prototype.getYAxis = function (height) {\n var yScale = this.getYScale(height);\n this._validateYScale(yScale);\n\n // Create the d3 yAxis function\n this.yAxis = d3.svg.axis()\n .scale(yScale)\n .tickFormat(this.tickFormat(this.domain))\n .ticks(this.tickScale(height))\n .orient('left');\n\n return this.yAxis;\n };\n\n /**\n * Create a tick scale for the y axis that modifies the number of ticks\n * based on the height of the wrapping DOM element\n * Avoid using even numbers in the yTickScale.range\n * Causes the top most tickValue in the chart to be missing\n *\n * @method tickScale\n * @param height {Number} DOM element height\n * @returns {number} Number of y axis ticks\n */\n YAxis.prototype.tickScale = function (height) {\n var yTickScale = d3.scale.linear()\n .clamp(true)\n .domain([20, 40, 1000])\n .range([0, 3, 11]);\n\n return Math.ceil(yTickScale(height));\n };\n\n /**\n * Renders the y axis to the visualization\n *\n * @method draw\n * @returns {Function} Renders y axis to visualization\n */\n YAxis.prototype.draw = function () {\n var self = this;\n var margin = this._attr.margin;\n var mode = this._attr.mode;\n var isWiggleOrSilhouette = (mode === 'wiggle' || mode === 'silhouette');\n\n return function (selection) {\n selection.each(function () {\n var el = this;\n\n var div = d3.select(el);\n var width = $(el).parent().width();\n var height = $(el).height();\n var adjustedHeight = height - margin.top - margin.bottom;\n\n // Validate whether width and height are not 0 or `NaN`\n self.validateWidthandHeight(width, adjustedHeight);\n\n var yAxis = self.getYAxis(adjustedHeight);\n\n // The yAxis should not appear if mode is set to 'wiggle' or 'silhouette'\n if (!isWiggleOrSilhouette) {\n // Append svg and y axis\n var svg = div.append('svg')\n .attr('width', width)\n .attr('height', height);\n\n svg.append('g')\n .attr('class', 'y axis')\n .attr('transform', 'translate(' + (width - 2) + ',' + margin.top + ')')\n .call(yAxis);\n\n var container = svg.select('g.y.axis').node();\n if (container) {\n var cWidth = Math.max(width, container.getBBox().width);\n svg.attr('width', cWidth);\n svg.select('g')\n .attr('transform', 'translate(' + (cWidth - 2) + ',' + margin.top + ')');\n }\n }\n });\n };\n };\n\n return YAxis;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/y_axis.js\n ** module id = 739\n ** module chunks = 0\n **/","define(function (require) {\n return function VisFactory(d3, Private) {\n var _ = require('lodash');\n\n var ResizeChecker = Private(require('components/vislib/lib/resize_checker'));\n var Events = Private(require('components/events'));\n var handlerTypes = Private(require('components/vislib/lib/handler/handler_types'));\n var chartTypes = Private(require('components/vislib/visualizations/vis_types'));\n var errors = require('errors');\n require('components/vislib/styles/main.less');\n\n /**\n * Creates the visualizations.\n *\n * @class Vis\n * @constructor\n * @param $el {HTMLElement} jQuery selected HTML element\n * @param config {Object} Parameters that define the chart type and chart options\n */\n _.class(Vis).inherits(Events);\n function Vis($el, config) {\n if (!(this instanceof Vis)) {\n return new Vis($el, config);\n }\n Vis.Super.apply(this, arguments);\n this.el = $el.get ? $el.get(0) : $el;\n this.ChartClass = chartTypes[config.type];\n this._attr = _.defaults({}, config || {}, {});\n\n // bind the resize function so it can be used as an event handler\n this.resize = _.bind(this.resize, this);\n this.resizeChecker = new ResizeChecker(this.el);\n this.resizeChecker.on('resize', this.resize);\n }\n\n /**\n * Renders the visualization\n *\n * @method render\n * @param data {Object} Elasticsearch query results\n */\n Vis.prototype.render = function (data) {\n var chartType = this._attr.type;\n\n if (!data) {\n throw new Error('No valid data!');\n }\n\n if (this.handler) {\n this.data = null;\n this._runOnHandler('destroy');\n }\n\n this.data = data;\n this.handler = handlerTypes[chartType](this) || handlerTypes.column(this);\n this._runOnHandler('render');\n };\n\n /**\n * Resizes the visualization\n *\n * @method resize\n */\n Vis.prototype.resize = function () {\n if (!this.data) {\n // TODO: need to come up with a solution for resizing when no data is available\n return;\n }\n\n if (this.handler && _.isFunction(this.handler.resize)) {\n this._runOnHandler('resize');\n } else {\n this.render(this.data);\n }\n };\n\n Vis.prototype._runOnHandler = function (method) {\n try {\n this.handler[method]();\n } catch (error) {\n // If involving height and width of the container, log error to screen.\n // Because we have to wait for the DOM element to initialize, we do not\n // want to throw an error when the DOM `el` is zero\n if (error instanceof errors.ContainerTooSmall ||\n error instanceof errors.InvalidWiggleSelection ||\n error instanceof errors.InvalidLogScaleValues ||\n error instanceof errors.PieContainsAllZeros ||\n error instanceof errors.NotEnoughData ||\n error instanceof errors.NoResults) {\n this.handler.error(error.message);\n } else {\n throw error;\n }\n }\n };\n\n /**\n * Destroys the visualization\n * Removes chart and all elements associated with it.\n * Removes chart and all elements associated with it.\n * Remove event listeners and pass destroy call down to owned objects.\n *\n * @method destroy\n */\n Vis.prototype.destroy = function () {\n var selection = d3.select(this.el).select('.vis-wrapper');\n\n this.resizeChecker.off('resize', this.resize);\n this.resizeChecker.destroy();\n if (this.handler) this._runOnHandler('destroy');\n\n selection.remove();\n selection = null;\n };\n\n /**\n * Sets attributes on the visualization\n *\n * @method set\n * @param name {String} An attribute name\n * @param val {*} Value to which the attribute name is set\n */\n Vis.prototype.set = function (name, val) {\n this._attr[name] = val;\n this.render(this.data);\n };\n\n /**\n * Gets attributes from the visualization\n *\n * @method get\n * @param name {String} An attribute name\n * @returns {*} The value of the attribute name\n */\n Vis.prototype.get = function (name) {\n return this._attr[name];\n };\n\n /**\n * Turns on event listeners.\n *\n * @param event {String}\n * @param listener{Function}\n * @returns {*}\n */\n Vis.prototype.on = function (event, listener) {\n var first = this.listenerCount(event) === 0;\n var ret = Events.prototype.on.call(this, event, listener);\n var added = this.listenerCount(event) > 0;\n\n // if this is the first listener added for the event\n // enable the event in the handler\n if (first && added && this.handler) this.handler.enable(event);\n\n return ret;\n };\n\n /**\n * Turns off event listeners.\n *\n * @param event {String}\n * @param listener{Function}\n * @returns {*}\n */\n Vis.prototype.off = function (event, listener) {\n var last = this.listenerCount(event) === 1;\n var ret = Events.prototype.off.call(this, event, listener);\n var removed = this.listenerCount(event) === 0;\n\n // Once all listeners are removed, disable the events in the handler\n if (last && removed && this.handler) this.handler.disable(event);\n return ret;\n };\n\n return Vis;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/vis.js\n ** module id = 740\n ** module chunks = 0\n **/","define(function (require) {\n return function AreaChartFactory(d3, Private) {\n var _ = require('lodash');\n var $ = require('jquery');\n\n var PointSeriesChart = Private(require('components/vislib/visualizations/_point_series_chart'));\n var TimeMarker = Private(require('components/vislib/visualizations/time_marker'));\n var errors = require('errors');\n require('components/vislib/styles/main.less');\n\n /**\n * Area chart visualization\n *\n * @class AreaChart\n * @constructor\n * @extends Chart\n * @param handler {Object} Reference to the Handler Class Constructor\n * @param el {HTMLElement} HTML element to which the chart will be appended\n * @param chartData {Object} Elasticsearch query results for this specific\n * chart\n */\n _.class(AreaChart).inherits(PointSeriesChart);\n function AreaChart(handler, chartEl, chartData) {\n if (!(this instanceof AreaChart)) {\n return new AreaChart(handler, chartEl, chartData);\n }\n\n AreaChart.Super.apply(this, arguments);\n\n this.isOverlapping = (handler._attr.mode === 'overlap');\n\n if (this.isOverlapping) {\n\n // Default opacity should return to 0.6 on mouseout\n handler._attr.defaultOpacity = 0.6;\n }\n\n this.checkIfEnoughData();\n\n this._attr = _.defaults(handler._attr || {}, {\n xValue: function (d) { return d.x; },\n yValue: function (d) { return d.y; }\n });\n }\n\n /**\n * Adds SVG path to area chart\n *\n * @method addPath\n * @param svg {HTMLElement} SVG to which rect are appended\n * @param layers {Array} Chart data array\n * @returns {D3.UpdateSelection} SVG with path added\n */\n AreaChart.prototype.addPath = function (svg, layers) {\n var self = this;\n var ordered = this.handler.data.get('ordered');\n var isTimeSeries = (ordered && ordered.date);\n var isOverlapping = this.isOverlapping;\n var color = this.handler.data.getColorFunc();\n var xScale = this.handler.xAxis.xScale;\n var yScale = this.handler.yAxis.yScale;\n var interpolate = (this._attr.smoothLines) ? 'cardinal' : this._attr.interpolate;\n var area = d3.svg.area()\n .x(function (d) {\n if (isTimeSeries) {\n return xScale(d.x);\n }\n return xScale(d.x) + xScale.rangeBand() / 2;\n })\n .y0(function (d) {\n if (isOverlapping) {\n return yScale(0);\n }\n\n return yScale(d.y0);\n })\n .y1(function (d) {\n if (isOverlapping) {\n return yScale(d.y);\n }\n\n return yScale(d.y0 + d.y);\n })\n .interpolate(interpolate);\n\n // Data layers\n var layer = svg.selectAll('.layer')\n .data(layers)\n .enter()\n .append('g')\n .attr('class', function (d, i) {\n return 'pathgroup ' + i;\n });\n\n // Append path\n var path = layer.append('path')\n .call(this._addIdentifier)\n .style('fill', function (d) {\n return color(d[0].label);\n })\n .classed('overlap_area', function () {\n return isOverlapping;\n });\n\n // update\n path.attr('d', function (d) {\n return area(d);\n });\n\n return path;\n };\n\n /**\n * Adds Events to SVG circles\n *\n * @method addCircleEvents\n * @param element {D3.UpdateSelection} SVG circles\n * @returns {D3.Selection} circles with event listeners attached\n */\n AreaChart.prototype.addCircleEvents = function (element, svg) {\n var events = this.events;\n var isBrushable = events.isBrushable();\n var brush = isBrushable ? events.addBrushEvent(svg) : undefined;\n var hover = events.addHoverEvent();\n var mouseout = events.addMouseoutEvent();\n var click = events.addClickEvent();\n var attachedEvents = element.call(hover).call(mouseout).call(click);\n\n if (isBrushable) {\n attachedEvents.call(brush);\n }\n\n return attachedEvents;\n };\n\n /**\n * Adds SVG circles to area chart\n *\n * @method addCircles\n * @param svg {HTMLElement} SVG to which circles are appended\n * @param data {Array} Chart data array\n * @returns {D3.UpdateSelection} SVG with circles added\n */\n AreaChart.prototype.addCircles = function (svg, data) {\n var self = this;\n var color = this.handler.data.getColorFunc();\n var xScale = this.handler.xAxis.xScale;\n var yScale = this.handler.yAxis.yScale;\n var ordered = this.handler.data.get('ordered');\n var circleRadius = 12;\n var circleStrokeWidth = 0;\n var tooltip = this.tooltip;\n var isTooltip = this._attr.addTooltip;\n var isOverlapping = this.isOverlapping;\n var layer;\n var circles;\n\n layer = svg.selectAll('.points')\n .data(data)\n .enter()\n .append('g')\n .attr('class', 'points area');\n\n // append the bars\n circles = layer\n .selectAll('rect')\n .data(function appendData(data) {\n return data.filter(function isNotZero(d) {\n return d.y !== 0;\n });\n });\n\n // exit\n circles.exit().remove();\n\n // enter\n circles\n .enter()\n .append('circle')\n .call(this._addIdentifier)\n .attr('stroke', function strokeColor(d) {\n return color(d.label);\n })\n .attr('fill', 'transparent')\n .attr('stroke-width', circleStrokeWidth);\n\n // update\n circles\n .attr('cx', function cx(d) {\n if (ordered && ordered.date) {\n return xScale(d.x);\n }\n return xScale(d.x) + xScale.rangeBand() / 2;\n })\n .attr('cy', function cy(d) {\n if (isOverlapping) {\n return yScale(d.y);\n }\n return yScale(d.y0 + d.y);\n })\n .attr('r', circleRadius);\n\n // Add tooltip\n if (isTooltip) {\n circles.call(tooltip.render());\n }\n\n return circles;\n };\n\n /**\n * Adds SVG clipPath\n *\n * @method addClipPath\n * @param svg {HTMLElement} SVG to which clipPath is appended\n * @param width {Number} SVG width\n * @param height {Number} SVG height\n * @returns {D3.UpdateSelection} SVG with clipPath added\n */\n AreaChart.prototype.addClipPath = function (svg, width, height) {\n // Prevents circles from being clipped at the top of the chart\n var startX = 0;\n var startY = 0;\n var id = 'chart-area' + _.uniqueId();\n\n // Creating clipPath\n return svg\n .attr('clip-path', 'url(#' + id + ')')\n .append('clipPath')\n .attr('id', id)\n .append('rect')\n .attr('x', startX)\n .attr('y', startY)\n .attr('width', width)\n .attr('height', height);\n };\n\n AreaChart.prototype.checkIfEnoughData = function () {\n var series = this.chartData.series;\n var message = 'Area charts require more than one data point. Try adding ' +\n 'an X-Axis Aggregation';\n\n var notEnoughData = series.some(function (obj) {\n return obj.values.length < 2;\n });\n\n if (notEnoughData) {\n throw new errors.NotEnoughData(message);\n }\n };\n\n AreaChart.prototype.validateWiggleSelection = function () {\n var isWiggle = this._attr.mode === 'wiggle';\n var ordered = this.handler.data.get('ordered');\n\n if (isWiggle && !ordered) throw new errors.InvalidWiggleSelection();\n };\n\n /**\n * Renders d3 visualization\n *\n * @method draw\n * @returns {Function} Creates the area chart\n */\n AreaChart.prototype.draw = function () {\n // Attributes\n var self = this;\n var xScale = this.handler.xAxis.xScale;\n var $elem = $(this.chartEl);\n var margin = this._attr.margin;\n var elWidth = this._attr.width = $elem.width();\n var elHeight = this._attr.height = $elem.height();\n var yMin = this.handler.yAxis.yMin;\n var yScale = this.handler.yAxis.yScale;\n var minWidth = 20;\n var minHeight = 20;\n var addTimeMarker = this._attr.addTimeMarker;\n var times = this._attr.times || [];\n var timeMarker;\n var div;\n var svg;\n var width;\n var height;\n var layers;\n var circles;\n var path;\n\n return function (selection) {\n selection.each(function (data) {\n // Stack data\n layers = self.stackData(data);\n\n // Get the width and height\n width = elWidth;\n height = elHeight - margin.top - margin.bottom;\n\n if (addTimeMarker) {\n timeMarker = new TimeMarker(times, xScale, height);\n }\n\n if (width < minWidth || height < minHeight) {\n throw new errors.ContainerTooSmall();\n }\n self.validateWiggleSelection();\n\n // Select the current DOM element\n div = d3.select(this);\n\n // Create the canvas for the visualization\n svg = div.append('svg')\n .attr('width', width)\n .attr('height', height + margin.top + margin.bottom)\n .append('g')\n .attr('transform', 'translate(0,' + margin.top + ')');\n\n // add clipPath to hide circles when they go out of bounds\n self.addClipPath(svg, width, height);\n self.createEndZones(svg);\n\n // add path\n path = self.addPath(svg, layers);\n\n if (yMin < 0 && self._attr.mode !== 'wiggle' && self._attr.mode !== 'silhouette') {\n\n // Draw line at yScale 0 value\n svg.append('line')\n .attr('class', 'zero-line')\n .attr('x1', 0)\n .attr('y1', yScale(0))\n .attr('x2', width)\n .attr('y2', yScale(0))\n .style('stroke', '#ddd')\n .style('stroke-width', 1);\n }\n\n // add circles\n circles = self.addCircles(svg, layers);\n\n // add click and hover events to circles\n self.addCircleEvents(circles, svg);\n\n // chart base line\n var line = svg.append('line')\n .attr('class', 'base-line')\n .attr('x1', 0)\n .attr('y1', yScale(0))\n .attr('x2', width)\n .attr('y2', yScale(0))\n .style('stroke', '#ddd')\n .style('stroke-width', 1);\n\n if (addTimeMarker) {\n timeMarker.render(svg);\n }\n\n return svg;\n });\n };\n };\n\n return AreaChart;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/visualizations/area_chart.js\n ** module id = 741\n ** module chunks = 0\n **/","define(function (require) {\n return function ColumnChartFactory(d3, Private) {\n var _ = require('lodash');\n var $ = require('jquery');\n var moment = require('moment');\n\n var DataClass = Private(require('components/vislib/lib/data'));\n\n var PointSeriesChart = Private(require('components/vislib/visualizations/_point_series_chart'));\n var TimeMarker = Private(require('components/vislib/visualizations/time_marker'));\n var errors = require('errors');\n require('components/vislib/styles/main.less');\n\n /**\n * Vertical Bar Chart Visualization: renders vertical and/or stacked bars\n *\n * @class ColumnChart\n * @constructor\n * @extends Chart\n * @param handler {Object} Reference to the Handler Class Constructor\n * @param el {HTMLElement} HTML element to which the chart will be appended\n * @param chartData {Object} Elasticsearch query results for this specific chart\n */\n _.class(ColumnChart).inherits(PointSeriesChart);\n function ColumnChart(handler, chartEl, chartData) {\n if (!(this instanceof ColumnChart)) {\n return new ColumnChart(handler, chartEl, chartData);\n }\n\n ColumnChart.Super.apply(this, arguments);\n\n // Column chart specific attributes\n this._attr = _.defaults(handler._attr || {}, {\n xValue: function (d) { return d.x; },\n yValue: function (d) { return d.y; }\n });\n }\n\n /**\n * Adds SVG rect to Vertical Bar Chart\n *\n * @method addBars\n * @param svg {HTMLElement} SVG to which rect are appended\n * @param layers {Array} Chart data array\n * @returns {D3.UpdateSelection} SVG with rect added\n */\n ColumnChart.prototype.addBars = function (svg, layers) {\n var self = this;\n var color = this.handler.data.getColorFunc();\n var tooltip = this.tooltip;\n var isTooltip = this._attr.addTooltip;\n var layer;\n var bars;\n\n layer = svg.selectAll('.layer')\n .data(layers)\n .enter().append('g')\n .attr('class', function (d, i) {\n return 'series ' + i;\n });\n\n bars = layer.selectAll('rect')\n .data(function (d) {\n return d;\n });\n\n bars\n .exit()\n .remove();\n\n bars\n .enter()\n .append('rect')\n .call(this._addIdentifier)\n .attr('fill', function (d) {\n return color(d.label);\n });\n\n self.updateBars(bars);\n\n // Add tooltip\n if (isTooltip) {\n bars.call(tooltip.render());\n }\n\n return bars;\n };\n\n /**\n * Determines whether bars are grouped or stacked and updates the D3\n * selection\n *\n * @method updateBars\n * @param bars {D3.UpdateSelection} SVG with rect added\n * @returns {D3.UpdateSelection}\n */\n ColumnChart.prototype.updateBars = function (bars) {\n var offset = this._attr.mode;\n\n if (offset === 'grouped') {\n return this.addGroupedBars(bars);\n }\n return this.addStackedBars(bars);\n };\n\n /**\n * Adds stacked bars to column chart visualization\n *\n * @method addStackedBars\n * @param bars {D3.UpdateSelection} SVG with rect added\n * @returns {D3.UpdateSelection}\n */\n ColumnChart.prototype.addStackedBars = function (bars) {\n var data = this.chartData;\n var xScale = this.handler.xAxis.xScale;\n var yScale = this.handler.yAxis.yScale;\n var height = yScale.range()[0];\n var yMin = this.handler.yAxis.yScale.domain()[0];\n var self = this;\n\n var barWidth;\n if (data.ordered && data.ordered.date) {\n var start = data.ordered.min;\n var end = moment(data.ordered.min).add(data.ordered.interval).valueOf();\n\n barWidth = xScale(end) - xScale(start);\n barWidth = barWidth - Math.min(barWidth * 0.25, 15);\n }\n\n // update\n bars\n .attr('x', function (d) {\n return xScale(d.x);\n })\n .attr('width', function () {\n return barWidth || xScale.rangeBand();\n })\n .attr('y', function (d) {\n if (d.y < 0) {\n return yScale(d.y0);\n }\n\n return yScale(d.y0 + d.y);\n })\n .attr('height', function (d) {\n if (d.y < 0) {\n return Math.abs(yScale(d.y0 + d.y) - yScale(d.y0));\n }\n\n // Due to an issue with D3 not returning zeros correctly when using\n // an offset='expand', need to add conditional statement to handle zeros\n // appropriately\n if (d._input.y === 0) {\n return 0;\n }\n\n // for split bars or for one series,\n // last series will have d.y0 = 0\n if (d.y0 === 0 && yMin > 0) {\n return yScale(yMin) - yScale(d.y);\n }\n\n return yScale(d.y0) - yScale(d.y0 + d.y);\n });\n\n return bars;\n };\n\n /**\n * Adds grouped bars to column chart visualization\n *\n * @method addGroupedBars\n * @param bars {D3.UpdateSelection} SVG with rect added\n * @returns {D3.UpdateSelection}\n */\n ColumnChart.prototype.addGroupedBars = function (bars) {\n var xScale = this.handler.xAxis.xScale;\n var yScale = this.handler.yAxis.yScale;\n var yMin = this.handler.yAxis.yMin;\n var data = this.chartData;\n var n = data.series.length;\n var height = yScale.range()[0];\n var groupSpacingPercentage = 0.15;\n var isTimeScale = (data.ordered && data.ordered.date);\n var minWidth = 1;\n var barWidth;\n\n // update\n bars\n .attr('x', function (d, i, j) {\n if (isTimeScale) {\n var groupWidth = xScale(data.ordered.min + data.ordered.interval) -\n xScale(data.ordered.min);\n var groupSpacing = groupWidth * groupSpacingPercentage;\n\n barWidth = (groupWidth - groupSpacing) / n;\n\n return xScale(d.x) + barWidth * j;\n }\n return xScale(d.x) + xScale.rangeBand() / n * j;\n })\n .attr('width', function () {\n if (barWidth < minWidth) {\n throw new errors.ContainerTooSmall();\n }\n\n if (isTimeScale) {\n return barWidth;\n }\n return xScale.rangeBand() / n;\n })\n .attr('y', function (d) {\n if (d.y < 0) {\n return yScale(0);\n }\n\n return yScale(d.y);\n })\n .attr('height', function (d) {\n return Math.abs(yScale(0) - yScale(d.y));\n });\n\n return bars;\n };\n\n /**\n * Adds Events to SVG rect\n * Visualization is only brushable when a brush event is added\n * If a brush event is added, then a function should be returned.\n *\n * @method addBarEvents\n * @param element {D3.UpdateSelection} target\n * @param svg {D3.UpdateSelection} chart SVG\n * @returns {D3.Selection} rect with event listeners attached\n */\n ColumnChart.prototype.addBarEvents = function (element, svg) {\n var events = this.events;\n var isBrushable = events.isBrushable();\n var brush = isBrushable ? events.addBrushEvent(svg) : undefined;\n var hover = events.addHoverEvent();\n var mouseout = events.addMouseoutEvent();\n var click = events.addClickEvent();\n var attachedEvents = element.call(hover).call(mouseout).call(click);\n\n if (isBrushable) {\n attachedEvents.call(brush);\n }\n\n return attachedEvents;\n };\n\n /**\n * Renders d3 visualization\n *\n * @method draw\n * @returns {Function} Creates the vertical bar chart\n */\n ColumnChart.prototype.draw = function () {\n var self = this;\n var $elem = $(this.chartEl);\n var margin = this._attr.margin;\n var elWidth = this._attr.width = $elem.width();\n var elHeight = this._attr.height = $elem.height();\n var yMin = this.handler.yAxis.yMin;\n var yScale = this.handler.yAxis.yScale;\n var xScale = this.handler.xAxis.xScale;\n var minWidth = 20;\n var minHeight = 20;\n var addTimeMarker = this._attr.addTimeMarker;\n var times = this._attr.times || [];\n var timeMarker;\n var div;\n var svg;\n var width;\n var height;\n var layers;\n var bars;\n\n return function (selection) {\n selection.each(function (data) {\n layers = self.stackData(data);\n\n width = elWidth;\n height = elHeight - margin.top - margin.bottom;\n\n if (addTimeMarker) {\n timeMarker = new TimeMarker(times, xScale, height);\n }\n\n if (width < minWidth || height < minHeight) {\n throw new errors.ContainerTooSmall();\n }\n\n div = d3.select(this);\n\n svg = div.append('svg')\n .attr('width', width)\n .attr('height', height + margin.top + margin.bottom)\n .append('g')\n .attr('transform', 'translate(0,' + margin.top + ')');\n\n bars = self.addBars(svg, layers);\n self.createEndZones(svg);\n\n // Adds event listeners\n self.addBarEvents(bars, svg);\n\n var line = svg.append('line')\n .attr('class', 'base-line')\n .attr('x1', 0)\n .attr('y1', yScale(0))\n .attr('x2', width)\n .attr('y2', yScale(0))\n .style('stroke', '#ddd')\n .style('stroke-width', 1);\n\n if (addTimeMarker) {\n timeMarker.render(svg);\n }\n\n return svg;\n });\n };\n };\n\n return ColumnChart;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/visualizations/column_chart.js\n ** module id = 742\n ** module chunks = 0\n **/","define(function (require) {\n return function LineChartFactory(d3, Private) {\n var _ = require('lodash');\n var $ = require('jquery');\n var errors = require('errors');\n\n var PointSeriesChart = Private(require('components/vislib/visualizations/_point_series_chart'));\n var TimeMarker = Private(require('components/vislib/visualizations/time_marker'));\n require('components/vislib/styles/main.less');\n\n /**\n * Line Chart Visualization\n *\n * @class LineChart\n * @constructor\n * @extends Chart\n * @param handler {Object} Reference to the Handler Class Constructor\n * @param el {HTMLElement} HTML element to which the chart will be appended\n * @param chartData {Object} Elasticsearch query results for this specific chart\n */\n _.class(LineChart).inherits(PointSeriesChart);\n function LineChart(handler, chartEl, chartData) {\n if (!(this instanceof LineChart)) {\n return new LineChart(handler, chartEl, chartData);\n }\n\n LineChart.Super.apply(this, arguments);\n\n // Line chart specific attributes\n this._attr = _.defaults(handler._attr || {}, {\n interpolate: 'linear',\n xValue: function (d) { return d.x; },\n yValue: function (d) { return d.y; }\n });\n }\n\n /**\n * Adds Events to SVG circle\n *\n * @method addCircleEvents\n * @param element{D3.UpdateSelection} Reference to SVG circle\n * @returns {D3.Selection} SVG circles with event listeners attached\n */\n LineChart.prototype.addCircleEvents = function (element, svg) {\n var events = this.events;\n var isBrushable = events.isBrushable();\n var brush = isBrushable ? events.addBrushEvent(svg) : undefined;\n var hover = events.addHoverEvent();\n var mouseout = events.addMouseoutEvent();\n var click = events.addClickEvent();\n var attachedEvents = element.call(hover).call(mouseout).call(click);\n\n if (isBrushable) {\n attachedEvents.call(brush);\n }\n\n return attachedEvents;\n };\n\n /**\n * Adds circles to SVG\n *\n * @method addCircles\n * @param svg {HTMLElement} SVG to which rect are appended\n * @param data {Array} Array of object data points\n * @returns {D3.UpdateSelection} SVG with circles added\n */\n LineChart.prototype.addCircles = function (svg, data) {\n var self = this;\n var showCircles = this._attr.showCircles;\n var color = this.handler.data.getColorFunc();\n var xScale = this.handler.xAxis.xScale;\n var yScale = this.handler.yAxis.yScale;\n var ordered = this.handler.data.get('ordered');\n var tooltip = this.tooltip;\n var isTooltip = this._attr.addTooltip;\n\n var radii = _(data)\n .map(function (series) {\n return _.pluck(series, '_input.z');\n })\n .flattenDeep()\n .reduce(function (result, val) {\n if (result.min > val) result.min = val;\n if (result.max < val) result.max = val;\n return result;\n }, {\n min: Infinity,\n max: -Infinity\n });\n\n var radiusStep = ((radii.max - radii.min) || (radii.max * 100)) / Math.pow(this._attr.radiusRatio, 2);\n\n var layer = svg.selectAll('.points')\n .data(data)\n .enter()\n .append('g')\n .attr('class', 'points line');\n\n var circles = layer\n .selectAll('circle')\n .data(function appendData(d) {\n return d;\n });\n\n circles\n .exit()\n .remove();\n\n function cx(d) {\n if (ordered && ordered.date) {\n return xScale(d.x);\n }\n return xScale(d.x) + xScale.rangeBand() / 2;\n }\n\n function cy(d) {\n return yScale(d.y);\n }\n\n function cColor(d) {\n return color(d.label);\n }\n\n function colorCircle(d) {\n var parent = d3.select(this).node().parentNode;\n var lengthOfParent = d3.select(parent).data()[0].length;\n var isVisible = (lengthOfParent === 1);\n\n // If only 1 point exists, show circle\n if (!showCircles && !isVisible) return 'none';\n return cColor(d);\n }\n function getCircleRadiusFn(modifier) {\n return function getCircleRadius(d) {\n var margin = self._attr.margin;\n var width = self._attr.width - margin.left - margin.right;\n var height = self._attr.height - margin.top - margin.bottom;\n var circleRadius = (d._input.z - radii.min) / radiusStep;\n\n return _.min([Math.sqrt((circleRadius || 2) + 2), width, height]) + (modifier || 0);\n };\n }\n\n\n circles\n .enter()\n .append('circle')\n .attr('r', getCircleRadiusFn())\n .attr('fill-opacity', (this._attr.drawLinesBetweenPoints ? 1 : 0.7))\n .attr('cx', cx)\n .attr('cy', cy)\n .attr('fill', colorCircle)\n .attr('class', 'circle-decoration')\n .call(this._addIdentifier);\n\n circles\n .enter()\n .append('circle')\n .attr('r', getCircleRadiusFn(10))\n .attr('cx', cx)\n .attr('cy', cy)\n .attr('fill', 'transparent')\n .attr('class', 'circle')\n .call(this._addIdentifier)\n .attr('stroke', cColor)\n .attr('stroke-width', 0);\n\n if (isTooltip) {\n circles.call(tooltip.render());\n }\n\n return circles;\n };\n\n /**\n * Adds path to SVG\n *\n * @method addLines\n * @param svg {HTMLElement} SVG to which path are appended\n * @param data {Array} Array of object data points\n * @returns {D3.UpdateSelection} SVG with paths added\n */\n LineChart.prototype.addLines = function (svg, data) {\n var self = this;\n var xScale = this.handler.xAxis.xScale;\n var yScale = this.handler.yAxis.yScale;\n var xAxisFormatter = this.handler.data.get('xAxisFormatter');\n var color = this.handler.data.getColorFunc();\n var ordered = this.handler.data.get('ordered');\n var interpolate = (this._attr.smoothLines) ? 'cardinal' : this._attr.interpolate;\n var line = d3.svg.line()\n .interpolate(interpolate)\n .x(function x(d) {\n if (ordered && ordered.date) {\n return xScale(d.x);\n }\n return xScale(d.x) + xScale.rangeBand() / 2;\n })\n .y(function y(d) {\n return yScale(d.y);\n });\n var lines;\n\n lines = svg\n .selectAll('.lines')\n .data(data)\n .enter()\n .append('g')\n .attr('class', 'pathgroup lines');\n\n lines.append('path')\n .call(this._addIdentifier)\n .attr('d', function lineD(d) {\n return line(d.values);\n })\n .attr('fill', 'none')\n .attr('stroke', function lineStroke(d) {\n return color(d.label);\n })\n .attr('stroke-width', 2);\n\n return lines;\n };\n\n /**\n * Adds SVG clipPath\n *\n * @method addClipPath\n * @param svg {HTMLElement} SVG to which clipPath is appended\n * @param width {Number} SVG width\n * @param height {Number} SVG height\n * @returns {D3.UpdateSelection} SVG with clipPath added\n */\n LineChart.prototype.addClipPath = function (svg, width, height) {\n var clipPathBuffer = 5;\n var startX = 0;\n var startY = 0 - clipPathBuffer;\n var id = 'chart-area' + _.uniqueId();\n\n return svg\n .attr('clip-path', 'url(#' + id + ')')\n .append('clipPath')\n .attr('id', id)\n .append('rect')\n .attr('x', startX)\n .attr('y', startY)\n .attr('width', width)\n // Adding clipPathBuffer to height so it doesn't\n // cutoff the lower part of the chart\n .attr('height', height + clipPathBuffer);\n };\n\n /**\n * Renders d3 visualization\n *\n * @method draw\n * @returns {Function} Creates the line chart\n */\n LineChart.prototype.draw = function () {\n var self = this;\n var $elem = $(this.chartEl);\n var margin = this._attr.margin;\n var elWidth = this._attr.width = $elem.width();\n var elHeight = this._attr.height = $elem.height();\n var scaleType = this.handler.yAxis.getScaleType();\n var yMin = this.handler.yAxis.yMin;\n var yScale = this.handler.yAxis.yScale;\n var xScale = this.handler.xAxis.xScale;\n var minWidth = 20;\n var minHeight = 20;\n var startLineX = 0;\n var lineStrokeWidth = 1;\n var addTimeMarker = this._attr.addTimeMarker;\n var times = this._attr.times || [];\n var timeMarker;\n var div;\n var svg;\n var width;\n var height;\n var lines;\n var circles;\n\n return function (selection) {\n selection.each(function (data) {\n var el = this;\n\n var layers = data.series.map(function mapSeries(d) {\n var label = d.label;\n return d.values.map(function mapValues(e, i) {\n return {\n _input: e,\n label: label,\n x: self._attr.xValue.call(d.values, e, i),\n y: self._attr.yValue.call(d.values, e, i)\n };\n });\n });\n\n width = elWidth - margin.left - margin.right;\n height = elHeight - margin.top - margin.bottom;\n\n if (addTimeMarker) {\n timeMarker = new TimeMarker(times, xScale, height);\n }\n\n if (self._attr.scale === 'log' && self._invalidLogScaleValues(data)) {\n throw new errors.InvalidLogScaleValues();\n }\n\n if (width < minWidth || height < minHeight) {\n throw new errors.ContainerTooSmall();\n }\n\n div = d3.select(el);\n\n svg = div.append('svg')\n .attr('width', width + margin.left + margin.right)\n .attr('height', height + margin.top + margin.bottom)\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n self.addClipPath(svg, width, height);\n if (self._attr.drawLinesBetweenPoints) {\n lines = self.addLines(svg, data.series);\n }\n circles = self.addCircles(svg, layers);\n self.addCircleEvents(circles, svg);\n self.createEndZones(svg);\n\n var scale = (scaleType === 'log') ? yScale(1) : yScale(0);\n if (scale) {\n svg.append('line')\n .attr('class', 'base-line')\n .attr('x1', startLineX)\n .attr('y1', scale)\n .attr('x2', width)\n .attr('y2', scale)\n .style('stroke', '#ddd')\n .style('stroke-width', lineStrokeWidth);\n }\n\n if (addTimeMarker) {\n timeMarker.render(svg);\n }\n\n return svg;\n });\n };\n };\n\n return LineChart;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/visualizations/line_chart.js\n ** module id = 743\n ** module chunks = 0\n **/","define(function (require) {\n return function PieChartFactory(d3, Private) {\n var _ = require('lodash');\n var $ = require('jquery');\n\n var Chart = Private(require('components/vislib/visualizations/_chart'));\n var errors = require('errors');\n require('components/vislib/styles/main.less');\n\n /**\n * Pie Chart Visualization\n *\n * @class PieChart\n * @constructor\n * @extends Chart\n * @param handler {Object} Reference to the Handler Class Constructor\n * @param el {HTMLElement} HTML element to which the chart will be appended\n * @param chartData {Object} Elasticsearch query results for this specific chart\n */\n _.class(PieChart).inherits(Chart);\n function PieChart(handler, chartEl, chartData) {\n if (!(this instanceof PieChart)) {\n return new PieChart(handler, chartEl, chartData);\n }\n PieChart.Super.apply(this, arguments);\n\n var charts = this.handler.data.getVisData();\n this._validatePieData(charts);\n\n this._attr = _.defaults(handler._attr || {}, {\n isDonut: handler._attr.isDonut || false\n });\n }\n\n /**\n * Checks whether pie slices have all zero values.\n * If so, an error is thrown.\n */\n PieChart.prototype._validatePieData = function (charts) {\n var isAllZeros = charts.every(function (chart) {\n return chart.slices.children.length === 0;\n });\n\n if (isAllZeros) { throw new errors.PieContainsAllZeros(); }\n };\n\n /**\n * Adds Events to SVG paths\n *\n * @method addPathEvents\n * @param element {D3.Selection} Reference to SVG path\n * @returns {D3.Selection} SVG path with event listeners attached\n */\n PieChart.prototype.addPathEvents = function (element) {\n var events = this.events;\n\n return element\n .call(events.addHoverEvent())\n .call(events.addMouseoutEvent())\n .call(events.addClickEvent());\n };\n\n PieChart.prototype.convertToPercentage = function (slices) {\n (function assignPercentages(slices) {\n if (slices.sumOfChildren != null) return;\n\n var parent = slices;\n var children = parent.children;\n var parentPercent = parent.percentOfParent;\n\n var sum = parent.sumOfChildren = Math.abs(children.reduce(function (sum, child) {\n return sum + Math.abs(child.size);\n }, 0));\n\n children.forEach(function (child) {\n child.percentOfGroup = Math.abs(child.size) / sum;\n child.percentOfParent = child.percentOfGroup;\n\n if (parentPercent != null) {\n child.percentOfParent *= parentPercent;\n }\n\n if (child.children) {\n assignPercentages(child);\n }\n });\n }(slices));\n };\n\n /**\n * Adds pie paths to SVG\n *\n * @method addPath\n * @param width {Number} Width of SVG\n * @param height {Number} Height of SVG\n * @param svg {HTMLElement} Chart SVG\n * @param slices {Object} Chart data\n * @returns {D3.Selection} SVG with paths attached\n */\n PieChart.prototype.addPath = function (width, height, svg, slices) {\n var self = this;\n var marginFactor = 0.95;\n var isDonut = self._attr.isDonut;\n var radius = (Math.min(width, height) / 2) * marginFactor;\n var color = self.handler.data.getPieColorFunc();\n var tooltip = self.tooltip;\n var isTooltip = self._attr.addTooltip;\n\n var partition = d3.layout.partition()\n .sort(null)\n .value(function (d) {\n return d.percentOfParent * 100;\n });\n var x = d3.scale.linear()\n .range([0, 2 * Math.PI]);\n var y = d3.scale.sqrt()\n .range([0, radius]);\n var arc = d3.svg.arc()\n .startAngle(function (d) {\n return Math.max(0, Math.min(2 * Math.PI, x(d.x)));\n })\n .endAngle(function (d) {\n return Math.max(0, Math.min(2 * Math.PI, x(d.x + d.dx)));\n })\n .innerRadius(function (d) {\n // option for a single layer, i.e pie chart\n if (d.depth === 1 && !isDonut) {\n // return no inner radius\n return 0;\n }\n\n return Math.max(0, y(d.y));\n })\n .outerRadius(function (d) {\n return Math.max(0, y(d.y + d.dy));\n });\n\n var path = svg\n .datum(slices)\n .selectAll('path')\n .data(partition.nodes)\n .enter()\n .append('path')\n .attr('d', arc)\n .attr('class', function (d) {\n if (d.depth === 0) { return; }\n return 'slice';\n })\n .call(self._addIdentifier, 'name')\n .style('stroke', '#fff')\n .style('fill', function (d) {\n if (d.depth === 0) { return 'none'; }\n return color(d.name);\n });\n\n if (isTooltip) {\n path.call(tooltip.render());\n }\n\n return path;\n };\n\n PieChart.prototype._validateContainerSize = function (width, height) {\n var minWidth = 20;\n var minHeight = 20;\n\n if (width <= minWidth || height <= minHeight) {\n throw new errors.ContainerTooSmall();\n }\n };\n\n /**\n * Renders d3 visualization\n *\n * @method draw\n * @returns {Function} Creates the pie chart\n */\n PieChart.prototype.draw = function () {\n var self = this;\n\n return function (selection) {\n selection.each(function (data) {\n var slices = data.slices;\n var div = d3.select(this);\n var width = $(this).width();\n var height = $(this).height();\n var path;\n\n if (!slices.children.length) return;\n\n self.convertToPercentage(slices);\n self._validateContainerSize(width, height);\n\n var svg = div.append('svg')\n .attr('width', width)\n .attr('height', height)\n .append('g')\n .attr('transform', 'translate(' + width / 2 + ',' + height / 2 + ')');\n\n path = self.addPath(width, height, svg, slices);\n self.addPathEvents(path);\n\n return svg;\n });\n };\n };\n\n return PieChart;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/visualizations/pie_chart.js\n ** module id = 744\n ** module chunks = 0\n **/","define(function (require) {\n return function TileMapFactory(d3, Private, config) {\n var _ = require('lodash');\n var $ = require('jquery');\n var L = require('leaflet');\n require('leaflet-heat');\n require('leaflet-draw');\n require('components/vislib/styles/main.less');\n\n var Chart = Private(require('components/vislib/visualizations/_chart'));\n var defaultMapZoom = 2;\n var defaultMapCenter = [15, 5];\n\n // Convenience function to turn around the LngLat recieved from ES\n function cloneAndReverse(arr) {\n var l = arr.length;\n return arr.map(function (curr, idx) { return arr[l - (idx + 1)]; });\n }\n\n /**\n * Tile Map Visualization: renders maps\n *\n * @class TileMap\n * @constructor\n * @extends Chart\n * @param handler {Object} Reference to the Handler Class Constructor\n * @param chartEl {HTMLElement} HTML element to which the map will be appended\n * @param chartData {Object} Elasticsearch query results for this map\n */\n _.class(TileMap).inherits(Chart);\n function TileMap(handler, chartEl, chartData) {\n if (!(this instanceof TileMap)) {\n return new TileMap(handler, chartEl, chartData);\n }\n\n TileMap.Super.apply(this, arguments);\n\n\n // track the map objects\n this.maps = [];\n this.originalConfig = chartData || {};\n _.assign(this, this.originalConfig);\n\n this._attr.mapZoom = _.get(this.geoJson, 'properties.zoom') || defaultMapZoom;\n this._attr.mapCenter = _.get(this.geoJson, 'properties.center') || defaultMapCenter;\n\n // add allmin and allmax to geoJson\n var allMinMax = this.getMinMax(handler.data.data);\n this.geoJson.properties.allmin = allMinMax.min;\n this.geoJson.properties.allmax = allMinMax.max;\n }\n\n /**\n * Renders tile map\n *\n * @method draw\n * @return {Function} - function to add a map to a selection\n */\n TileMap.prototype.draw = function () {\n var self = this;\n var mapData = this.geoJson;\n\n // clean up old maps\n self.destroy();\n\n // clear maps array\n self.maps = [];\n self.popups = [];\n\n var worldBounds = L.latLngBounds([-90, -220], [90, 220]);\n\n return function (selection) {\n selection.each(function () {\n // add leaflet latLngs to properties for tooltip\n self.addLatLng(self.geoJson);\n\n var div = $(this).addClass('tilemap');\n var tileLayer = L.tileLayer('https://otile{s}-s.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.jpeg', {\n attribution: 'Tiles by MapQuest — ' +\n 'Map data © OpenStreetMap contributors, ' +\n 'CC-BY-SA',\n subdomains: '1234'\n });\n\n var drawOptions = {draw: {}};\n _.each(['polyline', 'polygon', 'circle', 'marker', 'rectangle'], function (drawShape) {\n if (!self.events.listenerCount(drawShape)) {\n drawOptions.draw[drawShape] = false;\n } else {\n drawOptions.draw[drawShape] = {\n shapeOptions: {\n stroke: false,\n color: '#000'\n }\n };\n }\n });\n\n var mapOptions = {\n minZoom: 1,\n maxZoom: 18,\n layers: tileLayer,\n center: self._attr.mapCenter,\n zoom: self._attr.mapZoom,\n noWrap: true,\n maxBounds: worldBounds,\n scrollWheelZoom: false,\n fadeAnimation: false,\n };\n\n var map = L.map(div[0], mapOptions);\n var featureLayer = self.markerType(map).addTo(map);\n\n if (mapData.features.length) {\n map.addControl(new L.Control.Draw(drawOptions));\n }\n\n function saturateTiles() {\n self.saturateTiles();\n }\n\n tileLayer.on('tileload', saturateTiles);\n\n map.on('unload', function () {\n tileLayer.off('tileload', saturateTiles);\n });\n\n map.on('moveend', function setZoomCenter() {\n self._attr.mapZoom = map.getZoom();\n self._attr.mapCenter = map.getCenter();\n\n self.events.emit('mapMoveEnd', {\n chart: self.originalConfig,\n zoom: self._attr.mapZoom,\n center: self._attr.mapCenter\n });\n\n map.removeLayer(featureLayer);\n\n featureLayer = self.markerType(map).addTo(map);\n });\n\n map.on('draw:created', function (e) {\n var drawType = e.layerType;\n if (!self.events.listenerCount(drawType)) return;\n\n // TODO: Different drawTypes need differ info. Need a switch on the object creation\n var bounds = e.layer.getBounds();\n\n self.events.emit(drawType, {\n e: e,\n chart: self.originalConfig,\n bounds: {\n top_left: {\n lat: bounds.getNorthWest().lat,\n lon: bounds.getNorthWest().lng\n },\n bottom_right: {\n lat: bounds.getSouthEast().lat,\n lon: bounds.getSouthEast().lng\n }\n }\n });\n });\n\n map.on('zoomend', function () {\n self.events.emit('mapZoomEnd', {\n chart: self.originalConfig,\n zoom: map.getZoom()\n });\n });\n\n // add title for splits\n if (self.title) {\n self.addTitle(self.title, map);\n }\n\n if (mapData && mapData.features.length > 0) {\n var fitContainer = L.DomUtil.create('div', 'leaflet-control leaflet-bar leaflet-control-fit');\n\n // Add button to fit container to points\n var FitControl = L.Control.extend({\n options: {\n position: 'topleft'\n },\n onAdd: function (map) {\n $(fitContainer).html('')\n .on('click', function (e) {\n e.preventDefault();\n self.fitBounds(map, mapData.features);\n });\n\n return fitContainer;\n },\n onRemove: function (map) {\n $(fitContainer).off('click');\n }\n });\n map.fitControl = new FitControl();\n map.addControl(map.fitControl);\n } else {\n map.fitControl = undefined;\n }\n\n self.maps.push(map);\n });\n };\n };\n\n /**\n * return whether feature is within map bounds\n *\n * @method _filterToMapBounds\n * @param map {Leaflet Object}\n * @return {boolean}\n */\n TileMap.prototype._filterToMapBounds = function (map) {\n return function (feature) {\n var mapBounds = map.getBounds();\n var bucketRectBounds = feature.properties.rectangle.map(cloneAndReverse);\n\n return mapBounds.intersects(bucketRectBounds);\n };\n };\n\n /**\n * get min and max for all cols, rows of data\n *\n * @method getMaxMin\n * @param data {Object}\n * @return {Object}\n */\n TileMap.prototype.getMinMax = function (data) {\n var min = [];\n var max = [];\n var allData;\n\n if (data.rows) {\n allData = data.rows;\n } else if (data.columns) {\n allData = data.columns;\n } else {\n allData = [data];\n }\n\n allData.forEach(function (datum) {\n min.push(datum.geoJson.properties.min);\n max.push(datum.geoJson.properties.max);\n });\n\n var minMax = {\n min: _.min(min),\n max: _.max(max)\n };\n\n return minMax;\n };\n\n /**\n * Get the Rectangles representing the geohash grid\n *\n * @return {LatLngRectangles[]}\n */\n TileMap.prototype._getDataRectangles = function () {\n return _(this.geoJson.features)\n .pluck('properties.rectangle')\n .invoke('map', cloneAndReverse)\n .value();\n };\n\n /**\n * add Leaflet latLng to mapData properties\n *\n * @method addLatLng\n * @return undefined\n */\n TileMap.prototype.addLatLng = function () {\n this.geoJson.features.forEach(function (feature) {\n feature.properties.latLng = L.latLng(\n feature.geometry.coordinates[1],\n feature.geometry.coordinates[0]\n );\n });\n };\n\n /**\n * zoom map to fit all features in featureLayer\n *\n * @method fitBounds\n * @param map {Leaflet Object}\n * @return {boolean}\n */\n TileMap.prototype.fitBounds = function (map) {\n map.fitBounds(this._getDataRectangles());\n };\n\n /**\n * remove css class for desat filters on map tiles\n *\n * @method saturateTiles\n * @return undefined\n */\n TileMap.prototype.saturateTiles = function () {\n if (!this._attr.isDesaturated) {\n $('img.leaflet-tile-loaded').addClass('filters-off');\n }\n };\n\n /**\n * Finds nearest feature in mapData to event latlng\n *\n * @method nearestFeature\n * @param point {Leaflet Object}\n * @return nearestPoint {Leaflet Object}\n */\n TileMap.prototype.nearestFeature = function (point) {\n var mapData = this.geoJson;\n var distance = Infinity;\n var nearest;\n\n if (point.lng < -180 || point.lng > 180) {\n return;\n }\n\n for (var i = 0; i < mapData.features.length; i++) {\n var dist = point.distanceTo(mapData.features[i].properties.latLng);\n if (dist < distance) {\n distance = dist;\n nearest = mapData.features[i];\n }\n }\n nearest.properties.eventDistance = distance;\n\n return nearest;\n };\n\n /**\n * display tooltip if feature is close enough to event latlng\n *\n * @method tooltipProximity\n * @param latlng {Leaflet Object}\n * @param zoom {Number}\n * @param feature {geoJson Object}\n * @param map {Leaflet Object}\n * @return boolean\n */\n TileMap.prototype.tooltipProximity = function (latlng, zoom, feature, map) {\n if (!feature) return;\n\n var showTip = false;\n\n // zoomScale takes map zoom and returns proximity value for tooltip display\n // domain (input values) is map zoom (min 1 and max 18)\n // range (output values) is distance in meters\n // used to compare proximity of event latlng to feature latlng\n var zoomScale = d3.scale.linear()\n .domain([1, 4, 7, 10, 13, 16, 18])\n .range([1000000, 300000, 100000, 15000, 2000, 150, 50]);\n\n var proximity = zoomScale(zoom);\n var distance = latlng.distanceTo(feature.properties.latLng);\n\n // maxLngDif is max difference in longitudes\n // to prevent feature tooltip from appearing 360°\n // away from event latlng\n var maxLngDif = 40;\n var lngDif = Math.abs(latlng.lng - feature.properties.latLng.lng);\n\n if (distance < proximity && lngDif < maxLngDif) {\n showTip = true;\n }\n\n delete feature.properties.eventDistance;\n\n var testScale = d3.scale.pow().exponent(0.2)\n .domain([1, 18])\n .range([1500000, 50]);\n return showTip;\n };\n\n /**\n * Checks if event latlng is within bounds of mapData\n * features and shows tooltip for that feature\n *\n * @method showTooltip\n * @param map {LeafletMap}\n * @param feature {LeafletFeature}\n * @return undefined\n */\n TileMap.prototype.showTooltip = function (map, feature) {\n if (!this.tooltipFormatter) return;\n\n var content = this.tooltipFormatter(feature);\n if (!content) return;\n\n var lat = feature.geometry.coordinates[1];\n var lng = feature.geometry.coordinates[0];\n var latLng = L.latLng(lat, lng);\n\n L.popup({autoPan: false})\n .setLatLng(latLng)\n .setContent(content)\n .openOn(map);\n };\n\n /**\n * Switch type of data overlay for map:\n * creates featurelayer from mapData (geoJson)\n *\n * @method markerType\n * @param map {Leaflet Object}\n * @param mapData {geoJson Object}\n * @return {Leaflet object} featureLayer\n */\n TileMap.prototype.markerType = function (map) {\n if (this._attr.mapType === 'Scaled Circle Markers') {\n return this.scaledCircleMarkers(map);\n }\n\n if (this._attr.mapType === 'Heatmap') {\n return this.heatMap(map);\n }\n\n if (this._attr.mapType === 'Shaded Circle Markers') {\n return this.shadedCircleMarkers(map);\n }\n\n if (this._attr.mapType === 'Shaded Geohash Grid') {\n return this.shadedGeohashGrid(map);\n }\n\n return this.scaledCircleMarkers(map);\n };\n\n /**\n * Type of data overlay for map:\n * creates featurelayer from mapData (geoJson)\n * with circle markers that are scaled to illustrate values\n *\n * @method scaledCircleMarkers\n * @param map {Leaflet Object}\n * @param mapData {geoJson Object}\n * @return {Leaflet object} featureLayer\n */\n TileMap.prototype.scaledCircleMarkers = function (map) {\n var self = this;\n var mapData = self.geoJson;\n\n // super min and max from all chart data\n var min = mapData.properties.allmin;\n var max = mapData.properties.allmax;\n var zoom = map.getZoom();\n var precision = _.max(mapData.features.map(function (feature) {\n return String(feature.properties.geohash).length;\n }));\n\n // multiplier to reduce size of all circles\n var scaleFactor = 0.6;\n\n var radiusScaler = 2.5;\n\n var featureLayer = L.geoJson(mapData, {\n pointToLayer: function (feature, latlng) {\n var value = feature.properties.value;\n var scaledRadius = self.radiusScale(value, max, zoom, precision) * scaleFactor;\n return L.circleMarker(latlng).setRadius(scaledRadius);\n },\n onEachFeature: function (feature, layer) {\n self.bindPopup(feature, layer, map);\n },\n style: function (feature) {\n return self.applyShadingStyle(feature, min, max);\n },\n filter: self._filterToMapBounds(map)\n });\n\n self.addLegend(map);\n\n return featureLayer;\n };\n\n /**\n * Type of data overlay for map:\n * creates featurelayer from mapData (geoJson)\n * with circle markers that are shaded to illustrate values\n *\n * @method shadedCircleMarkers\n * @param map {Leaflet Object}\n * @param mapData {geoJson Object}\n * @return {Leaflet object} featureLayer\n */\n TileMap.prototype.shadedCircleMarkers = function (map) {\n var self = this;\n var mapData = self.geoJson;\n // super min and max from all chart data\n var min = mapData.properties.allmin;\n var max = mapData.properties.allmax;\n\n // multiplier to reduce size of all circles\n var scaleFactor = 0.8;\n\n var featureLayer = L.geoJson(mapData, {\n pointToLayer: function (feature, latlng) {\n var radius = self.geohashMinDistance(feature) * scaleFactor;\n return L.circle(latlng, radius);\n },\n onEachFeature: function (feature, layer) {\n self.bindPopup(feature, layer, map);\n },\n style: function (feature) {\n return self.applyShadingStyle(feature, min, max);\n },\n filter: self._filterToMapBounds(map)\n });\n\n self.addLegend(map);\n\n return featureLayer;\n };\n\n /**\n * Type of data overlay for map:\n * creates featurelayer from mapData (geoJson)\n * with rectangles that show the geohash grid bounds\n *\n * @method geohashGrid\n * @param map {Leaflet Object}\n * @param mapData {geoJson Object}\n * @return {undefined}\n */\n TileMap.prototype.shadedGeohashGrid = function (map) {\n var self = this;\n var mapData = self.geoJson;\n\n // super min and max from all chart data\n var min = mapData.properties.allmin;\n var max = mapData.properties.allmax;\n\n var bounds;\n\n var featureLayer = L.geoJson(mapData, {\n pointToLayer: function (feature, latlng) {\n var geohashRect = feature.properties.rectangle;\n // get bounds from northEast[3] and southWest[1]\n // corners in geohash rectangle\n var corners = [\n [geohashRect[3][1], geohashRect[3][0]],\n [geohashRect[1][1], geohashRect[1][0]]\n ];\n return L.rectangle(corners);\n },\n onEachFeature: function (feature, layer) {\n self.bindPopup(feature, layer, map);\n layer.on({\n mouseover: function (e) {\n var layer = e.target;\n // bring layer to front if not older browser\n if (!L.Browser.ie && !L.Browser.opera) {\n layer.bringToFront();\n }\n }\n });\n },\n style: function (feature) {\n return self.applyShadingStyle(feature, min, max);\n },\n filter: self._filterToMapBounds(map)\n });\n\n self.addLegend(map);\n\n return featureLayer;\n };\n\n /**\n * Type of data overlay for map:\n * creates canvas layer from mapData (geoJson)\n * with leaflet.heat plugin\n *\n * @method heatMap\n * @param map {Leaflet Object}\n * @param mapData {geoJson Object}\n * @return featureLayer {Leaflet object}\n */\n TileMap.prototype.heatMap = function (map) {\n var self = this;\n var mapData = this.geoJson;\n var points = this.dataToHeatArray(mapData.properties.allmax);\n\n var options = {\n radius: +this._attr.heatRadius,\n blur: +this._attr.heatBlur,\n maxZoom: +this._attr.heatMaxZoom,\n minOpacity: +this._attr.heatMinOpacity\n };\n\n var featureLayer = L.heatLayer(points, options);\n\n if (self._attr.addTooltip && self.tooltipFormatter && !self._attr.disableTooltips) {\n map.on('mousemove', _.debounce(mouseMoveLocation, 15, {\n 'leading': true,\n 'trailing': false\n }));\n map.on('mouseout', function (e) {\n map.closePopup();\n });\n map.on('mousedown', function () {\n self._attr.disableTooltips = true;\n map.closePopup();\n });\n map.on('mouseup', function () {\n self._attr.disableTooltips = false;\n });\n }\n\n function mouseMoveLocation(e) {\n map.closePopup();\n\n // unhighlight all svgs\n d3.selectAll('path.geohash', this.chartEl).classed('geohash-hover', false);\n\n if (!mapData.features.length || self._attr.disableTooltips) {\n return;\n }\n\n var latlng = e.latlng;\n\n // find nearest feature to event latlng\n var feature = self.nearestFeature(latlng);\n\n var zoom = map.getZoom();\n\n // show tooltip if close enough to event latlng\n if (self.tooltipProximity(latlng, zoom, feature, map)) {\n self.showTooltip(map, feature, latlng);\n }\n }\n\n return featureLayer;\n };\n\n /**\n * Adds label div to each map when data is split\n *\n * @method addTitle\n * @param mapLabel {String}\n * @param map {Leaflet Object}\n * @return {undefined}\n */\n TileMap.prototype.addTitle = function (mapLabel, map) {\n var label = L.control();\n label.onAdd = function () {\n this._div = L.DomUtil.create('div', 'tilemap-info tilemap-label');\n this.update();\n return this._div;\n };\n label.update = function () {\n this._div.innerHTML = '

' + _.escape(mapLabel) + '

';\n };\n label.addTo(map);\n };\n\n /**\n * Adds legend div to each map when data is split\n * uses d3 scale from TileMap.prototype.quantizeColorScale\n *\n * @method addLegend\n * @param map {Leaflet Object}\n * @return {undefined}\n */\n TileMap.prototype.addLegend = function (map) {\n // only draw the legend for maps with multiple items\n if (this.geoJson.features.length <= 1) return;\n\n var self = this;\n var isLegend = $('div.tilemap-legend', this.chartEl).length;\n\n if (isLegend) return; // Don't add Legend if already one\n\n var valueFormatter = this.valueFormatter || _.identity;\n var legend = L.control({position: 'bottomright'});\n\n legend.onAdd = function () {\n var $div = $('
').addClass('tilemap-legend');\n\n _.each(self._attr.colors, function (color, i) {\n var icon = $('').css({\n background: color,\n 'border-color': self.darkerColor(color)\n });\n\n var range = self._attr.cScale\n .invertExtent(color)\n .map(valueFormatter)\n .join(' – ');\n\n $div.append(i > 0 ? '
' : '').append(icon).append(range);\n });\n\n return $div.get(0);\n };\n legend.addTo(map);\n };\n\n /**\n * Apply style with shading to feature\n *\n * @method applyShadingStyle\n * @param feature {Object}\n * @param min {Number}\n * @param max {Number}\n * @return {Object}\n */\n TileMap.prototype.applyShadingStyle = function (feature, min, max) {\n var self = this;\n var value = feature.properties.value;\n var color = self.quantizeColorScale(value, min, max);\n\n return {\n fillColor: color,\n color: self.darkerColor(color),\n weight: 1.5,\n opacity: 1,\n fillOpacity: 0.75\n };\n };\n\n /**\n * Invalidate the size of the map, so that leaflet will resize to fit.\n * then moves to center\n *\n * @method resizeArea\n * @return {undefined}\n */\n TileMap.prototype.resizeArea = function () {\n this.maps.forEach(function (map) {\n map.invalidateSize({\n debounceMoveend: true\n });\n });\n };\n\n /**\n * Binds popup and events to each feature on map\n *\n * @method bindPopup\n * @param feature {Object}\n * @param layer {Object}\n * return {undefined}\n */\n TileMap.prototype.bindPopup = function (feature, layer, map) {\n var self = this;\n var popup = layer.on({\n mouseover: function (e) {\n var layer = e.target;\n // bring layer to front if not older browser\n if (!L.Browser.ie && !L.Browser.opera) {\n layer.bringToFront();\n }\n var latlng = L.latLng(feature.geometry.coordinates[0], feature.geometry.coordinates[1]);\n self.showTooltip(map, feature, latlng);\n },\n mouseout: function (e) {\n map.closePopup();\n }\n });\n\n this.popups.push(popup);\n };\n\n /**\n * retuns data for data for heat map intensity\n * if heatNormalizeData attribute is checked/true\n • normalizes data for heat map intensity\n *\n * @param mapData {geoJson Object}\n * @param nax {Number}\n * @method dataToHeatArray\n * @return {Array}\n */\n TileMap.prototype.dataToHeatArray = function (max) {\n var self = this;\n var mapData = this.geoJson;\n\n return mapData.features.map(function (feature) {\n var lat = feature.geometry.coordinates[1];\n var lng = feature.geometry.coordinates[0];\n var heatIntensity;\n\n if (!self._attr.heatNormalizeData) {\n // show bucket value on heatmap\n heatIntensity = feature.properties.value;\n } else {\n // show bucket value normalized to max value\n heatIntensity = parseInt(feature.properties.value / max * 100);\n }\n\n return [lat, lng, heatIntensity];\n });\n };\n\n /**\n * geohashMinDistance returns a min distance in meters for sizing\n * circle markers to fit within geohash grid rectangle\n *\n * @method geohashMinDistance\n * @param feature {Object}\n * @return {Number}\n */\n TileMap.prototype.geohashMinDistance = function (feature) {\n var centerPoint = feature.properties.center;\n var geohashRect = feature.properties.rectangle;\n\n // get lat[1] and lng[0] of geohash center point\n // apply lat to east[2] and lng to north[3] sides of rectangle\n // to get radius at center of geohash grid recttangle\n var center = L.latLng([centerPoint[1], centerPoint[0]]);\n var east = L.latLng([centerPoint[1], geohashRect[2][0]]);\n var north = L.latLng([geohashRect[3][1], centerPoint[0]]);\n\n var eastRadius = Math.floor(center.distanceTo(east));\n var northRadius = Math.floor(center.distanceTo(north));\n\n return _.min([eastRadius, northRadius]);\n };\n\n /**\n * radiusScale returns a number for scaled circle markers\n * square root of value / max\n * multiplied by a value based on map zoom\n * multiplied by a value based on data precision\n * for relative sizing of markers\n *\n * @method radiusScale\n * @param value {Number}\n * @param max {Number}\n * @param zoom {Number}\n * @param precision {Number}\n * @return {Number}\n */\n TileMap.prototype.radiusScale = function (value, max, zoom, precision) {\n // exp = 0.5 for square root ratio\n // exp = 1 for linear ratio\n var exp = 0.5;\n var precisionBiasNumerator = 200;\n var precisionBiasBase = 5;\n var pct = Math.abs(value) / Math.abs(max);\n var constantZoomRadius = 0.5 * Math.pow(2, zoom);\n var precisionScale = precisionBiasNumerator / Math.pow(precisionBiasBase, precision);\n\n return Math.pow(pct, exp) * constantZoomRadius * precisionScale;\n };\n\n /**\n * d3 quantize scale returns a hex color,\n * used for marker fill color\n *\n * @method quantizeColorScale\n * @param value {Number}\n * @param min {Number}\n * @param max {Number}\n * @return {String} hex color\n */\n TileMap.prototype.quantizeColorScale = function (value, min, max) {\n var reds5 = ['#fed976', '#feb24c', '#fd8d3c', '#f03b20', '#bd0026'];\n var reds3 = ['#fecc5c', '#fd8d3c', '#e31a1c'];\n var reds1 = ['#ff6128'];\n var colors = this._attr.colors = reds5;\n\n if (max - min < 3) {\n colors = this._attr.colors = reds1;\n } else if (max - min < 25) {\n colors = this._attr.colors = reds3;\n }\n\n var cScale = this._attr.cScale = d3.scale.quantize()\n .domain([min, max])\n .range(colors);\n\n if (max === min) {\n return colors[0];\n } else {\n return cScale(value);\n }\n };\n\n /**\n * d3 method returns a darker hex color,\n * used for marker stroke color\n *\n * @method darkerColor\n * @param color {String} hex color\n * @return {String} hex color\n */\n TileMap.prototype.darkerColor = function (color) {\n var darker = d3.hcl(color).darker(1.3).toString();\n return darker;\n };\n\n /**\n * clean up the maps\n *\n * @method destroy\n * @return {undefined}\n */\n TileMap.prototype.destroy = function () {\n if (this.popups) {\n this.popups.forEach(function (popup) {\n popup.off('mouseover').off('mouseout');\n });\n this.popups = [];\n }\n\n if (this.maps) {\n this.maps.forEach(function (map) {\n if (map.fitControl) {\n map.fitControl.removeFrom(map);\n }\n map.remove();\n });\n }\n };\n\n return TileMap;\n\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/visualizations/tile_map.js\n ** module id = 745\n ** module chunks = 0\n **/","define(function (require) {\n return function VisTypeFactory(Private) {\n\n /**\n * Provides the visualizations for the vislib\n *\n * @module vislib\n * @submodule VisTypeFactory\n * @param Private {Object} Loads any function as an angular module\n * @return {Function} Returns an Object of Visualization classes\n */\n return {\n histogram: Private(require('components/vislib/visualizations/column_chart')),\n pie: Private(require('components/vislib/visualizations/pie_chart')),\n line: Private(require('components/vislib/visualizations/line_chart')),\n area: Private(require('components/vislib/visualizations/area_chart')),\n tile_map: Private(require('components/vislib/visualizations/tile_map'))\n };\n };\n\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/visualizations/vis_types.js\n ** module id = 746\n ** module chunks = 0\n **/","define(function (require) {\n return function VislibRenderbotFactory(Private, vislib) {\n var _ = require('lodash');\n var Renderbot = Private(require('components/vis/Renderbot'));\n var buildChartData = Private(require('components/vislib_vis_type/buildChartData'));\n\n _.class(VislibRenderbot).inherits(Renderbot);\n function VislibRenderbot(vis, $el) {\n VislibRenderbot.Super.call(this, vis, $el);\n this._createVis();\n }\n\n VislibRenderbot.prototype._createVis = function () {\n var self = this;\n\n if (self.vislibVis) self.destroy();\n\n self.vislibParams = self._getVislibParams();\n self.vislibVis = new vislib.Vis(self.$el[0], self.vislibParams);\n\n _.each(self.vis.listeners, function (listener, event) {\n self.vislibVis.on(event, listener);\n });\n\n if (this.chartData) self.vislibVis.render(this.chartData);\n };\n\n VislibRenderbot.prototype._getVislibParams = function () {\n var self = this;\n\n return _.assign(\n {},\n self.vis.type.params.defaults,\n { type: self.vis.type.name },\n self.vis.params\n );\n };\n\n VislibRenderbot.prototype.buildChartData = buildChartData;\n VislibRenderbot.prototype.render = function (esResponse) {\n this.chartData = this.buildChartData(esResponse);\n this.vislibVis.render(this.chartData);\n };\n\n VislibRenderbot.prototype.destroy = function () {\n var self = this;\n\n var vislibVis = self.vislibVis;\n\n _.forOwn(self.vis.listeners, function (listener, event) {\n vislibVis.off(event, listener);\n });\n\n vislibVis.destroy();\n };\n\n VislibRenderbot.prototype.updateParams = function () {\n var self = this;\n\n // get full vislib params object\n var newParams = self._getVislibParams();\n\n // if there's been a change, replace the vis\n if (!_.isEqual(newParams, self.vislibParams)) self._createVis();\n };\n\n return VislibRenderbot;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib_vis_type/VislibRenderbot.js\n ** module id = 747\n ** module chunks = 0\n **/","define(function (require) {\n return function VislibVisBuildChartData(Private) {\n var aggResponse = Private(require('components/agg_response/index'));\n var Table = Private(require('components/agg_response/tabify/_table'));\n\n return function (esResponse) {\n var vis = this.vis;\n\n if (vis.isHierarchical()) {\n // the hierarchical converter is very self-contained (woot!)\n return aggResponse.hierarchical(vis, esResponse);\n }\n\n var tableGroup = aggResponse.tabify(vis, esResponse, {\n canSplit: true,\n asAggConfigResults: true\n });\n\n var converted = convertTableGroup(vis, tableGroup);\n if (!converted) {\n // mimic a row of tables that doesn't have any tables\n // https://github.com/elastic/kibana/blob/7bfb68cd24ed42b1b257682f93c50cd8d73e2520/src/kibana/components/vislib/components/zero_injection/inject_zeros.js#L32\n converted = { rows: [] };\n }\n\n converted.hits = esResponse.hits.total;\n\n return converted;\n };\n\n function convertTableGroup(vis, tableGroup) {\n var tables = tableGroup.tables;\n var firstChild = tables[0];\n if (firstChild instanceof Table) {\n\n var chart = convertTable(vis, firstChild);\n // if chart is within a split, assign group title to its label\n if (tableGroup.$parent) {\n chart.label = tableGroup.title;\n }\n return chart;\n }\n\n if (!tables.length) return;\n var out = {};\n var outList;\n\n tables.forEach(function (table) {\n if (!outList) {\n var aggConfig = table.aggConfig;\n var direction = aggConfig.params.row ? 'rows' : 'columns';\n outList = out[direction] = [];\n }\n\n var output;\n if (output = convertTableGroup(vis, table)) {\n outList.push(output);\n }\n });\n\n return out;\n }\n\n function convertTable(vis, table) {\n return vis.type.responseConverter(vis, table);\n }\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib_vis_type/buildChartData.js\n ** module id = 748\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var reqRespStatsHTML = require('components/visualize/spy/_req_resp_stats.html');\n\n var linkReqRespStats = function ($scope, config) {\n $scope.$bind('req', 'searchSource.history[searchSource.history.length - 1]');\n $scope.$watchMulti([\n 'req',\n 'req.started',\n 'req.stopped',\n 'searchSource'\n ], function () {\n if (!$scope.searchSource || !$scope.req) return;\n\n var req = $scope.req;\n var resp = $scope.req.resp;\n var stats = $scope.stats = [];\n\n if (resp && resp.took != null) stats.push(['Query Duration', resp.took + 'ms']);\n if (req && req.ms != null) stats.push(['Request Duration', req.ms + 'ms']);\n if (resp && resp.hits) stats.push(['Hits', resp.hits.total]);\n\n if (req.fetchParams.index) stats.push(['Index', req.fetchParams.index]);\n if (req.fetchParams.type) stats.push(['Type', req.fetchParams.type]);\n if (req.fetchParams.id) stats.push(['Id', req.fetchParams.id]);\n });\n };\n\n require('registry/spy_modes')\n .register(function () {\n return {\n name: 'request',\n display: 'Request',\n order: 2,\n template: reqRespStatsHTML,\n link: linkReqRespStats\n };\n })\n .register(function () {\n return {\n name: 'response',\n display: 'Response',\n order: 3,\n template: reqRespStatsHTML,\n link: linkReqRespStats\n };\n })\n .register(function () {\n return {\n name: 'stats',\n display: 'Statistics',\n order: 4,\n template: reqRespStatsHTML,\n link: linkReqRespStats\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/visualize/spy/_req_resp_stats.js\n ** module id = 749\n ** module chunks = 0\n **/","define(function (require) {\n function VisSpyTableProvider(Notifier, $filter, $rootScope, config, Private) {\n var _ = require('lodash');\n var saveAs = require('file_saver');\n var tabifyAggResponse = Private(require('components/agg_response/tabify/tabify'));\n\n var PER_PAGE_DEFAULT = 10;\n\n require('components/agg_table/agg_table');\n\n return {\n name: 'table',\n display: 'Table',\n order: 1,\n template: require('components/visualize/spy/_table.html'),\n link: function tableLinkFn($scope, $el) {\n $rootScope.$watchMulti.call($scope, [\n 'vis',\n 'esResp'\n ], function () {\n if (!$scope.vis || !$scope.esResp) {\n $scope.table = null;\n } else {\n if (!$scope.editableVis.params.spyPerPage) {\n $scope.editableVis.params.spyPerPage = PER_PAGE_DEFAULT;\n }\n\n $scope.table = tabifyAggResponse($scope.vis, $scope.esResp, {\n canSplit: false,\n asAggConfigResults: true,\n partialRows: true\n });\n }\n });\n }\n };\n }\n\n require('registry/spy_modes').register(VisSpyTableProvider);\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/visualize/spy/_table.js\n ** module id = 750\n ** module chunks = 0\n **/","define(function (require) {\n require('modules')\n .get('app/visualize')\n .directive('visualizeSpy', function (Private, $compile) {\n var $ = require('jquery');\n var _ = require('lodash');\n\n require('components/visualize/spy/_table');\n require('components/visualize/spy/_req_resp_stats');\n\n var modes = Private(require('registry/spy_modes'));\n var defaultMode = modes.inOrder[0];\n\n return {\n restrict: 'E',\n template: require('components/visualize/spy/_spy.html'),\n link: function ($scope, $el) {\n var $container = $el.find('.visualize-spy-container');\n var fullPageSpy = false;\n $scope.modes = modes;\n\n $scope.toggleDisplay = function () {\n $scope.setSpyMode($scope.spy.mode ? null : defaultMode);\n };\n\n $scope.toggleFullPage = function () {\n fullPageSpy = $scope.spy.mode.fill = !fullPageSpy;\n };\n\n $scope.setSpyMode = function (newMode) {\n // allow passing in a mode name\n if (_.isString(newMode)) newMode = modes.byName[newMode];\n\n var current = $scope.spy.mode;\n var change = false;\n\n // no change\n if (current && newMode && newMode.name === current.name) return;\n\n // clear the current value\n if (current) {\n current.$container.remove();\n current.$scope.$destroy();\n delete $scope.spy.mode;\n }\n\n // no further changes\n if (!newMode) return;\n\n current = $scope.spy.mode = {\n // copy a couple values over\n name: newMode.name,\n display: newMode.display,\n fill: fullPageSpy,\n $scope: $scope.$new(),\n $container: $('
').appendTo($container)\n };\n\n current.$container.append($compile(newMode.template)(current.$scope));\n newMode.link && newMode.link(current.$scope, current.$container);\n };\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/visualize/spy/spy.js\n ** module id = 751\n ** module chunks = 0\n **/","define(function () {\n return function addWordBreaks(text, minLineLength) {\n text = text || '';\n var lineSize = 0;\n var newText = '';\n var inHtmlTag = false;\n var inHtmlChar = false;\n\n for (var i = 0, len = text.length; i < len; i++) {\n var chr = text.charAt(i);\n newText += chr;\n\n switch (chr) {\n case ' ':\n case ':':\n case ',':\n // natural line break, reset line size\n lineSize = 0;\n break;\n case '<':\n inHtmlTag = true;\n break;\n case '>':\n inHtmlTag = false;\n lineSize = 0;\n break;\n case '&':\n inHtmlChar = true;\n break;\n case ';':\n inHtmlChar = false;\n lineSize = 0;\n break;\n default:\n if (!inHtmlTag && !inHtmlChar) lineSize++;\n break;\n }\n\n if (lineSize > minLineLength) {\n // continuous text is longer then we want,\n // so break it up with a \n lineSize = 0;\n newText += '';\n }\n }\n\n return newText;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/utils/add_word_breaks.js\n ** module id = 752\n ** module chunks = 0\n **/","define(function (require) {\n\n /*\n * Decodes geohash to object containing\n * top-left and bottom-right corners of\n * rectangle and center point.\n *\n * geohash.js\n * Geohash library for Javascript\n * (c) 2008 David Troy\n * Distributed under the MIT License\n *\n * @method refine_interval\n * @param interval {Array} [long, lat]\n * @param cd {Number}\n * @param mask {Number}\n * @return {Object} interval\n */\n function decodeGeoHash(geohash) {\n var BITS = [16, 8, 4, 2, 1];\n var BASE32 = '0123456789bcdefghjkmnpqrstuvwxyz';\n var is_even = 1;\n var lat = [];\n var lon = [];\n lat[0] = -90.0;\n lat[1] = 90.0;\n lon[0] = -180.0;\n lon[1] = 180.0;\n var lat_err = 90.0;\n var lon_err = 180.0;\n for (var i = 0; i < geohash.length; i++) {\n var c = geohash[i];\n var cd = BASE32.indexOf(c);\n for (var j = 0; j < 5; j++) {\n var mask = BITS[j];\n if (is_even) {\n lon_err /= 2;\n refine_interval(lon, cd, mask);\n } else {\n lat_err /= 2;\n refine_interval(lat, cd, mask);\n }\n is_even = !is_even;\n }\n }\n lat[2] = (lat[0] + lat[1]) / 2;\n lon[2] = (lon[0] + lon[1]) / 2;\n return { latitude: lat, longitude: lon};\n }\n\n function refine_interval(interval, cd, mask) {\n if (cd & mask) {\n interval[0] = (interval[0] + interval[1]) / 2;\n } else {\n interval[1] = (interval[0] + interval[1]) / 2;\n }\n }\n\n return decodeGeoHash;\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/utils/decode_geo_hash.js\n ** module id = 753\n ** module chunks = 0\n **/","define(function (require) {\n return {\n 8: 'backspace',\n 9: 'tab',\n 13: 'enter',\n 16: 'shift',\n 17: 'ctrl',\n 18: 'alt',\n 19: 'pause',\n 20: 'capsLock',\n 27: 'escape',\n 32: 'space',\n 33: 'pageUp',\n 34: 'pageDown',\n 35: 'end',\n 36: 'home',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 45: 'insert',\n 46: 'delete',\n 48: '0',\n 49: '1',\n 50: '2',\n 51: '3',\n 52: '4',\n 53: '5',\n 54: '6',\n 55: '7',\n 56: '8',\n 57: '9',\n 65: 'a',\n 66: 'b',\n 67: 'c',\n 68: 'd',\n 69: 'e',\n 70: 'f',\n 71: 'g',\n 72: 'h',\n 73: 'i',\n 74: 'j',\n 75: 'k',\n 76: 'l',\n 77: 'm',\n 78: 'n',\n 79: 'o',\n 80: 'p',\n 81: 'q',\n 82: 'r',\n 83: 's',\n 84: 't',\n 85: 'u',\n 86: 'v',\n 87: 'w',\n 88: 'x',\n 89: 'y',\n 90: 'z',\n 91: 'leftWindowKey',\n 92: 'rightWindowKey',\n 93: 'selectKey',\n 96: '0',\n 97: '1',\n 98: '2',\n 99: '3',\n 100: '4',\n 101: '5',\n 102: '6',\n 103: '7',\n 104: '8',\n 105: '9',\n 106: 'multiply',\n 107: 'add',\n 109: 'subtract',\n 110: 'period',\n 111: 'divide',\n 112: 'f1',\n 113: 'f2',\n 114: 'f3',\n 115: 'f4',\n 116: 'f5',\n 117: 'f6',\n 118: 'f7',\n 119: 'f8',\n 120: 'f9',\n 121: 'f10',\n 122: 'f11',\n 123: 'f12',\n 144: 'numLock',\n 145: 'scrollLock',\n 186: 'semiColon',\n 187: 'equalSign',\n 188: 'comma',\n 189: 'dash',\n 190: 'period',\n 191: 'forwardSlash',\n 192: 'graveAccent',\n 219: 'openBracket',\n 220: 'backSlash',\n 221: 'closeBraket',\n 222: 'singleQuote',\n 224: 'meta'\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/utils/key_map.js\n ** module id = 754\n ** module chunks = 0\n **/","define(function (require) {\n // adopted from http://stackoverflow.com/questions/3109978/php-display-number-with-ordinal-suffix\n var _ = require('lodash');\n return function addOrdinalSuffix(num) {\n return num + '' + suffix(num);\n };\n\n function suffix(num) {\n var int = Math.floor(parseFloat(num));\n\n var hunth = int % 100;\n if (hunth >= 11 && hunth <= 13) return 'th';\n\n var tenth = int % 10;\n if (tenth === 1) return 'st';\n if (tenth === 2) return 'nd';\n if (tenth === 3) return 'rd';\n return 'th';\n }\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/utils/ordinal_suffix.js\n ** module id = 755\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n /**\n * Regexp portion that matches our number\n *\n * supports:\n * -100\n * -100.0\n * 0\n * 0.10\n * Infinity\n * -Infinity\n *\n * @type {String}\n */\n var _RE_NUMBER = '(\\\\-?(?:\\\\d+(?:\\\\.\\\\d+)?|Infinity))';\n\n /**\n * Regexp for the interval notation\n *\n * supports:\n * [num, num]\n * ( num , num ]\n * [Infinity,num)\n *\n * @type {RegExp}\n */\n var RANGE_RE = new RegExp('^\\\\s*([\\\\[|\\\\(])\\\\s*' + _RE_NUMBER + '\\\\s*,\\\\s*' + _RE_NUMBER + '\\\\s*([\\\\]|\\\\)])\\\\s*$');\n\n function parse(input) {\n\n var match = String(input).match(RANGE_RE);\n if (!match) {\n throw new TypeError('expected input to be in interval notation eg. (100, 200]');\n }\n\n return new Range(\n match[1] === '[',\n parseFloat(match[2]),\n parseFloat(match[3]),\n match[4] === ']'\n );\n }\n\n function Range(/* minIncl, min, max, maxIncl */) {\n var args = _.toArray(arguments);\n if (args[1] > args[2]) args.reverse();\n\n this.minInclusive = args[0];\n this.min = args[1];\n this.max = args[2];\n this.maxInclusive = args[3];\n }\n\n Range.prototype.within = function (n) {\n if (this.min === n && !this.minInclusive) return false;\n if (this.min > n) return false;\n\n if (this.max === n && !this.maxInclusive) return false;\n if (this.max < n) return false;\n\n return true;\n };\n\n return parse;\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/utils/range.js\n ** module id = 756\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n function create(min, max, length, mod) {\n var seq = new Array(length);\n\n var valueDist = max - min;\n\n // range of values that the mod creates\n var modRange = [mod(0, length), mod(length - 1, length)];\n\n // distance between\n var modRangeDist = modRange[1] - modRange[0];\n\n _.times(length, function (i) {\n var modIPercent = (mod(i, length) - modRange[0]) / modRangeDist;\n\n // percent applied to distance and added to min to\n // produce value\n seq[i] = min + (valueDist * modIPercent);\n });\n\n seq.min = min;\n seq.max = max;\n\n return seq;\n }\n\n return {\n /**\n * Create an exponential sequence of numbers.\n *\n * Creates a curve resembling:\n *\n * ;\n * /\n * /\n * .-'\n * _.-\"\n * _.-'\"\n * _,.-'\"\n * _,..-'\"\n * _,..-'\"\"\n * _,..-'\"\"\n * ____,..--'\"\"\n *\n * @param {number} min - the min value to produce\n * @param {number} max - the max value to produce\n * @param {number} length - the number of values to produce\n * @return {number[]} - an array containing the sequence\n */\n createEaseIn: _.partialRight(create, function (i, length) {\n // generates numbers from 1 to +Infinity\n return i * Math.pow(i, 1.1111);\n }),\n\n /**\n * Create an sequence of numbers using sine.\n *\n * Create a curve resembling:\n *\n * ____,..--'\"\"\n * _,..-'\"\"\n * _,..-'\"\"\n * _,..-'\"\n * _,.-'\"\n * _.-'\"\n * _.-\"\n * .-'\n * /\n * /\n * ;\n *\n *\n * @param {number} min - the min value to produce\n * @param {number} max - the max value to produce\n * @param {number} length - the number of values to produce\n * @return {number[]} - an array containing the sequence\n */\n createEaseOut: _.partialRight(create, function (i, length) {\n // adapted from output of http://www.timotheegroleau.com/Flash/experiments/easing_function_generator.htm\n // generates numbers from 0 to 100\n\n var ts = (i /= length) * i;\n var tc = ts * i;\n return 100 * (\n 0.5 * tc * ts +\n -3 * ts * ts +\n 6.5 * tc +\n -7 * ts +\n 4 * i\n );\n })\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/utils/sequencer.js\n ** module id = 757\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n /**\n * just a place to put feature detection checks\n */\n return {\n cssFilters: (function () {\n var e = document.createElement('img');\n var rules = ['webkitFilter', 'mozFilter', 'msFilter', 'filter'];\n var test = 'grayscale(1)';\n rules.forEach(function (rule) { e.style[rule] = test; });\n\n document.body.appendChild(e);\n var styles = window.getComputedStyle(e);\n var can = _(styles).pick(rules).includes(test);\n document.body.removeChild(e);\n\n return can;\n }())\n };\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/utils/supports.js\n ** module id = 758\n ** module chunks = 0\n **/","// style-loader: Adds some reference to a css file to the DOM by adding a tag\nvar update = require(\"!/Users/spencer/dev/es/kibana/node_modules/style-loader/addStyleUrl.js\")(\n\trequire(\"!!./../../../../../../node_modules/file-loader/index.js?name=[path][name].less!./../../../../../../node_modules/less-loader/index.js!./main.less\")\n);\n// Hot Module Replacement\nif(module.hot) {\n\tmodule.hot.accept(\"!!./../../../../../../node_modules/file-loader/index.js?name=[path][name].less!./../../../../../../node_modules/less-loader/index.js!./main.less\", function() {\n\t\tupdate(require(\"!!./../../../../../../node_modules/file-loader/index.js?name=[path][name].less!./../../../../../../node_modules/less-loader/index.js!./main.less\"));\n\t});\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/discover/styles/main.less\n ** module id = 557\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 5ae4d076cf872..d0d83e6830b64 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,9 @@ "debug": "^2.1.1", "elasticsearch": "^5.0.0", "exports-loader": "^0.6.2", + "expose-loader": "^0.7.0", "express": "^4.10.6", + "extract-text-webpack-plugin": "^0.8.2", "file-loader": "^0.8.4", "font-awesome": "^4.3.0", "glob": "^4.3.2", diff --git a/sense.js.map b/sense.js.map new file mode 100644 index 0000000000000..cb6f725680372 --- /dev/null +++ b/sense.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap d26167e4f671993c83a6?cbaa","./bundles/sense.entry.js","webpack:///./src/ui/utils/lodash-mixins/index.js?878c","webpack:///./bower_components/moment/moment.js?0cb0","webpack:///./src/ui/components/modules.js?aad4","webpack:///./bower_components/angular/angular.js?fe0a","webpack:///./bower_components/jquery/dist/jquery.js?e33a","webpack:///./~/style-loader/addStyleUrl.js?796a","webpack:///./src/ui/components/errors.js?c234","webpack:///./src/ui/components/courier/fetch/_req_status.js?75b5","webpack:///./src/ui/registry/field_formats.js?805f","webpack:///./src/ui/components/courier/_request_queue.js?f7ac","webpack:///./src/ui/components/index_patterns/_field_format/FieldFormat.js?14d4","webpack:///./src/ui/components/indexed_array/index.js?8105","webpack:///./src/ui/utils/datemath.js?adf8","webpack:///./src/ui/components/events.js?abc6","webpack:///./src/ui/utils/rison.js?5fc9","webpack:///./src/ui/components/routes/index.js?0e5c","webpack:///./src/ui/components/courier/fetch/fetch.js?3396","webpack:///./src/ui/components/bound_to_config_obj.js?6fc7","webpack:///./src/ui/components/courier/data_source/doc_source.js?16b7","webpack:///./src/ui/components/courier/fetch/strategy/search.js?aff3","webpack:///./src/ui/components/notify/notify.js?203b","webpack:///./src/ui/filters/short_dots.js?4701","webpack:///./src/ui/components/courier/_error_handlers.js?63cd","webpack:///./src/ui/components/courier/data_source/search_source.js?8c2d","webpack:///./src/ui/components/courier/fetch/request/request.js?f55a","webpack:///./src/ui/components/courier/fetch/strategy/doc.js?048e","webpack:///./src/ui/components/field_format_editor/pattern/pattern.js?f723","webpack:///./src/ui/components/filter_bar/lib/compareFilters.js?50af","webpack:///./src/ui/components/filter_bar/lib/mapAndFlattenFilters.js?ebd8","webpack:///./src/ui/components/filter_bar/query_filter.js?f455","webpack:///./src/ui/components/index_patterns/_intervals.js?1d10","webpack:///./src/ui/components/notify/directives.js?c641","webpack:///./src/ui/components/promises.js?e054","webpack:///./src/ui/components/stringify/types/_Numeral.js?6344","webpack:///./src/ui/utils/config_template.js?ff03","webpack:///./src/ui/utils/diff_time_picker_vals.js?e009","webpack:///./src/ui/utils/query_string.js?568f","webpack:///./src/ui/chrome/chrome.js?b0f9","webpack:///./src/ui/components/courier/data_source/_root_search_source.js?0e27","webpack:///./src/ui/components/index_patterns/index_patterns.js?4cbb","webpack:///./src/ui/components/courier/data_source/_decorate_query.js?76bb","webpack:///./src/ui/components/private.js?71d9","webpack:///./src/ui/components/timefilter/timefilter.js?2658","webpack:///./src/ui/components/vis/AggConfigResult.js?193e","webpack:///./src/ui/directives/inequality.js?9d66","webpack:///./bower_components/moment/locale/af.js?95e7","webpack:///./bower_components/moment/locale/ar-ma.js?4f39","webpack:///./bower_components/moment/locale/ar-sa.js?038f","webpack:///./bower_components/moment/locale/ar-tn.js?c690","webpack:///./bower_components/moment/locale/ar.js?6762","webpack:///./bower_components/moment/locale/az.js?bd67","webpack:///./bower_components/moment/locale/be.js?80ee","webpack:///./bower_components/moment/locale/bg.js?54fd","webpack:///./bower_components/moment/locale/bn.js?2930","webpack:///./bower_components/moment/locale/bo.js?7783","webpack:///./bower_components/moment/locale/br.js?38f2","webpack:///./bower_components/moment/locale/bs.js?3930","webpack:///./bower_components/moment/locale/ca.js?9e88","webpack:///./bower_components/moment/locale/cs.js?ba9e","webpack:///./bower_components/moment/locale/cv.js?7552","webpack:///./bower_components/moment/locale/cy.js?c5e8","webpack:///./bower_components/moment/locale/da.js?0a9c","webpack:///./bower_components/moment/locale/de-at.js?c10e","webpack:///./bower_components/moment/locale/de.js?d89f","webpack:///./bower_components/moment/locale/el.js?cfeb","webpack:///./bower_components/moment/locale/en-au.js?69ce","webpack:///./bower_components/moment/locale/en-ca.js?0106","webpack:///./bower_components/moment/locale/en-gb.js?7128","webpack:///./bower_components/moment/locale/eo.js?b8c6","webpack:///./bower_components/moment/locale/es.js?eee9","webpack:///./bower_components/moment/locale/et.js?0569","webpack:///./bower_components/moment/locale/eu.js?1322","webpack:///./bower_components/moment/locale/fa.js?f4ea","webpack:///./bower_components/moment/locale/fi.js?89c8","webpack:///./bower_components/moment/locale/fo.js?efb9","webpack:///./bower_components/moment/locale/fr-ca.js?faff","webpack:///./bower_components/moment/locale/fr.js?e9d4","webpack:///./bower_components/moment/locale/fy.js?95c6","webpack:///./bower_components/moment/locale/gl.js?6123","webpack:///./bower_components/moment/locale/he.js?d157","webpack:///./bower_components/moment/locale/hi.js?5830","webpack:///./bower_components/moment/locale/hr.js?95a6","webpack:///./bower_components/moment/locale/hu.js?dff4","webpack:///./bower_components/moment/locale/hy-am.js?e91c","webpack:///./bower_components/moment/locale/id.js?a133","webpack:///./bower_components/moment/locale/is.js?0068","webpack:///./bower_components/moment/locale/it.js?df66","webpack:///./bower_components/moment/locale/ja.js?75c4","webpack:///./bower_components/moment/locale/jv.js?ed49","webpack:///./bower_components/moment/locale/ka.js?989d","webpack:///./bower_components/moment/locale/km.js?1dc9","webpack:///./bower_components/moment/locale/ko.js?9df0","webpack:///./bower_components/moment/locale/lb.js?28ca","webpack:///./bower_components/moment/locale/lt.js?acfb","webpack:///./bower_components/moment/locale/lv.js?9760","webpack:///./bower_components/moment/locale/me.js?9ecb","webpack:///./bower_components/moment/locale/mk.js?08dc","webpack:///./bower_components/moment/locale/ml.js?af10","webpack:///./bower_components/moment/locale/mr.js?7b71","webpack:///./bower_components/moment/locale/ms-my.js?a415","webpack:///./bower_components/moment/locale/my.js?5861","webpack:///./bower_components/moment/locale/nb.js?24e6","webpack:///./bower_components/moment/locale/ne.js?9aee","webpack:///./bower_components/moment/locale/nl.js?1782","webpack:///./bower_components/moment/locale/nn.js?b05a","webpack:///./bower_components/moment/locale/pl.js?fd48","webpack:///./bower_components/moment/locale/pt-br.js?c45b","webpack:///./bower_components/moment/locale/pt.js?d0fb","webpack:///./bower_components/moment/locale/ro.js?da9d","webpack:///./bower_components/moment/locale/ru.js?090a","webpack:///./bower_components/moment/locale/si.js?c346","webpack:///./bower_components/moment/locale/sk.js?3768","webpack:///./bower_components/moment/locale/sl.js?ea22","webpack:///./bower_components/moment/locale/sq.js?0dd2","webpack:///./bower_components/moment/locale/sr-cyrl.js?b729","webpack:///./bower_components/moment/locale/sr.js?9ae5","webpack:///./bower_components/moment/locale/sv.js?4228","webpack:///./bower_components/moment/locale/ta.js?d315","webpack:///./bower_components/moment/locale/th.js?86f1","webpack:///./bower_components/moment/locale/tl-ph.js?3658","webpack:///./bower_components/moment/locale/tr.js?2e36","webpack:///./bower_components/moment/locale/tzm-latn.js?0f4e","webpack:///./bower_components/moment/locale/tzm.js?bdda","webpack:///./bower_components/moment/locale/uk.js?2a1d","webpack:///./bower_components/moment/locale/uz.js?8291","webpack:///./bower_components/moment/locale/vi.js?1f7c","webpack:///./bower_components/moment/locale/zh-cn.js?1e9d","webpack:///./bower_components/moment/locale/zh-tw.js?9ce0","webpack:///./src/ui/components/field_format_editor/numeral/numeral.html?e52a","webpack:///(webpack)/buildin/module.js?c3c2","webpack:///./src/ui/components/config/_vals.js?645c","webpack:///./src/ui/components/courier/courier.js?4a83","webpack:///./src/ui/components/courier/data_source/_abstract.js?81bc","webpack:///./src/ui/components/courier/fetch/_call_response_handlers.js?b09b","webpack:///./src/ui/components/courier/fetch/_is_request.js?c489","webpack:///./src/ui/components/courier/fetch/_notifier.js?82e3","webpack:///./src/ui/components/courier/fetch/request/search.js?4657","webpack:///./src/ui/components/courier/looper/_looper.js?cbbb","webpack:///./src/ui/components/debounce.js?3186","webpack:///./src/ui/components/doc_title/doc_title.js?3da1","webpack:///./src/ui/components/es.js?3b2b","webpack:///./src/ui/components/field_format_editor/samples/samples.js?80a1","webpack:///./src/ui/components/filter_bar/lib/dedupFilters.js?80a5","webpack:///./src/ui/components/filter_bar/lib/uniqFilters.js?c2e6","webpack:///./src/ui/components/index_patterns/_get_ids.js?ff77","webpack:///./src/ui/components/index_patterns/_mapper.js?f2d4","webpack:///./src/ui/components/index_patterns/_pattern_to_wildcard.js?1eed","webpack:///./src/ui/components/state_management/global_state.js?84fb","webpack:///./src/ui/components/state_management/state.js?c63d","webpack:///./src/ui/components/timepicker/quick_ranges.js?65d6","webpack:///./src/ui/components/timepicker/time_units.js?69e9","webpack:///./src/ui/components/ui-bootstrap/index.js?577a","webpack:///./src/ui/directives/input_datetime.js?8004","webpack:///./src/ui/directives/input_focus.js?97c5","webpack:///./src/ui/filters/rison.js?28d9","webpack:///./src/ui/filters/uriescape.js?298c","webpack:///./src/ui/meta-modules/elasticsearch.js?2711","webpack:///./src/ui/utils/ipv4_address.js?7944","webpack:///./src/ui/utils/mapping_setup.js?51b8","webpack:///./src/ui/components/config/defaults.js?7254","webpack:///./src/ui/components/filter_bar/filter_bar_click_handler.js?41c1","webpack:///./src/ui/components/filter_manager/filter_manager.js?25a0","webpack:///./src/ui/components/highlight/highlight_tags.js?0fc9","webpack:///./src/ui/components/index_patterns/_field.js?d483","webpack:///./src/ui/components/url/url.js?269c","webpack:///./src/ui/components/validateDateInterval.js?5bcd","webpack:///./src/ui/directives/css_truncate.js?98a6","webpack:///./src/ui/directives/field_name.js?b0f3","webpack:///./src/ui/registry/_registry.js?e512","webpack:///./bower_components/numeral/numeral.js?fe7c","webpack:///./src/ui/components/config/config.js?a594","webpack:///./src/ui/components/elastic_textarea.js?efa5","webpack:///./src/ui/components/highlight/highlight.js?ab54","webpack:///./src/ui/components/index_patterns/_cast_mapping_type.js?c50b","webpack:///./src/ui/components/index_patterns/_field_list.js?0470","webpack:///./src/ui/components/notify/_notifier.js?03e2","webpack:///./src/ui/components/state_management/app_state.js?4b32","webpack:///./src/ui/components/timepicker/timepicker.js?4946","webpack:///./src/ui/components/typeahead/typeahead.js?f654","webpack:///./src/ui/components/validate_query/validate_query.js?ee95","webpack:///./src/ui/directives/auto_select_if_only_one.js?4bc0","webpack:///./src/ui/directives/config.js?e359","webpack:///./src/ui/directives/confirm_click.js?1972","webpack:///./src/ui/directives/file_upload.js?1fe3","webpack:///./src/ui/directives/infinite_scroll.js?b8bb","webpack:///./src/ui/directives/input_whole_number.js?7f37","webpack:///./src/ui/directives/saved_object_finder.js?5501","webpack:///./src/ui/directives/truncated.js?e171","webpack:///./src/ui/directives/validate_cidr_mask.js?1c76","webpack:///./src/ui/directives/validate_date_math.js?f68c","webpack:///./src/ui/directives/validate_index_name.js?18c7","webpack:///./src/ui/directives/validate_ip.js?c8d4","webpack:///./src/ui/directives/validate_json.js?a38a","webpack:///./src/ui/filters/_prop_filter.js?f43a","webpack:///./src/ui/filters/field_type.js?936f","webpack:///./src/ui/filters/label.js?ee53","webpack:///./src/ui/filters/match_any.js?17ff","webpack:///./src/ui/filters/moment.js?094c","webpack:///./src/ui/filters/start_from.js?ff3b","webpack:///./src/ui/filters/trust_as_html.js?1c00","webpack:///./src/ui/filters/unique.js?d0a3","webpack:///./src/ui/utils/SimpleEmitter.js?b3fe","webpack:///./src/ui/utils/cidr_mask.js?7c3e","webpack:///./src/ui/utils/no_white_space.js?d8a0","webpack:///./src/ui/utils/parse_interval.js?fadd","webpack:///./bower_components/elasticsearch/elasticsearch.angular.min.js?0403","webpack:///./bower_components/lodash/lodash.js?02ed","webpack:///./bower_components/moment/locale ^\\.\\/.*$?e8a6","webpack:///./src/ui/components/typeahead/typeahead.less?1231","webpack:///./src/ui/ui-styles/base.less?560c","webpack:///./src/ui/ui-styles/callout.less?4cf2","webpack:///./src/ui/ui-styles/config.less?7d3f","webpack:///./src/ui/ui-styles/control_group.less?2754","webpack:///./src/ui/ui-styles/hintbox.less?e33d","webpack:///./src/ui/ui-styles/input.less?ca3c","webpack:///./src/ui/ui-styles/list-group-menu.less?be64","webpack:///./src/ui/ui-styles/navbar.less?a095","webpack:///./src/ui/ui-styles/notify.less?772b","webpack:///./src/ui/ui-styles/pagination.less?ff39","webpack:///./src/ui/ui-styles/sidebar.less?8476","webpack:///./src/ui/ui-styles/spinner.less?93fd","webpack:///./src/ui/ui-styles/table.less?10cd","webpack:///./src/ui/ui-styles/truncate.less?1156","webpack:///./bower_components/angular-bindonce/bindonce.js?8f51","webpack:///./bower_components/angular-bootstrap/ui-bootstrap-tpls.js?0889","webpack:///./src/ui/chrome/chrome.html?8802","webpack:///./src/ui/chrome/config/filter.html?48bb","webpack:///./src/ui/chrome/config/interval.html?861c","webpack:///./src/ui/components/field_format_editor/pattern/pattern.html?eb67","webpack:///./src/ui/components/field_format_editor/samples/samples.html?d1e2","webpack:///./src/ui/components/filter_bar/filter_bar.html?c650","webpack:///./src/ui/components/notify/partials/fatal.html?68b7","webpack:///./src/ui/components/notify/partials/fatal_splash_screen.html?87d8","webpack:///./src/ui/components/notify/partials/toaster.html?6088","webpack:///./src/ui/components/stringify/editors/date.html?08a0","webpack:///./src/ui/components/stringify/editors/string.html?6af5","webpack:///./src/ui/components/stringify/editors/url.html?2dac","webpack:///./src/ui/components/stringify/types/_source.html?aa43","webpack:///./src/ui/components/style_compile/style_compile.css.tmpl?acbc","webpack:///./src/ui/components/timepicker/timepicker.html?3877","webpack:///./src/ui/components/tooltip/tooltip.html?44aa","webpack:///./src/ui/components/typeahead/partials/typeahead-items.html?c17e","webpack:///./src/ui/partials/info.html?d768","webpack:///./src/ui/partials/paginate_controls.html?ebb6","webpack:///./src/ui/partials/saved_object_finder.html?587f","webpack:///./src/ui/components/typeahead/typeahead.less?c45e*","webpack:///./src/ui/ui-styles/base.less?bd2f*","webpack:///./src/ui/ui-styles/callout.less?ebaa*","webpack:///./src/ui/ui-styles/config.less?7fcd*","webpack:///./src/ui/ui-styles/control_group.less?3adf*","webpack:///./src/ui/ui-styles/hintbox.less?b6b7*","webpack:///./src/ui/ui-styles/input.less?f983*","webpack:///./src/ui/ui-styles/list-group-menu.less?d498*","webpack:///./src/ui/ui-styles/navbar.less?553d*","webpack:///./src/ui/ui-styles/notify.less?0e95*","webpack:///./src/ui/ui-styles/pagination.less?ef00*","webpack:///./src/ui/ui-styles/sidebar.less?5ad3*","webpack:///./src/ui/ui-styles/spinner.less?668a*","webpack:///./src/ui/ui-styles/table.less?cf42*","webpack:///./src/ui/ui-styles/truncate.less?2e83*","webpack:///./src/ui/chrome/Tab.js?a7a5","webpack:///./src/ui/chrome/TabCollection.js?50a2","webpack:///./src/ui/chrome/context.js?4511","webpack:///./src/ui/components/bind.js?e7ed","webpack:///./src/ui/components/config/_delayed_updater.js?6441","webpack:///./src/ui/components/courier/_redirect_when_missing.js?7168","webpack:///./src/ui/components/courier/data_source/_doc_send_to_es.js?9ed6","webpack:///./src/ui/components/courier/data_source/_normalize_sort_request.js?2182","webpack:///./src/ui/components/courier/fetch/_call_client.js?b4ea","webpack:///./src/ui/components/courier/fetch/_continue_incomplete.js?b973","webpack:///./src/ui/components/courier/fetch/_fetch_these.js?917b","webpack:///./src/ui/components/courier/fetch/_for_each_strategy.js?0286","webpack:///./src/ui/components/courier/fetch/_merge_duplicate_requests.js?79fb","webpack:///./src/ui/components/courier/fetch/request/_error_handler.js?b9a2","webpack:///./src/ui/components/courier/fetch/request/_segmented_handle.js?492a","webpack:///./src/ui/components/courier/fetch/request/doc.js?d856","webpack:///./src/ui/components/courier/fetch/request/segmented.js?0a2c","webpack:///./src/ui/components/courier/looper/doc.js?428a","webpack:///./src/ui/components/courier/looper/search.js?3e06","webpack:///./src/ui/components/courier/saved_object/saved_object.js?62fb","webpack:///./src/ui/components/fancy_forms/fancy_forms.js?bebc","webpack:///./src/ui/components/fancy_forms/kbn_form.js?028c","webpack:///./src/ui/components/fancy_forms/kbn_model.js?6cd9","webpack:///./src/ui/components/field_format_editor/numeral/numeral.js?5018","webpack:///./src/ui/components/filter_bar/filter_bar.js?d043","webpack:///./src/ui/components/filter_bar/lib/changeTimeFilter.js?ea79","webpack:///./src/ui/components/filter_bar/lib/extractTimeFilter.js?0c0e","webpack:///./src/ui/components/filter_bar/lib/filterAppliedAndUnwrap.js?25e5","webpack:///./src/ui/components/filter_bar/lib/filterOutTimeBasedFilter.js?8f4b","webpack:///./src/ui/components/filter_bar/lib/generateMappingChain.js?5541","webpack:///./src/ui/components/filter_bar/lib/mapDefault.js?fec9","webpack:///./src/ui/components/filter_bar/lib/mapExists.js?5d93","webpack:///./src/ui/components/filter_bar/lib/mapFilter.js?23be","webpack:///./src/ui/components/filter_bar/lib/mapFlattenAndWrapFilters.js?1adb","webpack:///./src/ui/components/filter_bar/lib/mapGeoBoundingBox.js?9154","webpack:///./src/ui/components/filter_bar/lib/mapMissing.js?25dd","webpack:///./src/ui/components/filter_bar/lib/mapQueryString.js?96b5","webpack:///./src/ui/components/filter_bar/lib/mapRange.js?ca95","webpack:///./src/ui/components/filter_bar/lib/mapScript.js?55e4","webpack:///./src/ui/components/filter_bar/lib/mapTerms.js?9e8e","webpack:///./src/ui/components/filter_bar/lib/onlyDisabled.js?eb4b","webpack:///./src/ui/components/filter_bar/lib/onlyStateChanged.js?0ed4","webpack:///./src/ui/components/index_patterns/_field_format/contentTypes.js?52aa","webpack:///./src/ui/components/index_patterns/_field_types.js?41f6","webpack:///./src/ui/components/index_patterns/_flatten_hit.js?af05","webpack:///./src/ui/components/index_patterns/_format_hit.js?6d28","webpack:///./src/ui/components/index_patterns/_get_computed_fields.js?cb8c","webpack:///./src/ui/components/index_patterns/_index_pattern.js?b8dc","webpack:///./src/ui/components/index_patterns/_local_cache.js?26b6","webpack:///./src/ui/components/index_patterns/_map_field.js?013a","webpack:///./src/ui/components/index_patterns/_pattern_cache.js?09bb","webpack:///./src/ui/components/index_patterns/_transform_mapping_into_fields.js?2542","webpack:///./src/ui/components/indexed_array/_inflector.js?37e3","webpack:///./src/ui/components/indexed_array/_path_getter.js?631e","webpack:///./src/ui/components/listen.js?a32c","webpack:///./src/ui/components/notify/_errors.js?5baa","webpack:///./src/ui/components/persisted_log/persisted_log.js?951e","webpack:///./src/ui/components/storage/storage.js?9c4d","webpack:///./src/ui/components/stringify/register.js?6b48","webpack:///./src/ui/components/stringify/types/Bytes.js?5c5c","webpack:///./src/ui/components/stringify/types/Date.js?887c","webpack:///./src/ui/components/stringify/types/Ip.js?03df","webpack:///./src/ui/components/stringify/types/Number.js?c54f","webpack:///./src/ui/components/stringify/types/Percent.js?5392","webpack:///./src/ui/components/stringify/types/Source.js?a2a7","webpack:///./src/ui/components/stringify/types/String.js?2ddc","webpack:///./src/ui/components/stringify/types/Url.js?9708","webpack:///./src/ui/components/style_compile/style_compile.js?cbc4","webpack:///./src/ui/components/timefilter/lib/diff_interval.js?2ea5","webpack:///./src/ui/components/timefilter/lib/diff_time.js?4f27","webpack:///./src/ui/components/timepicker/refresh_intervals.js?7a81","webpack:///./src/ui/components/tooltip/tooltip.js?f33f","webpack:///./src/ui/components/typeahead/_input.js?f1ad","webpack:///./src/ui/components/typeahead/_items.js?eac3","webpack:///./src/ui/components/validate_query/lib/from_user.js?5751","webpack:///./src/ui/components/validate_query/lib/to_user.js?1b3a","webpack:///./src/ui/components/watch_multi.js?395e","webpack:///./src/ui/directives/click_focus.js?3b77","webpack:///./src/ui/directives/info.js?6520","webpack:///./src/ui/directives/paginate.js?5931","webpack:///./src/ui/directives/pretty_duration.js?f194","webpack:///./src/ui/directives/rows.js?76c7","webpack:///./src/ui/directives/spinner.js?7fe9","webpack:///./src/ui/filters/commaList.js?93a2","webpack:///./src/ui/utils/BaseObject.js?e71a","webpack:///./src/ui/utils/diff_object.js?7faa","webpack:///./src/ui/utils/lodash-mixins/collection.js?c677","webpack:///./src/ui/utils/lodash-mixins/function.js?bd6e","webpack:///./src/ui/utils/lodash-mixins/lang.js?367f","webpack:///./src/ui/utils/lodash-mixins/object.js?d6f6","webpack:///./src/ui/utils/lodash-mixins/oop.js?fb00","webpack:///./src/ui/utils/lodash-mixins/string.js?c4a4","webpack:///./src/ui/utils/obj_define.js?c8d0","webpack:///./src/ui/utils/slugify_id.js?004d","webpack:///./bower_components/angular-route/angular-route.js?a1fb","webpack:///./src/ui/components/routes/_setup.js?0cc4","webpack:///./src/ui/components/routes/_work_queue.js?5d7d","webpack:///./src/ui/components/routes/_wrap_route_with_prep.js?2207","./src/plugins/sense/public/sense.js"],"names":[],"mappings":";AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;mCCjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;ACnBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,oBAAoB;;AAErB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,YAAY;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,2KAA0K,IAAI;;AAE9K,sEAAqE,IAAI;;AAEzE;;AAEA;;AAEA;AACA;AACA;AACA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,2CAA0C,YAAY;AACtD;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,wBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,+BAA8B;AAC9B,iCAAgC;AAChC,8BAA6B,EAAE,EAAE;AACjC,8BAA6B,EAAE,EAAE;AACjC,mCAAkC,EAAE,EAAE;AACtC,kCAAiC;AACjC,8BAA6B,IAAI,EAAE;AACnC,8BAA6B,IAAI,EAAE;AACnC,mCAAkC,IAAI,EAAE;;AAExC,gCAA+B;AAC/B,qCAAoC;;AAEpC,+CAA8C;;AAE9C,yCAAwC,IAAI,IAAI;;AAEhD;AACA,iIAAgI,IAAI;;AAEpI;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS,+BAA+B;AACxC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,kBAAkB;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,gDAA+C,EAAE,IAAI,EAAE;;AAEvD;AACA,kCAAiC,EAAE,IAAI,EAAE,IAAI,EAAE;AAC/C,4BAA2B,EAAE,IAAI,EAAE,IAAI,EAAE;AACzC,8BAA6B,EAAE,KAAK,EAAE;AACtC,4BAA2B,EAAE,KAAK,EAAE;AACpC,0BAAyB,EAAE,IAAI,EAAE;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,+BAA+B;AAClD;AACA;;AAEA;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,oBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,sBAAsB;AACzC;AACA,uCAAsC;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,0CAAyC,gBAAgB;AACzD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sEAAqE,EAAE;;AAEvE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,6BAA6B;AACtC;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAmB;;AAEnB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,cAAc;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAuC,qBAAqB;AAC5D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAuC,qBAAqB;AAC5D;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;;AAEA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,mCAAkC,IAAI;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,uFAAsF,IAAI;AAC1F;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB,WAAW;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;;AAEL;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,EAAC,G;;;;;;;mCCtiGD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;AC7DD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yCAAwC;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,EAAE,KAAK,EAAE;AAC9C;AACA;AACA;AACA,kCAAiC,EAAE,6BAA6B,EAAE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,+DAA+D;AAC5E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C;AAC5C,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;AAEA,4CAA2C,KAAK;AAChD;;AAEA;AACA;AACA;AACA,8CAA6C;AAC7C,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,gBAAe,sBAAsB;AACrC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA,kCAAiC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA,kCAAiC;;;AAGjC;AACA;AACA;AACA,2CAA0C,mDAAmD;AAC7F;AACA;AACA;AACA;AACA;AACA,2CAA0C,oDAAoD;AAC9F;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+DAA8D;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;;;AAGA;AACA;AACA,YAAW,EAAE;AACb,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA,YAAW,aAAa;AACxB,YAAW,SAAS;AACpB,YAAW,QAAQ;AACnB,cAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,oBAAmB,kBAAkB;AACrC;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAW,oBAAoB;AAC/B,cAAa;AACb;AACA;AACA,gCAA+B,wBAAwB;AACvD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,UAAU;AACrB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA,0CAAyC,GAAG,iBAAiB;AAC7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;;;AAGA,0BAAyB,mBAAmB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA,6BAA4B;;;AAG5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA,2BAA0B;;;AAG1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA,0BAAyB;;;AAGzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA,0BAAyB;;;AAGzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA,0BAAyB;;;AAGzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA,4BAA2B;;;AAG3B;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,gDAA+C;AAC/C;;AAEA;AACA;AACA,cAAa,OAAO,iBAAiB;AACrC;AACA;AACA,eAAc;AACd,eAAc,kBAAkB;AAChC;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,qBAAqB;AACzB;AACA,YAAW,oBAAoB;AAC/B,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb;AACA,YAAW,gBAAgB;AAC3B;AACA,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,kBAAiB,eAAe;AAChC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP,sCAAqC;AACrC;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAsB,mBAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAoB,gBAAgB;AACpC;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,WAAW;AACtB,YAAW,KAAK;AAChB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,gCAAgC;AAC3C,YAAW,SAAS;AACpB,cAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D,kCAAkC,EAAE;AAChG,IAAG;AACH;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA,cAAa;AACb;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA,IAAG;AACH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,eAAe;AAC1B,OAAM,4BAA4B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,wBAAwB;AAC5B;AACA;AACA,oCAAmC,qBAAqB;AACxD;AACA,2BAA0B,qBAAqB;AAC/C;AACA;AACA,6FAA4F,OAAO;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,GAAG,KAAK,GAAG,MAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAAyD;;AAEzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,mBAAkB,+BAA+B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C,SAAS;AACtD;AACA;AACA,0CAAyC,MAAM;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,YAAW,WAAW;AACtB,YAAW,8BAA8B;AACzC;AACA;AACA,cAAa;AACb,cAAa,eAAe;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yDAAwD,EAAE;AAC1D,gCAA+B,oBAAoB;AACnD;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wCAAuC,EAAE,MAAM,EAAE;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAY,OAAO;AACnB,aAAY,OAAO;AACnB;AACA;AACA;AACA,+DAA8D,EAAE;AAChE;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,MAAM;AACjB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,6BAA6B;AACnE;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,gBAAe,gCAAgC;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD,+BAA+B;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,+BAA+B;AACvC,SAAQ,wBAAwB;AAChC;AACA,gBAAe,QAAQ;AACvB,gBAAe,iBAAiB;AAChC;AACA,gBAAe,UAAU;AACzB,gBAAe,4CAA4C;AAC3D,kBAAiB,OAAO,sBAAsB,qBAAqB;AACnE;AACA;AACA;AACA;AACA,qEAAoE,EAAE;AACtE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD,EAAE;AACrD;AACA;AACA;;AAEA,oBAAmB,mBAAmB;AACtC;;AAEA,oBAAmB,kBAAkB;AACrC;;AAEA;;AAEA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,SAAS;AAC9B;AACA;AACA,mBAAkB,iDAAiD;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,SAAS;AAC9B;AACA,mBAAkB,+CAA+C;AACjE;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,SAAS;AAC9B;AACA,mBAAkB,+CAA+C;AACjE;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,EAAE;AACvB;AACA,mBAAkB,2CAA2C;AAC7D;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,EAAE;AACvB;AACA;AACA,mBAAkB,iDAAiD;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,kCAAkC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA,mBAAkB,sEAAsE;AACxF,eAAc,iCAAiC;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,SAAS;AAC9B;AACA,mBAAkB,6DAA6D;AAC/E;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,cAAc;AACnC;AACA,sBAAqB,SAAS;AAC9B;AACA,mBAAkB,qEAAqE;AACvF;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,cAAc;AACnC;AACA,sBAAqB,SAAS;AAC9B;AACA;AACA,mBAAkB,iEAAiE;AACnF;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA,eAAc,0DAA0D;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B,oBAAmB,QAAQ;AAC3B,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB,kBAAiB,OAAO;AACxB,gBAAe,OAAO;AACtB,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,WAAW;AAC7B;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,gCAAgC;AAChE;AACA,+CAA8C,gCAAgC;AAC9E;AACA;AACA;AACA;AACA;AACA,YAAW,kBAAkB;AAC7B,cAAa,OAAO;AACpB;;AAEA;;AAEA,gCAA+B;AAC/B;AACA;AACA,sCAAqC;AACrC,sCAAqC,sCAAsC;AAC3E;AACA,sCAAqC,6CAA6C;AAClF,sCAAqC,qCAAqC,EAAE;;AAE5E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAqB,eAAe;;;AAGpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAiD,sBAAsB;AACvE;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA4B;AAC5B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wCAAuC,MAAM;;AAE7C;AACA;AACA;;AAEA;AACA;AACA,2BAA0B;AAC1B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wDAAuD,qBAAqB;AAC5E;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,uBAAsB;;AAEtB;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,6DAA4D;AAC5D;AACA;AACA;AACA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,kDAAiD;AACjD;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAsC,QAAQ;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAkD,uBAAuB;AACzE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL,4CAA2C;AAC3C;AACA;AACA,0CAAyC;AACzC;AACA;AACA,IAAG;AACH;AACA;AACA,+BAA8B,qBAAqB;AACnD;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;AACD;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,gDAA+C;AAC/C,gDAA+C;AAC/C,MAAK;AACL;AACA,kDAAiD;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,qDAAoD,uBAAuB;AAC3E;AACA;AACA;AACA,IAAG;;AAEH;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,wBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,kBAAiB,eAAe;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,mCAAkC;AAClC;AACA;;AAEA;AACA;AACA,mCAAkC;AAClC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA,mEAAkE;AAClE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,2BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;;AAEA;;AAEA;AACA;AACA,gEAA+D;;AAE/D;;AAEA;AACA;AACA,qCAAoC,8BAA8B,EAAE;AACpE,yCAAwC,uCAAuC,EAAE;AACjF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,oCAAoC;AAClE;;AAEA,YAAW,wBAAwB;AACnC,YAAW,qBAAqB;AAChC,cAAa,SAAS,uBAAuB,+BAA+B;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA,oCAAmC,sBAAsB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C,eAAe;AAC9D;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,4DAA2D,+BAA+B;AAC1F;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,6BAA6B;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY,EAAE;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,UAAU;AACrB,OAAM,kCAAkC;AACxC,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB;AACA,cAAa,EAAE;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,QAAQ;AACnB;AACA,cAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA,iFAAgF;AAChF;AACA;AACA;AACA,YAAW,iCAAiC;AAC5C;AACA;AACA,cAAa,eAAe;AAC5B;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,6BAA6B;AACrC,cAAa,+BAA+B;AAC5C,KAAI,qBAAqB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,+BAA+B;AACnE;AACA;AACA;AACA;AACA;AACA,qBAAoB,6BAA6B;AACjD;AACA;AACA,OAAM,gDAAgD;AACtD,SAAQ;AACR,OAAM,2CAA2C;AACjD;AACA,OAAM,qCAAqC;AAC3C;AACA,OAAM,wCAAwC;AAC9C;AACA;AACA,OAAM,2CAA2C;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+CAA8C,+BAA+B;AAC7E;AACA;AACA;AACA;AACA,sBAAqB,mBAAmB;AACxC,KAAI,mCAAmC;AACvC;AACA;AACA;AACA,4DAA2D,mCAAmC;AAC9F,YAAW;AACX,wCAAuC,mBAAmB;AAC1D;AACA;AACA,YAAW,OAAO;AAClB;AACA,YAAW,oBAAoB;AAC/B;AACA;AACA,SAAQ,+CAA+C;AACvD;AACA,SAAQ,yDAAyD;AACjE;AACA,cAAa,OAAO;;AAEpB;AACA;AACA;AACA,KAAI,iDAAiD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAwD,aAAa;AACrE,QAAO;AACP,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,oDAAoD;AACvE;AACA;AACA,YAAW,OAAO;AAClB,YAAW,WAAW;AACtB,6DAA4D,aAAa;AACzE,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,oDAAoD;AACvE;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA,KAAI,oDAAoD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,2CAA0C,+BAA+B;AACzE;AACA;AACA;AACA;AACA;AACA,wCAAuC,4BAA4B;AACnE;AACA,KAAI,wCAAwC;AAC5C;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC,iCAAiC;AACpE;AACA;AACA;AACA,OAAM;AACN;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,+BAA+B,UAAU,gCAAgC;AACtF,wDAAuD,4BAA4B;AACnF,iCAAgC,wCAAwC;AACxE;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,+CAA8C,+BAA+B;AAC7E;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,WAAW;AACtB;AACA,YAAW,4CAA4C;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,mBAAmB;AAC5C,cAAa,gCAAgC;AAC7C;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;;AAGA;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,+DAA8D,EAAE;AAChE,YAAW;AACX,yBAAwB;AACxB;AACA;AACA;AACA;AACA,YAAW;;;AAGX,qDAAoD,qCAAqC,EAAE;;AAE3F;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAgD,EAAE;AAClD;AACA;AACA;;AAEA,sCAAqC,wBAAwB,kBAAkB,EAAE;;AAEjF;AACA;AACA;AACA,MAAK;AACL;;AAEA,8BAA6B,oCAAoC;;AAEjE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sDAAqD,wBAAwB;AAC7E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mFAAkF,QAAQ;AAC1F;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAAyE,EAAE,WAAW,EAAE;AACxF;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,sEAAqE,EAAE;AACvE;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,0CAAyC,YAAY;AACrD;AACA;AACA;AACA,qFAAoF,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sCAAqC;AACrC;;AAEA;AACA,oFAAmF;AACnF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAkB,uCAAuC;AACzD,OAAM,yCAAyC;AAC/C;AACA;AACA;AACA,OAAM,uCAAuC;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,qDAAoD,yBAAyB;AAC7E;AACA;AACA,UAAS;AACT;;AAEA;AACA,IAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA,2DAA0D,EAAE;AAC5D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAgF;AAChF,8BAA6B,iBAAiB;AAC9C,aAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,WAAW;AAC5B,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,WAAW;AAC5B,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,OAAO;AACxB,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,OAAO;AACxB,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,OAAO;AACxB,kBAAiB,OAAO;AACxB,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;;AAEP;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA,uBAAsB,kBAAkB;AACxC;AACA;AACA;AACA,IAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,0CAA0C;AACnE;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,WAAW;AACtB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,mDAAkD,2BAA2B;;AAE7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA,uCAAsC,UAAU,EAAE;;AAElD;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA,gBAAe,WAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAa,OAAO;AACpB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAwC,UAAU,EAAE;AACpD;AACA,MAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,qCAAqC;AAC3C;AACA,cAAa,OAAO;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,qCAAqC;AAC3C;AACA,cAAa,iBAAiB;AAC9B,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,gDAA+C;AAC/C,mCAAkC;AAClC,QAAO;AACP;AACA;AACA,mCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,gDAA+C;AAC/C;;AAEA,oBAAmB,wBAAwB;AAC3C;AACA;AACA,2BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,cAAa,WAAW;AACxB,cAAa,QAAQ;AACrB,gBAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA4B,gCAAgC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,uBAAuB;AACzD;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB;AACA,UAAS,QAAQ;AACjB;AACA,cAAa,OAAO;AACpB;AACA,QAAO,OAAO;AACd,SAAQ,GAAG,QAAQ,OAAO,OAAO,EAAE;AACnC;AACA,SAAQ,GAAG,QAAQ,OAAO;AAC1B,QAAO,KAAK,WAAW,OAAO;AAC9B,QAAO,KAAK;AACZ,QAAO,KAAK;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,yDAAwD,EAAE;AAC1D;;AAEA;AACA,4BAA2B,YAAY,YAAY;AACnD,oBAAmB;AACnB;AACA,uBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,kBAAkB,UAAU,iCAAiC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,gCAAgC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B,oBAAmB,EAAE;AACrB;AACA,sBAAqB,EAAE;AACvB;AACA;AACA;AACA,6DAA4D,SAAS;;AAErE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C,gCAAgC;AAC/E;AACA,oBAAmB,OAAO;AAC1B,sBAAqB,EAAE;AACvB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,UAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,gCAAgC;AACtE;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,gCAAgC;AACzD,kCAAiC,kCAAkC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,yDAAwD,gCAAgC;AACxF;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,UAAU,WAAW;AAC/C;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,kDAAiD;AACjD,kDAAiD;AACjD;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAqD,mCAAmC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,qCAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,kCAAkC;AAC/D;AACA;AACA,KAAI,+CAA+C;AACnD;AACA;AACA;AACA;AACA,aAAY,sCAAsC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAuE,MAAM;AAC7E;AACA,iFAAgF,MAAM;AACtF;AACA;AACA;AACA,yFAAwF,MAAM;AAC9F;AACA;AACA;AACA;AACA,0EAAyE,MAAM;AAC/E,4EAA2E;AAC3E;AACA;AACA,gDAA+C;AAC/C,WAAU;AACV;AACA;AACA,0EAAyE,MAAM;AAC/E,4EAA2E;AAC3E;AACA;AACA,6CAA4C;AAC5C;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA2D;AAC3D;AACA;AACA;AACA,8DAA6D;AAC7D,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,kEAAiE;AACjE,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,MAAM;AAC3C,kBAAiB,sBAAsB;AACvC,yCAAwC,MAAM;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,uBAAuB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,oBAAoB;AAClC;AACA;AACA;AACA;AACA,4CAA2C,WAAW;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAgD,YAAY;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8FAA6F;AAC7F,iEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,qBAAoB;AACpB;AACA;AACA;AACA,yBAAwB;AACxB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C,oCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,sDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAuE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,gCAAgC;AAClD,mCAAkC,yCAAyC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,kDAAkD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C,KAAK;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,gCAA+B,MAAM;AACrC,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B,MAAM;AAClC;AACA,OAAM;AACN;AACA;;AAEA;AACA;AACA,YAAW,kBAAkB;AAC7B,YAAW,wCAAwC;AACnD,YAAW,OAAO;AAClB;AACA,cAAa,gCAAgC;AAC7C;AACA;AACA,oBAAmB,gCAAgC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,2CAA2C;AAC/C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA,uDAAsD,MAAM;;AAE5D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,cAAc;AAC3B;AACA;AACA,cAAa,eAAe;AAC5B,UAAS,sBAAsB;AAC/B,gBAAe,oBAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,cAAa;AACb;AACA,YAAW;AACX;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,gBAAe,2BAA2B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,gBAAe,2BAA2B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAAyD;AACzD;AACA,kBAAiB,OAAO;AACxB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,kBAAiB,eAAe;AAChC,kBAAiB,SAAS;AAC1B;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT,QAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,kBAAiB,4BAA4B;AAC7C;AACA,0BAAyB,4CAA4C;AACrE,oBAAmB,WAAW;AAC9B;AACA;AACA;AACA,wEAAuE;AACvE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,kDAAiD,sBAAsB;AACvE;AACA;AACA,0CAAyC,EAAE,4BAA4B;AACvE,UAAS;AACT;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA,8CAA6C,MAAM;AACnD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,wCAAwC;AACvD;AACA,gBAAe,YAAY;AAC3B;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA,sBAAqB,qBAAqB;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAmB,oBAAoB;AACvC;AACA;;AAEA,+CAA8C,QAAQ;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;;AAEA,cAAa;AACb;;AAEA,cAAa;AACb;;AAEA,cAAa;AACb;AACA;;AAEA;;AAEA,YAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA2C,6BAA6B,EAAE;AAC1E;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wDAAuD,QAAQ;AAC/D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD,EAAE,oBAAoB,EAAE;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB;AACA,gBAAe,KAAK;AACpB,gBAAe,OAAO;AACtB,gBAAe,wCAAwC;AACvD;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA,gBAAe,QAAQ;AACvB;AACA,gBAAe,iBAAiB;AAChC,gBAAe,iBAAiB;AAChC,gBAAe,OAAO;AACtB;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA4C,QAAQ;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAgB;AAChB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC;AACzC,YAAW;AACX;AACA,kCAAiC;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,6CAA4C,EAAE,uCAAuC,EAAE;AACvF;AACA;;AAEA;;AAEA,qCAAoC;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,mBAAmB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C,mBAAmB;AAChE;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA8B,EAAE,2BAA2B,EAAE;AAC7D;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;;AAGA;AACA,8FAA6F;;AAE7F;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,4CAA2C,wCAAwC;AACnF;AACA;AACA;AACA;AACA;AACA,qCAAoC,EAAE,wBAAwB,EAAE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uEAAsE,EAAE;AACxE,oCAAmC,KAAK,EAAE,IAAI,EAAE,MAAM;AACtD;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA,2CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,8CAA6C,QAAQ;AACrD,iDAAgD,qBAAqB;AACrE;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,MAAM;AAChD;AACA;AACA;AACA;AACA;AACA,iDAAgD,2CAA2C;AAC3F;AACA;AACA;AACA;AACA,YAAW,WAAW,sBAAsB;AAC5C;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,6DAA4D;AAC5D,2DAA0D;AAC1D;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA,YAAW;AACX;AACA;AACA;;AAEA;;AAEA,2DAA0D,sBAAsB;AAChF;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,6CAA4C,EAAE,uCAAuC,EAAE;AACvF;AACA;;AAEA,kCAAiC;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,qEAAoE,EAAE;AACtE,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,iEAAgE,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE;AAC/F;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,YAAW;AACX;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,8EAA6E,EAAE;AAC/E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8EAA6E;;AAE7E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA,QAAO;AACP;;;AAGA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB;AACA,gBAAe,OAAO;AACtB;AACA,gBAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD,QAAQ;AAC3D;AACA,kCAAiC;AACjC;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA,iCAAgC,kCAAkC,EAAE;AACpE;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAmE,GAAG;AACtE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,2CAA0C;AAC1C;AACA,YAAW,OAAO;AAClB;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAgB,oBAAoB;AACpC;AACA,mBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAQ,yCAAyC;AACjD;AACA;AACA;AACA,KAAI,+CAA+C;AACnD;AACA;AACA,uBAAsB;AACtB;;;AAGA;AACA;AACA;AACA,cAAa,cAAc;AAC3B;AACA,cAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA,oCAAmC,+BAA+B;AAClE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,2CAA0C,EAAE,OAAO,EAAE;AACrD;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,uCAAuC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,sDAAsD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA,kBAAiB;;AAEjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,gBAAgB;AAC3B,cAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,kBAAkB;AAC7B,YAAW,4BAA4B;AACvC,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,+DAA8D,qBAAqB;AACnF;AACA;AACA,+BAA8B,IAAI;AAClC,sBAAqB;AACrB,mCAAkC;AAClC,wCAAuC,kCAAkC;;AAEzE;AACA;AACA;AACA;AACA;AACA,gDAA+C,qBAAqB;AACpE;AACA,yCAAwC,OAAO;AAC/C;AACA;AACA,yCAAwC,OAAO;AAC/C;AACA;AACA,kCAAiC,OAAO;AACxC,gBAAe,0CAA0C;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8EAA6E;AAC7E;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,4CAA4C;AACpD;AACA,iEAAgE;AAChE,kBAAiB;AACjB;AACA,uCAAsC,kCAAkC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA,iEAAgE;AAChE;AACA;AACA;AACA,iBAAgB,+BAA+B;AAC/C;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC,oBAAoB;AACrD,SAAQ,qDAAqD;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV,WAAU;AACV,WAAU;AACV,WAAU;AACV,WAAU;AACV,WAAU;AACV,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C,wBAAwB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,gBAAe,eAAe;AAC9B;AACA;AACA,sCAAqC,IAAI,mBAAmB,IAAI;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD,uCAAuC;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,uCAAuC;AAC/C,SAAQ,0DAA0D;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,yCAAyC;AACjD;AACA;AACA;AACA;AACA;AACA,iEAAgE;AAChE,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA,SAAQ,yCAAyC;AACjD;AACA;AACA;AACA;AACA,0EAAyE;AACzE,qBAAoB;AACpB;AACA;AACA;AACA;AACA,iBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAwF;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGAAgG;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA,4BAA2B,OAAO;AAClC,yBAAwB,OAAO;AAC/B,4BAA2B,uBAAuB;AAClD;AACA;AACA,0BAAyB,cAAc;AACvC,6BAA4B,OAAO;AACnC;AACA;AACA,oCAAmC,OAAO;AAC1C,oCAAmC,OAAO;AAC1C;AACA,eAAc,oEAAoE;AAClF;AACA;AACA;AACA,eAAc,oEAAoE;AAClF;AACA;AACA,2BAA0B,cAAc;AACxC;AACA,cAAa,qCAAqC;AAClD;AACA,6BAA4B,eAAe,iCAAiC;AAC5E;AACA,qCAAoC,QAAQ;AAC5C;AACA;AACA,kCAAiC,OAAO;AACxC;AACA;AACA,kBAAiB,YAAY,YAAY,oBAAoB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,cAAc;AACtC;AACA,2BAA0B,OAAO;AACjC,4BAA2B,uBAAuB;AAClD,2BAA0B,OAAO;AACjC,+BAA8B,OAAO;AACrC;AACA,mBAAkB,eAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,QAAQ;AACrC,gCAA+B,MAAM;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAiB,8DAA8D;AAC/E;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA,6BAA4B;AAC5B;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAkC;AAClC;;AAEA,+BAA8B;;AAE9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;;AAGA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;;;AAGA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,cAAa;AACb,iDAAgD;AAChD;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,uBAAuB;AACpD;AACA;AACA;AACA,KAAI,qBAAqB,KAAK,qCAAqC;AACnE;AACA,wDAAuD;AACvD,iBAAgB;AAChB;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAiE,SAAS;AAC1E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;;AAGH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,wBAAuB;AACvB,sBAAqB;;AAErB;AACA;AACA;AACA;AACA,sFAAqF;AACrF;AACA,cAAa,QAAQ;AACrB,gBAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wFAAuF;AACvF;AACA,cAAa,QAAQ;AACrB,gBAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,2BAA2B;AACxC,SAAQ,mDAAmD;AAC3D;AACA;AACA;AACA;AACA,iCAAgC;AAChC,0CAAyC,kBAAkB;AAC3D,sBAAqB,eAAe;AACpC;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB;AACA;AACA,gBAAe,QAAQ;AACvB,2BAA0B;AAC1B,2BAA0B,qCAAqC,mBAAmB;AAClF;AACA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,EAAE;AAC7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA6C,MAAM;AACnD;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,oCAAmC;AACnC;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA2E,EAAE,GAAG,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,4FAA2F;AAC3F;AACA,aAAY,6EAA6E;AACzF;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,0FAAyF;AACzF;AACA,aAAY,yEAAyE;AACrF;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,uDAAuD;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,WAAW;AAC3B,iBAAgB,OAAO;AACvB,iBAAgB,QAAQ;AACxB;AACA,iBAAgB,SAAS;AACzB,wCAAuC,wCAAwC;AAC/E,mBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C,SAAS;AACrD,6CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,QAAO;;AAEP;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,QAAQ;AACxB,mBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAqB;AACrB;;;AAGA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,wDAAuD,EAAE,yBAAyB,EAAE;AACpF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0DAAyD;AACzD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wDAAuD,EAAE,yBAAyB,EAAE;AACpF;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,iBAAiB;AAC9B,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,+CAA+C;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,uCAAuC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,YAAW;;AAEX;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,iBAAiB;AAC9B,eAAc,OAAO;AACrB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,gBAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,gBAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAgD,8BAA8B;AAC9E;AACA,OAAM,wEAAwE;AAC9E;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA,EAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,mDAAmD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,gBAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAAyC;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,EAAE;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oFAAmF,EAAE;AACrF;AACA,MAAK;AACL;AACA;AACA,sFAAqF,EAAE;AACvF;AACA,MAAK;AACL;AACA;AACA,qFAAoF,EAAE;AACtF;AACA,MAAK;AACL;AACA;AACA,kFAAiF,EAAE;AACnF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kFAAiF,EAAE;AACnF;AACA,MAAK;AACL;AACA,6FAA4F,EAAE;AAC9F;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAsB,aAAa;AACnC,uBAAsB,aAAa;AACnC,wBAAuB,cAAc;AACrC;AACA;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC;AACvC;AACA,6BAA4B;AAC5B;AACA,UAAS;AACT,qCAAoC,wCAAwC;AAC5E,qCAAoC,wCAAwC;AAC5E,qCAAoC,wCAAwC;AAC5E,qCAAoC,wCAAwC;AAC5E;AACA,wCAAuC,0CAA0C;AACjF,wCAAuC,0CAA0C;AACjF,sCAAqC,yCAAyC;AAC9E,sCAAqC,yCAAyC;AAC9E,qCAAoC,wCAAwC;AAC5E,qCAAoC,wCAAwC;AAC5E,sCAAqC,yCAAyC;AAC9E,sCAAqC,yCAAyC;AAC9E,sCAAqC,yCAAyC;AAC9E,sCAAqC,yCAAyC;AAC9E,qCAAoC,wCAAwC;AAC5E,uCAAsC,YAAY;AAClD,qCAAoC,uDAAuD;AAC3F,mCAAkC;AAClC;AACA;AACA,eAAc;;;AAGd;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uBAAsB;;AAEtB;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO,uBAAuB,KAAK;AACnC;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B,sCAAsC;AAClE;AACA,UAAS;AACT,6BAA4B,sCAAsC;AAClE;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,iDAAgD,EAAE,WAAW,EAAE,iBAAiB,EAAE;AAClF;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,eAAe;AACrC,MAAK;AACL,IAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,EAAE;AACpC;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,eAAe;AACzC,UAAS;AACT;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;AACD;AACA,EAAC;;AAED;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK,wBAAwB;AAC7B;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,iCAAgC,EAAE,IAAI,EAAE,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAE;AAC/F;AACA,IAAG;;AAEH;AACA;AACA,kEAAiE,EAAE;AACnE;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA,kDAAiD,UAAU;AAC3D;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,uBAAuB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,0BAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA,4CAA2C;AAC3C;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,aAAa,EAAE;AAC/C;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,wCAAuC;AACvC;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,sBAAqB,mBAAmB;AACxC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA,sBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA,qCAAoC;AACpC;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA,QAAO;AACP;AACA,oBAAmB;;AAEnB;AACA;AACA,sBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,mBAAmB,EAAE,EAAE;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,yBAAyB,EAAE;AACrE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,yBAAyB,EAAE;AACrE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,yBAAyB,EAAE;AACrE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,yBAAyB,EAAE;AACrE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,yBAAyB,EAAE;AACrE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA,8BAA6B;AAC7B;AACA,UAAS;AACT;AACA;AACA;AACA,IAAG;AACH,uBAAsB;AACtB;AACA,+BAA8B,iBAAiB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C;AAC9C,mCAAkC;AAClC;AACA,oCAAmC;AACnC,yEAAwE;AACxE,yCAAwC;AACxC,2BAA0B;AAC1B,yCAAwC;AACxC,2CAA0C,8CAA8C,EAAE;AAC1F,uBAAsB;AACtB;AACA,mBAAkB;;AAElB;AACA,MAAK;AACL,uBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,kCAAkC;AACvD;AACA;AACA;AACA;AACA,qBAAoB,MAAM;AAC1B,oBAAmB,MAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,0BAA0B;AACvC;AACA,uBAAsB,OAAO;AAC7B;AACA,sBAAqB,QAAQ;AAC7B;AACA;AACA;AACA,yBAAwB,QAAQ;AAChC;AACA,0BAAyB,QAAQ;AACjC;AACA,wBAAuB,0BAA0B;AACjD;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA6E;AAC7E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,gBAAe,aAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,gBAAe,aAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA,OAAM;AACN;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,0BAA0B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,uBAAuB,EAAE;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;;;AAGA;AACA;AACA;AACA,YAAW,mBAAmB;AAC9B,YAAW,eAAe;AAC1B;AACA,cAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qDAAoD,QAAQ;AAC5D;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,QAAO;;;AAGP;AACA;AACA,QAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;AACA,qDAAoD,QAAQ;AAC5D;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,QAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,gBAAe;AACf,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,cAAa,EAAE;AACf,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,iCAAiC;AAC9C,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAAyB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD;AACjD;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB;;;AAGA;AACA;AACA;AACA;AACA;AACA,yCAAwC,gCAAgC;AACxE;AACA;AACA;AACA,KAAI,4CAA4C;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAgD,+BAA+B;AAC/E,SAAQ,+BAA+B;AACvC,SAAQ,sCAAsC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,6BAA6B;AAC5C,2FAA0F,SAAS;AACnG,gBAAe,oBAAoB;AACnC;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,gCAAgC;AAC9D;AACA,+CAA8C,4CAA4C;AAC1F,mEAAkE,8CAA8C;AAChH;AACA,WAAU,8CAA8C;AACxD;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA6D;AAC7D,sBAAqB;AACrB,aAAY,4CAA4C;AACxD;AACA,aAAY,4CAA4C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,qBAAqB;AAClD,mCAAkC,mBAAmB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C,0CAA0C;AACxF;AACA,0CAAyC,0CAA0C;AACnF;AACA;AACA;AACA,gBAAe,gDAAgD;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAY;AACZ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,aAAa,EAAE;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,oBAAoB;AACrC,cAAa,0CAA0C;AACvD;AACA;AACA,uCAAsC;AACtC;AACA,kBAAiB,qBAAqB;AACtC;AACA;AACA,uCAAsC;AACtC;AACA;AACA;AACA,kBAAiB,SAAS,mDAAmD,qBAAqB;AAClG;AACA,oBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,yDAAwD;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB,uBAAuB,mBAAmB,kCAAkC;AAC7F;AACA,cAAa,0CAA0C;AACvD;AACA;AACA,kBAAiB,8CAA8C;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qCAAoC;AACpC;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,eAAe;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,8BAA6B,qBAAqB;AAClD;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,0CAA0C;AACzE,mCAAkC,yCAAyC;AAC3E,wDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA,WAAU,4CAA4C;AACtD,WAAU,+CAA+C;AACzD,oCAAmC,0CAA0C;AAC7E,aAAY,+CAA+C;AAC3D;AACA;AACA;AACA,WAAU,0CAA0C;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAY;AACZ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,aAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,+BAA+B;AACnE;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX,wCAAuC;;AAEvC;AACA;AACA;AACA,mBAAkB,EAAE;AACpB,4DAA2D,EAAE;AAC7D;AACA;;AAEA,UAAS;;AAET;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,QAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,4CAA4C;AACpE;AACA;AACA;AACA;AACA,WAAU,qCAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,8CAA6C,aAAa;AAC1D,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+CAA8C,0BAA0B,EAAE;AAC1E;AACA;AACA,kBAAiB,qBAAqB;AACtC;AACA,iEAAgE,kCAAkC;AAClG;AACA;AACA,kBAAiB,UAAU;AAC3B,oBAAmB,EAAE;AACrB;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,gDAAgD;AAC3E;AACA;AACA;AACA,WAAU,6CAA6C;AACvD;AACA;AACA;AACA;AACA;AACA,kBAAiB,qBAAqB;AACtC;AACA,gEAA+D,kCAAkC;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA,iCAAgC,8BAA8B;AAC9D,QAAO;;AAEP;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,8CAA8C;AACjE,WAAU,oDAAoD;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,kCAAkC;AACnD,cAAa,wCAAwC;AACrD;AACA,cAAa,6CAA6C;AAC1D,kBAAiB,uCAAuC;AACxD,gDAA+C,4CAA4C;AAC3F;AACA;AACA,kBAAiB,qBAAqB;AACtC;AACA,gEAA+D,kCAAkC;AACjG;AACA;AACA,oBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD,sCAAsC;AACvF;AACA;AACA;AACA;AACA;AACA,gCAA+B,MAAM;AACrC;AACA,iCAAgC,MAAM;AACtC,yBAAwB,OAAO;AAC/B,oCAAmC,UAAU;AAC7C;AACA,mCAAkC,SAAS;AAC3C;AACA,qCAAoC,QAAQ;AAC5C;AACA,kBAAiB,OAAO;AACxB,kBAAiB,yBAAyB;AAC1C,oBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,8BAA8B;AACnD;AACA;AACA,WAAU,wCAAwC;AAClD;AACA;AACA;AACA;AACA,0CAAyC,wCAAwC;AACjF,oBAAmB,6CAA6C;AAChE;AACA,kBAAiB,OAAO;AACxB,kBAAiB,KAAK;AACtB,mBAAkB,OAAO,oBAAoB,8BAA8B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,wBAAwB;AACnE;AACA;AACA,gBAAe;AACf;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,kDAAiD,UAAU;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,QAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,8BAA8B;AACnD;AACA;AACA,WAAU,wCAAwC;AAClD;AACA;AACA;AACA,0CAAyC,wCAAwC;AACjF,oBAAmB,6CAA6C;AAChE;AACA,kBAAiB,OAAO;AACxB,kBAAiB,KAAK;AACtB,mBAAkB,OAAO,oBAAoB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA,+CAA8C,UAAU;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;;AAGA;AACA;AACA,4CAA2C,EAAE;AAC7C;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,gBAAe,2BAA2B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,gBAAe,2BAA2B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;;;AAGA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,8DAA6D,EAAE;AAC/D;AACA;AACA;AACA,2CAA0C;AAC1C;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA8E;AAC9E,8BAA6B;AAC7B;AACA,oDAAmD,mCAAmC;AACtF;AACA;AACA;AACA;AACA;AACA,WAAU,mDAAmD;AAC7D;AACA;AACA;AACA,6BAA4B,mDAAmD;AAC/E;AACA,uBAAsB;AACtB,8CAA6C,MAAM;AACnD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4EAA2E;AAC3E,iBAAgB;AAChB,wEAAuE;AACvE,2FAA0F;AAC1F,KAAI;AACJ;AACA,mFAAkF;AAClF,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA,kBAAiB,+CAA+C;AAChE;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA,kBAAiB,+CAA+C;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAoD,OAAO;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY,mBAAmB;AAC/B;AACA,gBAAe,OAAO;AACtB;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,uEAAsE,GAAG,SAAS,EAAE;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+FAA8F,EAAE;AAChG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sEAAqE;AACrE,+BAA8B,6CAA6C;AAC3E,uDAAsD;AACtD;AACA,0EAAyE;AACzE,uDAAsD;AACtD;AACA,gBAAe,EAAE,8BAA8B;AAC/C;AACA,kBAAiB,EAAE,8CAA8C;AACjE,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+BAA8B,qDAAqD;AACnF;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE,qCAAqC;AACtD,mCAAkC;AAClC,kBAAiB,EAAE,2CAA2C;AAC9D,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,6FAA4F,EAAE;AAC9F;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA,aAAY;AACZ;AACA;AACA,IAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;AACA,kEAAiE,mBAAmB;AACpF;AACA;AACA;AACA,qBAAoB,+CAA+C;AACnE;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAoD;AACpD,oCAAmC,2CAA2C;AAC9E;AACA;AACA;AACA;AACA;AACA,4EAA2E;AAC3E,oCAAmC,qDAAqD;AACxF,+BAA8B;AAC9B,KAAI,yCAAyC;AAC7C;AACA,oBAAmB,yCAAyC,OAAO;AACnE,6DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,8BAA6B,0CAA0C;AACvE,kCAAiC,iCAAiC;AAClE;AACA;AACA,wCAAuC;AACvC,+BAA8B;AAC9B,sCAAqC;AACrC,SAAQ,KAAK,yCAAyC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY,yCAAyC;AACrD;AACA,kBAAiB,mCAAmC;AACpD;AACA;AACA,uEAAsE;AACtE,4DAA2D,MAAM;AACjE,4DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAsF,yCAAyC,sFAAsF,2BAA2B;AAChP;AACA;AACA;AACA;AACA;AACA,2BAA0B,wEAAwE,EAAE,6DAA6D;AACjK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,mDAAmD;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,sBAAsB;AAC1D;AACA,SAAQ;AACR;AACA,uDAAsD;AACtD,gCAA+B;AAC/B,OAAM;AACN;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,OAAM;AACN,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,yDAAwD;AACxD,kCAAiC;AACjC,SAAQ;AACR,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB,QAAQ;AACxB,gDAA+C,mCAAmC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6DAA4D,cAAc;AAC1E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAAyB,kCAAkC,iCAAiC;AAC5F,yBAAwB;AACxB,2CAA0C;AAC1C;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,0BAA0B;AAC3C;AACA,2BAA0B,OAAO;AACjC;AACA,0BAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAqB,qDAAqD;AAC1E;AACA;AACA;AACA,8CAA6C,mBAAmB;AAChE;AACA;AACA,gBAAe,OAAO;AACtB;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE,kCAAkC;AACrD,uCAAsC;AACtC;AACA,6BAA4B,mCAAmC;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE,kCAAkC;AACrD,sCAAqC;AACrC;AACA,6BAA4B,mCAAmC;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE,kCAAkC;AACrD,8CAA6C;AAC7C;AACA,sBAAqB,mCAAmC;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE,kCAAkC;AACrD,qCAAoC;AACpC;AACA,6BAA4B,mCAAmC;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAqB,2DAA2D;AAChF,+BAA8B,qCAAqC;AACnE;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE,qCAAqC;AACtD;AACA,kBAAiB,EAAE;AACnB,sBAAqB,qCAAqC;AAC1D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,OAAO;AACtB,kBAAiB,0BAA0B;AAC3C;AACA,2BAA0B,OAAO;AACjC;AACA,0BAAyB,QAAQ;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,OAAO;AACtB,kBAAiB,0BAA0B;AAC3C;AACA,2BAA0B,OAAO;AACjC;AACA,0BAAyB,QAAQ;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,OAAO;AACtB,kBAAiB,0BAA0B;AAC3C;AACA,2BAA0B,OAAO;AACjC;AACA,0BAAyB,QAAQ;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,OAAO;AACtB,kBAAiB,0BAA0B;AAC3C;AACA,2BAA0B,OAAO;AACjC;AACA,0BAAyB,QAAQ;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,OAAO;AACtB,kBAAiB,0BAA0B;AAC3C;AACA,2BAA0B,OAAO;AACjC;AACA,0BAAyB,QAAQ;AACjC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA,uEAAsE;AACtE,uDAAsD;AACtD,sCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,6CAA6C;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,yCAAyC;AACvE;AACA;AACA,iBAAgB,WAAW;AAC3B,iBAAgB,QAAQ;AACxB,iBAAgB,SAAS;AACzB,wCAAuC,wCAAwC;AAC/E,mBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,SAAS;AACzB,mBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,cAAc;AACzB;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV,SAAQ;AACR;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,KAAI,2BAA2B;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW,OAAO;AAClB,aAAY,SAAS;AACrB;AACA;AACA;AACA;AACA,eAAc,gBAAgB;AAC9B,eAAc,gBAAgB;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,cAAc;AAC3B;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC,oBAAoB;AACrD;AACA,+CAA8C,SAAS;AACvD;AACA;AACA,sBAAqB,WAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,0CAA0C;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D,yCAAyC;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC,8BAA8B;AAC/D,kCAAiC,kCAAkC;AACnE,kCAAiC,8BAA8B;AAC/D,kCAAiC,8BAA8B;AAC/D,kCAAiC,+BAA+B;AAChE,kCAAiC,kCAAkC;;AAEnE;AACA;AACA;AACA;AACA,kBAAiB,aAAa;AAC9B,kBAAiB,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,gBAAgB;AACjC,kBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ,WAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,gBAAgB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA,qEAAoE,mBAAmB;AACvF,qDAAoD,0BAA0B;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,cAAc;AACzB,YAAW,iBAAiB;AAC5B;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA,0DAAyD,cAAc;AACvE,gCAA+B,gBAAgB;AAC/C,mCAAkC,iBAAiB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,qCAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,qBAAqB;AAChC;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,gCAA+B,+BAA+B;AAC9D,oBAAmB,+BAA+B;AAClD,gCAA+B,8CAA8C;AAC7E,mBAAkB,8CAA8C;AAChE,gCAA+B,2CAA2C;AAC1E,mBAAkB,6CAA6C;AAC/D,gCAA+B,8CAA8C;AAC7E,mBAAkB,gDAAgD;AAClE;AACA;AACA;AACA;AACA,uCAAsC,IAAI,IAAI,EAAE,IAAI,EAAE;AACtD;AACA,uCAAsC,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE;AAClE;AACA,yCAAwC,IAAI,IAAI,EAAE;AAClD;AACA,0CAAyC,IAAI,IAAI,EAAE;AACnD,SAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA,6BAA4B,EAAE;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAA+E,OAAO;AACtF;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,eAAc,EAAE,eAAe,UAAU;AACzC;AACA;AACA;AACA,sCAAqC,eAAe,0BAA0B,uBAAuB;AACrG,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,YAAW,cAAc;AACzB;AACA;AACA;AACA,cAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA,kBAAiB,SAAS;AAC1B,+BAA8B,8BAA8B;AAC5D,kBAAiB,SAAS;AAC1B,+BAA8B,iCAAiC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA,WAAU,KAAK;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,iDAAiD;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,sCAAsC;AACzD,oBAAmB,sCAAsC;AACzD,oBAAmB,sCAAsC;AACzD,oBAAmB,sCAAsC;AACzD,oBAAmB,uCAAuC;AAC1D;AACA,aAAY;AACZ;AACA;AACA,qCAAoC,YAAY,aAAa,SAAS;AACtE;AACA;AACA;AACA;AACA,0DAAyD;AACzD,4DAA2D;AAC3D,2DAA0D;AAC1D,yDAAwD;AACxD;AACA;AACA,oBAAmB,aAAa;AAChC,oBAAmB,cAAc;AACjC,oBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD;AACnD;AACA,uDAAsD;AACtD,uDAAsD;AACtD;AACA;AACA,mBAAkB,aAAa;AAC/B,mBAAkB,cAAc;AAChC,mBAAkB,YAAY;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,iDAAiD;AAC9D,cAAa,iDAAiD;AAC9D,cAAa,iDAAiD;AAC9D,cAAa,iDAAiD;AAC9D,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,uBAAuB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;;AAEA;AACA,uBAAsB,0BAA0B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,MAAM;AACtC;AACA,2CAA0C,MAAM;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C,MAAM;AACnD;AACA;AACA;AACA;AACA,iDAAgD,MAAM;AACtD;AACA;AACA;AACA,YAAW,SAAS,0CAA0C;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC,OAAO;AAC1C;AACA;AACA,mCAAkC,OAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,MAAM;AACtC;AACA,YAAW,MAAM;AACjB,OAAM,MAAM;AACZ;AACA;AACA;AACA,+CAA8C,MAAM;AACpD;AACA;AACA;AACA;AACA,kDAAiD,MAAM;AACvD;AACA;AACA;AACA,YAAW,SAAS,yCAAyC;AAC7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,MAAM;AACtC;AACA,YAAW,MAAM;AACjB,OAAM,MAAM;AACZ;AACA;AACA;AACA,kDAAiD,MAAM;AACvD;AACA;AACA;AACA;AACA,qDAAoD,MAAM;AAC1D;AACA;AACA;AACA,YAAW,SAAS,4CAA4C;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,oBAAoB;AAC9C,yBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW,WAAW,oBAAoB,kCAAkC;AAC5E;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW,WAAW,mBAAmB,kCAAkC;AAC3E;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW,WAAW,oBAAoB,kCAAkC;AAC5E;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW,WAAW,oBAAoB,kCAAkC;AAC5E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA,YAAW,WAAW,gBAAgB,kCAAkC;AACxE;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,6BAA6B;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,+BAA+B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,yCAAyC;AAC7C;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,0BAAyB,mCAAmC;AAC5D;AACA;AACA,KAAI,uCAAuC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,qCAAqC;AAC3C,OAAM,mCAAmC;AACzC;AACA;AACA,qEAAoE;AACpE,QAAO,mCAAmC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,UAAU;AACpC,sCAAqC,qBAAqB;AAC1D,sCAAqC,qBAAqB;AAC1D,gCAA+B,eAAe;AAC9C,yCAAwC,0BAA0B;AAClE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,gBAAe;AACf;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD;AACjD,gBAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,+CAA8C,IAAI;AAClD,6CAA4C,EAAE;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAwB,MAAM;AAC9B,wCAAuC,qBAAqB;AAC5D,wCAAuC,qBAAqB;AAC5D,kCAAiC,eAAe;AAChD,2CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,OAAO;AAChC,wCAAuC,qBAAqB;AAC5D,wCAAuC,qBAAqB;AAC5D,kCAAiC,eAAe;AAChD,2CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B,wCAAuC,qBAAqB;AAC5D,wCAAuC,qBAAqB;AAC5D,kCAAiC,eAAe;AAChD,2CAA0C,0BAA0B;AACpE,sCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,MAAM;AAChC,0CAAyC,qBAAqB;AAC9D,0CAAyC,qBAAqB;AAC9D,oCAAmC,eAAe;AAClD,6CAA4C,0BAA0B;AACtE,0CAAyC,uBAAuB;AAChE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,0BAAyB,cAAc;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,2BAA0B,QAAQ;AAClC,2BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA,wBAAuB,EAAE,yBAAyB,EAAE,YAAY,EAAE;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,uCAAuC;AAC3C;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB;AACA;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,QAAQ;AACnB;AACA;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,SAAS;AACpB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB,YAAW,SAAS;AACpB,YAAW,QAAQ;AACnB;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,QAAQ;AACnB;AACA;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,MAAM;AAC5B,yCAAwC,wBAAwB;AAChE,yCAAwC,wBAAwB;AAChE,yCAAwC,wBAAwB;AAChE,yCAAwC,wBAAwB;AAChE,gCAA+B,eAAe;AAC9C,yCAAwC,0BAA0B;AAClE,0CAAyC,2BAA2B;AACpE,0CAAyC,2BAA2B;AACpE;AACA;AACA;AACA,0CAAyC,MAAM;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA6C,gCAAgC;AAC7E;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA,8CAA6C,iBAAiB;AAC9D;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA,8CAA6C,yBAAyB;AACtE;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA,8CAA6C,eAAe;AAC5D;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA,8CAA6C,eAAe;AAC5D;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,EAAE;AAChB,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA,SAAQ,4DAA4D;AACpE;;AAEA;AACA,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,2BAA2B,+BAA+B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC;;AAElC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf,sBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wDAAuD,EAAE,+BAA+B,EAAE;AAC1F;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAgC;;;AAGhC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA,8CAA6C,qCAAqC;AAClF,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,+BAA+B;AACjD,OAAM,iCAAiC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,kDAAkD;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C,6BAA6B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,UAAS;AACT,UAAS;AACT,UAAS;AACT,UAAS;AACT,UAAS;AACT,UAAS;AACT,QAAO;AACP,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,WAAW,kCAAkC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA,wBAAuB,WAAW;AAClC,0BAAyB,SAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA,4BAA2B;;AAE3B;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,2CAA0C,0BAA0B;AACpE,2CAA0C,0BAA0B;AACpE,gCAA+B,eAAe;AAC9C,yCAAwC,0BAA0B;AAClE;AACA;AACA;AACA;AACA,2CAA0C,OAAO;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA,iEAAgE,SAAS;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B,cAAa;AACb;AACA;AACA;AACA,qDAAoD,MAAM;AAC1D,iBAAgB;AAChB;AACA;AACA;AACA,4BAA2B,MAAM;AACjC;AACA;AACA,4BAA2B,aAAa;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,cAAc;AACpB;AACA,mDAAkD,cAAc;AAChE;AACA;AACA;AACA;AACA,KAAI,mCAAmC;AACvC;AACA;AACA;AACA,YAAW,WAAW,SAAS,kCAAkC;AACjE;AACA;AACA,8CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAiE,KAAK;AACtE;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,gCAAgC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA,kCAAiC,YAAY,GAAG,MAAM;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA,gGAA+F;AAC/F,mCAAkC;AAClC,6CAA4C,iBAAiB;AAC7D,oCAAmC,iBAAiB;AACpD;AACA;AACA;AACA,qCAAoC,2CAA2C;AAC/E,WAAU,uDAAuD;AACjE;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,aAAa,kCAAkC;AACrE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;;AAEA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAoB,oBAAoB;AACxC;AACA,uBAAsB,oBAAoB;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,UAAU,kCAAkC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,6CAA6C;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,SAAQ;AACR;AACA;;;AAGA;AACA;AACA;AACA;AACA,yCAAwC,oDAAoD;AAC5F,KAAI,0DAA0D;AAC9D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,mCAAmC;AACvC;AACA;AACA;AACA,KAAI,qCAAqC;AACzC;AACA;AACA,YAAW,WAAW,aAAa,kCAAkC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,mCAAmC;AACvC;AACA;AACA;AACA,KAAI,qCAAqC;AACzC;AACA;AACA,YAAW,WAAW,cAAc,kCAAkC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM,OAAO,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE,+BAA+B;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC,WAAW;AAClD,yDAAwD,eAAe;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD;AAClD;AACA;AACA,6EAA4E;AAC5E;AACA;AACA;AACA,aAAY,4BAA4B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW;AACtB,SAAQ,kCAAkC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,qCAAqC;AAChD,YAAW,+CAA+C;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B,6CAA6C;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,mCAAmC;AAC7C,WAAU,6CAA6C;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,2CAA2C;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,mCAAmC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,UAAU,kCAAkC;AAClE,aAAY,qEAAqE;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,aAAa;AACxC;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,aAAa,kCAAkC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,cAAc,kCAAkC;AACtE,iBAAgB,qEAAqE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,YAAY,kCAAkC;AACpE,eAAc,qEAAqE;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,cAAc,kCAAkC;AACtE,iBAAgB,qEAAqE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,eAAe,kCAAkC;AACvE,kBAAiB,qEAAqE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,eAAe,kCAAkC;AACvE,kBAAiB,qEAAqE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,cAAc,kCAAkC;AACtE,iBAAgB,qEAAqE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,YAAY,kCAAkC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,UAAU,kCAAkC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,+EAA8E;;AAE9E;AACA;AACA,4BAA2B,iBAAiB;AAC5C,2BAA0B,gBAAgB;AAC1C;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,aAAa,kCAAkC;AACrE,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,WAAW,kCAAkC;AACnE,MAAK,qEAAqE;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,qBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,UAAU,kCAAkC;AAClE,aAAY,qEAAqE;AACjF;AACA;AACA,SAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,SAAS,kCAAkC;AACjE,YAAW,qEAAqE;AAChF;AACA;AACA,SAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,SAAS,kCAAkC;AACjE,YAAW,qEAAqE;AAChF;AACA;AACA;AACA;AACA,0DAAyD;AACzD,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,QAAQ,kCAAkC;AAChE,WAAU,qEAAqE;AAC/E;AACA;AACA;AACA;AACA,mDAAkD;AAClD,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,UAAU,kCAAkC;AAClE,aAAY,qEAAqE;AACjF;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,WAAW;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,cAAc,kCAAkC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD;AAClD,+BAA8B;AAC9B,oBAAmB,kEAAkE;AACrF,mFAAkF;AAClF,uCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,QAAQ,6CAA6C;AAChE,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,cAAc;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,+CAA+C;AAC9D,gBAAe,+CAA+C;AAC9D;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA4B,sBAAsB;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;;AAEf;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,uCAAuC;AAC3C,gBAAe,mCAAmC;AAClD;AACA;AACA;AACA,6DAA4D,2BAA2B;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,SAAS,kCAAkC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,8CAA6C,YAAY,MAAM,YAAY,OAAO,QAAQ;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAoE;AACpE,qEAAoE;AACpE,qEAAoE;AACpE,qEAAoE;AACpE,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAsF;AACtF;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,yCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,2CAA0C,iCAAiC;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,8BAA8B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAoE;AACpE,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA,qCAAoC,sBAAsB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C;AAC1C,8EAA6E;AAC7E,6BAA4B,aAAa,+BAA+B;AACxE,gCAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB,iCAAgC,SAAS;AACzC,iCAAgC,SAAS,OAAO,SAAS;AACzD,mCAAkC,SAAS,IAAI,SAAS;AACxD,qCAAoC,SAAS,IAAI,SAAS,OAAO,4BAA4B;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,kBAAkB;AAC7B,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA,4CAA2C,sBAAsB;AACjE;;AAEA;AACA;AACA;AACA,gCAA+B;AAC/B,wCAAuC,SAAS;AAChD,wCAAuC,SAAS,OAAO,SAAS;AAChE,0CAAyC,SAAS,IAAI,SAAS;AAC/D,4CAA2C,SAAS,IAAI,SAAS,OAAO,4BAA4B;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,sFAAqF;AACrF;AACA,6CAA4C;AAC5C,2BAA0B;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,aAAa;AAC/B,mBAAkB,cAAc;AAChC,mBAAkB,cAAc;AAChC,mBAAkB,cAAc;AAChC,mBAAkB,cAAc;AAChC,mBAAkB,cAAc;AAChC;AACA,4DAA2D,mCAAmC;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA,eAAc;AACd;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,0BAAyB,gBAAgB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,kBAAkB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,uBAAuB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,kCAAkC;AAC3C,UAAS,qCAAqC;AAC9C,UAAS,sCAAsC;AAC/C,UAAS,kCAAkC;AAC3C,UAAS,mCAAmC;AAC5C,UAAS,mCAAmC;AAC5C,UAAS,uCAAuC;AAChD,UAAS,oCAAoC;AAC7C,UAAS,qCAAqC;AAC9C,UAAS;AACT;AACA,kBAAiB,gBAAgB;AACjC;AACA;AACA;AACA,gBAAe,YAAY,IAAI,aAAa,UAAU,YAAY;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B;;AAE1B;AACA,2HAA0H,EAAE;AAC5H;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oJAAmJ,EAAE;AACrJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD;AACvD;AACA;;;AAGA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,yBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA,eAAc;AACd;AACA;AACA,2HAA0H,EAAE,kBAAkB,EAAE,oBAAoB,EAAE;AACtK;AACA,aAAY;AACZ;AACA,uCAAsC;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA2D,4BAA4B,EAAE;AACzF;AACA;AACA;;AAEA;AACA,0DAAyD,gBAAgB;AACzE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;;AAEf;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE,+BAA+B;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B;AAC5B,gDAA+C;AAC/C,gCAA+B;AAC/B,sDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,gBAAgB,kCAAkC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE,+BAA+B;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B;AAC5B,gDAA+C;AAC/C,gCAA+B;AAC/B,sDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,gBAAgB,kCAAkC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW;AACtB;AACA,KAAI,kCAAkC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAkE,YAAY;AAC9E,wEAAuE,0BAA0B;AACjG,gEAA+D;AAC/D;AACA;AACA,wBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C,yBAAyB;AACxE;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,WAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kDAAiD,QAAQ;AACzD;AACA;AACA;;AAEA,gDAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C,4CAA4C;AAC3F;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,4CAA4C;AACtE;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,YAAY;AACnC,+DAA8D;AAC9D,mEAAkE,OAAO;AACzE;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA,yBAAwB,OAAO,IAAI,MAAM;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,EAAE;AACpB;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD,yCAAyC;AAC3F,6BAA4B,yCAAyC;AACrE,KAAI,wCAAwC,MAAM,iCAAiC;AACnF;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO,qCAAqC;AAC5C;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB;AACA;AACA,YAAW,0BAA0B;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,2BAA2B;AAC1C,gBAAe,4BAA4B;AAC3C,gBAAe,yBAAyB;AACxC,gBAAe,0BAA0B;AACzC,gBAAe;AACf;AACA,+CAA8C;AAC9C,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,+CAA8C,qCAAqC;AACnF;AACA,iCAAgC,EAAE,uBAAuB;AACzD,8CAA6C;AAC7C,2BAA0B,gCAAgC;AAC1D;AACA;AACA;AACA;AACA;AACA,wCAAuC,uBAAuB;AAC9D;AACA;AACA,wCAAuC,uBAAuB;AAC9D;AACA;AACA,wCAAuC,uBAAuB;AAC9D,WAAU;AACV;AACA;AACA;;AAEA,mCAAkC,iBAAiB;AACnD;AACA;AACA;AACA;AACA,wBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;;;AAGA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0EAAyE,QAAQ;AACjF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA,sEAAqE;AACrE,YAAW;AACX;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW;AACX,UAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAwB,EAAE,aAAa,EAAE;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC,iCAAiC;;AAEpE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4DAA2D,gBAAgB;AAC3E;AACA;AACA;AACA;AACA,2CAA0C,gCAAgC;AAC1E;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,gBAAe;AACf;AACA,gBAAe;AACf;AACA,uCAAsC,gCAAgC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;;AAEA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA,gDAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,8CAA6C,yBAAyB,EAAE;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,gCAAgC;AACtE;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,+BAA8B,MAAM;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;;;AAGA;AACA,0BAAyB,sCAAsC;;AAE/D;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,qDAAoD;AACpD;AACA,8CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,yCAAwC,uCAAuC;AAC/E,cAAa;AACb;AACA,yCAAwC,gCAAgC;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,mDAAkD;;AAElD;AACA;AACA;AACA;AACA;;AAEA,gCAA+B;AAC/B,wDAAuD,gBAAgB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oDAAmD;;AAEnD;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAG;;AAEH,EAAC;;AAED,2HAA0H,oFAAoF,yBAAyB,UAAU,eAAe,8BAA8B,4BAA4B,qCAAqC,oCAAoC,yBAAyB;;AAE5Z;AACA,gC;;;;;;AC/orBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;;;AAIA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAQ,YAAY;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF,qBAAoB;;AAEpB;AACA;AACA,GAAE;;AAEF;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4CAA2C;AAC3C;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF,iCAAgC;AAChC;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,YAAY;AACvB;;AAEA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA,YAAW,YAAY;AACvB;;AAEA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA,UAAS,SAAS;AAClB;AACA;;AAEA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS,YAAY;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU,YAAY;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAE;;AAEF;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,SAAS;AAClB;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA,iBAAgB,IAAI;;AAEpB;AACA;;AAEA;AACA;;AAEA;AACA,yCAAwC,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD,UAAS;;AAET;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;;AAEA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAa,yBAAyB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;AACA,GAAE;AACF;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF;;AAEA;AACA;AACA,YAAW,gBAAgB;AAC3B,cAAa,uBAAuB;AACpC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW,eAAe;AAC1B,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,eAAe;AAC1B,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,YAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,iCAAgC,MAAM;AACtC;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,gBAAe;;AAEf,UAAS;;AAET;AACA,SAAQ,iCAAiC;AACzC,SAAQ,oBAAoB;AAC5B,SAAQ,sCAAsC;AAC9C,SAAQ;AACR,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;;AAEA;AACA;AACA;AACA,iBAAgB,aAAa,EAAE;AAC/B;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,iEAAgE;AAChE;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO,yEAAyE;AAChF;;AAEA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,oDAAmD;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA,kEAAiE,UAAU;AAC3E,uCAAsC,2BAA2B;AACjE;AACA,iCAAgC,MAAM;AACtC;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA,WAAU,YAAY;AACtB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,WAAU,YAAY;AACtB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,WAAU,UAAU;AACpB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,WAAU,cAAc;AACxB;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;AAEA;AACA,aAAY,uEAAuE;AACnF;AACA;AACA,aAAY,4BAA4B;AACxC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA,4DAA2D;AAC3D;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA,oCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,SAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAQ,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,GAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,SAAQ,SAAS;AACjB;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC,iDAAiD;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAiD;AACjD,WAAU,wCAAwC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,gBAAgB;AAC3B;AACA,YAAW,QAAQ;AACnB,YAAW,MAAM;AACjB,YAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA,GAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA,GAAE;AACF;;AAEA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;;AAEA;;AAEA,EAAC;;;;AAID;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA,eAAc,SAAS;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;;AAEA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA,UAAS,GAAG;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU,OAAO;AACjB;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAS,OAAO;AAChB,wBAAuB,wBAAwB;AAC/C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA,iDAAgD;AAChD,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA;AACA,EAAC;AACD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;AACD;;;;AAIA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAmB;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,oCAAoC;AAC9C;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,QAAO;AACP,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,SAAQ;AACR,QAAO;AACP;AACA,OAAM;AACN,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,+CAA8C;AAC9C,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA,KAAI;;AAEJ;;AAEA,6CAA4C;AAC5C;AACA;AACA;AACA;AACA,WAAU,YAAY;AACtB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;AAGD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;AACF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU,SAAS;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,wCAAuC;AACvC;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAqB;AACrB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mCAAkC;AAClC;;AAEA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAuB,aAAa;AACpC,IAAG;AACH;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;;AAEA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAoB,SAAS;AAC7B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;;AAGD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ,GAAE;AACF;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;AACD;;;;AAIA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE,gBAAgB;AAClB;;AAEA;AACA;AACA;AACA;AACA;;AAEA,YAAW;;AAEX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,uCAAsC;AACtC;AACA;AACA;;AAEA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+CAA8C;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA2C;AAC3C;;AAEA;AACA;AACA;AACA;AACA,WAAU,KAAK;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mDAAkD;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA,sDAAqD;AACrD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,0BAAyB;AACzB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,+DAA8D;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAU,cAAc;;AAExB;AACA;AACA;AACA,kBAAiB,mBAAmB;AACpC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,+BAA+B;AACxD;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAsB,wDAAwD;AAC9E;;AAEA;AACA,GAAE;;AAEF;AACA;;AAEA,cAAa;;AAEb;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uCAAsC,cAAc;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAqC;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,eAAc,qCAAqC;;AAEnD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAK;AACL;AACA;AACA;AACA;AACA,GAAE;AACF;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAQ,OAAO;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wCAAuC,OAAO;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yCAAwC,OAAO;AAC/C;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAS,OAAO;AAChB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;;AAEA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA,UAAS,mCAAmC;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;;AAEA,UAAS,2BAA2B;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA,UAAS,0BAA0B;AACnC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA,8BAA6B;AAC7B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,aAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAiB,gBAAgB;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAS,WAAW;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;AAGD;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAkB;AAClB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,sCAAqC,QAAQ,SAAS,MAAM,aAAa,eAAe;AACxF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,2BAA2B;AAC7D,2BAA0B,cAAc,cAAc,OAAO;AAC7D,gBAAe,YAAY,UAAU;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA6B,SAAS,QAAQ,QAAQ;AACtD;AACA;AACA;AACA,sCAAqC,4BAA4B;AACjE,8BAA6B,cAAc,SAAS,SAAS;AAC7D;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA,EAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAY,+DAA+D;AAC3E;AACA;AACA;AACA,GAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,SAAQ,OAAO;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAQ,gBAAgB;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,+BAA8B,4BAA4B;AAC1D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA,kBAAiB;;AAEjB;AACA;;AAEA,WAAU,OAAO;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,aAAY;AACZ;;AAEA;AACA;AACA;;AAEA,YAAW,SAAS;AACpB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA,IAAG;AACH;AACA,EAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA,SAAQ,QAAQ;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAQ,gBAAgB;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,mDAAkD;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAU,iBAAiB;AAC3B;AACA;;AAEA;;AAEA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,4BAA2B;AAC3B,gCAA+B,kBAAkB,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,iBAAiB;AAC5B;AACA;;AAEA,8CAA6C;AAC7C;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;AAEA,SAAQ,iBAAiB;AACzB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,UAAS,iBAAiB;AAC1B;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,EAAC;;AAED;AACA,kEAAiE;AACjE;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAmB,cAAc;AACjC,GAAE;AACF;AACA;AACA;AACA;AACA;AACA,kDAAiD;;AAEjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAA+B,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gCAA+B,SAAS;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,WAAU,kBAAkB;AAC5B,YAAW,kBAAkB;AAC7B,eAAc;AACd,EAAC;AACD;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA,SAAQ,mBAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,KAAI;AACJ;;AAEA,KAAI;AACJ;AACA;AACA;;AAEA,IAAG;AACH;;AAEA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;AAKD;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,IAAG;AACH;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;AAKD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;;AAEA,WAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA,WAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA,UAAS,OAAO;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;AAKD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAI;AACJ;AACA;;AAEA,kCAAiC;AACjC;AACA;;AAEA,KAAI;AACJ;;AAEA,KAAI;AACJ;AACA;AACA,MAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,SAAS;AACpB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;AAKD;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA,EAAC;;;AAGD;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA,iBAAgB;;AAEhB,iDAAgD;AAChD;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,oBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wDAAuD;AACvD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,KAAI;;AAEJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,QAAO;AACP,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAS;AACT;;AAEA;;AAEA;AACA;;AAEA;AACA,kBAAiB;AACjB,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC;AAClC;AACA,uBAAsB;AACtB,4BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oFAAmF;AACnF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAc,oCAAoC;AAClD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAK;AACL;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,KAAI;AACJ;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;;AAEA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAI;AACJ;AACA;AACA;AACA,IAAG;;AAEH,GAAE;AACF;AACA;AACA;AACA;;AAEA,GAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd,OAAM;AACN,OAAM;AACN,IAAG;AACH;AACA,EAAC;;;AAGD;AACA;AACA;AACA,GAAE;AACF;;AAEA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;AACA,mDAAkD;AAClD;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;AAKD;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;AAKD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA,EAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,IAAG;AACH;AACA,IAAG;AACH;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;AAKD;AACA;AACA;AACA,GAAE;AACF;;;;;AAKA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,WAAU,kBAAkB;AAC5B;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB;;AAEnB,6DAA4D,eAAe;AAC3E;AACA;AACA;;AAEA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA,eAAc,sDAAsD;AACpE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAI;AACJ;AACA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA,eAAc,mCAAmC;AACjD,gBAAe,6DAA6D;AAC5E;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAI;AACJ;AACA,GAAE;AACF,EAAC;;;AAGD;AACA;AACA;AACA;;AAEA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;;;;;AAKA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;;AAEA,EAAC;;;;;;;ACz/RD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,E;;;;;;mCCvBA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;;mCC3QD;AACA;AACA;AACA,iBAAgB,uCAAuC;AACvD,mBAAkB,yCAAyC;AAC3D,oBAAmB;AACnB;AACA;AACA,EAAC,uJ;;;;;;mCCRD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB;AAClB;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,QAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCxFD;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCClCD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,0BAAyB;AACzB;;AAEA;AACA;;AAEA;AACA;AACA,iBAAgB,IAAI;AACpB,iBAAgB,OAAO;AACvB;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,SAAS;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA,uCAAsC;AACtC;;AAEA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO,IAAI;;AAEX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCClGD;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,SAAS;AACtB,cAAa,SAAS;AACtB,cAAa,SAAS;AACtB,cAAa,SAAS;AACtB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC;;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc,SAAS;AACvB,eAAc,SAAS;AACvB;AACA,eAAc,SAAS;AACvB;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;;AAEP;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCCnJD;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,yBAAwB;AACxB,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,oBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCC1GD;AACA;;AAEA;AACA;AACA,gCAA+B,2BAA2B;;AAE1D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,IAAI;AACnB,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCvGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iEAAgE;AAChE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAsB,SAAS;AAC/B,2BAA0B,SAAS;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,yCAAwC,WAAW;AACnD;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAgB;AAChB;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,8BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAkC,gBAAgB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAmB;AACnB;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAG;;;;;AAKH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,0CAA0C;AACzE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,qBAAoB;AACpB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,QAAQ;AAC7B;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCnfD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;;mCC1DD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAe,UAAU;AACzB;AACA;AACA;;AAEA;AACA;AACA,gBAAe,aAAa;AAC5B;AACA;AACA;;AAEA;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,eAAe;AAC9B,gBAAe,WAAW;AAC1B;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCC1ED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAO;AACP;;AAEA;;AAEA;AACA,EAAC;;;;;;;mCC1CD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA,oDAAmD,cAAc;AACjE;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,EAAE;AAClB,iBAAgB,EAAE;AAClB,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,YAAY;AAC5B,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC7JD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAkB,MAAM;AACxB,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,kDAAiD;AACjD,UAAS;AACT,QAAO;;AAEP;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB,MAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCC5CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;;AAEA;;AAEA,EAAC;;;;;;;AC5CD;AACA;AACA,kDAAiD,iBAAiB;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCC7BD;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCTD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,Q,6CAAO;AACP,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,aAAa;AAC7B,iBAAgB,KAAK;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,EAAE;AAClB,iBAAgB,EAAE;AAClB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCxMD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCClHD;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAkB,MAAM;AACxB,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB,MAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCC1BD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCzBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,gBAAe,KAAK;AACpB;AACA;AACA;AACA,qDAAoD;AACpD;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCChCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCbD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6BAA4B;AAC5B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,KAAK;AACpB,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;;AAGA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,uDAAsD,GAAG,iBAAiB;;AAE1E;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA,qCAAoC,iBAAiB;AACrD,kCAAiC,iBAAiB;AAClD;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;;;;;;mCC9UD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,QAAO;AACP;AACA,QAAO;;AAEP;AACA,uCAAsC,iBAAiB;AACvD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCjFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCdD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA,cAAa,6BAA6B;AAC1C,oBAAmB,0BAA0B;AAC7C,QAAO;AACP,cAAa,4BAA4B;AACzC,oBAAmB,0BAA0B;AAC7C;;AAEA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,iBAAgB,SAAS;AACzB;AACA,iBAAgB,SAAS;AACzB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;;AAEA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCzJD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCvDD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,EAAC,uJ;;;;;;mCCnCD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCC1BD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA,eAAc,OAAO;AACrB,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCCjID;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,UAAU;AACvB;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,OAAO;AACpB,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA,cAAa,eAAe;AAC5B;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,SAAS;AACtB,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,EAAE;AACf,eAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA,EAAC;;;;;;;mCCnPD;AACA;AACA;;AAEA,gCAA+B,iCAAiC;;AAEhE;AACA,kCAAiC;AACjC;AACA;AACA;AACA,MAAK;;AAEL,mBAAkB;AAClB;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,aAAa;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCC9ED;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gCAA+B,mCAAmC;;AAElE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;;;;mCC/CD;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;;;;;;;mCClBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB,eAAc;AACd;AACA;AACA,eAAc;AACd;AACA;AACA,eAAc;AACd,aAAY;AACZ;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,cAAa,OAAO;AACpB;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,MAAK;AACL,IAAG;AACH,EAAC;;;;;;;AC9LD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oDAAmD;AACnD,0EAAyE;;AAEzE;AACA,mCAAkC;AAClC,oCAAmC;AACnC,+CAA8C;;AAE9C;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kFAAiF,iCAAiC;;AAElH;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH,EAAC;;;;;;;mCCvGD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCC9CD;;AAEA;AACA;AACA;AACA;AACA;AACA,uCAAsC,4BAA4B;AAClE;AACA;AACA;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL,EAAC;;;;;;;;ACvCD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA,6FAA4F;AAC5F,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzDD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACrGD;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvDD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACtID;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACtGD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACjJD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC/GD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC5GD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC3ID;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7ED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,4BAA2B,IAAI;AAC/B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC3JD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC;AACnC,kBAAiB;AACjB;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7ED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1DD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1ED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA,yEAAwE;AACxE;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,kCAAiC;AACjC,iCAAgC;AAChC,iCAAgC;AAChC,gCAA+B;AAC/B;AACA;AACA;AACA,0DAAyD;AACzD;AACA,2DAA0D;AAC1D;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC;AACrC,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC5FD;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AChED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACjED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,4BAA2B,IAAI;AAC/B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7ED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC9ED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC9DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxDD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC5DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACrED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,4BAA2B,IAAI;AAC/B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AChFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzHD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1ID;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC3GD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,2BAA0B,IAAI,IAAI,IAAI;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7GD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACjFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7HD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,4BAA2B,IAAI;AAC/B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACpED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC/DD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACjFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,qCAAoC,IAAI,IAAI,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACrGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxDD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,4BAA2B,IAAI;AAC/B;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AClED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACpID;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACjHD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC9FD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC3GD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACrED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvHD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AChFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC3FD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC3DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzHD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACrED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C;AAC5C,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C;AAC5C,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC9DD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AClKD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC/DD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC5JD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC9JD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACnED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1GD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1GD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACjED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,iCAAgC;AAChC,cAAa;AACb,gCAA+B;AAC/B,cAAa;AACb,mCAAkC;AAClC,cAAa;AACb,mCAAkC;AAClC,cAAa;AACb,gCAA+B;AAC/B,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7FD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC/DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC5DD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxDD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxDD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvJD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxDD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AChED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7HD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACnGD,4SAA2S,kDAAkD,0P;;;;;;;ACA7V;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;mCCTA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCJD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;;AAGA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH,EAAC;;;;;;;mCC1ID;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB,iBAAgB,IAAI;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB,iBAAgB,IAAI;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,cAAc;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,eAAe;AAC3C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB,mBAAkB,YAAY;AAC9B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,sBAAqB,QAAQ;AAC7B;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAqB,OAAO;AAC5B,wBAAuB;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC;;;;;;;mCChVD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCCxDD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCRD;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC,uJ;;;;;;mCCND;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCClBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC,uJ;;;;;;ACxLD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAwC;AACxC;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCChDD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCnDD;AACA;AACA;;AAEA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA2C,gBAAgB;AAC3D;;AAEA;AACA,cAAa;AACb;;AAEA;;AAEA,UAAS;AACT,QAAO;;AAEP;AACA,MAAK;AACL,EAAC;;;;;;;mCCvCD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC5CD;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA,EAAC;;;;;;;mCCrBD;AACA;AACA;;AAEA;AACA;AACA,cAAa,MAAM;AACnB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;;;;;;;mCChBD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAkB,cAAc,EAAE;AAClC;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCzCD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAiB,WAAW;AAC5B,kBAAiB,QAAQ;AACzB,oBAAmB;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,8FAA6F;AAC7F,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA,kBAAiB,WAAW;AAC5B,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC/HD;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCtCD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;AACH,EAAC;;;;;;;mCCzBD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;AACjB,gCAA+B;AAC/B;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA,EAAC;;;;;;;mCCtJD;AACA;;AAEA;AACA,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;;AAEtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;;AAEtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;;AAEtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;;AAEtF;;AAEA,EAAC;;;;;;;mCCtCD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,EAAC,uJ;;;;;;mCCbD;AACA;;AAEA;AACA;AACA;AACA,mCAAkC,mCAAmC;AACrE,IAAG;;AAEH,EAAC;;;;;;;mCCTD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCjCD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCdD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCfD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,EAAC,uJ;;;;;;mCCRD;AACA;AACA;AACA,EAAC;;;;;;;mCCHD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,sBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCCjDD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP,MAAK;;AAEL;AACA,kCAAiC;AACjC;AACA;AACA,6CAA4C;;AAE5C;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA,EAAC;;;;;;;mCC3GD;AACA;AACA;;AAEA;AACA;AACA,kBAAiB,2BAA2B;AAC5C;AACA;AACA,QAAO;AACP;AACA,kBAAiB,6BAA6B;AAC9C;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,aAAY;AACZ,qBAAoB,yBAAyB,EAAE;AAC/C,uBAAsB,2BAA2B,EAAE;AACnD,yBAAwB,6BAA6B,EAAE;AACvD,0BAAyB,8BAA8B,EAAE;AACzD,4BAA2B,6BAA6B,EAAE;AAC1D,aAAY;AACZ;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;;;;;;mCC7ID;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,8DAA6D,iBAAiB;AAC9E;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;ACtCD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,iDAAiD;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,uBAAsB,QAAQ,+BAA+B,UAAU,UAAU,EAAE;AACnF,8CAA6C;AAC7C;;AAEA;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC9ED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCVD;AACA;AACA,gCAA+B,iCAAiC;AAChE;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kCAAiC,iBAAiB,SAAS,MAAM;AACjE;;AAEA;AACA;AACA,EAAC;;;;;;;mCC9ED;AACA;;AAEA;AACA;;AAEA;AACA,0CAAyC,gCAAgC,EAAE;;AAE3E;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB,MAAM;AACtB;AACA;AACA;;AAEA,kCAAiC,EAAE,KAAK,KAAK,EAAE;AAC/C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCC7LD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,EAAC;;;;;;;mCCtBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,0BAAyB,qBAAqB,EAAE;AAChD;AACA;AACA,4BAA2B,oBAAoB;AAC/C;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAuB,wBAAwB;AAC/C,YAAW;AACX,wBAAuB,wBAAwB;AAC/C;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCC/CD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC7DD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB;AACA;AACA;AACA,cAAa,cAAc;AAC3B,cAAa,cAAc;AAC3B,cAAa,cAAc;AAC3B,cAAa,cAAc;AAC3B,cAAa,cAAc;AAC3B;AACA,eAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA,oEAAmE,kBAAkB;AACrF;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,aAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,EAAC,uJ;;;;;;AC1FD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6CAA4C,oBAAoB;AAChE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wCAAuC;AACvC;AACA,UAAS,qCAAqC;AAC9C;AACA,UAAS,qCAAqC;AAC9C;AACA,UAAS,OAAO;AAChB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAA+B,0BAA0B;AACzD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA,gCAA+B,0BAA0B;AACzD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sDAAqD,EAAE;AACvD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4BAA2B,gBAAgB;AAC3C;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,M;;;AAGA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,qF;AACA,oC;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,wF;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,8D;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,EAAC;;;;;;;;;;mCCtqBD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,QAAQ;AACxB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,MAAM;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA,iBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,IAAG;AACH,EAAC;;;;;;;mCCzJD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA,IAAG;AACH,EAAC;;;;;;;mCCzBD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC/BD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCzCD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA,EAAC;;;;;;;;AClBD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;;AAEA,8CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,SAAS;AACtB;AACA,eAAc,SAAS;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kBAAiB;AACjB,gBAAe;AACf,eAAc;;AAEd,sCAAqC,oBAAoB,YAAY;AACrE,qCAAoC,qBAAqB,WAAW;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCClWD;AACA;AACA;AACA;;;AAGA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA,EAAC;;;;;;;mCCrDD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,YAAW,gCAAgC;AAC3C,YAAW,gCAAgC;AAC3C,YAAW,8BAA8B;AACzC,YAAW,6BAA6B;AACxC,YAAW,8BAA8B;AACzC,YAAW,+BAA+B;AAC1C,YAAW,8BAA8B;AACzC;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,8BAA6B,kBAAkB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH,EAAC;;;;;;;mCC3JD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCChPD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;AACf;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC,cAAc;AACjD;AACA,gBAAe;AACf;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA,MAAK;AACL,EAAC;;;;;;;;mCC7HD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCClBD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCjFD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA,MAAK;AACL,EAAC,uJ;;;;;;mCCvBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAgC,8BAA8B;AAC9D,cAAa;AACb;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC/BD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCC9CD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCClBD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA,iEAAgE,UAAU;AAC1E;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCC/ND;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,iCAAgC,MAAM;AACtC,mFAAkF,QAAQ;AAC1F;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCxCD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCChCD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;AC5BD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA,MAAK;AACL,EAAC;;;;;;;mCCxCD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL,EAAC,uJ;;;;;;mCCrCD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAgC;AAChC;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC/CD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,MAAM;AACtB,iBAAgB,aAAa;AAC7B;AACA;AACA,iBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO,IAAI;;AAEX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,QAAO;AACP;AACA;;AAEA;AACA,EAAC;;;;;;;ACvDD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCZD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;ACfD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCzBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCdD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA,MAAK;AACL,EAAC,uJ;;;;;;mCCVD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;ACTD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,EAAC,uJ;;;;;;mCCZD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,SAAS;AACvB,eAAc,cAAc;AAC5B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,SAAS;AACvB;AACA,eAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,EAAE;AAChB,eAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;;;AAGA;AACA,EAAC;;;;;;;mCCxHD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCC/BD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCnBD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA,MAAK;AACL;AACA;AACA;AACA,EAAC;;;;;;;ACnCD;AACA;AACA,wCAAuC;;AAEvC,EAAC;AACD,oE;AACA,oBAAmB,gBAAgB,UAAU,UAAU,0CAA0C,wBAAwB,oBAAoB,8CAA8C,YAAY,YAAY,mCAAmC,iBAAiB,gBAAgB,sBAAsB,oBAAoB,kDAAkD,WAAW,YAAY,SAAS,EAAE,oBAAoB,GAAG,qBAAqB,cAAc,mCAAmC,gBAAgB,MAAM,eAAe,gBAAgB,KAAK,wFAAwF,mBAAmB,oCAAoC,qFAAqF,cAAc,yDAAyD,cAAc,kEAAkE,SAAS,sCAAsC,SAAS,cAAc,iFAAiF,WAAW,oEAAoE,gBAAgB,OAAO,YAAY,kEAAkE,mFAAmF,iCAAiC,YAAY,WAAW,yBAAyB,SAAS,wBAAwB,+BAA+B,iBAAiB,WAAW,8BAA8B,SAAS,2BAA2B,mCAAmC,YAAY,WAAW,uBAAuB,qBAAqB,yBAAyB,kCAAkC,WAAW,qBAAqB,SAAS,0BAA0B,iCAAiC,WAAW,+BAA+B,uBAAuB,IAAI,2DAA2D,SAAS,gDAAgD,yCAAyC,iBAAiB,qBAAqB,oBAAoB,kDAAkD,mBAAmB,wDAAwD,mCAAmC,gBAAgB,kBAAkB,8DAA8D,2DAA2D,gIAAgI,8CAA8C,oBAAoB,8DAA8D,qDAAqD,MAAM,mBAAmB,iBAAiB,mCAAmC,kBAAkB,sCAAsC,0DAA0D,iCAAiC,IAAI,iEAAiE,SAAS,yCAAyC,IAAI,4CAA4C,SAAS,gBAAgB,kCAAkC,GAAG,qBAAqB,gBAAgB,+HAA+H,gBAAgB,iDAAiD,cAAc,gGAAgG,sBAAsB,4BAA4B,8DAA8D,EAAE,gBAAgB,uBAAuB,gBAAgB,kBAAkB,iCAAiC,+BAA+B,YAAY,WAAW,4BAA4B,SAAS,4PAA4P,cAAc,8DAA8D,gBAAgB,2DAA2D,sCAAsC,wDAAwD,IAAI,gCAAgC,SAAS,SAAS,+BAA+B,mCAAmC,KAAK,2BAA2B,iBAAiB,KAAK,qCAAqC,SAAS,gBAAgB,sGAAsG,kBAAkB,oBAAoB,MAAM,4BAA4B,IAAI,IAAI,SAAS,IAAI,+KAA+K,oEAAoE,6BAA6B,kIAAkI,4EAA4E,4BAA4B,4BAA4B,+BAA+B,6BAA6B,yCAAyC,gCAAgC,+CAA+C,+BAA+B,oCAAoC,kCAAkC,uCAAuC,6BAA6B,6CAA6C,8BAA8B,6CAA6C,uBAAuB,cAAc,EAAE,gBAAgB,qBAAqB,aAAa,6BAA6B,+CAA+C,gBAAgB,0JAA0J,sEAAsE,iCAAiC,8BAA8B,gBAAgB,iCAAiC,6LAA6L,+CAA+C,4CAA4C,oBAAoB,MAAM,iCAAiC,MAAM,8CAA8C,MAAM,oDAAoD,IAAI,wBAAwB,gBAAgB,uBAAuB,4CAA4C,IAAI,wBAAwB,+BAA+B,IAAI,uBAAuB,SAAS,uCAAuC,MAAM,mEAAmE,iCAAiC,6QAA6Q,MAAM,oUAAoU,YAAY,uEAAuE,aAAa,iDAAiD,mEAAmE,sCAAsC,0CAA0C,YAAY,mEAAmE,+CAA+C,yKAAyK,uBAAuB,QAAQ,MAAM,gDAAgD,IAAI,MAAM,mBAAmB,4HAA4H,YAAY,4CAA4C,QAAQ,6BAA6B,2EAA2E,8CAA8C,yBAAyB,uEAAuE,gEAAgE,MAAM,8DAA8D,UAAU,SAAS,sCAAsC,mCAAmC,mCAAmC,MAAM,kHAAkH,+BAA+B,MAAM,qFAAqF,EAAE,OAAO,qBAAqB,gBAAgB,yBAAyB,KAAK,KAAK,WAAW,0EAA0E,UAAU,IAAI,kBAAkB,SAAS,qFAAqF,IAAI,iDAAiD,2BAA2B,qBAAqB,uCAAuC,UAAU,KAAK,gCAAgC,mFAAmF,mCAAmC,6CAA6C,UAAU,kCAAkC,yBAAyB,6CAA6C,6CAA6C,UAAU,0DAA0D,0BAA0B,wBAAwB,mBAAmB,8CAA8C,4CAA4C,gFAAgF,SAAS,aAAa,0BAA0B,cAAc,YAAY,sBAAsB,KAAK,qBAAqB,gBAAgB,KAAK,+BAA+B,kDAAkD,kFAAkF,IAAI,oBAAoB,IAAI,MAAM,iBAAiB,WAAW,iBAAiB,0CAA0C,iDAAiD,yBAAyB,oDAAoD,0BAA0B,cAAc,yEAAyE,uBAAuB,gBAAgB,EAAE,wCAAwC,qBAAqB,gBAAgB,iDAAiD,cAAc,uBAAuB,uDAAuD,+BAA+B,iDAAiD,YAAY,KAAK,sBAAsB,UAAU,qBAAqB,6BAA6B,MAAM,0BAA0B,iBAAiB,MAAM,2DAA2D,2CAA2C,KAAK,4BAA4B,gCAAgC,MAAM,cAAc,MAAM,uDAAuD,2CAA2C,KAAK,4BAA4B,gCAAgC,MAAM,cAAc,eAAe,sBAAsB,0BAA0B,wCAAwC,sBAAsB,8BAA8B,kBAAkB,wFAAwF,uCAAuC,2FAA2F,uBAAuB,8CAA8C,wBAAwB,8BAA8B,+CAA+C,oCAAoC,kBAAkB,SAAS,yCAAyC,YAAY,aAAa,UAAU,wCAAwC,eAAe,gBAAgB,YAAY,IAAI,KAAK,mDAAmD,kDAAkD,IAAI,gDAAgD,SAAS,sCAAsC,yDAAyD,UAAU,EAAE,0BAA0B,qBAAqB,aAAa,sMAAsM,kBAAkB,6CAA6C,YAAY,wBAAwB,cAAc,oFAAoF,gBAAgB,6BAA6B,gBAAgB,uCAAuC,OAAO,mBAAmB,UAAU,2BAA2B,2DAA2D,kFAAkF,IAAI,iEAAiE,yDAAyD,KAAK,sBAAsB,KAAK,WAAW,+BAA+B,IAAI,+BAA+B,IAAI,mGAAmG,oBAAoB,kCAAkC,yFAAyF,QAAQ,YAAY,gBAAgB,MAAM,OAAO,sBAAsB,qCAAqC,0CAA0C,2BAA2B,6CAA6C,yBAAyB,iBAAiB,WAAW,KAAK,sBAAsB,6BAA6B,QAAQ,8HAA8H,YAAY,WAAW,KAAK,sBAAsB,6BAA6B,0GAA0G,0EAA0E,yDAAyD,IAAI,KAAK,WAAW,mBAAmB,4BAA4B,IAAI,oCAAoC,gBAAgB,+CAA+C,4FAA4F,QAAQ,2EAA2E,4CAA4C,WAAW,KAAK,WAAW,uDAAuD,0BAA0B,qDAAqD,2HAA2H,gCAAgC,IAAI,KAAK,mCAAmC,0CAA0C,qBAAqB,+CAA+C,qBAAqB,gJAAgJ,4GAA4G,0CAA0C,cAAc,oCAAoC,+BAA+B,oBAAoB,4DAA4D,sEAAsE,4OAA4O,gCAAgC,qOAAqO,6BAA6B,mCAAmC,iCAAiC,+CAA+C,uCAAuC,kBAAkB,YAAY,qBAAqB,YAAY,sCAAsC,aAAa,4DAA4D,iEAAiE,4BAA4B,sFAAsF,wCAAwC,yDAAyD,UAAU,sBAAsB,qEAAqE,KAAK,sCAAsC,8BAA8B,EAAE,0HAA0H,uIAAuI,oCAAoC,WAAW,0DAA0D,0OAA0O,gXAAgX,mFAAmF,wCAAwC,MAAM,4BAA4B,yDAAyD,kDAAkD,kKAAkK,0FAA0F,wFAAwF,KAAK,oFAAoF,eAAe,IAAI,kBAAkB,uGAAuG,4CAA4C,MAAM,6CAA6C,yDAAyD,kDAAkD,8RAA8R,kCAAkC,4BAA4B,mGAAmG,EAAE,8BAA8B,qBAAqB,gBAAgB,OAAO,mBAAmB,4SAA4S,gBAAgB,kBAAkB,6DAA6D,gBAAgB,SAAS,cAAc,SAAS,iCAAiC,QAAQ,IAAI,kBAAkB,2GAA2G,mBAAmB,4BAA4B,aAAa,cAAc,uBAAuB,4DAA4D,SAAS,4BAA4B,8CAA8C,qEAAqE,iEAAiE,oBAAoB,mBAAmB,IAAI,GAAG,kCAAkC,4BAA4B,qBAAqB,0KAA0K,yGAAyG,eAAe,MAAM,0CAA0C,sBAAsB,wBAAwB,gBAAgB,kDAAkD,SAAS,6FAA6F,6BAA6B,yGAAyG,cAAc,+CAA+C,sBAAsB,4BAA4B,IAAI,sDAAsD,+BAA+B,0CAA0C,IAAI,wBAAwB,UAAU,uCAAuC,WAAW,yRAAyR,aAAa,0DAA0D,cAAc,0DAA0D,gCAAgC,8MAA8M,gBAAgB,kBAAkB,mCAAmC,8EAA8E,IAAI,mGAAmG,cAAc,oBAAoB,cAAc,0BAA0B,cAAc,gBAAgB,cAAc,eAAe,cAAc,yBAAyB,cAAc,yBAAyB,cAAc,yBAAyB,cAAc,kBAAkB,cAAc,sCAAsC,cAAc,4BAA4B,cAAc,oCAAoC,cAAc,qCAAqC,cAAc,2BAA2B,cAAc,wHAAwH,cAAc,qHAAqH,cAAc,yCAAyC,cAAc,8CAA8C,aAAa,iFAAiF,gDAAgD,gBAAgB,iDAAiD,+BAA+B,qBAAqB,UAAU,iBAAiB,mBAAmB,4BAA4B,mBAAmB,qEAAqE,sBAAsB,iBAAiB,UAAU,+BAA+B,+BAA+B,aAAa,8BAA8B,SAAS,mBAAmB,kBAAkB,SAAS,IAAI,uCAAuC,SAAS,uBAAuB,sLAAsL,WAAW,4HAA4H,gNAAgN,gFAAgF,iBAAiB,uDAAuD,0BAA0B,6CAA6C,aAAa,mDAAmD,EAAE,yBAAyB,sBAAsB,+BAA+B,IAAI,iBAAiB,UAAU,EAAE,SAAS,qBAAqB,kCAAkC,qEAAqE,mCAAmC,IAAI,0BAA0B,8BAA8B,IAAI,0BAA0B,eAAe,KAAK,qCAAqC,sBAAsB,iCAAiC,sCAAsC,4HAA4H,mRAAmR,KAAK,+BAA+B,kBAAkB,IAAI,+BAA+B,iBAAiB,GAAG,sBAAsB,cAAc,kDAAkD,kBAAkB,+DAA+D,6EAA6E,cAAc,QAAQ,MAAM,uBAAuB,iBAAiB,YAAY,cAAc,uBAAuB,KAAK,mBAAmB,8BAA8B,MAAM,2CAA2C,MAAM,qCAAqC,MAAM,qFAAqF,oBAAoB,cAAc,6DAA6D,kDAAkD,iCAAiC,cAAc,eAAe,kBAAkB,iEAAiE,cAAc,iCAAiC,cAAc,kCAAkC,0BAA0B,mBAAmB,KAAK,cAAc,6EAA6E,cAAc,8CAA8C,cAAc,iBAAiB,WAAW,oDAAoD,wEAAwE,WAAW,8BAA8B,SAAS,cAAc,iBAAiB,WAAW,gCAAgC,SAAS,cAAc,qCAAqC,oBAAoB,YAAY,mCAAmC,iBAAiB,SAAS,cAAc,IAAI,6BAA6B,SAAS,mCAAmC,oBAAoB,QAAQ,uQAAuQ,oBAAoB,QAAQ,uYAAuY,oBAAoB,QAAQ,iNAAiN,oBAAoB,QAAQ,2NAA2N,oBAAoB,yKAAyK,oBAAoB,yKAAyK,gBAAgB,2PAA2P,sBAAsB,uNAAuN,YAAY,yBAAyB,8CAA8C,sBAAsB,4NAA4N,YAAY,yBAAyB,+BAA+B,kBAAkB,uOAAuO,kBAAkB,4KAA4K,sBAAsB,qQAAqQ,sBAAsB;;AAE3/9B,EAAC,sBAAsB,+SAA+S,sBAAsB,iTAAiT,MAAM,6FAA6F,8CAA8C,eAAe,+BAA+B,8CAA8C,iBAAiB,4BAA4B,kBAAkB,4BAA4B,0CAA0C,yCAAyC,gCAAgC,6CAA6C,uCAAuC,wCAAwC,wCAAwC,wCAAwC,wFAAwF,wCAAwC,uCAAuC,kDAAkD,uCAAuC,kCAAkC,oEAAoE,WAAW,iFAAiF,cAAc,mCAAmC,+DAA+D,WAAW,iCAAiC,SAAS,+EAA+E,+BAA+B,IAAI,+CAA+C,aAAa,MAAM,iCAAiC,oCAAoC,kBAAkB,uCAAuC,iBAAiB,IAAI,kBAAkB,SAAS,sCAAsC,mGAAmG,UAAU,oCAAoC,kDAAkD,wCAAwC,0CAA0C,0CAA0C,kDAAkD,6CAA6C,sCAAsC,QAAQ,oBAAoB,wBAAwB,eAAe,6CAA6C,eAAe,YAAY,IAAI,KAAK,mCAAmC,kDAAkD,YAAY,6BAA6B,qCAAqC,2CAA2C,KAAK,QAAQ,YAAY,QAAQ,oBAAoB,kEAAkE,sCAAsC,oDAAoD,0CAA0C,4CAA4C,4CAA4C,oDAAoD,6CAA6C,iCAAiC,kBAAkB,gDAAgD,oCAAoC,WAAW,4GAA4G,kBAAkB,qCAAqC,iEAAiE,iEAAiE,8DAA8D,gEAAgE,iBAAiB,IAAI,wFAAwF,YAAY,aAAa,gBAAgB,kCAAkC,sJAAsJ,sCAAsC,kBAAkB,2BAA2B,8DAA8D,2DAA2D,YAAY,IAAI,cAAc,wBAAwB,sBAAsB,wBAAwB,uGAAuG,gCAAgC,4BAA4B,uBAAuB,IAAI,YAAY,WAAW,KAAK,WAAW,aAAa,2BAA2B,WAAW,KAAK,WAAW,wBAAwB,SAAS,0BAA0B,6BAA6B,8IAA8I,kBAAkB,qCAAqC,WAAW,uIAAuI,wCAAwC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,sBAAsB,oCAAoC,aAAa,sKAAsK,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,WAAW,kLAAkL,2CAA2C,iBAAiB,2CAA2C,iBAAiB,2CAA2C,iBAAiB,2CAA2C,iBAAiB,uCAAuC,WAAW,qNAAqN,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,2CAA2C,iBAAiB,2CAA2C,kBAAkB,EAAE,6CAA6C,sBAAsB,yEAAyE,aAAa,aAAa,cAAc,sBAAsB,+FAA+F,cAAc,cAAc,SAAS,gBAAgB,kFAAkF,eAAe,kGAAkG,QAAQ,YAAY,IAAI,sIAAsI,6JAA6J,cAAc,cAAc,mBAAmB,cAAc,kDAAkD,4BAA4B,qBAAqB,IAAI,6CAA6C,UAAU,wDAAwD,MAAM,yFAAyF,SAAS,kMAAkM,kCAAkC,uCAAuC,IAAI,GAAG,sBAAsB,oBAAoB,gBAAgB,UAAU,UAAU,8BAA8B,wBAAwB,oBAAoB,8CAA8C,YAAY,YAAY,mCAAmC,iBAAiB,gBAAgB,sBAAsB,oBAAoB,sCAAsC,WAAW,YAAY,SAAS,EAAE,mBAAmB,kCAAkC,qEAAqE,mCAAmC,IAAI,0BAA0B,8BAA8B,IAAI,0BAA0B,eAAe,KAAK,qCAAqC,sBAAsB,iCAAiC,sCAAsC,4HAA4H,mRAAmR,KAAK,+BAA+B,kBAAkB,IAAI,+BAA+B,iBAAiB,GAAG,0BAA0B,cAAc,kDAAkD,kBAAkB,+DAA+D,6EAA6E,cAAc,QAAQ,MAAM,uBAAuB,iBAAiB,YAAY,cAAc,uBAAuB,KAAK,mBAAmB,8BAA8B,MAAM,2CAA2C,MAAM,qCAAqC,MAAM,iFAAiF,oBAAoB,cAAc,+CAA+C,kDAAkD,iCAAiC,cAAc,eAAe,kBAAkB,iEAAiE,cAAc,iCAAiC,cAAc,kCAAkC,0BAA0B,mBAAmB,KAAK,cAAc,6EAA6E,cAAc,8CAA8C,cAAc,iBAAiB,WAAW,oDAAoD,wEAAwE,WAAW,8BAA8B,SAAS,cAAc,iBAAiB,WAAW,gCAAgC,SAAS,cAAc,qCAAqC,oBAAoB,YAAY,mCAAmC,iBAAiB,SAAS,cAAc,IAAI,6BAA6B,SAAS,mCAAmC,oBAAoB,QAAQ,uQAAuQ,oBAAoB,QAAQ,uYAAuY,oBAAoB,QAAQ,iNAAiN,oBAAoB,QAAQ,2NAA2N,oBAAoB,yKAAyK,oBAAoB,yKAAyK,gBAAgB,2PAA2P,sBAAsB,uNAAuN,YAAY,yBAAyB,8CAA8C,sBAAsB,4NAA4N,YAAY,yBAAyB,+BAA+B,kBAAkB,uOAAuO,kBAAkB,4KAA4K,sBAAsB,qQAAqQ,sBAAsB,oRAAoR,sBAAsB,+SAA+S,sBAAsB,iTAAiT,MAAM,6FAA6F,8CAA8C,eAAe,+BAA+B,8CAA8C,iBAAiB,4BAA4B,kBAAkB,4BAA4B,0CAA0C,yCAAyC,gCAAgC,6CAA6C,uCAAuC,wCAAwC,wCAAwC,wCAAwC,wFAAwF,wCAAwC,uCAAuC,kDAAkD,uCAAuC,kCAAkC,oEAAoE,WAAW,iFAAiF,cAAc,mCAAmC,+DAA+D,WAAW,iCAAiC,SAAS,+EAA+E,+BAA+B,IAAI,+CAA+C,aAAa,MAAM,iCAAiC,oCAAoC,kBAAkB,uCAAuC,iBAAiB,IAAI,kBAAkB,SAAS,sCAAsC,mGAAmG,UAAU,oCAAoC,kDAAkD,wCAAwC,0CAA0C,0CAA0C,kDAAkD,6CAA6C,sCAAsC,QAAQ,oBAAoB,wBAAwB,eAAe,6CAA6C,eAAe,YAAY,IAAI,KAAK,mCAAmC,kDAAkD,YAAY,6BAA6B,qCAAqC,2CAA2C,KAAK,QAAQ,YAAY,QAAQ,oBAAoB,kEAAkE,sCAAsC,oDAAoD,0CAA0C,4CAA4C,4CAA4C,oDAAoD,6CAA6C,iCAAiC,kBAAkB,gDAAgD,oCAAoC,WAAW,4GAA4G,kBAAkB,qCAAqC,iEAAiE,iEAAiE,8DAA8D,gEAAgE,iBAAiB,IAAI,wFAAwF,YAAY,aAAa,gBAAgB,kCAAkC,sJAAsJ,sCAAsC,kBAAkB,2BAA2B,8DAA8D,2DAA2D,YAAY,IAAI,cAAc,wBAAwB,sCAAsC,wBAAwB,uGAAuG,gCAAgC,4BAA4B,uBAAuB,IAAI,YAAY,WAAW,KAAK,WAAW,aAAa,2BAA2B,WAAW,KAAK,WAAW,wBAAwB,SAAS,0BAA0B,6BAA6B,8IAA8I,kBAAkB,qCAAqC,WAAW,uIAAuI,wCAAwC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,sBAAsB,oCAAoC,aAAa,sKAAsK,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,WAAW,kLAAkL,2CAA2C,iBAAiB,2CAA2C,iBAAiB,2CAA2C,iBAAiB,2CAA2C,iBAAiB,uCAAuC,WAAW,qNAAqN,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,2CAA2C,iBAAiB,2CAA2C,kBAAkB,EAAE,4CAA4C,uCAAuC,sBAAsB,GAAG,qBAAqB,aAAa,aAAa,cAAc,gBAAgB,sEAAsE,+EAA+E,IAAI,yJAAyJ,iLAAiL,cAAc,cAAc,kDAAkD,4BAA4B,qBAAqB,IAAI,6CAA6C,UAAU,wDAAwD,MAAM,yFAAyF,SAAS,yEAAyE,kDAAkD,GAAG,GAAG,qBAAqB,cAAc,mCAAmC,gBAAgB,MAAM,eAAe,gBAAgB,KAAK,wFAAwF,mBAAmB,oCAAoC,qFAAqF,cAAc,yDAAyD,cAAc,kEAAkE,SAAS,sCAAsC,SAAS,cAAc,iFAAiF,WAAW,oEAAoE,gBAAgB,OAAO,YAAY,kEAAkE,mFAAmF,iCAAiC,YAAY,WAAW,yBAAyB,SAAS,wBAAwB,+BAA+B,iBAAiB,WAAW,8BAA8B,SAAS,2BAA2B,mCAAmC,YAAY,WAAW,uBAAuB,qBAAqB,yBAAyB,kCAAkC,WAAW,qBAAqB,SAAS,0BAA0B,iCAAiC,WAAW,+BAA+B,uBAAuB,IAAI,2DAA2D,SAAS,gDAAgD,yCAAyC,iBAAiB,qBAAqB,oBAAoB,kDAAkD,mBAAmB,wDAAwD,mCAAmC,gBAAgB,kBAAkB,8DAA8D,2DAA2D,gIAAgI,8CAA8C,oBAAoB,8DAA8D,qDAAqD,MAAM,mBAAmB,iBAAiB,mCAAmC,kBAAkB,sCAAsC,0DAA0D,iCAAiC,IAAI,iEAAiE,SAAS,yCAAyC,IAAI,4CAA4C,SAAS,gBAAgB,kCAAkC,GAAG,qBAAqB,gBAAgB,+HAA+H,gBAAgB,iDAAiD,cAAc,gGAAgG,sBAAsB,4BAA4B,8DAA8D,EAAE,gBAAgB,uBAAuB,gBAAgB,kBAAkB,iCAAiC,+BAA+B,YAAY,WAAW,4BAA4B,SAAS,4PAA4P,cAAc,8DAA8D,gBAAgB,2DAA2D,sCAAsC,wDAAwD,IAAI,gCAAgC,SAAS,SAAS,+BAA+B,mCAAmC,KAAK,2BAA2B,iBAAiB,KAAK,qCAAqC,SAAS,gBAAgB,sGAAsG,kBAAkB,oBAAoB,MAAM,4BAA4B,IAAI,IAAI,SAAS,IAAI,+KAA+K,oEAAoE,6BAA6B,kIAAkI,4EAA4E,4BAA4B,4BAA4B,+BAA+B,6BAA6B,yCAAyC,gCAAgC,+CAA+C,+BAA+B,oCAAoC,kCAAkC,uCAAuC,6BAA6B,6CAA6C,8BAA8B,6CAA6C,uBAAuB,cAAc,EAAE,gBAAgB,qBAAqB,gBAAgB,OAAO,mBAAmB,4SAA4S,gBAAgB,kBAAkB,6DAA6D,gBAAgB,SAAS,cAAc,SAAS,iCAAiC,QAAQ,IAAI,kBAAkB,2GAA2G,mBAAmB,4BAA4B,aAAa,cAAc,uBAAuB,4DAA4D,SAAS,4BAA4B,8CAA8C,qEAAqE,iEAAiE,oBAAoB,mBAAmB,IAAI,GAAG,kCAAkC,4BAA4B,qBAAqB,0KAA0K,yGAAyG,eAAe,MAAM,0CAA0C,sBAAsB,wBAAwB,gBAAgB,kDAAkD,SAAS,6FAA6F,6BAA6B,yGAAyG,cAAc,+CAA+C,sBAAsB,4BAA4B,IAAI,sDAAsD,+BAA+B,0CAA0C,IAAI;AAChv+B,WAAU,uCAAuC,WAAW,yRAAyR,aAAa,0DAA0D,cAAc,0DAA0D,gCAAgC,8MAA8M,gBAAgB,kBAAkB,mCAAmC,8EAA8E,IAAI,mGAAmG,cAAc,oBAAoB,cAAc,0BAA0B,cAAc,gBAAgB,cAAc,eAAe,cAAc,yBAAyB,cAAc,yBAAyB,cAAc,yBAAyB,cAAc,kBAAkB,cAAc,sCAAsC,cAAc,4BAA4B,cAAc,oCAAoC,cAAc,qCAAqC,cAAc,2BAA2B,cAAc,wHAAwH,cAAc,2BAA2B,cAAc,yCAAyC,cAAc,8CAA8C,aAAa,iFAAiF,gDAAgD,gBAAgB,iDAAiD,+BAA+B,qBAAqB,UAAU,iBAAiB,mBAAmB,4BAA4B,mBAAmB,qEAAqE,sBAAsB,iBAAiB,UAAU,+BAA+B,+BAA+B,aAAa,8BAA8B,SAAS,mBAAmB,kBAAkB,SAAS,IAAI,uCAAuC,SAAS,uBAAuB,sLAAsL,WAAW,4HAA4H,gNAAgN,gFAAgF,iBAAiB,uDAAuD,0BAA0B,6CAA6C,aAAa,mDAAmD,EAAE,yBAAyB,sBAAsB,+BAA+B,IAAI,iBAAiB,UAAU,EAAE,SAAS,EAAE,GAAG,sCAAsC,GAAG,sBAAsB,mBAAmB,sBAAsB,gIAAgI,wBAAwB,+BAA+B,MAAM,SAAS,qDAAqD,eAAe,sFAAsF,gBAAgB,KAAK,iBAAiB,kDAAkD,mBAAmB,iBAAiB,0CAA0C,iCAAiC,oDAAoD,kBAAkB,UAAU,qBAAqB,mDAAmD,GAAG,sBAAsB,yEAAyE,YAAY,gBAAgB,UAAU,0DAA0D,wCAAwC,wCAAwC,SAAS,kBAAkB,4BAA4B,YAAY,yBAAyB,SAAS,kBAAkB,uBAAuB,yBAAyB,MAAM,sBAAsB,SAAS,cAAc,+BAA+B,cAAc,2CAA2C,gBAAgB,wBAAwB,iCAAiC,EAAE,SAAS,gBAAgB,mBAAmB,+BAA+B,EAAE,SAAS,gBAAgB,iDAAiD,kBAAkB,6DAA6D,MAAM,EAAE,mBAAmB,iCAAiC,uBAAuB,cAAc,aAAa,cAAc,aAAa,cAAc,iBAAiB,kBAAkB,gCAAgC,YAAY,EAAE,WAAW,kBAAkB,SAAS,cAAc,8BAA8B,cAAc,wIAAwI,gBAAgB,kCAAkC,MAAM,6BAA6B,SAAS,gBAAgB,oCAAoC,MAAM,EAAE,0BAA0B,yBAAyB,SAAS,cAAc,wBAAwB,0BAA0B,EAAE,SAAS,cAAc,mBAAmB,wBAAwB,EAAE,SAAS,cAAc,aAAa,cAAc,cAAc,oCAAoC,2BAA2B,iEAAiE,gBAAgB,cAAc,kBAAkB,6DAA6D,cAAc,oKAAoK,cAAc,uFAAuF,qLAAqL,cAAc,sBAAsB,kBAAkB,+BAA+B,kCAAkC,SAAS,cAAc,+BAA+B,wCAAwC,mKAAmK,OAAO,SAAS,EAAE,KAAK,oBAAoB,MAAM,EAAE,iCAAiC,SAAS,6EAA6E,cAAc,iDAAiD,KAAK,WAAW,YAAY,YAAY,mBAAmB,UAAU,SAAS,SAAS,cAAc,iBAAiB,eAAe,4CAA4C,eAAe,wCAAwC,eAAe,+CAA+C,iBAAiB,gDAAgD,eAAe,mBAAmB,eAAe,0BAA0B,IAAI,iBAAiB,iBAAiB,gEAAgE,cAAc,eAAe,gBAAgB,oDAAoD,iBAAiB,oBAAoB,iBAAiB,MAAM,WAAW,SAAS,iBAAiB,wBAAwB,wBAAwB,EAAE,SAAS,iBAAiB,mBAAmB,sBAAsB,EAAE,SAAS,iBAAiB,wBAAwB,MAAM,0BAA0B,SAAS,qBAAqB,gCAAgC,MAAM,EAAE,mBAAmB,kBAAkB,SAAS,iBAAiB,kCAAkC,MAAM,EAAE,WAAW,qBAAqB,SAAS,iBAAiB,gCAAgC,MAAM,kBAAkB,SAAS,qBAAqB,oBAAoB,qBAAqB,MAAM,iBAAiB,SAAS,qBAAqB,eAAe,qBAAqB,IAAI,iBAAiB,SAAS,iBAAiB,wBAAwB,MAAM,yBAAyB,SAAS,eAAe,uBAAuB,IAAI,aAAa,SAAS,iBAAiB,iBAAiB,qBAAqB,+BAA+B,mBAAmB,gCAAgC,MAAM,EAAE,oCAAoC,+CAA+C,SAAS,iBAAiB,+BAA+B,iBAAiB,qEAAqE,MAAM,EAAE,WAAW,+BAA+B,SAAS,mBAAmB,QAAQ,EAAE,wBAAwB,MAAM,EAAE,WAAW,UAAU,SAAS,mBAAmB,eAAe,uFAAuF,2BAA2B,MAAM,yCAAyC,mBAAmB,YAAY,MAAM,6BAA6B,KAAK,wBAAwB,qDAAqD,uBAAuB,YAAY,sBAAsB,oBAAoB,mBAAmB,IAAI,wBAAwB,qDAAqD,uBAAuB,IAAI,mBAAmB,wCAAwC,qBAAqB,aAAa,IAAI,iBAAiB,wBAAwB,eAAe,gEAAgE,mBAAmB,OAAO,MAAM,EAAE,WAAW,aAAa,YAAY,IAAI,wBAAwB,UAAU,2BAA2B,SAAS,iBAAiB,SAAS,4BAA4B,oBAAoB,IAAI,qBAAqB,YAAY,4BAA4B,gBAAgB,kCAAkC,IAAI,qBAAqB,eAAe,gGAAgG,IAAI,UAAU,SAAS,iBAAiB,SAAS,4BAA4B,oBAAoB,IAAI,qBAAqB,MAAM,2BAA2B,oCAAoC,IAAI,mBAAmB,kCAAkC,MAAM,EAAE,WAAW,mCAAmC,iBAAiB,wBAAwB,MAAM,aAAa,mBAAmB,SAAS,iBAAiB,kBAAkB,iBAAiB,kBAAkB,iBAAiB,kBAAkB,iBAAiB,kCAAkC,MAAM,EAAE,WAAW,qBAAqB,SAAS,mBAAmB,YAAY,+BAA+B,uBAAuB,aAAa,iBAAiB,oBAAoB,yBAAyB,gFAAgF,2BAA2B,4BAA4B,sFAAsF,yCAAyC,8BAA8B,OAAO,gEAAgE,sDAAsD,eAAe,oBAAoB,mBAAmB,IAAI,2BAA2B,oBAAoB,+BAA+B,yBAAyB,mBAAmB,wBAAwB,oBAAoB,YAAY,IAAI,EAAE,WAAW,+CAA+C,KAAK,MAAM,EAAE,OAAO,yBAAyB,YAAY,6BAA6B,KAAK,mBAAmB,qCAAqC,SAAS,iBAAiB,iCAAiC,4BAA4B,gBAAgB,IAAI,eAAe,YAAY,yBAAyB,wBAAwB,mBAAmB,uDAAuD,mBAAmB,gBAAgB,iBAAiB,kCAAkC,2BAA2B,oBAAoB,QAAQ,6BAA6B,qDAAqD,gBAAgB,+CAA+C,uBAAuB,mBAAmB,2CAA2C,6BAA6B,+DAA+D,KAAK,sCAAsC,iEAAiE,IAAI,2BAA2B,0BAA0B,IAAI,mCAAmC,sCAAsC,4FAA4F,6EAA6E,eAAe,mBAAmB,2BAA2B,eAAe,WAAW,2BAA2B,kBAAkB,iBAAiB,uBAAuB,IAAI,EAAE,WAAW,gBAAgB,QAAQ,gBAAgB,SAAS,iBAAiB,0BAA0B,uBAAuB,2BAA2B,wBAAwB,IAAI,mBAAmB,oBAAoB,8FAA8F,gBAAgB,MAAM,aAAa,SAAS,iBAAiB,MAAM,4BAA4B,qBAAqB,MAAM,iBAAiB,eAAe,cAAc,IAAI,iBAAiB,SAAS,mBAAmB,gBAAgB,mBAAmB,YAAY,EAAE,uBAAuB,uBAAuB,YAAY,EAAE,OAAO,8BAA8B,EAAE,0BAA0B,gBAAgB,EAAE,iBAAiB,QAAQ,4BAA4B,gBAAgB,IAAI,iBAAiB,iEAAiE,8BAA8B,OAAO,MAAM,EAAE,0BAA0B,aAAa,mBAAmB,IAAI,wBAAwB,uBAAuB,+CAA+C,SAAS,iBAAiB,gCAAgC,MAAM,cAAc,SAAS,qBAAqB,4BAA4B,2BAA2B,EAAE,iDAAiD,iBAAiB,QAAQ,8BAA8B,wBAAwB,MAAM,EAAE,iBAAiB,+CAA+C,SAAS,mBAAmB,uBAAuB,qCAAqC,KAAK,IAAI,EAAE,qBAAqB,iCAAiC,SAAS,oBAAoB,qBAAqB,OAAO,sDAAsD,IAAI,EAAE,4CAA4C,gBAAgB,8DAA8D,YAAY,gBAAgB,mBAAmB,kCAAkC,kBAAkB,UAAU,0BAA0B,oBAAoB,8BAA8B,wBAAwB,gCAAgC,0BAA0B,kCAAkC,4BAA4B,kBAAkB,6BAA6B,eAAe,oBAAoB,mBAAmB,qEAAqE,MAAM,WAAW,KAAK,MAAM,cAAc,KAAK,IAAI,eAAe,SAAS,mBAAmB,0EAA0E,MAAM,WAAW,YAAY,MAAM,aAAa,KAAK,MAAM,kBAAkB,SAAS,iBAAiB,uBAAuB,eAAe,6CAA6C,MAAM,EAAE,WAAW,kBAAkB,0BAA0B,kBAAkB,EAAE,UAAU,eAAe,wBAAwB,yEAAyE,sHAAsH,MAAM,EAAE,WAAW,YAAY,SAAS,EAAE,iBAAiB,qBAAqB,gBAAgB,wBAAwB,yBAAyB,gCAAgC,EAAE,UAAU,eAAe,uBAAuB,2CAA2C,YAAY,EAAE,WAAW,0BAA0B,UAAU,iBAAiB,aAAa,6CAA6C,4BAA4B,YAAY,SAAS,eAAe,mBAAmB,yCAAyC,MAAM,eAAe,UAAU,eAAe,kBAAkB,gBAAgB,iBAAiB,oBAAoB,0BAA0B,+BAA+B,oCAAoC,yCAAyC,8CAA8C,qCAAqC,kBAAkB,eAAe,kBAAkB,uBAAuB,yCAAyC,qCAAqC,SAAS,iBAAiB,uBAAuB,mDAAmD,QAAQ,kBAAkB,6BAA6B,oBAAoB,iBAAiB,uBAAuB,sBAAsB,eAAe,mBAAmB,kBAAkB,eAAe,uBAAuB,8CAA8C,eAAe,uBAAuB,iCAAiC,eAAe,kBAAkB,kDAAkD,YAAY,EAAE,0BAA0B,wCAAwC,sDAAsD,aAAa,MAAM,EAAE,OAAO,sCAAsC,oHAAoH,kBAAkB,gBAAgB,yDAAyD,wCAAwC,MAAM,qBAAqB,WAAW,iBAAiB,uBAAuB,gEAAgE,eAAe,uBAAuB,8DAA8D,eAAe,uBAAuB,2DAA2D,eAAe,uBAAuB,SAAS,wCAAwC,eAAe,uBAAuB,KAAK,eAAe,uBAAuB,2CAA2C,eAAe,uBAAuB,yBAAyB,wBAAwB,EAAE,SAAS,iBAAiB,yBAAyB,yBAAyB,2EAA2E,iCAAiC,aAAa,uCAAuC,IAAI,mBAAmB,2CAA2C,6BAA6B,oBAAoB,2EAA2E,oCAAoC,4CAA4C,yCAAyC,0BAA0B,gHAAgH,uDAAuD,SAAS,mBAAmB,eAAe,8BAA8B,UAAU,0DAA0D,qBAAqB,aAAa,0DAA0D,MAAM,WAAW,KAAK,IAAI,uBAAuB,6CAA6C,2BAA2B,kBAAkB,SAAS,eAAe,yBAAyB,YAAY,qDAAqD,6BAA6B,UAAU,4CAA4C,mBAAmB,gDAAgD,YAAY,SAAS,2CAA2C,8FAA8F,+DAA+D,cAAc,cAAc,2BAA2B,+BAA+B,4BAA4B,KAAK,MAAM,EAAE,yCAAyC,UAAU,cAAc,SAAS,MAAM,qBAAqB,6BAA6B,WAAW,wCAAwC,SAAS,mBAAmB,UAAU,2BAA2B,mDAAmD,gCAAgC,8BAA8B,SAAS,2BAA2B,0CAA0C,qBAAqB,YAAY,IAAI,EAAE,WAAW,qCAAqC,YAAY,MAAM,EAAE,OAAO,yCAAyC,sCAAsC,wBAAwB,OAAO,oCAAoC,sIAAsI,SAAS,mBAAmB,qBAAqB,kCAAkC,eAAe,wCAAwC,IAAI,EAAE,oBAAoB,+BAA+B,SAAS,mBAAmB,oBAAoB,iCAAiC,eAAe,2BAA2B,IAAI,qBAAqB,SAAS,iBAAiB,qBAAqB,iBAAiB,mBAAmB,4BAA4B,MAAM,EAAE,oBAAoB,eAAe,gBAAgB,MAAM,qBAAqB,MAAM,uBAAuB,MAAM,6BAA6B,OAAO,eAAe,eAAe,sCAAsC,yFAAyF,eAAe,oBAAoB,yDAAyD,mBAAmB,oBAAoB,UAAU,qBAAqB,+BAA+B,kGAAkG,eAAe,8CAA8C,+BAA+B,wCAAwC,wBAAwB,SAAS,mBAAmB,qEAAqE,qBAAqB,8BAA8B,eAAe,0BAA0B,iBAAiB,+EAA+E,mBAAmB,mBAAmB,eAAe,0DAA0D,WAAW,yBAAyB,SAAS,iBAAiB,eAAe,iDAAiD,kBAAkB,kBAAkB,8BAA8B,eAAe,YAAY,gCAAgC,WAAW,kBAAkB,YAAY,oBAAoB,eAAe,8CAA8C,eAAe,qBAAqB,iBAAiB,0FAA0F,mBAAmB,4BAA4B,WAAW,MAAM,WAAW,oDAAoD,0LAA0L,iBAAiB,QAAQ,6BAA6B,MAAM,EAAE,WAAW,oBAAoB,SAAS,iBAAiB,SAAS,4BAA4B,mBAAmB,IAAI,iBAAiB,4CAA4C,IAAI,EAAE,WAAW,oBAAoB,SAAS,eAAe,kBAAkB,iJAAiJ,MAAM,uCAAuC,yBAAyB,8BAA8B,IAAI,uBAAuB,eAAe,uFAAuF,MAAM,EAAE,WAAW,sCAAsC,SAAS,eAAe,wFAAwF,eAAe,oCAAoC,gCAAgC,MAAM,kBAAkB,SAAS,qBAAqB,eAAe,kBAAkB,SAAS,yCAAyC,kCAAkC,IAAI,eAAe,mFAAmF,mBAAmB,sCAAsC,8CAA8C,IAAI,qBAAqB,SAAS,eAAe,sCAAsC,MAAM,EAAE,WAAW,cAAc,SAAS,mBAAmB,mBAAmB,yDAAyD,mBAAmB,mBAAmB,uEAAuE,mBAAmB,4CAA4C,mBAAmB,yCAAyC,qBAAqB,mBAAmB,sEAAsE,eAAe,gBAAgB,mBAAmB,mBAAmB,yCAAyC,eAAe,mBAAmB,qBAAqB,mBAAmB,mBAAmB,eAAe,wCAAwC,WAAW,qBAAqB,+BAA+B,mBAAmB,eAAe,eAAe,eAAe,mBAAmB,kBAAkB,mBAAmB,mBAAmB,eAAe,QAAQ,uDAAuD,WAAW,eAAe,WAAW,+BAA+B,0BAA0B,KAAK,IAAI,sBAAsB,SAAS,cAAc,uBAAuB,0BAA0B,8BAA8B,MAAM,oBAAoB,gBAAgB,gBAAgB,SAAS,mBAAmB,SAAS,0BAA0B,yBAAyB,gBAAgB,MAAM,EAAE,WAAW,gCAAgC,iBAAiB,eAAe,eAAe,mBAAmB,mBAAmB,oEAAoE,mBAAmB,mBAAmB,2DAA2D,mBAAmB,mBAAmB,qEAAqE,mBAAmB,4CAA4C,mBAAmB,sCAAsC,qBAAqB,mBAAmB,eAAe,4DAA4D,WAAW,gEAAgE,eAAe,0BAA0B,aAAa,mBAAmB,0CAA0C,EAAE,gBAAgB,MAAM,kBAAkB,SAAS,mBAAmB,mBAAmB,eAAe,YAAY,+CAA+C,oBAAoB,GAAG,cAAc,gCAAgC,MAAM,EAAE,mBAAmB,2CAA2C,kBAAkB,iBAAiB,6BAA6B,4BAA4B,MAAM,EAAE,WAAW,8BAA8B,SAAS,eAAe,WAAW,wBAAwB,mBAAmB,qBAAqB,mBAAmB,mBAAmB,cAAc,gBAAgB,cAAc,0CAA0C,eAAe,iBAAiB,eAAe,EAAE,YAAY,sBAAsB,QAAQ,gBAAgB,yBAAyB,cAAc,uBAAuB,yHAAyH,mBAAmB,EAAE,cAAc,uBAAuB,cAAc,6CAA6C,mBAAmB,kBAAkB,kFAAkF,mBAAmB,kBAAkB,0BAA0B,iBAAiB,mBAAmB,qBAAqB,gBAAgB,wKAAwK,mBAAmB,kBAAkB,0BAA0B,iBAAiB,mBAAmB,mBAAmB,kBAAkB,uCAAuC,gBAAgB,EAAE,mBAAmB,wBAAwB,QAAQ,eAAe,0BAA0B,kCAAkC,wBAAwB,MAAM,EAAE,qBAAqB,iBAAiB,oBAAoB,eAAe,gBAAgB,eAAe,gBAAgB,4BAA4B,mBAAmB,kBAAkB,kFAAkF,mBAAmB,oBAAoB,uBAAuB,SAAS,YAAY,2BAA2B,OAAO,qCAAqC,EAAE,eAAe,qBAAqB,yGAAyG,iBAAiB,mBAAmB,iBAAiB,yBAAyB,wCAAwC,QAAQ,QAAQ,iCAAiC,4CAA4C,mBAAmB,8FAA8F,iBAAiB,MAAM,yBAAyB,wCAAwC,QAAQ,QAAQ,kBAAkB,2DAA2D,mBAAmB,aAAa,0BAA0B,aAAa,iBAAiB,cAAc,SAAS,QAAQ,oDAAoD,eAAe,aAAa,sEAAsE,aAAa,6DAA6D,KAAK,YAAY,0BAA0B,mDAAmD,0FAA0F,gCAAgC,wCAAwC,yBAAyB,SAAS,KAAK,6FAA6F,oBAAoB,iBAAiB,iEAAiE,iBAAiB,mDAAmD,4BAA4B,sBAAsB,6BAA6B,8BAA8B,eAAe,wCAAwC,kBAAkB,gCAAgC,eAAe,eAAe,iBAAiB,wCAAwC,iDAAiD,oDAAoD,MAAM;;AAE3y+B,WAAU,6BAA6B,kCAAkC,uCAAuC,cAAc,SAAS,MAAM,WAAW,+BAA+B,eAAe,wCAAwC,mBAAmB,wBAAwB,mBAAmB,cAAc,wCAAwC,8IAA8I,iBAAiB,0CAA0C,qBAAqB,kIAAkI,mBAAmB,uDAAuD,iBAAiB,WAAW,iBAAiB,YAAY,eAAe,kCAAkC,eAAe,2CAA2C,eAAe,2BAA2B,eAAe,4FAA4F,eAAe,2FAA2F,qBAAqB,mCAAmC,iBAAiB,2BAA2B,eAAe,uDAAuD,eAAe,eAAe,wCAAwC,qBAAqB,wDAAwD,eAAe,oBAAoB,eAAe,gFAAgF,eAAe,gBAAgB,eAAe,8CAA8C,eAAe,4BAA4B,eAAe,+CAA+C,eAAe,4CAA4C,eAAe,aAAa,iBAAiB,WAAW,iBAAiB,YAAY,eAAe,gBAAgB,0EAA0E,eAAe,mBAAmB,mBAAmB,YAAY,0CAA0C,eAAe,mBAAmB,mBAAmB,iCAAiC,iBAAiB,iBAAiB,oBAAoB,mBAAmB,eAAe,6DAA6D,uBAAuB,8DAA8D,mBAAmB,uBAAuB,qCAAqC,MAAM,EAAE,kBAAkB,4CAA4C,SAAS,eAAe,oBAAoB,iBAAiB,2BAA2B,wCAAwC,oJAAoJ,MAAM,WAAW,4HAA4H,6BAA6B,mDAAmD,6BAA6B,IAAI,EAAE,QAAQ,WAAW,gDAAgD,SAAS,eAAe,QAAQ,wCAAwC,MAAM,EAAE,WAAW,cAAc,SAAS,mBAAmB,yBAAyB,oIAAoI,mBAAmB,oBAAoB,WAAW,gCAAgC,kCAAkC,eAAe,EAAE,WAAW,sDAAsD,UAAU,SAAS,qBAAqB,mBAAmB,oCAAoC,oBAAoB,8CAA8C,UAAU,kCAAkC,kBAAkB,IAAI,eAAe,mBAAmB,eAAe,mBAAmB,mBAAmB,6EAA6E,mBAAmB,yBAAyB,wBAAwB,yIAAyI,WAAW,mDAAmD,eAAe,eAAe,sDAAsD,eAAe,gDAAgD,mBAAmB,aAAa,eAAe,uEAAuE,eAAe,8CAA8C,eAAe,mDAAmD,mBAAmB,YAAY,eAAe,yBAAyB,8BAA8B,qCAAqC,mBAAmB,mCAAmC,iBAAiB,SAAS,wCAAwC,8BAA8B,SAAS,SAAS,mBAAmB,yEAAyE,mBAAmB,yBAAyB,0CAA0C,aAAa,kBAAkB,mRAAmR,kCAAkC,iGAAiG,QAAQ,qFAAqF,QAAQ,IAAI,iBAAiB,mBAAmB,UAAU,8DAA8D,gCAAgC,2BAA2B,EAAE,oFAAoF,oBAAoB,iCAAiC,MAAM,qBAAqB,EAAE,oBAAoB,sCAAsC,EAAE,4BAA4B,SAAS,mBAAmB,QAAQ,6FAA6F,mBAAmB,QAAQ,gEAAgE,mBAAmB,QAAQ,iFAAiF,mBAAmB,uBAAuB,YAAY,qBAAqB,oCAAoC,+DAA+D,aAAa,+BAA+B,iBAAiB,gBAAgB,mBAAmB,sBAAsB,UAAU,yBAAyB,uBAAuB,kEAAkE,YAAY,WAAW,0BAA0B,2BAA2B,uBAAuB,uBAAuB,WAAW,eAAe,8CAA8C,mBAAmB,wDAAwD,mBAAmB,iDAAiD,eAAe,kBAAkB,UAAU,eAAe,SAAS,eAAe,oBAAoB,iBAAiB,sBAAsB,mBAAmB,YAAY,sDAAsD,sCAAsC,mBAAmB,iCAAiC,4CAA4C,KAAK,MAAM,EAAE,kBAAkB,sCAAsC,kBAAkB,qBAAqB,SAAS,+DAA+D,eAAe,gCAAgC,kBAAkB,qBAAqB,2CAA2C,KAAK,SAAS,cAAc,mBAAmB,eAAe,eAAe,yBAAyB,eAAe,mBAAmB,yBAAyB,mBAAmB,6EAA6E,8CAA8C,MAAM,aAAa,SAAS,mBAAmB,gCAAgC,wBAAwB,gBAAgB,MAAM,qBAAqB,SAAS,eAAe,WAAW,cAAc,iBAAiB,sBAAsB,mBAAmB,uBAAuB,qBAAqB,gEAAgE,iDAAiD,gqBAAgqB,IAAI,sDAAsD,UAAU,eAAe,iTAAiT,OAAO,gMAAgM,UAAU,mBAAmB,wDAAwD,eAAe,sCAAsC,oBAAoB,2BAA2B,QAAQ,eAAe,mBAAmB,kCAAkC,YAAY,mBAAmB,EAAE,oBAAoB,aAAa,iBAAiB,SAAS,IAAI,aAAa,MAAM,aAAa,eAAe,6BAA6B,4SAA4S,IAAI,iDAAiD,SAAS,WAAW,0BAA0B,0DAA0D,MAAM,kBAAkB,cAAc,mBAAmB,UAAU,cAAc,YAAY,iBAAiB,cAAc,gEAAgE,qBAAqB,IAAI,2BAA2B,sDAAsD,MAAM,oBAAoB,qBAAqB,kDAAkD,WAAW,0BAA0B,iBAAiB,4BAA4B,iBAAiB,kCAAkC,YAAY,qBAAqB,qBAAqB,YAAY,mBAAmB,SAAS,gBAAgB,uBAAuB,kCAAkC,sCAAsC,kDAAkD,IAAI,EAAE,2BAA2B,oCAAoC,sCAAsC,OAAO,MAAM,mCAAmC,YAAY,IAAI,EAAE,WAAW,wCAAwC,uBAAuB,SAAS,sBAAsB,QAAQ,cAAc,yBAAyB,sCAAsC,uBAAuB,sBAAsB,wBAAwB,8BAA8B,6CAA6C,uGAAuG,sBAAsB,oCAAoC,wBAAwB,2BAA2B,yEAAyE,mCAAmC,wBAAwB,OAAO,wBAAwB,gEAAgE,wBAAwB,+BAA+B,gCAAgC,IAAI,wBAAwB,iBAAiB,YAAY,cAAc,gDAAgD,oBAAoB,WAAW,uDAAuD,oBAAoB,yBAAyB,uBAAuB,QAAQ,aAAa,0BAA0B,KAAK,qBAAqB,sBAAsB,uBAAuB,wBAAwB,MAAM,EAAE,WAAW,kBAAkB,SAAS,wBAAwB,UAAU,aAAa,0BAA0B,KAAK,qBAAqB,wCAAwC,iBAAiB,wBAAwB,iBAAiB,0DAA0D,oCAAoC,EAAE,4BAA4B,8DAA8D,EAAE,uBAAuB,0CAA0C,wBAAwB,wCAAwC,EAAE,uBAAuB,gCAAgC,mCAAmC,qBAAqB,qBAAqB,yDAAyD,4CAA4C,8BAA8B,0BAA0B,2BAA2B,oBAAoB,WAAW,4CAA4C,gFAAgF,iCAAiC,wHAAwH,oDAAoD,oBAAoB,4BAA4B,mBAAmB,yBAAyB,sBAAsB,4BAA4B,gBAAgB,EAAE,sBAAsB,iBAAiB,2DAA2D,wBAAwB,sEAAsE,wBAAwB,oCAAoC,oBAAoB,oCAAoC,8EAA8E,EAAE,0BAA0B,oCAAoC,wBAAwB,2DAA2D,sBAAsB,IAAI,oBAAoB,SAAS,0BAA0B,sBAAsB,mBAAmB,kBAAkB,sBAAsB,mBAAmB,kBAAkB,4BAA4B,48FAA48F,SAAS,0BAA0B,yBAAyB,IAAI,kDAAkD,qDAAqD,eAAe,mBAAmB,6FAA6F,mBAAmB,4DAA4D,kBAAkB,6BAA6B,gGAAgG,eAAe,2DAA2D,yBAAyB,mCAAmC,gBAAgB,2BAA2B,8DAA8D,oGAAoG,KAAK,oCAAoC,QAAQ,uCAAuC,EAAE,SAAS,oCAAoC,sCAAsC,2CAA2C,yCAAyC,oCAAoC,4BAA4B,0BAA0B,8BAA8B,sCAAsC,4BAA4B,0BAA0B,mBAAmB,qCAAqC,iCAAiC,2BAA2B,sBAAsB,iCAAiC,uBAAuB,kCAAkC,2CAA2C,YAAY,EAAE,iCAAiC,kBAAkB,WAAW,yGAAyG,gCAAgC,oBAAoB,8BAA8B,WAAW,MAAM,2EAA2E,0BAA0B,mHAAmH,kDAAkD,YAAY,mDAAmD,kBAAkB,UAAU,mCAAmC,MAAM,qCAAqC,2BAA2B,wCAAwC,QAAQ,2BAA2B,EAAE,kBAAkB,sBAAsB,oGAAoG,8MAA8M,8BAA8B,yCAAyC,GAAG,0BAA0B,gBAAgB,sEAAsE,oBAAoB,GAAG,+BAA+B,WAAW,MAAM,iCAAiC,QAAQ,cAAc,GAAG,wBAAwB,yBAAyB,+YAA+Y,8qBAA8qB,2DAA2D,mCAAmC,wRAAwR,4FAA4F,MAAM,aAAa,OAAO,sKAAsK,qEAAqE,8DAA8D,sgBAAsgB,6JAA6J,UAAU,6JAA6J,QAAQ,iCAAiC,KAAK,qfAAqf,KAAK,UAAU,WAAW,WAAW,aAAa,YAAY,YAAY,EAAE,KAAK,MAAM,WAAW,WAAW,aAAa,YAAY,YAAY,MAAM,KAAK,wBAAwB,KAAK,sEAAsE,4SAA4S,IAAI,QAAQ,WAAW,KAAK,SAAS,kBAAkB,UAAU,mBAAmB,6DAA6D,UAAU,8FAA8F,UAAU,kDAAkD,aAAa,GAAG,sBAAsB,oFAAoF,0GAA0G,kBAAkB,cAAc,sDAAsD,iBAAiB,gDAAgD,iHAAiH,GAAG,EAAE,0IAA0I,sBAAsB,4FAA4F,uEAAuE,QAAQ,aAAa,2CAA2C,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,OAAO,eAAe,QAAQ,uCAAuC,OAAO,cAAc,OAAO,gBAAgB,EAAE,6BAA6B,OAAO,gBAAgB,EAAE,aAAa,wCAAwC,uCAAuC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,mCAAmC,MAAM,cAAc,EAAE,oBAAoB,EAAE,gCAAgC,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,wCAAwC,QAAQ,cAAc,EAAE,uBAAuB,EAAE,2BAA2B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,kCAAkC,OAAO,cAAc,EAAE,kBAAkB,EAAE,+BAA+B,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,4BAA4B,SAAS,aAAa,QAAQ,uCAAuC,QAAQ,cAAc,EAAE,sBAAsB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,KAAK,4BAA4B,IAAI,6BAA6B,MAAM,oBAAoB,0BAA0B,QAAQ,MAAM,6BAA6B,MAAM,aAAa,6BAA6B,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,MAAM,4BAA4B,IAAI,6BAA6B,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,oBAAoB,2BAA2B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,mBAAmB,kCAAkC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,2BAA2B,6BAA6B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,qBAAqB,8BAA8B,QAAQ,OAAO,sCAAsC,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,EAAE,8BAA8B,QAAQ,GAAG,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,mCAAmC,OAAO,cAAc,EAAE,mBAAmB,EAAE,gCAAgC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,4BAA4B,SAAS,4CAA4C,MAAM,yBAAyB,mBAAmB,OAAO,yCAAyC,UAAU,cAAc,EAAE,sBAAsB,kBAAkB,mDAAmD,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,0BAA0B,gCAAgC,QAAQ,OAAO,uEAAuE,QAAQ,eAAe,gBAAgB,kCAAkC,UAAU,YAAY,sBAAsB,4CAA4C,eAAe,oCAAoC,0BAA0B,gDAAgD,gBAAgB,oFAAoF,QAAQ,uCAAuC,OAAO,gBAAgB,EAAE,uBAAuB,EAAE,sCAAsC,QAAQ,OAAO,eAAe,gBAAgB,mCAAmC,MAAM,+BAA+B,qCAAqC,QAAQ,cAAc,qCAAqC,MAAM,yBAAyB,cAAc,iCAAiC,QAAQ,QAAQ;AACpv+B,gBAAe,UAAU,eAAe,SAAS,iGAAiG,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,wBAAwB,eAAe,+BAA+B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,eAAe,qCAAqC,QAAQ,kDAAkD,QAAQ,iGAAiG,QAAQ,cAAc,EAAE,uCAAuC,QAAQ,mGAAmG,EAAE,sBAAsB,EAAE,+BAA+B,QAAQ,cAAc,oCAAoC,QAAQ,6BAA6B,QAAQ,6CAA6C,QAAQ,cAAc,EAAE,sBAAsB,EAAE,aAAa,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,WAAW,+BAA+B,aAAa,cAAc,UAAU,cAAc,SAAS,eAAe,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,gBAAgB,sBAAsB,QAAQ,QAAQ,cAAc,UAAU,YAAY,aAAa,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,iBAAiB,qCAAqC,gBAAgB,oCAAoC,UAAU,cAAc,cAAc,wFAAwF,QAAQ,0DAA0D,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,kDAAkD,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,iBAAiB,QAAQ,aAAa,2CAA2C,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,UAAU,cAAc,cAAc,wFAAwF,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,iBAAiB,qBAAqB,QAAQ,UAAU,cAAc,cAAc,2CAA2C,kBAAkB,wEAAwE,KAAK,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,cAAc,sDAAsD,IAAI,cAAc,UAAU,cAAc,SAAS,cAAc,UAAU,aAAa,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,8BAA8B,OAAO,cAAc,kBAAkB,oBAAoB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,gBAAgB,iBAAiB,sBAAsB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,gBAAgB,iBAAiB,cAAc,QAAQ,QAAQ,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,eAAe,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,eAAe,QAAQ,iBAAiB,uCAAuC,WAAW,cAAc,kBAAkB,wEAAwE,KAAK,cAAc,SAAS,YAAY,UAAU,eAAe,yBAAyB,+CAA+C,SAAS,cAAc,aAAa,cAAc,IAAI,cAAc,UAAU,cAAc,SAAS,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,oCAAoC,MAAM,kDAAkD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,WAAW,QAAQ,QAAQ,YAAY,SAAS,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,UAAU,cAAc,cAAc,wFAAwF,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,iBAAiB,iBAAiB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,iBAAiB,iBAAiB,QAAQ,QAAQ,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,UAAU,cAAc,cAAc,wFAAwF,MAAM,iDAAiD,OAAO,cAAc,OAAO,cAAc,KAAK,iBAAiB,mBAAmB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,iBAAiB,aAAa,QAAQ,aAAa,2CAA2C,SAAS,wEAAwE,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,YAAY,YAAY,MAAM,gBAAgB,UAAU,cAAc,cAAc,wFAAwF,QAAQ,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,iCAAiC,OAAO,cAAc,OAAO,gBAAgB,4BAA4B,+CAA+C,QAAQ,QAAQ,cAAc,WAAW,cAAc,cAAc,gCAAgC,QAAQ,cAAc,UAAU,YAAY,QAAQ,cAAc,cAAc,mCAAmC,OAAO,cAAc,YAAY,cAAc,SAAS,8DAA8D,QAAQ,gCAAgC,OAAO,gBAAgB,EAAE,gBAAgB,gBAAgB,oCAAoC,QAAQ,WAAW,iCAAiC,YAAY,eAAe,SAAS,YAAY,SAAS,eAAe,cAAc,mCAAmC,aAAa,kCAAkC,KAAK,eAAe,UAAU,+BAA+B,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,YAAY,WAAW,eAAe,aAAa,mCAAmC,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,gBAAgB,+BAA+B,QAAQ,SAAS,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,MAAM,8BAA8B,OAAO,gBAAgB,eAAe,gCAAgC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,uBAAuB,OAAO,gBAAgB,eAAe,mCAAmC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,uBAAuB,OAAO,cAAc,iBAAiB,qCAAqC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,wCAAwC,OAAO,YAAY,OAAO,cAAc,iBAAiB,uCAAuC,QAAQ,eAAe,mCAAmC,MAAM,0CAA0C,OAAO,YAAY,OAAO,cAAc,iBAAiB,wCAAwC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,gCAAgC,MAAM,gBAAgB,iBAAiB,sCAAsC,QAAQ,eAAe,kCAAkC,OAAO,aAAa,MAAM,yCAAyC,OAAO,YAAY,OAAO,cAAc,iBAAiB,gCAAgC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,MAAM,uBAAuB,OAAO,cAAc,eAAe,qCAAqC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,uGAAuG,QAAQ,gBAAgB,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,6BAA6B,MAAM,cAAc,EAAE,8BAA8B,OAAO,cAAc,gBAAgB,wCAAwC,QAAQ,OAAO,gBAAgB,MAAM,gCAAgC,MAAM,gBAAgB,eAAe,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,MAAM,iCAAiC,OAAO,YAAY,OAAO,cAAc,eAAe,+BAA+B,QAAQ,OAAO,eAAe,OAAO,eAAe,gBAAgB,sCAAsC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,8BAA8B,OAAO,cAAc,EAAE,cAAc,gBAAgB,6BAA6B,QAAQ,OAAO,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,oCAAoC,OAAO,YAAY,UAAU,cAAc,EAAE,uBAAuB,OAAO,cAAc,EAAE,kCAAkC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,6BAA6B,MAAM,cAAc,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,EAAE,oCAAoC,QAAQ,SAAS,YAAY,QAAQ,gBAAgB,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,+BAA+B,MAAM,cAAc,EAAE,gBAAgB,EAAE,yCAAyC,QAAQ,iBAAiB,uCAAuC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,2DAA2D,OAAO,YAAY,OAAO,YAAY,QAAQ,cAAc,EAAE,iDAAiD,OAAO,YAAY,QAAQ,cAAc,EAAE,gDAAgD,MAAM,YAAY,QAAQ,cAAc,EAAE,sCAAsC,OAAO,cAAc,EAAE,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,+BAA+B,MAAM,cAAc,EAAE,gBAAgB,EAAE,qCAAqC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,uGAAuG,eAAe,oCAAoC,QAAQ,gBAAgB,QAAQ,2CAA2C,OAAO,YAAY,OAAO,cAAc,EAAE,iCAAiC,OAAO,cAAc,EAAE,gCAAgC,MAAM,cAAc,EAAE,iBAAiB,EAAE,qCAAqC,QAAQ,cAAc,oCAAoC,QAAQ,gBAAgB,QAAQ,gCAAgC,MAAM,gBAAgB,EAAE,iBAAiB,EAAE,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,6BAA6B,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,EAAE,mCAAmC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,mDAAmD,OAAO,YAAY,OAAO,YAAY,OAAO,cAAc,EAAE,yCAAyC,OAAO,YAAY,OAAO,cAAc,EAAE,+BAA+B,OAAO,cAAc,EAAE,8BAA8B,MAAM,cAAc,EAAE,eAAe,EAAE,8BAA8B,QAAQ,SAAS,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,+FAA+F,MAAM,6BAA6B,OAAO,gBAAgB,eAAe,kCAAkC,QAAQ,OAAO,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,iBAAiB,sCAAsC,qBAAqB,2CAA2C,qBAAqB,2BAA2B,eAAe,qCAAqC,QAAQ,gBAAgB,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,gBAAgB,kCAAkC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,QAAQ,wCAAwC,OAAO,YAAY,OAAO,gBAAgB,EAAE,6BAA6B,MAAM,gBAAgB,eAAe,oCAAoC,QAAQ,iBAAiB,uCAAuC,UAAU,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,0CAA0C,OAAO,YAAY,OAAO,gBAAgB,EAAE,+BAA+B,MAAM,gBAAgB,2BAA2B,qCAAqC,QAAQ,eAAe,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,eAAe,qCAAqC,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,2BAA2B,qCAAqC,QAAQ,OAAO,cAAc,SAAS,4BAA4B,UAAU,YAAY,gBAAgB,kCAAkC,eAAe,qCAAqC,MAAM,gCAAgC,MAAM,gBAAgB,0BAA0B,mCAAmC,QAAQ,eAAe,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,mDAAmD,OAAO,YAAY,OAAO,YAAY,OAAO,gBAAgB,EAAE,yCAAyC,OAAO,YAAY,OAAO,gBAAgB,EAAE,8BAA8B,MAAM,gBAAgB,2BAA2B,kCAAkC,QAAQ,UAAU,4BAA4B,aAAa,+CAA+C,QAAQ,6BAA6B,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,EAAE,iCAAiC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,4BAA4B,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,gBAAgB,kCAAkC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,4BAA4B,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,EAAE,+BAA+B,QAAQ,kBAAkB,qCAAqC,kBAAkB,oCAAoC,SAAS,YAAY,SAAS,YAAY,QAAQ,4BAA4B,QAAQ,uEAAuE,QAAQ,aAAa,QAAQ,0CAA0C,OAAO,YAAY,SAAS,6MAA6M,EAAE,+BAA+B,QAAQ,6MAA6M,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,EAAE,gCAAgC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,2BAA2B,WAAW,eAAe,WAAW,gBAAgB,QAAQ,+BAA+B,OAAO,cAAc,EAAE,eAAe,EAAE,uCAAuC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,gBAAgB,2BAA2B,iCAAiC,QAAQ,gBAAgB,uCAAuC,kBAAkB,4FAA4F,oBAAoB,yCAAyC,oBAAoB,2CAA2C,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,gBAAgB,uCAAuC,QAAQ,SAAS,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,qBAAqB,2BAA2B,SAAS,cAAc,IAAI,eAAe,QAAQ,iDAAiD,OAAO,YAAY,OAAO,cAAc,EAAE,uCAAuC,OAAO,cAAc,EAAE,uBAAuB,gBAAgB,YAAY,KAAK,SAAS,YAAY,QAAQ,QAAQ,cAAc,SAAS,YAAY,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,oCAAoC,QAAQ,uCAAuC,OAAO,cAAc,OAAO,gBAAgB,EAAE,6BAA6B,OAAO,gBAAgB,EAAE,aAAa,4BAA4B,WAAW,QAAQ,QAAQ,cAAc,aAAa,iCAAiC,aAAa,kCAAkC,gBAAgB,qCAAqC,gBAAgB,qCAAqC,aAAa,kCAAkC,cAAc,mCAAmC,gBAAgB,qCAAqC,YAAY,8BAA8B,sBAAsB,4CAA4C,UAAU,cAAc,aAAa,iCAAiC,gBAAgB,kCAAkC,eAAe,mCAAmC,aAAa,iCAAiC,eAAe,mCAAmC,aAAa,iCAAiC,cAAc,gCAAgC,YAAY,+BAA+B,MAAM,8CAA8C,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,kBAAkB,QAAQ,QAAQ,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,6CAA6C,OAAO,cAAc,OAAO,gBAAgB,EAAE,mCAAmC,OAAO,gBAAgB,EAAE,mBAAmB,wCAAwC,eAAe,QAAQ,QAAQ,cAAc,aAAa,2IAA2I,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,wCAAwC,oBAAoB,QAAQ,QAAQ,cAAc,MAAM,wBAAwB,iBAAiB,+DAA+D,kBAAkB,gEAAgE,SAAS,wBAAwB,UAAU,wCAAwC,YAAY,wCAAwC,WAAW,wCAAwC,aAAa,0BAA0B,UAAU,0BAA0B,SAAS,2BAA2B,QAAQ,+CAA+C,OAAO,cAAc,OAAO,gBAAgB,EAAE,qCAAqC,OAAO,gBAAgB,EAAE,qBAAqB,gBAAgB,8CAA8C,QAAQ,UAAU,YAAY,YAAY,cAAc,UAAU,cAAc,OAAO,4CAA4C,QAAQ,0CAA0C,QAAQ,cAAc,EAAE,yBAAyB,EAAE,4BAA4B,QAAQ,cAAc,oCAAoC,QAAQ,6BAA6B,QAAQ,2CAA2C,QAAQ,YAAY,SAAS,6GAA6G,EAAE,+BAA+B,QAAQ,cAAc,EAAE,+BAA+B,QAAQ,6GAA6G,EAAE,cAAc,EAAE,gCAAgC,QAAQ,OAAO,YAAY,OAAO,gBAAgB,QAAQ,iDAAiD,QAAQ,cAAc,EAAE,iBAAiB,gBAAgB,6BAA6B,QAAQ,kBAAkB,qCAAqC,kBAAkB,oCAAoC,SAAS,YAAY,SAAS,eAAe,QAAQ,4BAA4B,QAAQ,iEAAiE,QAAQ,aAAa,QAAQ,kEAAkE,QAAQ,YAAY,SAAS,sHAAsH,cAAc,6MAA6M,EAAE,iDAAiD,QAAQ,YAAY,SAAS,wHAAwH,EAAE,sDAAsD,QAAQ,sHAAsH,cAAc,6MAA6M,EAAE,qCAAqC,QAAQ,cAAc,EAAE,qCAAqC,QAAQ,wHAAwH,EAAE,oBAAoB,EAAE,iBAAiB,QAAQ,QAAQ,cAAc,UAAU,YAAY,aAAa,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,kBAAkB,oDAAoD,iBAAiB,qCAAqC,gBAAgB,oCAAoC,mBAAmB,uCAAuC,sBAAsB,0CAA0C,UAAU,cAAc,cAAc,wFAAwF,QAAQ,oDAAoD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,4CAA4C,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,YAAY,KAAK,QAAQ,kCAAkC,iBAAiB,QAAQ,QAAQ,wEAAwE,UAAU,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,gBAAgB,0BAA0B,mBAAmB,QAAQ,QAAQ,wEAAwE,UAAU,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,gBAAgB,0BAA0B,cAAc,QAAQ,QAAQ,cAAc,SAAS,gBAAgB,WAAW,gCAAgC,QAAQ,yCAAyC,UAAU,gBAAgB,EAAE,sBAAsB,uCAAuC,cAAc,QAAQ,UAAU,cAAc,kBAAkB,uCAAuC,kBAAkB,wEAAwE,KAAK,cAAc,UAAU,eAAe,SAAS,YAAY,kBAAkB,oCAAoC,OAAO,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,eAAe,iCAAiC,UAAU,eAAe,yBAAyB,+CAA+C,aAAa,cAAc,IAAI,cAAc,UAAU,YAAY,SAAS,gBAAgB,aAAa,0IAA0I,OAAO,cAAc,OAAO,YAAY,SAAS,cAAc,UAAU;AAC3v+B,EAAC,iBAAiB,mCAAmC,iBAAiB,mCAAmC,iBAAiB,qCAAqC,QAAQ,YAAY,eAAe,mCAAmC,cAAc,2FAA2F,cAAc,kCAAkC,cAAc,gCAAgC,UAAU,YAAY,cAAc,mCAAmC,UAAU,eAAe,aAAa,mCAAmC,QAAQ,yCAAyC,OAAO,YAAY,OAAO,cAAc,EAAE,+BAA+B,OAAO,cAAc,EAAE,eAAe,gBAAgB,oBAAoB,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,WAAW,+BAA+B,aAAa,cAAc,UAAU,cAAc,SAAS,eAAe,QAAQ,gDAAgD,OAAO,YAAY,OAAO,cAAc,EAAE,sCAAsC,OAAO,cAAc,EAAE,sBAAsB,gBAAgB,oBAAoB,QAAQ,YAAY,cAAc,UAAU,cAAc,QAAQ,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,gDAAgD,OAAO,cAAc,OAAO,gBAAgB,EAAE,sCAAsC,OAAO,gBAAgB,EAAE,sBAAsB,gBAAgB,sBAAsB,QAAQ,QAAQ,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,aAAa,cAAc,UAAU,YAAY,SAAS,gBAAgB,aAAa,2IAA2I,QAAQ,kDAAkD,OAAO,YAAY,OAAO,cAAc,EAAE,wCAAwC,OAAO,cAAc,EAAE,wBAAwB,gBAAgB,gDAAgD,QAAQ,eAAe,kCAAkC,oBAAoB,wDAAwD,MAAM,4DAA4D,YAAY,cAAc,WAAW,gBAAgB,eAAe,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,YAAY,SAAS,gBAAgB,MAAM,sCAAsC,YAAY,gBAAgB,2BAA2B,oCAAoC,QAAQ,eAAe,mCAAmC,MAAM,oDAAoD,YAAY,cAAc,WAAW,gBAAgB,iBAAiB,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,aAAa,MAAM,sCAAsC,YAAY,cAAc,iBAAiB,8BAA8B,QAAQ,eAAe,mCAAmC,MAAM,oDAAoD,YAAY,cAAc,WAAW,eAAe,wCAAwC,QAAQ,eAAe,kCAAkC,QAAQ,gBAAgB,QAAQ,sCAAsC,YAAY,cAAc,EAAE,iBAAiB,EAAE,kCAAkC,QAAQ,eAAe,kCAAkC,oBAAoB,wDAAwD,MAAM,6DAA6D,YAAY,cAAc,WAAW,gBAAgB,eAAe,iCAAiC,QAAQ,eAAe,mCAAmC,QAAQ,4DAA4D,YAAY,cAAc,WAAW,cAAc,EAAE,8CAA8C,YAAY,gBAAgB,EAAE,yBAAyB,EAAE,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,aAAa,MAAM,8CAA8C,YAAY,gBAAgB,eAAe,eAAe,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,aAAa,cAAc,UAAU,cAAc,SAAS,eAAe,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,4BAA4B,kBAAkB,QAAQ,QAAQ,cAAc,iBAAiB,+DAA+D,kBAAkB,gEAAgE,SAAS,wBAAwB,UAAU,wCAAwC,YAAY,wCAAwC,WAAW,wCAAwC,aAAa,0BAA0B,UAAU,0BAA0B,SAAS,2BAA2B,QAAQ,qDAAqD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,6CAA6C,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,cAAc,QAAQ,aAAa,2CAA2C,SAAS,YAAY,OAAO,cAAc,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,kBAAkB,uCAAuC,UAAU,cAAc,UAAU,WAAW,iBAAiB,iBAAiB,sCAAsC,UAAU,YAAY,YAAY,YAAY,MAAM,gBAAgB,UAAU,cAAc,cAAc,8DAA8D,MAAM,iDAAiD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,4BAA4B,sBAAsB,oBAAoB,EAAE,EAAE,sBAAsB,sBAAsB,4FAA4F,uEAAuE,QAAQ,aAAa,2CAA2C,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,OAAO,eAAe,QAAQ,uCAAuC,OAAO,cAAc,OAAO,gBAAgB,EAAE,6BAA6B,OAAO,gBAAgB,EAAE,aAAa,wCAAwC,uCAAuC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,mCAAmC,MAAM,cAAc,EAAE,oBAAoB,EAAE,gCAAgC,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,wCAAwC,QAAQ,cAAc,EAAE,uBAAuB,EAAE,2BAA2B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,kCAAkC,OAAO,cAAc,EAAE,kBAAkB,EAAE,+BAA+B,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,4BAA4B,SAAS,aAAa,QAAQ,uCAAuC,QAAQ,cAAc,EAAE,sBAAsB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,KAAK,4BAA4B,IAAI,6BAA6B,MAAM,oBAAoB,0BAA0B,QAAQ,MAAM,6BAA6B,MAAM,aAAa,6BAA6B,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,MAAM,4BAA4B,IAAI,6BAA6B,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,oBAAoB,2BAA2B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,mBAAmB,kCAAkC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,2BAA2B,6BAA6B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,qBAAqB,8BAA8B,QAAQ,OAAO,sCAAsC,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,EAAE,8BAA8B,QAAQ,GAAG,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,mCAAmC,OAAO,cAAc,EAAE,mBAAmB,EAAE,gCAAgC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,4BAA4B,SAAS,4CAA4C,MAAM,yBAAyB,mBAAmB,OAAO,yCAAyC,UAAU,cAAc,EAAE,sBAAsB,kBAAkB,mDAAmD,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,0BAA0B,gCAAgC,QAAQ,OAAO,uEAAuE,QAAQ,eAAe,gBAAgB,kCAAkC,UAAU,YAAY,sBAAsB,4CAA4C,eAAe,oCAAoC,0BAA0B,gDAAgD,gBAAgB,oFAAoF,QAAQ,uCAAuC,OAAO,gBAAgB,EAAE,uBAAuB,EAAE,sCAAsC,QAAQ,OAAO,eAAe,gBAAgB,mCAAmC,MAAM,+BAA+B,qCAAqC,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,yBAAyB,cAAc,iCAAiC,QAAQ,QAAQ,8BAA8B,UAAU,eAAe,SAAS,iGAAiG,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,wBAAwB,eAAe,+BAA+B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,eAAe,oCAAoC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,kDAAkD,QAAQ,iGAAiG,QAAQ,cAAc,EAAE,uCAAuC,QAAQ,mGAAmG,EAAE,sBAAsB,EAAE,+BAA+B,QAAQ,cAAc,oCAAoC,QAAQ,6BAA6B,QAAQ,6CAA6C,QAAQ,cAAc,EAAE,sBAAsB,EAAE,aAAa,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,WAAW,+BAA+B,aAAa,cAAc,UAAU,cAAc,SAAS,eAAe,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,gBAAgB,sBAAsB,QAAQ,QAAQ,cAAc,UAAU,YAAY,aAAa,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,iBAAiB,qCAAqC,gBAAgB,oCAAoC,UAAU,cAAc,cAAc,wFAAwF,QAAQ,0DAA0D,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,kDAAkD,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,iBAAiB,QAAQ,aAAa,2CAA2C,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,UAAU,cAAc,cAAc,wFAAwF,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,iBAAiB,qBAAqB,QAAQ,UAAU,cAAc,cAAc,2CAA2C,kBAAkB,wEAAwE,KAAK,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,cAAc,sDAAsD,IAAI,cAAc,UAAU,cAAc,SAAS,cAAc,UAAU,aAAa,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,8BAA8B,OAAO,cAAc,kBAAkB,oBAAoB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,gBAAgB,iBAAiB,sBAAsB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,gBAAgB,iBAAiB,cAAc,QAAQ,QAAQ,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,eAAe,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,eAAe,QAAQ,iBAAiB,uCAAuC,WAAW,cAAc,kBAAkB,wEAAwE,KAAK,cAAc,SAAS,YAAY,UAAU,eAAe,yBAAyB,+CAA+C,SAAS,cAAc,aAAa,cAAc,IAAI,cAAc,UAAU,cAAc,SAAS,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,oCAAoC,MAAM,kDAAkD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,WAAW,QAAQ,QAAQ,YAAY,SAAS,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,UAAU,cAAc,cAAc,wFAAwF,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,iBAAiB,iBAAiB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,iBAAiB,iBAAiB,QAAQ,QAAQ,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,UAAU,cAAc,cAAc,wFAAwF,MAAM,iDAAiD,OAAO,cAAc,OAAO,cAAc,KAAK,iBAAiB,mBAAmB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,iBAAiB,aAAa,QAAQ,aAAa,2CAA2C,SAAS,wEAAwE,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,YAAY,YAAY,MAAM,gBAAgB,UAAU,cAAc,cAAc,wFAAwF,QAAQ,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,iCAAiC,OAAO,cAAc,OAAO,gBAAgB,4BAA4B,+CAA+C,QAAQ,QAAQ,cAAc,WAAW,cAAc,cAAc,gCAAgC,QAAQ,cAAc,UAAU,YAAY,QAAQ,cAAc,cAAc,mCAAmC,OAAO,cAAc,YAAY,cAAc,SAAS,8DAA8D,QAAQ,gCAAgC,OAAO,gBAAgB,EAAE,gBAAgB,gBAAgB,oCAAoC,QAAQ,WAAW,iCAAiC,YAAY,eAAe,SAAS,YAAY,SAAS,eAAe,cAAc,mCAAmC,aAAa,kCAAkC,KAAK,eAAe,UAAU,+BAA+B,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,YAAY,WAAW,eAAe,aAAa,mCAAmC,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,gBAAgB,+BAA+B,QAAQ,SAAS,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,MAAM,8BAA8B,OAAO,gBAAgB,eAAe,gCAAgC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,uBAAuB,OAAO,gBAAgB,eAAe,mCAAmC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,uBAAuB,OAAO,cAAc,iBAAiB,qCAAqC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,wCAAwC,OAAO,YAAY,OAAO,cAAc,iBAAiB,uCAAuC,QAAQ,eAAe,mCAAmC,MAAM,0CAA0C,OAAO,YAAY,OAAO,cAAc,iBAAiB,wCAAwC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,gCAAgC,MAAM,gBAAgB,iBAAiB,sCAAsC,QAAQ,eAAe,kCAAkC,OAAO,aAAa,MAAM,yCAAyC,OAAO,YAAY,OAAO,cAAc,iBAAiB,gCAAgC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,MAAM,uBAAuB,OAAO,cAAc,eAAe,qCAAqC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,uGAAuG,QAAQ,gBAAgB,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,6BAA6B,MAAM,cAAc,EAAE,8BAA8B,OAAO,cAAc,gBAAgB,wCAAwC,QAAQ,eAAe,kCAAkC,QAAQ,gBAAgB,MAAM,gCAAgC,MAAM,gBAAgB,eAAe,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,MAAM,iCAAiC,OAAO,YAAY,OAAO,cAAc,eAAe,+BAA+B,QAAQ,OAAO,eAAe,gBAAgB,sCAAsC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,8BAA8B,OAAO,cAAc,EAAE,cAAc,gBAAgB,6BAA6B,QAAQ,OAAO,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,oCAAoC,OAAO,YAAY,UAAU,cAAc,EAAE,uBAAuB,OAAO,cAAc,EAAE,kCAAkC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,6BAA6B,MAAM,cAAc,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,EAAE,oCAAoC,QAAQ,SAAS,YAAY,QAAQ,gBAAgB,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,+BAA+B,MAAM,cAAc,EAAE,gBAAgB,EAAE,yCAAyC,QAAQ,iBAAiB,uCAAuC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,2DAA2D,OAAO,YAAY,OAAO,YAAY,QAAQ,cAAc,EAAE,iDAAiD,OAAO,YAAY,QAAQ,cAAc,EAAE,gDAAgD,MAAM,YAAY,QAAQ,cAAc,EAAE,sCAAsC,OAAO,cAAc,EAAE,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,+BAA+B,MAAM,cAAc,EAAE,gBAAgB,EAAE,qCAAqC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,uGAAuG,eAAe,oCAAoC,QAAQ,gBAAgB,QAAQ,2CAA2C,OAAO,YAAY,OAAO,cAAc,EAAE,iCAAiC,OAAO,cAAc,EAAE,gCAAgC,MAAM,cAAc,EAAE,iBAAiB,EAAE,qCAAqC,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,QAAQ,gBAAgB,QAAQ,gCAAgC,MAAM,gBAAgB,EAAE,iBAAiB,EAAE,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,6BAA6B,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,EAAE,mCAAmC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,mDAAmD,OAAO,YAAY,OAAO,YAAY,OAAO,cAAc,EAAE,yCAAyC,OAAO,YAAY,OAAO,cAAc,EAAE,+BAA+B,OAAO,cAAc,EAAE,8BAA8B,MAAM,cAAc,EAAE,eAAe,EAAE,8BAA8B,QAAQ,SAAS,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,+FAA+F,MAAM,6BAA6B,OAAO,gBAAgB,eAAe,kCAAkC,QAAQ,OAAO,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,iBAAiB,sCAAsC,qBAAqB,2CAA2C,qBAAqB,2BAA2B,eAAe,qCAAqC,QAAQ,gBAAgB,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,gBAAgB,kCAAkC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,wCAAwC,OAAO,YAAY,OAAO,gBAAgB,cAAc,oCAAoC,QAAQ,iBAAiB,uCAAuC,UAAU,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,0CAA0C,OAAO,YAAY,OAAO,gBAAgB,EAAE,+BAA+B,MAAM,gBAAgB,2BAA2B,qCAAqC,QAAQ,eAAe,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,eAAe,qCAAqC,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,2BAA2B,qCAAqC,QAAQ,OAAO,cAAc,SAAS,4BAA4B,UAAU,YAAY,gBAAgB,kCAAkC,eAAe,qCAAqC,MAAM,gCAAgC,MAAM,gBAAgB,0BAA0B,mCAAmC,QAAQ,eAAe,kCAAkC,oBAAoB;AAClu+B,EAAC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,mDAAmD,OAAO,YAAY,OAAO,YAAY,OAAO,gBAAgB,EAAE,yCAAyC,OAAO,YAAY,OAAO,gBAAgB,EAAE,8BAA8B,MAAM,gBAAgB,2BAA2B,kCAAkC,QAAQ,UAAU,4BAA4B,aAAa,+CAA+C,QAAQ,6BAA6B,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,EAAE,iCAAiC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,4BAA4B,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,gBAAgB,kCAAkC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,4BAA4B,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,EAAE,+BAA+B,QAAQ,kBAAkB,qCAAqC,kBAAkB,oCAAoC,SAAS,YAAY,SAAS,YAAY,QAAQ,4BAA4B,QAAQ,uEAAuE,QAAQ,aAAa,QAAQ,0CAA0C,OAAO,YAAY,SAAS,6MAA6M,EAAE,+BAA+B,QAAQ,6MAA6M,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,EAAE,gCAAgC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,2BAA2B,WAAW,eAAe,WAAW,gBAAgB,QAAQ,+BAA+B,OAAO,cAAc,EAAE,eAAe,EAAE,uCAAuC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,gBAAgB,2BAA2B,iCAAiC,QAAQ,gBAAgB,uCAAuC,kBAAkB,4FAA4F,oBAAoB,yCAAyC,oBAAoB,2CAA2C,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,gBAAgB,uCAAuC,QAAQ,SAAS,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,qBAAqB,2BAA2B,SAAS,cAAc,IAAI,eAAe,QAAQ,iDAAiD,OAAO,YAAY,OAAO,cAAc,EAAE,uCAAuC,OAAO,cAAc,EAAE,uBAAuB,gBAAgB,YAAY,KAAK,SAAS,YAAY,QAAQ,QAAQ,cAAc,SAAS,YAAY,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,oCAAoC,QAAQ,uCAAuC,OAAO,cAAc,OAAO,gBAAgB,EAAE,6BAA6B,OAAO,gBAAgB,EAAE,aAAa,4BAA4B,WAAW,QAAQ,QAAQ,cAAc,aAAa,iCAAiC,aAAa,kCAAkC,gBAAgB,qCAAqC,gBAAgB,qCAAqC,aAAa,kCAAkC,cAAc,mCAAmC,gBAAgB,qCAAqC,YAAY,8BAA8B,sBAAsB,4CAA4C,UAAU,cAAc,aAAa,iCAAiC,gBAAgB,kCAAkC,eAAe,mCAAmC,aAAa,iCAAiC,eAAe,mCAAmC,aAAa,iCAAiC,cAAc,gCAAgC,YAAY,+BAA+B,MAAM,8CAA8C,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,kBAAkB,QAAQ,QAAQ,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,6CAA6C,OAAO,cAAc,OAAO,gBAAgB,EAAE,mCAAmC,OAAO,gBAAgB,EAAE,mBAAmB,wCAAwC,eAAe,QAAQ,QAAQ,cAAc,aAAa,2IAA2I,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,wCAAwC,oBAAoB,QAAQ,QAAQ,cAAc,MAAM,wBAAwB,iBAAiB,+DAA+D,kBAAkB,gEAAgE,SAAS,wBAAwB,UAAU,wCAAwC,YAAY,wCAAwC,WAAW,wCAAwC,aAAa,0BAA0B,UAAU,0BAA0B,SAAS,0BAA0B,WAAW,4BAA4B,QAAQ,+CAA+C,OAAO,cAAc,OAAO,gBAAgB,EAAE,qCAAqC,OAAO,gBAAgB,EAAE,qBAAqB,gBAAgB,8CAA8C,QAAQ,UAAU,YAAY,YAAY,cAAc,UAAU,cAAc,oBAAoB,0CAA0C,OAAO,4CAA4C,QAAQ,0CAA0C,QAAQ,cAAc,EAAE,yBAAyB,EAAE,4BAA4B,QAAQ,cAAc,oCAAoC,QAAQ,6BAA6B,QAAQ,2CAA2C,QAAQ,YAAY,SAAS,6GAA6G,EAAE,+BAA+B,QAAQ,cAAc,EAAE,+BAA+B,QAAQ,6GAA6G,EAAE,cAAc,EAAE,gCAAgC,QAAQ,OAAO,YAAY,OAAO,gBAAgB,QAAQ,iDAAiD,QAAQ,cAAc,EAAE,iBAAiB,gBAAgB,6BAA6B,QAAQ,kBAAkB,qCAAqC,kBAAkB,oCAAoC,SAAS,YAAY,SAAS,eAAe,QAAQ,4BAA4B,QAAQ,iEAAiE,QAAQ,aAAa,QAAQ,kEAAkE,QAAQ,YAAY,SAAS,sHAAsH,cAAc,6MAA6M,EAAE,iDAAiD,QAAQ,YAAY,SAAS,wHAAwH,EAAE,sDAAsD,QAAQ,sHAAsH,cAAc,6MAA6M,EAAE,qCAAqC,QAAQ,cAAc,EAAE,qCAAqC,QAAQ,wHAAwH,EAAE,oBAAoB,EAAE,iBAAiB,QAAQ,QAAQ,cAAc,UAAU,YAAY,aAAa,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,kBAAkB,oDAAoD,iBAAiB,qCAAqC,gBAAgB,oCAAoC,mBAAmB,uCAAuC,sBAAsB,0CAA0C,UAAU,cAAc,cAAc,wFAAwF,QAAQ,oDAAoD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,4CAA4C,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,YAAY,KAAK,QAAQ,kCAAkC,iBAAiB,QAAQ,QAAQ,wEAAwE,UAAU,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,gBAAgB,0BAA0B,mBAAmB,QAAQ,QAAQ,wEAAwE,UAAU,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,gBAAgB,0BAA0B,cAAc,QAAQ,QAAQ,cAAc,SAAS,gBAAgB,WAAW,gCAAgC,QAAQ,yCAAyC,UAAU,gBAAgB,EAAE,sBAAsB,uCAAuC,cAAc,QAAQ,UAAU,cAAc,kBAAkB,uCAAuC,kBAAkB,wEAAwE,KAAK,cAAc,UAAU,eAAe,SAAS,YAAY,kBAAkB,oCAAoC,OAAO,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,eAAe,iCAAiC,UAAU,eAAe,yBAAyB,+CAA+C,aAAa,cAAc,IAAI,cAAc,UAAU,YAAY,SAAS,gBAAgB,aAAa,0IAA0I,OAAO,cAAc,OAAO,YAAY,SAAS,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,QAAQ,YAAY,eAAe,mCAAmC,cAAc,2FAA2F,cAAc,kCAAkC,cAAc,gCAAgC,UAAU,YAAY,cAAc,mCAAmC,UAAU,eAAe,aAAa,mCAAmC,QAAQ,yCAAyC,OAAO,YAAY,OAAO,cAAc,EAAE,+BAA+B,OAAO,cAAc,EAAE,eAAe,gBAAgB,oBAAoB,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,WAAW,+BAA+B,aAAa,cAAc,UAAU,cAAc,SAAS,eAAe,QAAQ,gDAAgD,OAAO,YAAY,OAAO,cAAc,EAAE,sCAAsC,OAAO,cAAc,EAAE,sBAAsB,gBAAgB,oBAAoB,QAAQ,YAAY,cAAc,UAAU,cAAc,QAAQ,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,gDAAgD,OAAO,cAAc,OAAO,gBAAgB,EAAE,sCAAsC,OAAO,gBAAgB,EAAE,sBAAsB,gBAAgB,sBAAsB,QAAQ,QAAQ,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,aAAa,cAAc,UAAU,YAAY,SAAS,gBAAgB,aAAa,2IAA2I,QAAQ,kDAAkD,OAAO,YAAY,OAAO,cAAc,EAAE,wCAAwC,OAAO,cAAc,EAAE,wBAAwB,gBAAgB,gDAAgD,QAAQ,eAAe,kCAAkC,oBAAoB,wDAAwD,MAAM,4DAA4D,YAAY,cAAc,WAAW,gBAAgB,eAAe,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,YAAY,SAAS,gBAAgB,MAAM,sCAAsC,YAAY,gBAAgB,2BAA2B,oCAAoC,QAAQ,eAAe,mCAAmC,MAAM,oDAAoD,YAAY,cAAc,WAAW,gBAAgB,iBAAiB,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,aAAa,MAAM,sCAAsC,YAAY,cAAc,iBAAiB,8BAA8B,QAAQ,eAAe,mCAAmC,MAAM,oDAAoD,YAAY,cAAc,WAAW,eAAe,wCAAwC,QAAQ,eAAe,kCAAkC,QAAQ,gBAAgB,QAAQ,sCAAsC,YAAY,cAAc,EAAE,iBAAiB,EAAE,kCAAkC,QAAQ,eAAe,kCAAkC,oBAAoB,wDAAwD,MAAM,6DAA6D,YAAY,cAAc,WAAW,gBAAgB,eAAe,iCAAiC,QAAQ,eAAe,mCAAmC,QAAQ,4DAA4D,YAAY,cAAc,WAAW,cAAc,EAAE,8CAA8C,YAAY,gBAAgB,EAAE,yBAAyB,EAAE,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,aAAa,MAAM,8CAA8C,YAAY,gBAAgB,eAAe,eAAe,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,aAAa,cAAc,UAAU,cAAc,SAAS,eAAe,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,4BAA4B,kBAAkB,QAAQ,QAAQ,cAAc,iBAAiB,+DAA+D,kBAAkB,gEAAgE,SAAS,wBAAwB,UAAU,wCAAwC,YAAY,wCAAwC,WAAW,wCAAwC,aAAa,0BAA0B,UAAU,0BAA0B,SAAS,0BAA0B,WAAW,4BAA4B,QAAQ,qDAAqD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,6CAA6C,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,cAAc,QAAQ,aAAa,2CAA2C,SAAS,YAAY,OAAO,cAAc,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,kBAAkB,uCAAuC,UAAU,cAAc,UAAU,WAAW,iBAAiB,iBAAiB,sCAAsC,UAAU,YAAY,YAAY,YAAY,MAAM,gBAAgB,UAAU,cAAc,cAAc,8DAA8D,MAAM,iDAAiD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,4BAA4B,sBAAsB,oBAAoB,EAAE,EAAE,sBAAsB,sBAAsB,gEAAgE,8BAA8B,QAAQ,YAAY,iCAAiC,EAAE,0DAA0D,uEAAuE,QAAQ,aAAa,2CAA2C,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,OAAO,eAAe,QAAQ,uCAAuC,OAAO,cAAc,OAAO,gBAAgB,EAAE,6BAA6B,OAAO,gBAAgB,EAAE,aAAa,wCAAwC,uCAAuC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,mCAAmC,MAAM,cAAc,EAAE,oBAAoB,EAAE,gCAAgC,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,wCAAwC,QAAQ,cAAc,EAAE,uBAAuB,EAAE,2BAA2B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,kCAAkC,OAAO,cAAc,EAAE,kBAAkB,EAAE,+BAA+B,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,4BAA4B,SAAS,aAAa,QAAQ,uCAAuC,QAAQ,cAAc,EAAE,sBAAsB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,KAAK,4BAA4B,IAAI,6BAA6B,MAAM,oBAAoB,0BAA0B,QAAQ,MAAM,6BAA6B,MAAM,aAAa,6BAA6B,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,MAAM,4BAA4B,IAAI,6BAA6B,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,oBAAoB,2BAA2B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,mBAAmB,kCAAkC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,2BAA2B,6BAA6B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,qBAAqB,8BAA8B,QAAQ,OAAO,sCAAsC,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,EAAE,8BAA8B,QAAQ,GAAG,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,mCAAmC,OAAO,cAAc,EAAE,mBAAmB,EAAE,gCAAgC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,4BAA4B,SAAS,4CAA4C,MAAM,yBAAyB,mBAAmB,OAAO,yCAAyC,UAAU,cAAc,EAAE,sBAAsB,kBAAkB,mDAAmD,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,0BAA0B,gCAAgC,QAAQ,OAAO,uEAAuE,QAAQ,eAAe,gBAAgB,kCAAkC,UAAU,YAAY,sBAAsB,4CAA4C,eAAe,oCAAoC,0BAA0B,gDAAgD,gBAAgB,oFAAoF,QAAQ,uCAAuC,OAAO,gBAAgB,EAAE,uBAAuB,EAAE,sCAAsC,QAAQ,OAAO,eAAe,gBAAgB,mCAAmC,MAAM,+BAA+B,qCAAqC,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,yBAAyB,cAAc,iCAAiC,QAAQ,QAAQ,8BAA8B,UAAU,eAAe,SAAS,iGAAiG,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,wBAAwB,eAAe,+BAA+B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,eAAe,oCAAoC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,kDAAkD,QAAQ,iHAAiH,QAAQ,cAAc,EAAE,uCAAuC,QAAQ,mHAAmH,EAAE,sBAAsB,EAAE,+BAA+B,QAAQ,cAAc,oCAAoC,QAAQ,6BAA6B,QAAQ,6CAA6C,QAAQ,cAAc,EAAE,sBAAsB,EAAE,aAAa,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,WAAW,+BAA+B,aAAa,cAAc,UAAU,cAAc,IAAI,cAAc,WAAW,cAAc,kBAAkB,uCAAuC,kBAAkB,wEAAwE,KAAK,cAAc,UAAU,eAAe,yBAAyB,gDAAgD,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,gBAAgB,sBAAsB,QAAQ,SAAS,YAAY,aAAa,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,iBAAiB,qCAAqC,gBAAgB,oCAAoC,UAAU,cAAc,cAAc,wFAAwF,QAAQ,0DAA0D,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,kDAAkD,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,iBAAiB,QAAQ,aAAa,2CAA2C,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,UAAU,cAAc,cAAc,wFAAwF,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,iBAAiB,qBAAqB,QAAQ,UAAU,cAAc,cAAc,2CAA2C,kBAAkB,wEAAwE,KAAK,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,cAAc,sDAAsD,IAAI,cAAc,UAAU,cAAc,UAAU,aAAa,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,8BAA8B,OAAO,cAAc,kBAAkB,oBAAoB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,gBAAgB,iBAAiB,sBAAsB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,gBAAgB,iBAAiB,cAAc,QAAQ,QAAQ,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,eAAe,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,eAAe,QAAQ,iBAAiB,uCAAuC,WAAW,cAAc,kBAAkB,wEAAwE,KAAK,cAAc,SAAS,YAAY,UAAU,eAAe,yBAAyB,+CAA+C,SAAS,cAAc,aAAa,cAAc,IAAI,cAAc,UAAU,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,oCAAoC,MAAM,kDAAkD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,kBAAkB,QAAQ,QAAQ,YAAY,QAAQ,8DAA8D,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,gBAAgB,WAAW,QAAQ,QAAQ,YAAY,SAAS,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,cAAc,UAAU;AAC1v+B,EAAC,iBAAiB,mCAAmC,iBAAiB,mCAAmC,UAAU,cAAc,cAAc,wFAAwF,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,iBAAiB,iBAAiB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,iBAAiB,iBAAiB,QAAQ,QAAQ,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,UAAU,cAAc,cAAc,wFAAwF,MAAM,iDAAiD,OAAO,cAAc,OAAO,cAAc,KAAK,iBAAiB,mBAAmB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,iBAAiB,aAAa,QAAQ,aAAa,2CAA2C,SAAS,wEAAwE,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,YAAY,YAAY,MAAM,gBAAgB,UAAU,cAAc,cAAc,wFAAwF,QAAQ,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,iCAAiC,OAAO,cAAc,OAAO,gBAAgB,4BAA4B,+CAA+C,QAAQ,UAAU,cAAc,cAAc,gCAAgC,QAAQ,cAAc,UAAU,YAAY,QAAQ,cAAc,cAAc,mCAAmC,OAAO,cAAc,YAAY,cAAc,SAAS,8DAA8D,QAAQ,gCAAgC,OAAO,gBAAgB,EAAE,gBAAgB,gBAAgB,oCAAoC,QAAQ,WAAW,iCAAiC,YAAY,eAAe,SAAS,YAAY,SAAS,eAAe,cAAc,mCAAmC,aAAa,kCAAkC,KAAK,eAAe,UAAU,+BAA+B,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,YAAY,WAAW,eAAe,aAAa,mCAAmC,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,gBAAgB,+BAA+B,QAAQ,SAAS,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,MAAM,8BAA8B,OAAO,gBAAgB,eAAe,gCAAgC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,uBAAuB,OAAO,gBAAgB,eAAe,mCAAmC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,uBAAuB,OAAO,cAAc,iBAAiB,qCAAqC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,wCAAwC,OAAO,YAAY,OAAO,cAAc,iBAAiB,uCAAuC,QAAQ,eAAe,mCAAmC,MAAM,0CAA0C,OAAO,YAAY,OAAO,cAAc,iBAAiB,wCAAwC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,gCAAgC,MAAM,gBAAgB,iBAAiB,sCAAsC,QAAQ,eAAe,kCAAkC,OAAO,aAAa,MAAM,yCAAyC,OAAO,YAAY,OAAO,cAAc,iBAAiB,gCAAgC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,MAAM,uBAAuB,OAAO,cAAc,eAAe,qCAAqC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,uGAAuG,QAAQ,gBAAgB,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,6BAA6B,MAAM,cAAc,EAAE,8BAA8B,OAAO,cAAc,gBAAgB,wCAAwC,QAAQ,eAAe,kCAAkC,QAAQ,gBAAgB,MAAM,gCAAgC,MAAM,gBAAgB,eAAe,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,MAAM,iCAAiC,OAAO,YAAY,OAAO,cAAc,eAAe,+BAA+B,QAAQ,OAAO,eAAe,gBAAgB,sCAAsC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,8BAA8B,OAAO,cAAc,EAAE,cAAc,gBAAgB,qCAAqC,OAAO,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,gBAAgB,6BAA6B,QAAQ,OAAO,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,oCAAoC,OAAO,YAAY,UAAU,cAAc,EAAE,uBAAuB,OAAO,cAAc,EAAE,kCAAkC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,6BAA6B,MAAM,cAAc,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,EAAE,oCAAoC,QAAQ,SAAS,YAAY,QAAQ,gBAAgB,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,+BAA+B,MAAM,cAAc,EAAE,gBAAgB,EAAE,yCAAyC,QAAQ,iBAAiB,uCAAuC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,2DAA2D,OAAO,YAAY,OAAO,YAAY,QAAQ,cAAc,EAAE,iDAAiD,OAAO,YAAY,QAAQ,cAAc,EAAE,gDAAgD,MAAM,YAAY,QAAQ,cAAc,EAAE,sCAAsC,OAAO,cAAc,EAAE,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,+BAA+B,MAAM,cAAc,EAAE,gBAAgB,EAAE,qCAAqC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,uGAAuG,eAAe,oCAAoC,QAAQ,gBAAgB,QAAQ,2CAA2C,OAAO,YAAY,OAAO,cAAc,EAAE,iCAAiC,OAAO,cAAc,EAAE,gCAAgC,MAAM,cAAc,EAAE,iBAAiB,EAAE,qCAAqC,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,QAAQ,gBAAgB,QAAQ,gCAAgC,MAAM,gBAAgB,EAAE,iBAAiB,EAAE,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,6BAA6B,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,EAAE,mCAAmC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,mDAAmD,OAAO,YAAY,OAAO,YAAY,OAAO,cAAc,EAAE,yCAAyC,OAAO,YAAY,OAAO,cAAc,EAAE,+BAA+B,OAAO,cAAc,EAAE,8BAA8B,MAAM,cAAc,EAAE,eAAe,EAAE,8BAA8B,QAAQ,SAAS,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,+FAA+F,MAAM,6BAA6B,OAAO,gBAAgB,eAAe,kCAAkC,QAAQ,OAAO,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,iBAAiB,sCAAsC,qBAAqB,2CAA2C,qBAAqB,2BAA2B,eAAe,qCAAqC,QAAQ,gBAAgB,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,gBAAgB,kCAAkC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,wCAAwC,OAAO,YAAY,OAAO,gBAAgB,cAAc,oCAAoC,QAAQ,iBAAiB,uCAAuC,UAAU,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,0CAA0C,OAAO,YAAY,OAAO,gBAAgB,EAAE,+BAA+B,MAAM,gBAAgB,2BAA2B,qCAAqC,QAAQ,eAAe,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,eAAe,qCAAqC,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,2BAA2B,qCAAqC,QAAQ,OAAO,cAAc,SAAS,4BAA4B,UAAU,YAAY,gBAAgB,kCAAkC,eAAe,qCAAqC,MAAM,gCAAgC,MAAM,gBAAgB,0BAA0B,mCAAmC,QAAQ,eAAe,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,mDAAmD,OAAO,YAAY,OAAO,YAAY,OAAO,gBAAgB,EAAE,yCAAyC,OAAO,YAAY,OAAO,gBAAgB,EAAE,8BAA8B,MAAM,gBAAgB,2BAA2B,kCAAkC,QAAQ,UAAU,4BAA4B,aAAa,+CAA+C,QAAQ,6BAA6B,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,EAAE,iCAAiC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,4BAA4B,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,gBAAgB,kCAAkC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,4BAA4B,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,EAAE,+BAA+B,QAAQ,kBAAkB,qCAAqC,kBAAkB,oCAAoC,SAAS,YAAY,SAAS,YAAY,QAAQ,4BAA4B,QAAQ,uEAAuE,QAAQ,aAAa,QAAQ,0CAA0C,OAAO,YAAY,SAAS,6MAA6M,EAAE,+BAA+B,QAAQ,6MAA6M,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,EAAE,gCAAgC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,2BAA2B,WAAW,eAAe,WAAW,gBAAgB,QAAQ,+BAA+B,OAAO,cAAc,EAAE,eAAe,EAAE,uCAAuC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,gBAAgB,2BAA2B,iCAAiC,QAAQ,gBAAgB,uCAAuC,kBAAkB,4FAA4F,oBAAoB,yCAAyC,oBAAoB,0CAA0C,sBAAsB,6CAA6C,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,gBAAgB,uCAAuC,QAAQ,SAAS,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,qBAAqB,2BAA2B,IAAI,cAAc,WAAW,cAAc,kBAAkB,uCAAuC,kBAAkB,wEAAwE,KAAK,cAAc,UAAU,eAAe,yBAAyB,gDAAgD,QAAQ,iDAAiD,OAAO,YAAY,OAAO,cAAc,EAAE,uCAAuC,OAAO,cAAc,EAAE,uBAAuB,gBAAgB,YAAY,KAAK,SAAS,YAAY,QAAQ,QAAQ,YAAY,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,oCAAoC,QAAQ,uCAAuC,OAAO,cAAc,OAAO,gBAAgB,EAAE,6BAA6B,OAAO,gBAAgB,EAAE,aAAa,4BAA4B,WAAW,QAAQ,YAAY,iCAAiC,aAAa,kCAAkC,gBAAgB,qCAAqC,gBAAgB,qCAAqC,aAAa,kCAAkC,cAAc,mCAAmC,gBAAgB,qCAAqC,YAAY,8BAA8B,sBAAsB,4CAA4C,UAAU,cAAc,aAAa,iCAAiC,gBAAgB,kCAAkC,eAAe,mCAAmC,aAAa,iCAAiC,eAAe,mCAAmC,aAAa,iCAAiC,cAAc,gCAAgC,YAAY,+BAA+B,MAAM,8CAA8C,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,kBAAkB,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,6CAA6C,OAAO,cAAc,OAAO,gBAAgB,EAAE,mCAAmC,OAAO,gBAAgB,EAAE,mBAAmB,wCAAwC,eAAe,QAAQ,YAAY,2IAA2I,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,wCAAwC,oBAAoB,QAAQ,KAAK,wBAAwB,iBAAiB,+DAA+D,kBAAkB,gEAAgE,SAAS,wBAAwB,UAAU,wCAAwC,YAAY,wCAAwC,WAAW,wCAAwC,aAAa,0BAA0B,UAAU,0BAA0B,SAAS,0BAA0B,WAAW,4BAA4B,QAAQ,+CAA+C,OAAO,cAAc,OAAO,gBAAgB,EAAE,qCAAqC,OAAO,gBAAgB,EAAE,qBAAqB,gBAAgB,8CAA8C,QAAQ,UAAU,YAAY,YAAY,cAAc,UAAU,cAAc,oBAAoB,0CAA0C,OAAO,4CAA4C,QAAQ,0CAA0C,QAAQ,cAAc,EAAE,yBAAyB,EAAE,4BAA4B,QAAQ,cAAc,oCAAoC,QAAQ,6BAA6B,QAAQ,2CAA2C,QAAQ,YAAY,SAAS,6GAA6G,EAAE,+BAA+B,QAAQ,cAAc,EAAE,+BAA+B,QAAQ,6GAA6G,EAAE,cAAc,EAAE,gCAAgC,QAAQ,OAAO,YAAY,OAAO,gBAAgB,QAAQ,iDAAiD,QAAQ,cAAc,EAAE,iBAAiB,gBAAgB,6BAA6B,QAAQ,kBAAkB,qCAAqC,kBAAkB,oCAAoC,SAAS,YAAY,SAAS,eAAe,QAAQ,4BAA4B,QAAQ,iEAAiE,QAAQ,aAAa,QAAQ,kEAAkE,QAAQ,YAAY,SAAS,sHAAsH,cAAc,6MAA6M,EAAE,iDAAiD,QAAQ,YAAY,SAAS,wHAAwH,EAAE,sDAAsD,QAAQ,sHAAsH,cAAc,6MAA6M,EAAE,qCAAqC,QAAQ,cAAc,EAAE,qCAAqC,QAAQ,wHAAwH,EAAE,oBAAoB,EAAE,iBAAiB,QAAQ,SAAS,YAAY,aAAa,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,kBAAkB,oDAAoD,iBAAiB,qCAAqC,gBAAgB,oCAAoC,mBAAmB,uCAAuC,sBAAsB,0CAA0C,UAAU,cAAc,cAAc,wFAAwF,QAAQ,oDAAoD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,4CAA4C,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,YAAY,KAAK,QAAQ,kCAAkC,iBAAiB,QAAQ,QAAQ,wEAAwE,UAAU,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,gBAAgB,0BAA0B,mBAAmB,QAAQ,QAAQ,wEAAwE,UAAU,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,gBAAgB,0BAA0B,cAAc,QAAQ,QAAQ,gBAAgB,WAAW,gCAAgC,QAAQ,yCAAyC,UAAU,gBAAgB,EAAE,sBAAsB,uCAAuC,cAAc,QAAQ,UAAU,cAAc,kBAAkB,uCAAuC,kBAAkB,wEAAwE,KAAK,cAAc,UAAU,eAAe,SAAS,YAAY,kBAAkB,oCAAoC,OAAO,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,UAAU,eAAe,yBAAyB,+CAA+C,aAAa,cAAc,IAAI,cAAc,UAAU,YAAY,SAAS,gBAAgB,aAAa,0IAA0I,OAAO,cAAc,OAAO,YAAY,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,QAAQ,YAAY,eAAe,mCAAmC,cAAc,2FAA2F,cAAc,kCAAkC,cAAc,gCAAgC,UAAU,YAAY,cAAc,mCAAmC,UAAU,eAAe,aAAa,mCAAmC,QAAQ,yCAAyC,OAAO,YAAY,OAAO,cAAc,EAAE,+BAA+B,OAAO,cAAc,EAAE,eAAe,gBAAgB,oBAAoB,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,WAAW,+BAA+B,aAAa,cAAc,UAAU,cAAc,IAAI,cAAc,WAAW,cAAc,kBAAkB,uCAAuC,kBAAkB,wEAAwE,KAAK,cAAc,UAAU,eAAe,yBAAyB,gDAAgD,QAAQ,gDAAgD,OAAO,YAAY,OAAO,cAAc,EAAE,sCAAsC,OAAO,cAAc,EAAE,sBAAsB,gBAAgB,oBAAoB,QAAQ,YAAY,cAAc,UAAU,cAAc,QAAQ,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,gDAAgD,OAAO,cAAc,OAAO,gBAAgB,EAAE,sCAAsC,OAAO,gBAAgB,EAAE,sBAAsB,gBAAgB,sBAAsB,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,aAAa,cAAc,UAAU,YAAY,SAAS,gBAAgB,aAAa,2IAA2I,QAAQ,kDAAkD,OAAO,YAAY,OAAO,cAAc,EAAE,wCAAwC,OAAO,cAAc,EAAE,wBAAwB,gBAAgB,gDAAgD,QAAQ,eAAe,kCAAkC,oBAAoB,wDAAwD,MAAM,4DAA4D,YAAY,cAAc,WAAW,gBAAgB,eAAe,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,YAAY,SAAS,gBAAgB,MAAM,sCAAsC,YAAY,gBAAgB,2BAA2B,oCAAoC,QAAQ,eAAe,mCAAmC,MAAM,oDAAoD,YAAY,cAAc,WAAW,gBAAgB,iBAAiB,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,aAAa,MAAM,sCAAsC,YAAY,cAAc,iBAAiB,8BAA8B,QAAQ,eAAe,mCAAmC,MAAM,oDAAoD,YAAY,cAAc,WAAW,eAAe,wCAAwC,QAAQ,eAAe,kCAAkC,QAAQ,gBAAgB,QAAQ,sCAAsC,YAAY,cAAc,EAAE,iBAAiB,EAAE,kCAAkC,QAAQ,eAAe,kCAAkC,oBAAoB,wDAAwD,MAAM,6DAA6D,YAAY,cAAc,WAAW,gBAAgB,eAAe,iCAAiC,QAAQ,eAAe,mCAAmC,QAAQ,4DAA4D,YAAY,cAAc,WAAW,cAAc,EAAE,8CAA8C,YAAY,gBAAgB,EAAE,yBAAyB,EAAE,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,aAAa,MAAM;AAC3v+B,MAAK,YAAY,gBAAgB,eAAe,eAAe,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,aAAa,cAAc,UAAU,eAAe,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,4BAA4B,kBAAkB,QAAQ,gBAAgB,+DAA+D,kBAAkB,gEAAgE,SAAS,wBAAwB,UAAU,wCAAwC,YAAY,wCAAwC,WAAW,wCAAwC,aAAa,0BAA0B,UAAU,0BAA0B,SAAS,0BAA0B,WAAW,4BAA4B,QAAQ,qDAAqD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,6CAA6C,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,cAAc,QAAQ,aAAa,2CAA2C,SAAS,YAAY,OAAO,cAAc,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,kBAAkB,uCAAuC,UAAU,cAAc,UAAU,WAAW,iBAAiB,iBAAiB,sCAAsC,UAAU,YAAY,YAAY,YAAY,MAAM,gBAAgB,UAAU,cAAc,cAAc,8DAA8D,MAAM,iDAAiD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,4BAA4B,sBAAsB,oBAAoB,EAAE,EAAE,oCAAoC,sBAAsB,WAAW,8CAA8C,EAAE,iCAAiC,sBAAsB,cAAc,aAAa,mHAAmH,uBAAuB,0DAA0D,uEAAuE,+BAA+B,UAAU,6JAA6J,qJAAqJ,QAAQ,qFAAqF,SAAS,+XAA+X,KAAK,SAAS,YAAY,6DAA6D,mBAAmB,EAAE,mQAAmQ,sBAAsB,cAAc,gBAAgB,kBAAkB,gBAAgB,8BAA8B,UAAU,gCAAgC,IAAI,wCAAwC,SAAS,yBAAyB,6BAA6B,6BAA6B,iBAAiB,qDAAqD,yCAAyC,6BAA6B,qBAAqB,oCAAoC,UAAU,8EAA8E,GAAG,gBAAgB,aAAa,gEAAgE,wBAAwB,KAAK,iEAAiE,6DAA6D,gEAAgE,wBAAwB,0HAA0H,2FAA2F,uCAAuC,GAAG,GAAG,oBAAoB,SAAS,gBAAgB,MAAM,2MAA2M,4FAA4F,aAAa,0CAA0C,KAAK,YAAY,qCAAqC,2GAA2G,mGAAmG,sBAAsB,MAAM,4DAA4D,2DAA2D,MAAM,kDAAkD,MAAM,4CAA4C,MAAM,0BAA0B,mJAAmJ,QAAQ,4BAA4B,yHAAyH,gCAAgC,cAAc,oCAAoC,gBAAgB,EAAE,mBAAmB,oHAAoH,+BAA+B,cAAc,iBAAiB,yCAAyC,OAAO,yBAAyB,oFAAoF,gBAAgB,YAAY,YAAY,mBAAmB,2CAA2C,gHAAgH,0BAA0B,4CAA4C,6GAA6G,sBAAsB,iBAAiB,sCAAsC,oBAAoB,gDAAgD,4GAA4G,yBAAyB,oEAAoE,wBAAwB,6BAA6B,yDAAyD,wBAAwB,iBAAiB,qCAAqC,kEAAkE,sBAAsB,+BAA+B,6BAA6B,0CAA0C,oEAAoE,EAAE,aAAa,sBAAsB,gBAAgB,UAAU,+GAA+G,yDAAyD,qCAAqC,YAAY,yFAAyF,+CAA+C,2EAA2E,gCAAgC,gEAAgE,6BAA6B,2FAA2F,EAAE,uBAAuB,cAAc,6BAA6B,8BAA8B,qEAAqE,KAAK,mCAAmC,kBAAkB,wFAAwF,EAAE,2DAA2D,sBAAsB,cAAc,OAAO,yfAAyf,cAAc,iBAAiB,mBAAmB,gCAAgC,YAAY,gCAAgC,sNAAsN,mBAAmB,SAAS,2BAA2B,6DAA6D,gCAAgC,yFAAyF,SAAS,sDAAsD,SAAS,KAAK,8EAA8E,mDAAmD,8FAA8F,sMAAsM,+CAA+C,cAAc,wBAAwB,mCAAmC,wEAAwE,OAAO,6CAA6C,MAAM,MAAM,YAAY,wBAAwB,mCAAmC,oBAAoB,OAAO,QAAQ,oCAAoC,+BAA+B,4DAA4D,GAAG,wBAAwB,yBAAyB,uDAAuD,8CAA8C,+CAA+C,kDAAkD,wBAAwB,gBAAgB,iEAAiE,wFAAwF,4CAA4C,EAAE,0CAA0C,MAAM,0HAA0H,uCAAuC,gLAAgL,0CAA0C,uJAAuJ,kCAAkC,kCAAkC,QAAQ,WAAW,yHAAyH,gBAAgB,QAAQ,WAAW,4CAA4C,8BAA8B,kBAAkB,qCAAqC,EAAE,mFAAmF,sBAAsB,gBAAgB,iBAAiB,WAAW,+CAA+C,iBAAiB,GAAG,YAAY,0EAA0E,kDAAkD,sBAAsB,mBAAmB,iKAAiK,mBAAmB,oCAAoC,aAAa,iEAAiE,aAAa,cAAc,EAAE,gDAAgD,sBAAsB,OAAO,2DAA2D,iBAAiB,uBAAuB,kCAAkC,kEAAkE,EAAE,oDAAoD,sBAAsB,gBAAgB,iHAAiH,kGAAkG,gEAAgE,uDAAuD,6DAA6D,wDAAwD,qDAAqD,0CAA0C,sDAAsD,mDAAmD,4DAA4D,iEAAiE,8DAA8D,qFAAqF,kCAAkC,OAAO,+PAA+P,uBAAuB,cAAc,2DAA2D,qDAAqD,kDAAkD,sBAAsB,8BAA8B,EAAE,EAAE,aAAa,sBAAsB,gBAAgB,kBAAkB,SAAS,+KAA+K,UAAU,UAAU,wBAAwB,mEAAmE,6EAA6E,yBAAyB,yGAAyG,mCAAmC,eAAe,6EAA6E,MAAM,iCAAiC,oFAAoF,8BAA8B,sCAAsC,iUAAiU,gBAAgB,mBAAmB,sBAAsB,cAAc,8BAA8B,+BAA+B,sCAAsC,YAAY,iFAAiF,wFAAwF,2CAA2C,oFAAoF,4GAA4G,gBAAgB,kBAAkB,iCAAiC,QAAQ,SAAS,6DAA6D,sCAAsC,6BAA6B,0CAA0C,+EAA+E,gDAAgD,+CAA+C,EAAE,iCAAiC,IAAI,6CAA6C,sCAAsC,kCAAkC,uBAAuB,EAAE,wDAAwD,sBAAsB,cAAc,QAAQ,QAAQ,UAAU,iCAAiC,aAAa,kCAAkC,gDAAgD,QAAQ,QAAQ,2KAA2K,QAAQ,WAAW,0BAA0B,qFAAqF,sEAAsE,+JAA+J,uCAAuC,wEAAwE,+EAA+E,iBAAiB,yCAAyC,qCAAqC,8BAA8B,iCAAiC,gCAAgC,0HAA0H,oBAAoB,2BAA2B,yDAAyD,YAAY,mCAAmC,OAAO,qEAAqE,iEAAiE,qBAAqB,+BAA+B,+FAA+F,gCAAgC,mFAAmF,6BAA6B,6EAA6E,8BAA8B,+EAA+E,uCAAuC,6FAA6F,0CAA0C,oLAAoL,qDAAqD,aAAa,EAAE,mEAAmE,sBAAsB,gBAAgB,+IAA+I,cAAc,8CAA8C,gBAAgB,yBAAyB,6CAA6C,WAAW,aAAa,mBAAmB,iCAAiC,eAAe,sJAAsJ,kCAAkC,gDAAgD,8BAA8B,4DAA4D,wCAAwC,qEAAqE,wBAAwB,wEAAwE,0DAA0D,OAAO,mDAAmD,wCAAwC,yDAAyD,OAAO,4CAA4C,oDAAoD,8CAA8C,wBAAwB,2CAA2C,qBAAqB,4CAA4C,sBAAsB,4CAA4C,gDAAgD,8CAA8C,gHAAgH,qCAAqC,IAAI,gGAAgG,SAAS,+BAA+B,aAAa,EAAE,aAAa,sBAAsB,WAAW,wBAAwB,EAAE,eAAe,sBAAsB,gBAAgB,0DAA0D,YAAY,qCAAqC,uDAAuD,wCAAwC,mCAAmC,yCAAyC,2CAA2C,kCAAkC,iEAAiE,8CAA8C,kDAAkD,2CAA2C,+CAA+C,4CAA4C,kDAAkD,4CAA4C,sDAAsD,EAAE,EAAE,6BAA6B,sBAAsB,cAAc,mBAAmB,qCAAqC,SAAS,mBAAmB,qHAAqH,QAAQ,wCAAwC,wDAAwD,GAAG,MAAM,4CAA4C,oEAAoE,EAAE,aAAa,sBAAsB,WAAW,oDAAoD,EAAE,iCAAiC,sBAAsB,sBAAsB,8CAA8C,GAAG,sBAAsB,sBAAsB,WAAW,4BAA4B,GAAG,sBAAsB,cAAc,+CAA+C,+CAA+C,iBAAiB,sBAAsB,2CAA2C,gBAAgB,aAAa,EAAE,uCAAuC,sBAAsB,WAAW,yCAAyC,EAAE,2BAA2B,sBAAsB,cAAc,YAAY,oBAAoB,sCAAsC,iBAAiB,sBAAsB,+CAA+C,gBAAgB,qCAAqC,0BAA0B,qBAAqB,WAAW,kCAAkC,WAAW,wBAAwB,WAAW,iCAAiC,KAAK,iHAAiH,mCAAmC,UAAU,EAAE,cAAc,sBAAsB,cAAc,WAAW,kBAAkB,gDAAgD,qBAAqB,8DAA8D,0BAA0B,sDAAsD,sXAAsX,+DAA+D,qCAAqC,wCAAwC,kEAAkE,EAAE,+IAA+I,0BAA0B,2CAA2C,EAAE,iDAAiD,mEAAmE,wCAAwC,iDAAiD,YAAY,8GAA8G,mBAAmB,4BAA4B,0DAA0D,0BAA0B,8BAA8B,iBAAiB,mCAAmC,gBAAgB,yGAAyG,oBAAoB,2aAA2a,oBAAoB,OAAO,cAAc,8EAA8E,yYAAyY,aAAa,sDAAsD,kEAAkE,wUAAwU,2DAA2D,yCAAyC,6DAA6D,6BAA6B,QAAQ,oFAAoF,oCAAoC,8BAA8B,MAAM,0FAA0F,MAAM,gBAAgB,8BAA8B,kCAAkC,+BAA+B,+EAA+E,8CAA8C,qCAAqC,iBAAiB,mBAAmB,MAAM,IAAI,aAAa,SAAS,4JAA4J,+BAA+B,kBAAkB,GAAG,SAAS,EAAE,8BAA8B,gFAAgF,EAAE,uKAAuK,sBAAsB,oBAAoB,sBAAsB,8DAA8D,0CAA0C,eAAe,cAAc,kBAAkB,aAAa,kCAAkC,oBAAoB,kBAAkB,+BAA+B,0IAA0I,wCAAwC,wBAAwB,EAAE,cAAc,sBAAsB,kBAAkB,mBAAmB,8BAA8B,WAAW,4MAA4M,mFAAmF,qHAAqH,MAAM,gDAAgD,8BAA8B,oBAAoB,0BAA0B,MAAM,2IAA2I,IAAI,2FAA2F,gBAAgB,iCAAiC,+CAA+C,wBAAwB,uDAAuD,uGAAuG,mEAAmE,6BAA6B,mEAAmE,yBAAyB,8CAA8C,qCAAqC,yBAAyB,+BAA+B,wBAAwB,8BAA8B,+BAA+B,0BAA0B,wBAAwB,+BAA+B,sCAAsC,6CAA6C,oDAAoD,2DAA2D,2DAA2D,wBAAwB,wDAAwD,uBAAuB,4BAA4B,sDAAsD,WAAW,6FAA6F,oBAAoB,8BAA8B,WAAW,iBAAiB,4BAA4B,wBAAwB,gDAAgD,2DAA2D,kBAAkB,aAAa,8BAA8B,MAAM;;AAE9t+B,EAAC,wBAAwB,6BAA6B,oCAAoC,aAAa,8BAA8B,WAAW,KAAK,iCAAiC,UAAU,SAAS,sCAAsC,gCAAgC,MAAM,SAAS,sCAAsC,yBAAyB,KAAK,oEAAoE,YAAY,QAAQ,oCAAoC,wBAAwB,uBAAuB,2DAA2D,sCAAsC,gCAAgC,sBAAsB,kBAAkB,kEAAkE,aAAa,EAAE,uEAAuE,EAAE,GAAG;AACn1B,EAAC,I;;;;;;mCCnBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA2C;AAC3C;AACA,4DAA2D;;AAE3D;AACA,oDAAmD;AACnD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA0B,MAAM,aAAa,OAAO;;AAEpD;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;AACf,eAAc;AACd,eAAc;AACd,iBAAgB;AAChB,gBAAe;AACf,gBAAe;AACf;;AAEA;AACA;AACA,WAAU;AACV,UAAS;AACT,UAAS;AACT,YAAW;AACX,WAAU;AACV,WAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,cAAa,EAAE;AACf,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,SAAS;AACtB,cAAa,QAAQ;AACrB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,EAAE;AACf,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,UAAU;AACvB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,EAAE;AACf,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,SAAS;AACtB,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,SAAS;AACxB;AACA;AACA,eAAc,2BAA2B;AACzC;AACA;AACA,oBAAmB,gCAAgC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,OAAM;AACN;AACA;AACA,kCAAiC,6BAA6B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA6B,YAAY,EAAE;AAC3C,qBAAoB,sBAAsB;AAC1C;;AAEA,yBAAwB;AACxB,kCAAiC,iBAAiB;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;;AAEA,oBAAmB;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB;AACA,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB;AACA,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,kBAAkB;AACjC,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,OAAO,WAAW;AACjC,kBAAiB,OAAO;AACxB;AACA;AACA,6BAA4B;;AAE5B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA,+CAA8C;AAC9C;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,qCAAoC,6BAA6B,EAAE;AACnE;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,oBAAoB;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,oBAAoB;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB;AACA,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,QAAQ;AACvB,gBAAe,QAAQ;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB;AACA,gBAAe,SAAS;AACxB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,6BAA6B;AAC5C,gBAAe,UAAU;AACzB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA,2DAA0D,2BAA2B,EAAE;;AAEvF;AACA,gEAA+D,wBAAwB,EAAE;AACzF,iBAAgB;AAChB,QAAO;;AAEP;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,gBAAe,QAAQ;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,MAAM;AACrB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8CAA6C;AAC7C;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,YAAY;AAC3B,kBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,gBAAe,MAAM;AACrB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,EAAE;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C;AAC1C,yCAAwC;AACxC,gEAA+D;AAC/D,kEAAiE;AACjE;AACA;AACA,eAAc;AACd;;AAEA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,MAAM;AACrB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,oCAAoC;AAC9C,WAAU,qCAAqC;AAC/C,WAAU;AACV;AACA;AACA;AACA,yCAAwC,qCAAqC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,qCAAqC;AAC/C,WAAU,qCAAqC;AAC/C,WAAU;AACV;AACA;AACA;AACA,oCAAmC,oCAAoC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,WAAU,qCAAqC;AAC/C,WAAU,qCAAqC;AAC/C,WAAU;AACV;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,4BAA2B,kCAAkC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,WAAU,oCAAoC;AAC9C,WAAU,qCAAqC;AAC/C,WAAU;AACV;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,gCAA+B,mCAAmC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,QAAQ;AACvB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,eAAe;AAC9B;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,eAAe;AAC9B;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,KAAK;AACpB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,qBAAqB;AACpC;AACA,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,UAAU,yCAAyC;AACtE;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,wBAAuB,UAAU,GAAG,UAAU,IAAI,UAAU;AAC5D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,oCAAoC;AAC9C,WAAU,qCAAqC;AAC/C,WAAU;AACV;AACA;AACA;AACA,yCAAwC,qCAAqC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,qCAAqC;AAC/C,WAAU,oCAAoC;AAC9C,WAAU;AACV;AACA;AACA;AACA,oCAAmC,oCAAoC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,QAAQ;AACvB,gBAAe,uBAAuB;AACtC,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,iBAAgB,SAAS,GAAG,SAAS,GAAG,SAAS;AACjD,gBAAe,SAAS,GAAG,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,KAAK;AACpB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,eAAc;AACd;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,WAAU,+BAA+B;AACzC,WAAU,+BAA+B;AACzC,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,qCAAqC;AACpD;AACA,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,oCAAoC;AAC9C,WAAU;AACV;AACA;AACA;AACA,wBAAuB,oCAAoC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,8CAA8C;AACxD,WAAU;AACV;AACA;AACA;AACA,iCAAgC,4BAA4B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA,WAAU,+CAA+C;AACzD,WAAU,gDAAgD;AAC1D,WAAU;AACV;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,gCAA+B,2BAA2B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,OAAO;AACtB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA,WAAU,8CAA8C;AACxD,WAAU;AACV;AACA;AACA,qCAAoC,4BAA4B;AAChE;AACA;AACA,qCAAoC,6BAA6B;AACjE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,mBAAkB,iBAAiB;AACnC;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,4BAA4B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,WAAU,4BAA4B;AACtC,WAAU;AACV;AACA;AACA;AACA,eAAc,UAAU,4BAA4B,YAAY,8BAA8B;AAC9F;AACA;AACA;AACA,SAAQ;AACR,eAAc,OAAO,4BAA4B,QAAQ,8BAA8B;AACvF;AACA;AACA;AACA,SAAQ;AACR,eAAc,OAAO,4BAA4B,QAAQ,8BAA8B;AACvF;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,sBAAsB;AACrC;AACA,gBAAe,KAAK;AACpB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA,WAAU,mBAAmB;AAC7B,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,gDAAgD;AAC1D,WAAU,+CAA+C;AACzD,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC,4BAA4B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK,cAAc,iBAAiB,EAAE;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,aAAa;AAC5B,kBAAiB,MAAM;AACvB;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,kBAAiB,iBAAiB;AAClC;AACA;AACA,SAAQ,IAAI;AACZ,eAAc,iBAAiB;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,+CAA+C;AACzD,WAAU;AACV;AACA;AACA;AACA,iCAAgC,4BAA4B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,gBAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,mCAAmC;AAC7C,WAAU;AACV;AACA;AACA;AACA,uBAAsB,oCAAoC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,iBAAiB;AAC3B,WAAU,oBAAoB;AAC9B,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAgB;AAChB,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,yDAAyD;AACxE;AACA,kBAAiB,MAAM;AACvB;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU,8BAA8B;AACxC,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,6BAA6B;AAC5C,gBAAe,UAAU;AACzB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU,8BAA8B;AACxC,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA,WAAU,kEAAkE;AAC5E,WAAU;AACV;AACA;AACA,gCAA+B,6BAA6B;AAC5D;AACA;AACA,gCAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,qBAAoB,iCAAiC;AACrD,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,KAAK;AACpB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,qBAAqB;AACpC;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,KAAK;AACpB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,gBAAe,OAAO;AACtB;AACA,gBAAe,QAAQ;AACvB;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,kCAAkC;AAChE;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,KAAK;AACpB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,KAAK;AACpB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,YAAY;AAC3B,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,YAAY;AAC3B,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB,qBAAoB;AACpB;AACA;AACA;AACA,eAAc;AACd;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,KAAK;AACpB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,KAAK;AACpB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,qBAAqB;AACpC;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,gBAAe,QAAQ;AACvB;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA,WAAU,mBAAmB;AAC7B,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA,WAAU,mBAAmB;AAC7B,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA,kCAAiC,kBAAkB,EAAE;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA,8BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA,sBAAqB;AACrB,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA,sBAAqB;AACrB;AACA,2BAA0B,YAAY;AACtC;AACA;AACA,2BAA0B,YAAY;AACtC;AACA;AACA;AACA,sBAAqB;AACrB,sBAAqB;AACrB;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B,eAAc;AACd;AACA,kBAAiB,SAAS;AAC1B,eAAc;AACd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,UAAU;AACzB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA,kBAAiB,mBAAmB,GAAG,YAAY,GAAG,iBAAiB;AACvE,eAAc;AACd;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,kBAAiB,mBAAmB,GAAG,YAAY,GAAG,iBAAiB;AACvE,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,UAAU;AACzB,kBAAiB,OAAO;AACxB;AACA;AACA,oBAAmB,mBAAmB,GAAG,YAAY,GAAG,iBAAiB;AACzE,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,sBAAqB,4BAA4B;AACjD,sBAAqB,6BAA6B;AAClD,sBAAqB;AACrB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,0BAAyB,2BAA2B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,sBAAqB,4BAA4B;AACjD,sBAAqB,6BAA6B;AAClD,sBAAqB;AACrB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,8BAA6B,4BAA4B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA,sBAAqB,QAAQ,OAAO,SAAS,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,kBAAiB,QAAQ;AACzB;AACA;AACA,sBAAqB,OAAO,OAAO,SAAS,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA,sBAAqB;AACrB;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA,mBAAkB,iBAAiB;AACnC;AACA,SAAQ;AACR,eAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA,sBAAqB,+BAA+B;AACpD,sBAAqB;AACrB;AACA;AACA;AACA;AACA,eAAc,2BAA2B;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,UAAU;AACzB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,oBAAmB,mBAAmB,GAAG,iBAAiB;AAC1D;AACA;AACA;AACA,oBAAmB,YAAY,GAAG,YAAY;AAC9C;AACA;AACA;AACA,eAAc,WAAW,8BAA8B,GAAG,4BAA4B;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;;AAEA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,8BAA8B;AAC7C;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA,sBAAqB;AACrB;AACA;AACA,eAAc;AACd;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA,iBAAgB,2BAA2B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,8BAA8B;AAC7C;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA,sBAAqB;AACrB;AACA;AACA,eAAc;AACd;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA,sBAAqB,QAAQ,OAAO,+BAA+B,EAAE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA,sBAAqB,QAAQ,OAAO,SAAS,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,kBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA,kBAAiB,sBAAsB;AACvC,sBAAqB,UAAU;AAC/B;AACA;AACA,uEAAsE,2BAA2B,EAAE;AACnG,kBAAiB,8BAA8B;AAC/C;AACA;AACA;AACA,6DAA4D;AAC5D,kBAAiB,mBAAmB;AACpC;AACA;AACA;AACA,2CAA0C,OAAO;AACjD,kBAAiB,oBAAoB;AACrC;AACA;AACA;AACA,4CAA2C,YAAY;AACvD,2CAA0C,QAAQ;AAClD,kBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA,kBAAiB,qBAAqB;AACtC;AACA;AACA;AACA,sDAAqD,2BAA2B,EAAE;AAClF,yCAAwC,aAAa,eAAe,EAAE;AACtE,kBAAiB,8BAA8B;AAC/C;AACA;AACA;AACA,yDAAwD,qCAAqC;AAC7F;AACA;AACA;AACA;AACA,2DAA0D,qBAAqB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAwC;;AAExC,6CAA4C;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP,oBAAmB;;AAEnB;AACA;AACA;AACA;AACA,+BAA8B,mBAAmB;AACjD;AACA;AACA;AACA;AACA,6CAA4C;;AAE5C;AACA,wDAAuD;AACvD;AACA;AACA,8BAA6B,EAAE;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C;AAC1C,gCAA+B,iCAAiC;AAChE,eAAc;AACd;AACA;AACA,uBAAsB;;AAEtB;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,cAAc;AAC7B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,cAAc;AAC7B,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAiC;AACjC,cAAa,QAAQ,QAAQ,UAAU,SAAS,aAAa;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA,uCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,cAAc;AAC7B,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,iBAAgB,OAAO;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,gBAAe,4BAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,WAAU,8CAA8C;AACxD,WAAU;AACV;AACA;AACA,mCAAkC,6BAA6B;AAC/D,gBAAe,6CAA6C;AAC5D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,WAAU,mBAAmB;AAC7B,WAAU;AACV;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,KAAK;AACpB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,WAAU,OAAO,OAAO,qBAAqB,EAAE,EAAE;AACjD,WAAU,OAAO,OAAO,qBAAqB,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,KAAK;AACpB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,kBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA,iBAAgB,mBAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,mBAAmB,GAAG,iBAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA8B,qDAAqD;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,WAAU,OAAO,OAAO,SAAS,EAAE,EAAE;AACrC,WAAU,OAAO,OAAO,SAAS,EAAE;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA,WAAU,SAAS;AACnB,WAAU;AACV;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA,uBAAsB,sEAAsE;AAC5F;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA0B,yDAAyD;AACnF;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAoB,yCAAyC;AAC7D;AACA,MAAK;;AAEL,kEAAiE,kCAAkC;;AAEnG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;AC18XD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC,uDAAuD;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnLA,sF;;;;;;ACAA,sE;;;;;;ACAA,yE;;;;;;ACAA,wE;;;;;;ACAA,+E;;;;;;ACAA,yE;;;;;;ACAA,uE;;;;;;ACAA,iF;;;;;;ACAA,wE;;;;;;ACAA,wE;;;;;;ACAA,4E;;;;;;ACAA,yE;;;;;;ACAA,yE;;;;;;ACAA,uE;;;;;;ACAA,0E;;;;;;ACAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAiC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,OAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,4DAA2D,yDAAyD;AACpH;AACA;AACA;AACA;AACA,gCAA+B,yDAAyD;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA,IAAG,6CAA6C;AAChD,IAAG,6CAA6C;AAChD,IAAG,+CAA+C;AAClD,IAAG,6CAA6C;AAChD,IAAG,6CAA6C;AAChD,IAAG,6CAA6C;AAChD,IAAG,+DAA+D;AAClE,IAAG,2CAA2C;AAC9C,IAAG,iEAAiE;AACpE,IAAG,6CAA6C;AAChD,IAAG,2CAA2C;AAC9C,IAAG,+CAA+C;AAClD,IAAG,yCAAyC;AAC5C,IAAG,+CAA+C;AAClD,IAAG,qDAAqD;AACxD,IAAG,+CAA+C;AAClD,IAAG,6CAA6C;;AAEhD,IAAG,+EAA+E;AAClF,IAAG,0EAA0E,iBAAiB,EAAE,EAAE;AAClG,IAAG,4FAA4F;AAC/F,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA,IAAG;AACH,GAAE;AACF,EAAC;;;;;;;ACxUD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAY,WAAW;AACvB,aAAY,uBAAuB;AACnC;AACA;AACA;AACA,aAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,2BAA0B,yCAAyC;AACnE;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,eAAe;AACtC;;AAEA;AACA;AACA;AACA;AACA,0BAAyB,UAAU;AACnC,YAAW;AACX;AACA,0BAAyB,yCAAyC;AAClE;AACA;;AAEA;;AAEA,2BAA0B,YAAY;AACtC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,cAAc;AACzB;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE;AACrE;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,6CAA6C,EAAE;AAC9E;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,uBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA,wDAAuD;;AAEvD;AACA;AACA,kCAAiC,8DAA8D;AAC/F,UAAS;AACT,oCAAmC,mDAAmD;AACtF,6CAA4C,GAAG,oCAAoC;;AAEnF,uEAAsE;AACtE;AACA;AACA;AACA,wBAAuB,+BAA+B,EAAE;AACxD,wBAAuB,+BAA+B;AACtD;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B,6DAA6D;AACzF,iCAAgC,GAAG,8DAA8D;AACjG;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA,sEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,wDAAwD;AACrF;AACA,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,aAAa,qBAAqB;AACvD;AACA,qBAAoB,QAAQ;AAC5B,cAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD,uDAAuD;AACzG,aAAY,QAAQ,IAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,gBAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA4B;AAC5B;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qDAAoD;AACpD;AACA,qDAAoD;AACpD,4CAA2C;;AAE3C;AACA,wBAAuB,cAAc;AACrC;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B;AACA;AACA,iBAAgB;AAChB,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA,cAAa;AACb,MAAK;AACL;AACA;AACA;AACA;AACA,yBAAwB,QAAQ;AAChC;AACA;AACA;AACA,iBAAgB;AAChB,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA,cAAa;AACb,MAAK;AACL;AACA;AACA;AACA;AACA,yBAAwB,eAAe;AACvC;AACA;AACA;AACA,iBAAgB;AAChB,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA,4LAA2L,mCAAmC;AAC9N;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,gBAAe;AACf;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gFAA+E;AAC/E;AACA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,mEAAkE;;AAElE;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,4CAA2C;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,aAAa,IAAI,aAAa;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD,aAAa,EAAE;AAChE,kDAAiD,aAAa,EAAE;AAChE;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA,4BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,4BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,4BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,+CAA8C,sBAAsB;AACpE;AACA,gBAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA,6CAA4C;AAC5C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;;AAEf,cAAa;AACb;AACA,cAAa;;AAEb;AACA;AACA,cAAa;AACb;AACA,cAAa;;AAEb;AACA;;AAEA;AACA,UAAS;AACT;;AAEA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA2B,aAAa;AACxC;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA,wCAAuC;;AAEvC;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qCAAoC,mBAAmB;AACvD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,qCAAoC,oBAAoB;AACxD,SAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC;;AAEtC;AACA;AACA;AACA;AACA,yCAAwC;AACxC,iEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD,cAAc;AACrE,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA2B,oCAAoC;;AAE/D;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;;AAEA;;AAEA;AACA;AACA,+BAA8B;;AAE9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4DAA2D;;AAE3D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA,cAAa;;AAEb;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA,aAAY,4DAA4D;AACxE;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,aAAY,4DAA4D;AACxE;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAY,wEAAwE;AACpF;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mCAAkC,qBAAqB;AACvD,UAAS;AACT,0BAAyB,6CAA6C;AACtE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,uCAAsC,OAAO;AAC7C,mCAAkC,WAAW;AAC7C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB,aAAa;AACjC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ,4EAA4E,wDAAwD;AACvJ,YAAW,QAAQ;AACnB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB;AACA;AACA,uEAAsE,gDAAgD;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,YAAY;AACjC;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,oDAAoD;AAC7D,UAAS;AACT;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qEAAoE;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;;AAEA,uBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA0B,kBAAkB;AAC5C;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,+CAA8C;AAC9C;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,UAAS;AACT;AACA;;AAEA,UAAS;AACT;AACA;AACA,YAAW;;AAEX,UAAS;AACT;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,4BAA2B,sBAAsB;AACjD;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;;AAEA;AACA,sDAAqD;AACrD;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,2GAA0G,SAAS;AACnH;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,4FAA2F;AAC3F;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,8DAA6D,wBAAwB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,sCAAsC,0GAA0G,OAAO;AAClL;AACA;AACA;AACA;AACA,sEAAqE,OAAO;AAC5E;AACA;AACA;AACA;AACA,wEAAuE,sBAAsB;AAC7F;AACA,yDAAwD,gDAAgD,wBAAwB,8EAA8E,2BAA2B,KAAK,UAAU;AACxP;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,8CAA6C,yFAAyF;AACtI;AACA;AACA;AACA,sFAAqF,aAAa;AAClG,mHAAkH,kBAAkB,KAAK,iBAAiB;AAC1J,wFAAuF,WAAW;AAClG;AACA,0GAAyG,WAAW;AACpH;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,qDAAoD,YAAY,eAAe,2BAA2B;AAC1G,EAAC;;AAED;AACA;AACA,gDAA+C,eAAe,eAAe,YAAY,eAAe,6CAA6C;AACrJ;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,oDAAmD,kEAAkE,6CAA6C,WAAW;AAC7K;AACA,EAAC;;AAED;AACA;AACA;AACA,oDAAmD,6CAA6C,6CAA6C,WAAW;AACxJ;AACA,EAAC;;AAED;AACA;AACA,6BAA4B,WAAW,eAAe,kCAAkC;AACxF;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,6BAA4B,WAAW,eAAe,kCAAkC;AACxF;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,6BAA4B,WAAW,eAAe,kCAAkC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,sBAAqB,mCAAmC;AACxD,0DAAyD,SAAS;AAClE;AACA;AACA,EAAC;;AAED;AACA;AACA,wBAAuB,uBAAuB,eAAe,wBAAwB;AACrF;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,0BAAyB,uBAAuB,eAAe,oDAAoD;AACnH;AACA;AACA;AACA,2BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA,gCAA+B,oCAAoC,0BAA0B;AAC7F;AACA;AACA;AACA,gCAA+B,oCAAoC,4BAA4B;AAC/F;AACA;AACA,oIAAmI,UAAU;AAC7I;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,8CAA6C,uFAAuF;AACpI,yDAAwD,0BAA0B;AAClF;AACA;AACA;AACA,EAAC;;;;;;;AChmHD,4HAA2H,6BAA6B,mCAAmC,oBAAoB,yBAAyB,w5BAAw5B,4BAA4B,6BAA6B,wBAAwB,wIAAwI,iCAAiC,6BAA6B,wBAAwB,gVAAgV,qBAAqB,+BAA+B,sCAAsC,mBAAmB,aAAa,0bAA0b,uCAAuC,6aAA6a,oCAAoC,sFAAsF,oCAAoC,g9B;;;;;;ACAr6F,8N;;;;;;ACAA,gO;;;;;;ACAA,qGAAoG,eAAe,sJ;;;;;;ACAnH,4QAA2Q,iBAAiB,id;;;;;;ACA5R,4WAA2W,mBAAmB,IAAI,qBAAqB,6PAA6P,6BAA6B,8GAA8G,sIAAsI,6DAA6D,8MAA8M,mBAAmB,0BAA0B,qBAAqB,svCAAsvC,yEAAyE,ytC;;;;;;ACAjjF,+bAA8b,0EAA0E,Y;;;;;;ACAxgB,2RAA0R,kGAAkG,wBAAwB,2BAA2B,0BAA0B,8I;;;;;;ACAzc,oRAAmR,eAAe,+EAA+E,aAAa,yCAAyC,eAAe,klC;;;;;;ACAtb,sRAAqR,kDAAkD,gM;;;;;;ACAvU,kY;;;;;;ACAA,s3BAAq3B,MAAM,EAAE,MAAM,yIAAyI,0FAA0F,oYAAoY,MAAM,MAAM,MAAM,6KAA6K,MAAM,MAAM,MAAM,6KAA6K,MAAM,SAAS,MAAM,g6BAAg6B,MAAM,EAAE,MAAM,yIAAyI,gFAAgF,yaAAya,MAAM,MAAM,MAAM,4BAA4B,MAAM,MAAM,MAAM,yNAAyN,MAAM,SAAS,MAAM,kZ;;;;;;ACA3tH,mGAAkG,oFAAoF,EAAE,a;;;;;;ACAxL,wCAAuC,yCAAyC,0BAA0B,GAAG,+BAA+B,oCAAoC,GAAG,C;;;;;;ACAnL,oGAAmG,2BAA2B,OAAO,6BAA6B,mCAAmC,OAAO,+BAA+B,oBAAoB,0BAA0B,OAAO,4BAA4B,oBAAoB,0BAA0B,OAAO,6BAA6B,qBAAqB,OAAO,+UAA+U,0BAA0B,8GAA8G,6BAA6B,oHAAoH,6BAA6B,yhCAAyhC,kBAAkB,gvCAAgvC,sBAAsB,0gBAA0gB,sxBAAsxB,QAAQ,mqBAAmqB,QAAQ,oWAAoW,w6BAAw6B,4DAA4D,4DAA4D,eAAe,iG;;;;;;ACAtsN,wCAAuC,MAAM,4BAA4B,WAAW,8BAA8B,OAAO,iCAAiC,cAAc,4B;;;;;;ACAxK,6GAA4G,oDAAoD,gHAAgH,kCAAkC,sDAAsD,qDAAqD,+CAA+C,MAAM,qB;;;;;;ACAld,qCAAoC,MAAM,gDAAgD,MAAM,8BAA8B,WAAW,yC;;;;;;ACAzI,4aAA2a,uCAAuC,sDAAsD,cAAc,yHAAyH,YAAY,ia;;;;;;ACA3pB,8LAA6L,MAAM,+JAA+J,MAAM,uIAAuI,UAAU,YAAY,MAAM,8OAA8O,gBAAgB,wJAAwJ,WAAW,+M;;;;;;ACA56B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;mCCVA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCCpBD;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA,EAAC;;;;;;;mCCzCD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,EAAC;;;;;;;mCClCD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,WAAW;AAC7B,mBAAkB,WAAW;AAC7B,mBAAkB,MAAM;AACxB,mBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAqC,qBAAqB;AAC1D,uCAAsC,+BAA+B;AACrE,sCAAqC,uBAAuB;AAC5D,uCAAsC,uCAAuC;;AAE7E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,UAAS;AACT;;AAEA;AACA,MAAK;AACL,IAAG;AACH,EAAC;;;;;;;mCC/ED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,uCAAsC,iBAAiB,EAAE;AACzD,UAAS;AACT,uCAAsC,eAAe,EAAE;AACvD,UAAS;AACT;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCClFD;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,cAAc;AAC9B;AACA,iBAAgB,SAAS;AACzB;AACA;AACA;AACA,oBAAmB;AACnB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCrCD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,QAAQ;AACxB;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW;;AAEX;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCCjFD;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB;AACjB;AACA;AACA;;AAEA,sBAAqB,QAAQ,gBAAgB,SAAS;AACtD;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,QAAO,oBAAoB,OAAO,aAAa;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,wBAAuB;AACvB;AACA,kCAAiC;AACjC;;AAEA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;mCCnDD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA,EAAC;;;;;;;mCClHD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCC1BD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCCnED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iCAAgC,cAAc;AAC9C;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCCtBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCC3BD;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCC1BD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,iBAAiB;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC3BD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCzCD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB;;AAEvB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;AAEL;AACA;AACA,EAAC;;;;;;;mCCzOD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,EAAC;;;;;;;mCChBD;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA8B,4BAA4B;;AAE1D;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCzBD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAkB;AAClB,qBAAoB;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS,IAAI;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAkB;AAClB,qBAAoB,OAAO;AAC3B;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCrSD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA;AACA;;;AAGA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCC5CD;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA,EAAC;;;;;;;mCC7ED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA,EAAC;;;;;;;mCCtID;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCXD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCChHD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCZD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA,EAAC;;;;;;;mCCpBD;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;mCCLD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;AACL;AACA,EAAC;;;;;;;mCCdD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCCvBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCdD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCZD;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCC9DD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCCdD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB,UAAS;AACT;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCpBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCZD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCZD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB,UAAS;AACT;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCtBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB,UAAS;AACT;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCClBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB,UAAS;AACT;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCnBD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,KAAK;AACpB;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCChBD;AACA;AACA;AACA,yBAAwB;;AAExB;AACA;AACA,gBAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;AACL;AACA,EAAC;;;;;;;;mCCjBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;;AAEX;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCjED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE;AACA,MAAK;AACL;AACA,EAAC;;;;;;;ACxBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,EAAC;;;;;;;AC7DD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,8EAA6E;AAC7E;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,EAAC;;;;;;;AC/CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,mCAAkC;AAClC,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCCtBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;;AAEA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAqC,kBAAkB;AACvD;;AAEA;AACA,sCAAqC,iBAAiB;AACtD;;AAEA;AACA,wDAAuD,0BAA0B;AACjF;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kCAAiC,IAAI;AACrC,sCAAqC,IAAI;AACzC,2CAA0C,IAAI;AAC9C,4CAA2C,IAAI;AAC/C;;AAEA;AACA;AACA,EAAC;;;;;;;mCC9QD;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAAyC,eAAe;AACxD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,EAAC,uJ;;;;;;mCCpCD;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAkB,kBAAkB;AACpC,kBAAiB,iBAAiB;AAClC,iBAAgB,iBAAiB;AACjC,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;;;;;;mCClDD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCvBD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT,QAAO;;AAEP;AACA;;AAEA,sBAAqB,YAAY;AACjC;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCCpDD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCC7CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAqB,gCAAgC;AACrD;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCCpBD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,aAAa;AAC7B,iBAAgB,OAAO;AACvB,iBAAgB,SAAS;AACzB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA,IAAG;AACH,EAAC,uJ;;;;;;mCCvBD;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCC5BD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCC/CD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCC1CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCVD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCTD;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCvDD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCvBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCXD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCvBD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET,0BAAyB,+CAA+C;AACxE;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCxCD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,QAAO,8BAA8B;AACrC,QAAO,kCAAkC;AACzC,QAAO,kCAAkC;AACzC,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC1DD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yDAAwD,OAAO;;AAE/D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA,8BAA6B,YAAY;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO,wBAAwB;AAC/B,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCChID;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA,MAAK;AACL,IAAG;AACH,EAAC;;;;;;;mCC/BD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCpBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCChBD;AACA;;AAEA;AACA,MAAK,uCAAuC;;AAE5C,MAAK,gDAAgD;AACrD,MAAK,kDAAkD;AACvD,MAAK,kDAAkD;AACvD,MAAK,kDAAkD;;AAEvD,MAAK,gDAAgD;AACrD,MAAK,kDAAkD;AACvD,MAAK,mDAAmD;AACxD,MAAK,oDAAoD;;AAEzD,MAAK,gDAAgD;AACrD,MAAK,gDAAgD;AACrD,MAAK,kDAAkD;AACvD,MAAK;AACL;;AAEA,EAAC;;;;;;;mCCtBD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC3BD;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCjDD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCnBD;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,KAAK;AACpB,kBAAiB;AACjB;AACA;AACA;AACA,+BAA8B,eAAe,aAAa;AAC1D;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yBAAwB;AACxB;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,EAAC;;;;;;;;mCCzCD;AACA;AACA;;AAEA;AACA;AACA,cAAa,KAAK;AAClB,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;mCCjBD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,2BAA2B;AAC7C,mBAAkB,SAAS;AAC3B,mBAAkB,SAAS;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,wDAAuD,YAAY;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA,gCAA+B,YAAY;AAC3C;;AAEA;AACA,MAAK;AACL,IAAG;AACH,EAAC,uJ;;;;;;mCCpHD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCtBD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,EAAC;;;;;;;mCClBD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA,YAAW,yBAAyB;AACpC,YAAW,yBAAyB;AACpC,YAAW,2BAA2B;AACtC,YAAW;AACX;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,YAAW;;AAEX;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAA4B,YAAY;AACxC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;;AAGH,EAAC;;;;;;;mCCrMD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH,EAAC,uJ;;;;;;mCC1ED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD;AAClD,6BAA4B,SAAS,mCAAmC,EAAE;AAC1E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA,iCAAgC;AAChC,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC,kBAAkB,EAAE;AAC7D;AACA,qDAAoD,qBAAqB,EAAE;AAC3E;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCrGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,EAAC,uJ;;;;;;mCCXD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,QAAQ;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,IAAG;AACH,EAAC;;;;;;;mCCzBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCCvCD;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;;AAEA;AACA,EAAC;;;;;;;mCCnDD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,MAAM;AACxB,mBAAkB,WAAW;AAC7B,mBAAkB,eAAe;AACjC,mBAAkB,SAAS;AAC3B,mBAAkB,MAAM;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,yBAAwB,eAAe,GAAG,qBAAqB;AAC/D,qBAAoB;AACpB;AACA,sBAAqB,eAAe,GAAG,qBAAqB;AAC5D,qBAAoB;AACpB;AACA,mBAAkB,MAAM;AACxB,mBAAkB,SAAS;AAC3B,mBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,mBAAkB,MAAM;AACxB,mBAAkB,IAAI;AACtB,mBAAkB,MAAM;AACxB;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,mBAAkB,MAAM;AACxB,mBAAkB,MAAM;AACxB,mBAAkB,MAAM;AACxB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,QAAO;;;AAGP,MAAK;AACL;AACA,EAAC;;;;;;;mCCrID;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,SAAS;AAC3B;AACA,mBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA,YAAW;;AAEX;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;;AAGP;AACA;AACA;AACA,mBAAkB,iBAAiB;AACnC,mBAAkB;AAClB;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA,MAAK;AACL;AACA,EAAC;;;;;;;mCClED;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,IAAI;AACtB,mBAAkB;AAClB;AACA;AACA;AACA,QAAO;;AAEP,MAAK;AACL;AACA,EAAC;;;;;;;mCCpBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB,OAAO;AACzB,mBAAkB,QAAQ;AAC1B,mBAAkB;AAClB;AACA;AACA,wBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA;;AAEA,MAAK;AACL;AACA,EAAC;;;;;;;mCCvCD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA,mBAAkB,YAAY;AAC9B,mBAAkB,YAAY;AAC9B;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCC7CD;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,mBAAkB,IAAI;AACtB,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,mBAAkB;AAClB;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,kBAAiB,aAAa;AAC9B,mBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,MAAK;AACL;AACA,EAAC;;;;;;;mCCtDD;AACA;;AAEA;AACA,cAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA,IAAG;;AAEH;AACA;AACA;AACA,eAAc,IAAI;AAClB,eAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc,IAAI;AAClB,eAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc,IAAI;AAClB,eAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,IAAI;AACb;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCC1ID;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;;;;ACnBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wCAAuC;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,oCAAoC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,oCAAoC;AAC5C;AACA;AACA,kBAAiB,wBAAwB;AACzC;AACA;AACA;AACA,4DAA2D,GAAG,iBAAiB;AAC/E;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,4BAA2B,oBAAoB;AAC/C,iDAAgD;AAChD,sBAAqB;AACrB,8BAA6B,QAAQ;AACrC;AACA,0BAAyB,oBAAoB;AAC7C,yEAAwE;AACxE,2CAA0C,KAAK,uCAAuC;AACtF;AACA;AACA;AACA;AACA,eAAc,eAAe;AAC7B;AACA;AACA,6BAA4B,oBAAoB;AAChD,4CAA2C,sCAAsC;AACjF;AACA;AACA;AACA,eAAc,eAAe;AAC7B;AACA;AACA,yBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA,yBAAwB,6DAA6D;AACrF;AACA,YAAW,yDAAyD;AACpE;AACA;AACA,uBAAsB,OAAO;AAC7B,2BAA0B,gBAAgB;AAC1C,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA,2BAA0B,qBAAqB;AAC/C,YAAW,6BAA6B;AACxC;AACA;AACA;AACA,eAAc,gBAAgB;AAC9B;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,sCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA,6CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO,qBAAqB;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAS,iBAAiB;AAC1B;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,kCAAkC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB;AACA;AACA;AACA,wDAAuD,iCAAiC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA,sBAAqB,wBAAwB;AAC7C;AACA,uCAAsC,4CAA4C;AAClF;AACA;AACA,SAAQ,wCAAwC;AAChD,SAAQ,0CAA0C;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC,kBAAkB;AACzD,kDAAiD,4BAA4B;AAC7E,6CAA4C,uBAAuB;AACnE,iDAAgD,2BAA2B;AAC3E,oCAAmC,cAAc;AACjD;AACA;AACA;AACA;AACA,0BAAyB,MAAM;AAC/B,uBAAsB,eAAe;AACrC;AACA;AACA;AACA,0BAAyB,MAAM;AAC/B,uBAAsB,eAAe;AACrC,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,sCAAsC;AAC9C;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,gBAAgB;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,6BAA6B;AAC3C;AACA,oCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,mBAAkB,OAAO;AACzB,sBAAqB,OAAO;AAC5B,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,sCAAqC,SAAS;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6CAA4C;AAC5C;;AAEA;AACA;AACA;AACA,gBAAe;;AAEf;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,sDAAqD,sBAAsB;AAC3E,gDAA+C,sBAAsB,EAAE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,YAAW;AACX;AACA;;;AAGA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC;AACrC,gCAA+B;AAC/B;AACA;AACA,QAAO;AACP,2BAA0B;AAC1B,8DAA6D,UAAU,gBAAgB;AACvF;;AAEA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,IAAG;AACH;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,wBAAwB;AACzC;AACA,+CAA8C,+BAA+B;AAC7E,KAAI,qCAAqC,MAAM,iCAAiC;AAChF,kDAAiD,8BAA8B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA,2BAA0B,WAAW;AACrC;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD,4BAA4B;AAC7E;AACA;AACA;AACA;AACA,kBAAiB,wBAAwB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,QAAQ,0CAA0C;AAC7D,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAoC,uBAAuB;AAC3D,+CAA8C,iCAAiC;AAC/E,0CAAyC,4BAA4B;AACrE,8CAA6C,gCAAgC;AAC7E,iCAAgC,mBAAmB;AACnD;AACA;;AAEA;AACA;AACA,yBAAwB,WAAW;AACnC,sBAAqB,oBAAoB;AACzC;AACA;;AAEA;AACA;AACA,yBAAwB,cAAc;AACtC,sBAAqB,uBAAuB;AAC5C,yBAAwB;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,kBAAiB;;AAEjB;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,YAAW;;AAEX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA,EAAC;;;;;;;;;;;;;;mCC55BD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA,YAAW;AACX,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCChED;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCCnDD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCCrDD;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;;AAEH,EAAC","file":"sense.js","sourcesContent":[" \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\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n \t__webpack_require__.p = \"/bundles/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap d26167e4f671993c83a6\n **/","/**\n * Optimized application entry file\n *\n * This is programatically created and updated, do not modify\n *\n * built using: Kibana 4.2.0-snapshot\n * includes code from:\n * - sense@1.0.0\n *\n */\n\nrequire('chrome');\nrequire('angular-bindonce');\nrequire('chrome/context');\nrequire('components/bind');\nrequire('components/bound_to_config_obj');\nrequire('components/config/config');\nrequire('components/courier/courier');\nrequire('components/debounce');\nrequire('components/doc_title/doc_title');\nrequire('components/elastic_textarea');\nrequire('components/es');\nrequire('components/events');\nrequire('components/fancy_forms/fancy_forms');\nrequire('components/filter_bar/filter_bar');\nrequire('components/filter_manager/filter_manager');\nrequire('components/index_patterns/index_patterns');\nrequire('components/listen');\nrequire('components/notify/notify');\nrequire('components/persisted_log/persisted_log');\nrequire('components/private');\nrequire('components/promises');\nrequire('components/state_management/app_state');\nrequire('components/state_management/global_state');\nrequire('components/storage/storage');\nrequire('components/stringify/register');\nrequire('components/style_compile/style_compile');\nrequire('components/timefilter/timefilter');\nrequire('components/timepicker/timepicker');\nrequire('components/tooltip/tooltip');\nrequire('components/typeahead/typeahead');\nrequire('components/ui-bootstrap/index');\nrequire('components/url/url');\nrequire('components/validateDateInterval');\nrequire('components/validate_query/validate_query');\nrequire('components/watch_multi');\nrequire('directives/auto_select_if_only_one');\nrequire('directives/click_focus');\nrequire('directives/config');\nrequire('directives/confirm_click');\nrequire('directives/css_truncate');\nrequire('directives/field_name');\nrequire('directives/file_upload');\nrequire('directives/inequality');\nrequire('directives/infinite_scroll');\nrequire('directives/info');\nrequire('directives/input_datetime');\nrequire('directives/input_focus');\nrequire('directives/input_whole_number');\nrequire('directives/paginate');\nrequire('directives/pretty_duration');\nrequire('directives/rows');\nrequire('directives/saved_object_finder');\nrequire('directives/spinner');\nrequire('directives/truncated');\nrequire('directives/validate_cidr_mask');\nrequire('directives/validate_date_math');\nrequire('directives/validate_index_name');\nrequire('directives/validate_ip');\nrequire('directives/validate_json');\nrequire('elasticsearch');\nrequire('filters/commaList');\nrequire('filters/field_type');\nrequire('filters/label');\nrequire('filters/match_any');\nrequire('filters/moment');\nrequire('filters/rison');\nrequire('filters/short_dots');\nrequire('filters/start_from');\nrequire('filters/trust_as_html');\nrequire('filters/unique');\nrequire('filters/uriescape');\nrequire('ui-styles/base.less');\nrequire('ui-styles/callout.less');\nrequire('ui-styles/config.less');\nrequire('ui-styles/control_group.less');\nrequire('ui-styles/hintbox.less');\nrequire('ui-styles/input.less');\nrequire('ui-styles/list-group-menu.less');\nrequire('ui-styles/navbar.less');\nrequire('ui-styles/notify.less');\nrequire('ui-styles/pagination.less');\nrequire('ui-styles/sidebar.less');\nrequire('ui-styles/spinner.less');\nrequire('ui-styles/table.less');\nrequire('ui-styles/truncate.less');\nrequire('plugins/sense/sense');\nrequire('chrome').bootstrap([\"elasticsearch\",\"pasvaz.bindonce\"]);\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./bundles/sense.entry.js\n ** module id = 0\n ** module chunks = 1\n **/","define(function (require) {\n /**\n * THESE ARE AUTOMATICALLY INCLUDED IN LODASH\n *\n * use:\n * var _ = require('lodash');\n *\n * require.js config points the 'lodash' id to\n * this module, which provides a modified version\n * of lodash.\n */\n var _ = require('lodash_src').runInContext();\n require('utils/lodash-mixins/string')(_);\n require('utils/lodash-mixins/lang')(_);\n require('utils/lodash-mixins/object')(_);\n require('utils/lodash-mixins/collection')(_);\n require('utils/lodash-mixins/function')(_);\n require('utils/lodash-mixins/oop')(_);\n return _;\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/utils/lodash-mixins/index.js\n ** module id = 1\n ** module chunks = 0 1 2\n **/","//! moment.js\n//! version : 2.10.3\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\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 utils_hooks__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 Object.prototype.toString.call(input) === '[object Array]';\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 create_utc__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 };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n function valid__isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n m._isValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated;\n\n if (m._strict) {\n m._isValid = m._isValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n return m._isValid;\n }\n\n function valid__createInvalid (flags) {\n var m = create_utc__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 var momentProperties = utils_hooks__hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (typeof from._isAMomentObject !== 'undefined') {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (typeof from._i !== 'undefined') {\n to._i = from._i;\n }\n if (typeof from._f !== 'undefined') {\n to._f = from._f;\n }\n if (typeof from._l !== 'undefined') {\n to._l = from._l;\n }\n if (typeof from._strict !== 'undefined') {\n to._strict = from._strict;\n }\n if (typeof from._tzm !== 'undefined') {\n to._tzm = from._tzm;\n }\n if (typeof from._isUTC !== 'undefined') {\n to._isUTC = from._isUTC;\n }\n if (typeof from._offset !== 'undefined') {\n to._offset = from._offset;\n }\n if (typeof from._pf !== 'undefined') {\n to._pf = getParsingFlags(from);\n }\n if (typeof from._locale !== 'undefined') {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i in momentProperties) {\n prop = momentProperties[i];\n val = from[prop];\n if (typeof val !== 'undefined') {\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);\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n utils_hooks__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 toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n if (coercedNumber >= 0) {\n value = Math.floor(coercedNumber);\n } else {\n value = Math.ceil(coercedNumber);\n }\n }\n\n return value;\n }\n\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 Locale() {\n }\n\n var locales = {};\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 null;\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 require('./locale/' + name);\n // because defineLocale currently also sets the global locale, we\n // want to undo that for lazy loaded locales\n locale_locales__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 locale_locales__getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (typeof values === 'undefined') {\n data = locale_locales__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 }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, values) {\n if (values !== null) {\n values.abbr = name;\n if (!locales[name]) {\n locales[name] = new Locale();\n }\n locales[name].set(values);\n\n // backwards compat for now: also set the locale\n locale_locales__getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n // returns locale data\n function locale_locales__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 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 function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n get_set__set(this, unit, value);\n utils_hooks__hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get_set__get(this, unit);\n }\n };\n }\n\n function get_set__get (mom, unit) {\n return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]();\n }\n\n function get_set__set (mom, unit, value) {\n return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n\n // MOMENTS\n\n function getSet (units, value) {\n var unit;\n if (typeof units === 'object') {\n for (unit in units) {\n this.set(unit, units[unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (typeof this[units] === 'function') {\n return this[units](value);\n }\n }\n return this;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var output = '' + Math.abs(number),\n sign = number >= 0;\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return (sign ? (forceSign ? '+' : '') : '-') + output;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|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 = '';\n for (i = 0; i < length; i++) {\n output += array[i] instanceof Function ? 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\n if (!formatFunctions[format]) {\n formatFunctions[format] = makeFormatFunction(format);\n }\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 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\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 var matchWord = /[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = typeof regex === 'function' ? regex : function (isStrict) {\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 s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }).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 (typeof callback === 'number') {\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\n function daysInMonth(year, month) {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\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 // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', matchWord);\n addRegexToken('MMMM', matchWord);\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 defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m) {\n return this._months[m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m) {\n return this._monthsShort[m.month()];\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = create_utc__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 // TODO: Move this out of here!\n if (typeof value === 'string') {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (typeof value !== 'number') {\n return mom;\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 utils_hooks__hooks.updateOffset(this, true);\n return this;\n } else {\n return get_set__get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\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\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n function warn(msg) {\n if (utils_hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true,\n msgWithStack = msg + '\\n' + (new Error()).stack;\n\n return extend(function () {\n if (firstTime) {\n warn(msgWithStack);\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 (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n utils_hooks__hooks.suppressDeprecationWarnings = false;\n\n var from_string__isoRegex = /^\\s*(?:[+-]\\d{6}|\\d{4})-(?:(\\d\\d-\\d\\d)|(W\\d\\d$)|(W\\d\\d-\\d)|(\\d\\d\\d))((T| )(\\d\\d(:\\d\\d(:\\d\\d(\\.\\d+)?)?)?)?([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d{2}-\\d{2}/],\n ['YYYY-MM-DD', /\\d{4}-\\d{2}-\\d{2}/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d{2}-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d{2}/],\n ['YYYY-DDD', /\\d{4}-\\d{3}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /(T| )\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss', /(T| )\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /(T| )\\d\\d:\\d\\d/],\n ['HH', /(T| )\\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 = from_string__isoRegex.exec(string);\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(string)) {\n // match[5] should be 'T' or undefined\n config._f = isoDates[i][0] + (match[6] || ' ');\n break;\n }\n }\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(string)) {\n config._f += isoTimes[i][0];\n break;\n }\n }\n if (string.match(matchOffset)) {\n config._f += 'Z';\n }\n configFromStringAndFormat(config);\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 utils_hooks__hooks.createFromInputFallback(config);\n }\n }\n\n utils_hooks__hooks.createFromInputFallback = deprecate(\n 'moment construction falls back to js Date. This is ' +\n 'discouraged and will be removed in upcoming major ' +\n 'release. Please refer to ' +\n 'https://github.com/moment/moment/issues/1407 for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n function createDate (y, m, d, h, M, s, ms) {\n //can't just apply() to create a date:\n //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply\n var date = new Date(y, m, d, h, M, s, ms);\n\n //the date constructor doesn't accept years < 1970\n if (y < 1970) {\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 if (y < 1970) {\n date.setUTCFullYear(y);\n }\n return date;\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 // 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(['YYYY', 'YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YY', function (input, array) {\n array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input);\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 utils_hooks__hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', false);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\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 // 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 // firstDayOfWeek 0 = sun, 6 = sat\n // the day of the week that starts the week\n // (usually sunday or monday)\n // firstDayOfWeekOfYear 0 = sun, 6 = sat\n // the first week is the week that contains the first\n // of this day of the week\n // (eg. ISO weeks use thursday (4))\n function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {\n var end = firstDayOfWeekOfYear - firstDayOfWeek,\n daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(),\n adjustedMoment;\n\n\n if (daysToDayOfWeek > end) {\n daysToDayOfWeek -= 7;\n }\n\n if (daysToDayOfWeek < end - 7) {\n daysToDayOfWeek += 7;\n }\n\n adjustedMoment = local__createLocal(mom).add(daysToDayOfWeek, 'd');\n return {\n week: Math.ceil(adjustedMoment.dayOfYear() / 7),\n year: adjustedMoment.year()\n };\n }\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 addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\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 //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {\n var d = createUTCDate(year, 0, 1).getUTCDay();\n var daysToAdd;\n var dayOfYear;\n\n d = d === 0 ? 7 : d;\n weekday = weekday != null ? weekday : firstDayOfWeek;\n daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0);\n dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1;\n\n return {\n year : dayOfYear > 0 ? year : year - 1,\n dayOfYear : dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear\n };\n }\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 // 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 var now = new Date();\n if (config._useUTC) {\n return [now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()];\n }\n return [now.getFullYear(), now.getMonth(), now.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, 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) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse)) {\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 // 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\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp;\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(local__createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year);\n week = defaults(w.w, 1);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < dow) {\n ++week;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow);\n\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n\n utils_hooks__hooks.ISO_8601 = 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 === utils_hooks__hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\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 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 (getParsingFlags(config).bigHour === true &&\n config._a[HOUR] <= 12 &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\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 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 (!valid__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 = [i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond];\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var input = config._i,\n format = config._f,\n res;\n\n config._locale = config._locale || locale_locales__getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return valid__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 (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else if (isDate(input)) {\n config._d = input;\n } else {\n configFromInput(config);\n }\n\n res = new Moment(checkOverflow(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 configFromInput(config) {\n var input = config._i;\n if (input === undefined) {\n config._d = new Date();\n } else if (isDate(input)) {\n config._d = new Date(+input);\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 (typeof(input) === 'object') {\n configFromObject(config);\n } else if (typeof(input) === 'number') {\n // from milliseconds\n config._d = new Date(input);\n } else {\n utils_hooks__hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (typeof(locale) === 'boolean') {\n strict = locale;\n locale = 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 local__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.min instead. https://github.com/moment/moment/issues/1548',\n function () {\n var other = local__createLocal.apply(null, arguments);\n return other < this ? this : other;\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548',\n function () {\n var other = local__createLocal.apply(null, arguments);\n return other > this ? this : other;\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 local__createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (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 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 // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 36e5; // 1000 * 60 * 60\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 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 = locale_locales__getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\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', matchOffset);\n addRegexToken('ZZ', matchOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(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(string) {\n var matches = ((string || '').match(matchOffset) || []);\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 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 : +local__createLocal(input)) - (+res);\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(+res._d + diff);\n utils_hooks__hooks.updateOffset(res, false);\n return res;\n } else {\n return local__createLocal(input).local();\n }\n return model._isUTC ? local__createLocal(input).zone(model._offset || 0) : local__createLocal(input).local();\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 utils_hooks__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) {\n var offset = this._offset || 0,\n localAdjust;\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(input);\n }\n if (Math.abs(input) < 16) {\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 add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n utils_hooks__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) {\n this.utcOffset(this._tzm);\n } else if (typeof this._i === 'string') {\n this.utcOffset(offsetFromString(this._i));\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!input) {\n input = 0;\n }\n else {\n input = local__createLocal(input).utcOffset();\n }\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 (this._a) {\n var other = this._isUTC ? create_utc__createUTC(this._a) : local__createLocal(this._a);\n return this.isValid() && compareArrays(this._a, other.toArray()) > 0;\n }\n\n return false;\n }\n\n function isLocal () {\n return !this._isUTC;\n }\n\n function isUtcOffset () {\n return this._isUTC;\n }\n\n function isUtc () {\n return this._isUTC && this._offset === 0;\n }\n\n var aspNetRegex = /(\\-)?(?:(\\d*)\\.)?(\\d+)\\:(\\d+)(?:\\:(\\d+)\\.?(\\d{3})?)?/;\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 var create__isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;\n\n function create__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 (typeof input === 'number') {\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(match[MILLISECOND]) * sign\n };\n } else if (!!(match = create__isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n d : parseIso(match[4], sign),\n h : parseIso(match[5], sign),\n m : parseIso(match[6], sign),\n s : parseIso(match[7], sign),\n w : 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(local__createLocal(duration.from), local__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 create__createDuration.fn = Duration.prototype;\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 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 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 tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = create__createDuration(val, period);\n add_subtract__addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = duration._days,\n months = duration._months;\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (milliseconds) {\n mom._d.setTime(+mom._d + milliseconds * isAdding);\n }\n if (days) {\n get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding);\n }\n if (months) {\n setMonth(mom, get_set__get(mom, 'Month') + months * isAdding);\n }\n if (updateOffset) {\n utils_hooks__hooks.updateOffset(mom, days || months);\n }\n }\n\n var add_subtract__add = createAdder(1, 'add');\n var add_subtract__subtract = createAdder(-1, 'subtract');\n\n function moment_calendar__calendar (time) {\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 || local__createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n diff = this.diff(sod, 'days', true),\n format = 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 return this.format(this.localeData().calendar(format, this, local__createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var inputMs;\n units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');\n if (units === 'millisecond') {\n input = isMoment(input) ? input : local__createLocal(input);\n return +this > +input;\n } else {\n inputMs = isMoment(input) ? +input : +local__createLocal(input);\n return inputMs < +this.clone().startOf(units);\n }\n }\n\n function isBefore (input, units) {\n var inputMs;\n units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');\n if (units === 'millisecond') {\n input = isMoment(input) ? input : local__createLocal(input);\n return +this < +input;\n } else {\n inputMs = isMoment(input) ? +input : +local__createLocal(input);\n return +this.clone().endOf(units) < inputMs;\n }\n }\n\n function isBetween (from, to, units) {\n return this.isAfter(from, units) && this.isBefore(to, units);\n }\n\n function isSame (input, units) {\n var inputMs;\n units = normalizeUnits(units || 'millisecond');\n if (units === 'millisecond') {\n input = isMoment(input) ? input : local__createLocal(input);\n return +this === +input;\n } else {\n inputMs = +local__createLocal(input);\n return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units));\n }\n }\n\n function absFloor (number) {\n if (number < 0) {\n return Math.ceil(number);\n } else {\n return Math.floor(number);\n }\n }\n\n function diff (input, units, asFloat) {\n var that = cloneWithOffset(input, this),\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4,\n delta, output;\n\n units = normalizeUnits(units);\n\n if (units === 'year' || units === 'month' || units === 'quarter') {\n output = monthDiff(this, that);\n if (units === 'quarter') {\n output = output / 3;\n } else if (units === 'year') {\n output = output / 12;\n }\n } else {\n delta = this - that;\n output = units === 'second' ? delta / 1e3 : // 1000\n units === 'minute' ? delta / 6e4 : // 1000 * 60\n units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60\n units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst\n units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst\n delta;\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 return -(wholeMonthDiff + adjust);\n }\n\n utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function moment_format__toISOString () {\n var m = this.clone().utc();\n if (0 < m.year() && m.year() <= 9999) {\n if ('function' === typeof Date.prototype.toISOString) {\n // native implementation is ~50x faster, use it when we can\n return this.toDate().toISOString();\n } else {\n return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n } else {\n return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n }\n\n function format (inputString) {\n var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n }\n\n function fromNow (withoutSuffix) {\n return this.from(local__createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n }\n\n function toNow (withoutSuffix) {\n return this.to(local__createLocal(), withoutSuffix);\n }\n\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = locale_locales__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 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 return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n }\n\n function to_type__valueOf () {\n return +this._d - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(+this / 1000);\n }\n\n function toDate () {\n return this._offset ? new Date(+this) : this._d;\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 moment_valid__isValid () {\n return valid__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 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 // 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] = utils_hooks__hooks.parseTwoDigitYear(input);\n });\n\n // HELPERS\n\n function weeksInYear(year, dow, doy) {\n return weekOfYear(local__createLocal([year, 11, 31 + dow - doy]), dow, doy).week;\n }\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year;\n return input == null ? year : this.add((input - year), 'y');\n }\n\n function getSetISOWeekYear (input) {\n var year = weekOfYear(this, 1, 4).year;\n return input == null ? year : this.add((input - year), 'y');\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 addFormatToken('Q', 0, 0, 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\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 addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0], 10);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\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 // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', matchWord);\n addRegexToken('ddd', matchWord);\n addRegexToken('dddd', matchWord);\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config) {\n var weekday = config._locale.weekdaysParse(input);\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 if (!isNaN(input)) {\n input = parseInt(input, 10);\n }\n else {\n input = locale.weekdaysParse(input);\n if (typeof input !== 'number') {\n return null;\n }\n }\n }\n return input;\n }\n\n // LOCALES\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m) {\n return this._weekdays[m.day()];\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return this._weekdaysShort[m.day()];\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return this._weekdaysMin[m.day()];\n }\n\n function localeWeekdaysParse (weekdayName) {\n var i, mom, regex;\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n if (!this._weekdaysParse[i]) {\n mom = local__createLocal([2000, 1]).day(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 (this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\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 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 // 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 return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, function () {\n return this.hours() % 12 || 12;\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 // 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('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n\n addParseToken(['H', 'HH'], HOUR);\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\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 he wants. 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 addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\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 addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\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 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 function millisecond__milliseconds (token) {\n addFormatToken(0, [token, 3], 0, 'millisecond');\n }\n\n millisecond__milliseconds('SSS');\n millisecond__milliseconds('SSSS');\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n addRegexToken('SSSS', matchUnsigned);\n addParseToken(['S', 'SS', 'SSS', 'SSSS'], function (input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n });\n\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\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 momentPrototype__proto = Moment.prototype;\n\n momentPrototype__proto.add = add_subtract__add;\n momentPrototype__proto.calendar = moment_calendar__calendar;\n momentPrototype__proto.clone = clone;\n momentPrototype__proto.diff = diff;\n momentPrototype__proto.endOf = endOf;\n momentPrototype__proto.format = format;\n momentPrototype__proto.from = from;\n momentPrototype__proto.fromNow = fromNow;\n momentPrototype__proto.to = to;\n momentPrototype__proto.toNow = toNow;\n momentPrototype__proto.get = getSet;\n momentPrototype__proto.invalidAt = invalidAt;\n momentPrototype__proto.isAfter = isAfter;\n momentPrototype__proto.isBefore = isBefore;\n momentPrototype__proto.isBetween = isBetween;\n momentPrototype__proto.isSame = isSame;\n momentPrototype__proto.isValid = moment_valid__isValid;\n momentPrototype__proto.lang = lang;\n momentPrototype__proto.locale = locale;\n momentPrototype__proto.localeData = localeData;\n momentPrototype__proto.max = prototypeMax;\n momentPrototype__proto.min = prototypeMin;\n momentPrototype__proto.parsingFlags = parsingFlags;\n momentPrototype__proto.set = getSet;\n momentPrototype__proto.startOf = startOf;\n momentPrototype__proto.subtract = add_subtract__subtract;\n momentPrototype__proto.toArray = toArray;\n momentPrototype__proto.toDate = toDate;\n momentPrototype__proto.toISOString = moment_format__toISOString;\n momentPrototype__proto.toJSON = moment_format__toISOString;\n momentPrototype__proto.toString = toString;\n momentPrototype__proto.unix = unix;\n momentPrototype__proto.valueOf = to_type__valueOf;\n\n // Year\n momentPrototype__proto.year = getSetYear;\n momentPrototype__proto.isLeapYear = getIsLeapYear;\n\n // Week Year\n momentPrototype__proto.weekYear = getSetWeekYear;\n momentPrototype__proto.isoWeekYear = getSetISOWeekYear;\n\n // Quarter\n momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter;\n\n // Month\n momentPrototype__proto.month = getSetMonth;\n momentPrototype__proto.daysInMonth = getDaysInMonth;\n\n // Week\n momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek;\n momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek;\n momentPrototype__proto.weeksInYear = getWeeksInYear;\n momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear;\n\n // Day\n momentPrototype__proto.date = getSetDayOfMonth;\n momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek;\n momentPrototype__proto.weekday = getSetLocaleDayOfWeek;\n momentPrototype__proto.isoWeekday = getSetISODayOfWeek;\n momentPrototype__proto.dayOfYear = getSetDayOfYear;\n\n // Hour\n momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour;\n\n // Minute\n momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute;\n\n // Second\n momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond;\n\n // Millisecond\n momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond;\n\n // Offset\n momentPrototype__proto.utcOffset = getSetOffset;\n momentPrototype__proto.utc = setOffsetToUTC;\n momentPrototype__proto.local = setOffsetToLocal;\n momentPrototype__proto.parseZone = setOffsetToParsedOffset;\n momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset;\n momentPrototype__proto.isDST = isDaylightSavingTime;\n momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted;\n momentPrototype__proto.isLocal = isLocal;\n momentPrototype__proto.isUtcOffset = isUtcOffset;\n momentPrototype__proto.isUtc = isUtc;\n momentPrototype__proto.isUTC = isUtc;\n\n // Timezone\n momentPrototype__proto.zoneAbbr = getZoneAbbr;\n momentPrototype__proto.zoneName = getZoneName;\n\n // Deprecations\n momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone);\n\n var momentPrototype = momentPrototype__proto;\n\n function moment__createUnix (input) {\n return local__createLocal(input * 1000);\n }\n\n function moment__createInZone () {\n return local__createLocal.apply(null, arguments).parseZone();\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 locale_calendar__calendar (key, mom, now) {\n var output = this._calendar[key];\n return typeof output === 'function' ? 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 LT',\n LLLL : 'dddd, MMMM D, YYYY LT'\n };\n\n function longDateFormat (key) {\n var output = this._longDateFormat[key];\n if (!output && this._longDateFormat[key.toUpperCase()]) {\n output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n this._longDateFormat[key] = output;\n }\n return output;\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var defaultRelativeTime = {\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\n function relative__relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (typeof output === 'function') ?\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 typeof format === 'function' ? format(output) : format.replace(/%s/i, output);\n }\n\n function locale_set__set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (typeof prop === 'function') {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _ordinalParseLenient.\n this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\\d{1,2}/).source);\n }\n\n var prototype__proto = Locale.prototype;\n\n prototype__proto._calendar = defaultCalendar;\n prototype__proto.calendar = locale_calendar__calendar;\n prototype__proto._longDateFormat = defaultLongDateFormat;\n prototype__proto.longDateFormat = longDateFormat;\n prototype__proto._invalidDate = defaultInvalidDate;\n prototype__proto.invalidDate = invalidDate;\n prototype__proto._ordinal = defaultOrdinal;\n prototype__proto.ordinal = ordinal;\n prototype__proto._ordinalParse = defaultOrdinalParse;\n prototype__proto.preparse = preParsePostFormat;\n prototype__proto.postformat = preParsePostFormat;\n prototype__proto._relativeTime = defaultRelativeTime;\n prototype__proto.relativeTime = relative__relativeTime;\n prototype__proto.pastFuture = pastFuture;\n prototype__proto.set = locale_set__set;\n\n // Month\n prototype__proto.months = localeMonths;\n prototype__proto._months = defaultLocaleMonths;\n prototype__proto.monthsShort = localeMonthsShort;\n prototype__proto._monthsShort = defaultLocaleMonthsShort;\n prototype__proto.monthsParse = localeMonthsParse;\n\n // Week\n prototype__proto.week = localeWeek;\n prototype__proto._week = defaultLocaleWeek;\n prototype__proto.firstDayOfYear = localeFirstDayOfYear;\n prototype__proto.firstDayOfWeek = localeFirstDayOfWeek;\n\n // Day of Week\n prototype__proto.weekdays = localeWeekdays;\n prototype__proto._weekdays = defaultLocaleWeekdays;\n prototype__proto.weekdaysMin = localeWeekdaysMin;\n prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin;\n prototype__proto.weekdaysShort = localeWeekdaysShort;\n prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort;\n prototype__proto.weekdaysParse = localeWeekdaysParse;\n\n // Hours\n prototype__proto.isPM = localeIsPM;\n prototype__proto._meridiemParse = defaultLocaleMeridiemParse;\n prototype__proto.meridiem = localeMeridiem;\n\n function lists__get (format, index, field, setter) {\n var locale = locale_locales__getLocale();\n var utc = create_utc__createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function list (format, index, field, count, setter) {\n if (typeof format === 'number') {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return lists__get(format, index, field, setter);\n }\n\n var i;\n var out = [];\n for (i = 0; i < count; i++) {\n out[i] = lists__get(format, i, field, setter);\n }\n return out;\n }\n\n function lists__listMonths (format, index) {\n return list(format, index, 'months', 12, 'month');\n }\n\n function lists__listMonthsShort (format, index) {\n return list(format, index, 'monthsShort', 12, 'month');\n }\n\n function lists__listWeekdays (format, index) {\n return list(format, index, 'weekdays', 7, 'day');\n }\n\n function lists__listWeekdaysShort (format, index) {\n return list(format, index, 'weekdaysShort', 7, 'day');\n }\n\n function lists__listWeekdaysMin (format, index) {\n return list(format, index, 'weekdaysMin', 7, 'day');\n }\n\n locale_locales__getSetGlobalLocale('en', {\n ordinalParse: /\\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 utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale);\n utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale);\n\n var mathAbs = Math.abs;\n\n function duration_abs__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 duration_add_subtract__addSubtract (duration, input, value, direction) {\n var other = create__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 duration_add_subtract__add (input, value) {\n return duration_add_subtract__addSubtract(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function duration_add_subtract__subtract (input, value) {\n return duration_add_subtract__addSubtract(this, input, value, -1);\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 = 0;\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 // Accurately convert days to years, assume start from year 0.\n years = absFloor(daysToYears(days));\n days -= absFloor(yearsToDays(years));\n\n // 30 days to a month\n // TODO (iskren): Use anchor date (like 1st Jan) to compute this.\n months += absFloor(days / 30);\n days %= 30;\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 daysToYears (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n return days * 400 / 146097;\n }\n\n function yearsToDays (years) {\n // years * 365 + absFloor(years / 4) -\n // absFloor(years / 100) + absFloor(years / 400);\n return years * 146097 / 400;\n }\n\n function as (units) {\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 + daysToYears(days) * 12;\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(yearsToDays(this._months / 12));\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 duration_as__valueOf () {\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 duration_get__get (units) {\n units = normalizeUnits(units);\n return this[units + 's']();\n }\n\n function makeGetter(name) {\n return function () {\n return this._data[name];\n };\n }\n\n var duration_get__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 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 duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) {\n var duration = create__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.s && ['s', 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 a threshold for relative time strings\n function duration_humanize__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 return true;\n }\n\n function humanize (withSuffix) {\n var locale = this.localeData();\n var output = duration_humanize__relativeTime(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var iso_string__abs = Math.abs;\n\n function iso_string__toISOString() {\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = iso_string__abs(this.years());\n var M = iso_string__abs(this.months());\n var D = iso_string__abs(this.days());\n var h = iso_string__abs(this.hours());\n var m = iso_string__abs(this.minutes());\n var s = iso_string__abs(this.seconds() + this.milliseconds() / 1000);\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 return (total < 0 ? '-' : '') +\n 'P' +\n (Y ? Y + 'Y' : '') +\n (M ? M + 'M' : '') +\n (D ? D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? h + 'H' : '') +\n (m ? m + 'M' : '') +\n (s ? s + 'S' : '');\n }\n\n var duration_prototype__proto = Duration.prototype;\n\n duration_prototype__proto.abs = duration_abs__abs;\n duration_prototype__proto.add = duration_add_subtract__add;\n duration_prototype__proto.subtract = duration_add_subtract__subtract;\n duration_prototype__proto.as = as;\n duration_prototype__proto.asMilliseconds = asMilliseconds;\n duration_prototype__proto.asSeconds = asSeconds;\n duration_prototype__proto.asMinutes = asMinutes;\n duration_prototype__proto.asHours = asHours;\n duration_prototype__proto.asDays = asDays;\n duration_prototype__proto.asWeeks = asWeeks;\n duration_prototype__proto.asMonths = asMonths;\n duration_prototype__proto.asYears = asYears;\n duration_prototype__proto.valueOf = duration_as__valueOf;\n duration_prototype__proto._bubble = bubble;\n duration_prototype__proto.get = duration_get__get;\n duration_prototype__proto.milliseconds = duration_get__milliseconds;\n duration_prototype__proto.seconds = seconds;\n duration_prototype__proto.minutes = minutes;\n duration_prototype__proto.hours = hours;\n duration_prototype__proto.days = days;\n duration_prototype__proto.weeks = weeks;\n duration_prototype__proto.months = months;\n duration_prototype__proto.years = years;\n duration_prototype__proto.humanize = humanize;\n duration_prototype__proto.toISOString = iso_string__toISOString;\n duration_prototype__proto.toString = iso_string__toISOString;\n duration_prototype__proto.toJSON = iso_string__toISOString;\n duration_prototype__proto.locale = locale;\n duration_prototype__proto.localeData = localeData;\n\n // Deprecations\n duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString);\n duration_prototype__proto.lang = lang;\n\n // Side effect imports\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 utils_hooks__hooks.version = '2.10.3';\n\n setHookCallback(local__createLocal);\n\n utils_hooks__hooks.fn = momentPrototype;\n utils_hooks__hooks.min = min;\n utils_hooks__hooks.max = max;\n utils_hooks__hooks.utc = create_utc__createUTC;\n utils_hooks__hooks.unix = moment__createUnix;\n utils_hooks__hooks.months = lists__listMonths;\n utils_hooks__hooks.isDate = isDate;\n utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale;\n utils_hooks__hooks.invalid = valid__createInvalid;\n utils_hooks__hooks.duration = create__createDuration;\n utils_hooks__hooks.isMoment = isMoment;\n utils_hooks__hooks.weekdays = lists__listWeekdays;\n utils_hooks__hooks.parseZone = moment__createInZone;\n utils_hooks__hooks.localeData = locale_locales__getLocale;\n utils_hooks__hooks.isDuration = isDuration;\n utils_hooks__hooks.monthsShort = lists__listMonthsShort;\n utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin;\n utils_hooks__hooks.defineLocale = defineLocale;\n utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort;\n utils_hooks__hooks.normalizeUnits = normalizeUnits;\n utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold;\n\n var _moment = utils_hooks__hooks;\n\n return _moment;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./bower_components/moment/moment.js\n ** module id = 2\n ** module chunks = 0 1 2\n **/","define(function (require) {\n var angular = require('angular');\n var existingModules = {};\n var _ = require('lodash');\n var links = [];\n\n function link(module) {\n // as modules are defined they will be set as requirements for this app\n links.push(module);\n\n // merge in the existing modules\n module.requires = _.union(module.requires, _.keys(existingModules));\n }\n\n function get(moduleName, requires) {\n var module = existingModules[moduleName];\n\n if (module === void 0) {\n // create the module\n module = existingModules[moduleName] = angular.module(moduleName, []);\n\n module.close = _.partial(close, moduleName);\n\n // ensure that it is required by linked modules\n _.each(links, function (app) {\n if (!~app.requires.indexOf(moduleName)) app.requires.push(moduleName);\n });\n }\n\n if (requires) {\n // update requires list with possibly new requirements\n module.requires = _.union(module.requires, requires);\n }\n\n return module;\n }\n\n function close(moduleName) {\n var module = existingModules[moduleName];\n\n // already closed\n if (!module) return;\n\n // if the module is currently linked, unlink it\n var i = links.indexOf(module);\n if (i > -1) links.splice(i, 1);\n\n // remove from linked modules list of required modules\n _.each(links, function (app) {\n _.pull(app.requires, moduleName);\n });\n\n // remove module from existingModules\n delete existingModules[moduleName];\n }\n\n return {\n link: link,\n get: get,\n close: close\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/modules.js\n ** module id = 3\n ** module chunks = 0 1 2\n **/","/*** IMPORTS FROM imports-loader ***/\nvar $ = require(\"jquery\");\n\n/**\n * @license AngularJS v1.2.28\n * (c) 2010-2014 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(window, document, undefined) {'use strict';\n\n/**\n * @description\n *\n * This object provides a utility for producing rich Error messages within\n * Angular. It can be called as follows:\n *\n * var exampleMinErr = minErr('example');\n * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);\n *\n * The above creates an instance of minErr in the example namespace. The\n * resulting error will have a namespaced error code of example.one. The\n * resulting error will replace {0} with the value of foo, and {1} with the\n * value of bar. The object is not restricted in the number of arguments it can\n * take.\n *\n * If fewer arguments are specified than necessary for interpolation, the extra\n * interpolation markers will be preserved in the final string.\n *\n * Since data will be parsed statically during a build step, some restrictions\n * are applied with respect to how minErr instances are created and called.\n * Instances should have names of the form namespaceMinErr for a minErr created\n * using minErr('namespace') . Error codes, namespaces and template strings\n * should all be static strings, not variables or general expressions.\n *\n * @param {string} module The namespace to use for the new minErr instance.\n * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance\n */\n\nfunction minErr(module) {\n return function () {\n var code = arguments[0],\n prefix = '[' + (module ? module + ':' : '') + code + '] ',\n template = arguments[1],\n templateArgs = arguments,\n stringify = function (obj) {\n if (typeof obj === 'function') {\n return obj.toString().replace(/ \\{[\\s\\S]*$/, '');\n } else if (typeof obj === 'undefined') {\n return 'undefined';\n } else if (typeof obj !== 'string') {\n return JSON.stringify(obj);\n }\n return obj;\n },\n message, i;\n\n message = prefix + template.replace(/\\{\\d+\\}/g, function (match) {\n var index = +match.slice(1, -1), arg;\n\n if (index + 2 < templateArgs.length) {\n arg = templateArgs[index + 2];\n if (typeof arg === 'function') {\n return arg.toString().replace(/ ?\\{[\\s\\S]*$/, '');\n } else if (typeof arg === 'undefined') {\n return 'undefined';\n } else if (typeof arg !== 'string') {\n return toJson(arg);\n }\n return arg;\n }\n return match;\n });\n\n message = message + '\\nhttp://errors.angularjs.org/1.2.28/' +\n (module ? module + '/' : '') + code;\n for (i = 2; i < arguments.length; i++) {\n message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +\n encodeURIComponent(stringify(arguments[i]));\n }\n\n return new Error(message);\n };\n}\n\n/* We need to tell jshint what variables are being exported */\n/* global angular: true,\n msie: true,\n jqLite: true,\n jQuery: true,\n slice: true,\n push: true,\n toString: true,\n ngMinErr: true,\n angularModule: true,\n nodeName_: true,\n uid: true,\n VALIDITY_STATE_PROPERTY: true,\n\n lowercase: true,\n uppercase: true,\n manualLowercase: true,\n manualUppercase: true,\n nodeName_: true,\n isArrayLike: true,\n forEach: true,\n sortedKeys: true,\n forEachSorted: true,\n reverseParams: true,\n nextUid: true,\n setHashKey: true,\n extend: true,\n int: true,\n inherit: true,\n noop: true,\n identity: true,\n valueFn: true,\n isUndefined: true,\n isDefined: true,\n isObject: true,\n isString: true,\n isNumber: true,\n isDate: true,\n isArray: true,\n isFunction: true,\n isRegExp: true,\n isWindow: true,\n isScope: true,\n isFile: true,\n isBlob: true,\n isBoolean: true,\n isPromiseLike: true,\n trim: true,\n isElement: true,\n makeMap: true,\n map: true,\n size: true,\n includes: true,\n indexOf: true,\n arrayRemove: true,\n isLeafNode: true,\n copy: true,\n shallowCopy: true,\n equals: true,\n csp: true,\n concat: true,\n sliceArgs: true,\n bind: true,\n toJsonReplacer: true,\n toJson: true,\n fromJson: true,\n toBoolean: true,\n startingTag: true,\n tryDecodeURIComponent: true,\n parseKeyValue: true,\n toKeyValue: true,\n encodeUriSegment: true,\n encodeUriQuery: true,\n angularInit: true,\n bootstrap: true,\n snake_case: true,\n bindJQuery: true,\n assertArg: true,\n assertArgFn: true,\n assertNotHasOwnProperty: true,\n getter: true,\n getBlockElements: true,\n hasOwnProperty: true,\n*/\n\n////////////////////////////////////\n\n/**\n * @ngdoc module\n * @name ng\n * @module ng\n * @description\n *\n * # ng (core module)\n * The ng module is loaded by default when an AngularJS application is started. The module itself\n * contains the essential components for an AngularJS application to function. The table below\n * lists a high level breakdown of each of the services/factories, filters, directives and testing\n * components available within this core module.\n *\n *
\n */\n\n// The name of a form control's ValidityState property.\n// This is used so that it's possible for internal tests to create mock ValidityStates.\nvar VALIDITY_STATE_PROPERTY = 'validity';\n\n/**\n * @ngdoc function\n * @name angular.lowercase\n * @module ng\n * @kind function\n *\n * @description Converts the specified string to lowercase.\n * @param {string} string String to be converted to lowercase.\n * @returns {string} Lowercased string.\n */\nvar lowercase = function(string){return isString(string) ? string.toLowerCase() : string;};\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * @ngdoc function\n * @name angular.uppercase\n * @module ng\n * @kind function\n *\n * @description Converts the specified string to uppercase.\n * @param {string} string String to be converted to uppercase.\n * @returns {string} Uppercased string.\n */\nvar uppercase = function(string){return isString(string) ? string.toUpperCase() : string;};\n\n\nvar manualLowercase = function(s) {\n /* jshint bitwise: false */\n return isString(s)\n ? s.replace(/[A-Z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) | 32);})\n : s;\n};\nvar manualUppercase = function(s) {\n /* jshint bitwise: false */\n return isString(s)\n ? s.replace(/[a-z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) & ~32);})\n : s;\n};\n\n\n// String#toLowerCase and String#toUpperCase don't produce correct results in browsers with Turkish\n// locale, for this reason we need to detect this case and redefine lowercase/uppercase methods\n// with correct but slower alternatives.\nif ('i' !== 'I'.toLowerCase()) {\n lowercase = manualLowercase;\n uppercase = manualUppercase;\n}\n\n\nvar\n msie, // holds major version number for IE, or NaN if UA is not IE.\n jqLite, // delay binding since jQuery could be loaded after us.\n jQuery, // delay binding\n slice = [].slice,\n push = [].push,\n toString = Object.prototype.toString,\n ngMinErr = minErr('ng'),\n\n /** @name angular */\n angular = window.angular || (window.angular = {}),\n angularModule,\n nodeName_,\n uid = ['0', '0', '0'];\n\n/**\n * IE 11 changed the format of the UserAgent string.\n * See http://msdn.microsoft.com/en-us/library/ms537503.aspx\n */\nmsie = int((/msie (\\d+)/.exec(lowercase(navigator.userAgent)) || [])[1]);\nif (isNaN(msie)) {\n msie = int((/trident\\/.*; rv:(\\d+)/.exec(lowercase(navigator.userAgent)) || [])[1]);\n}\n\n\n/**\n * @private\n * @param {*} obj\n * @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments,\n * String ...)\n */\nfunction isArrayLike(obj) {\n if (obj == null || isWindow(obj)) {\n return false;\n }\n\n var length = obj.length;\n\n if (obj.nodeType === 1 && length) {\n return true;\n }\n\n return isString(obj) || isArray(obj) || length === 0 ||\n typeof length === 'number' && length > 0 && (length - 1) in obj;\n}\n\n/**\n * @ngdoc function\n * @name angular.forEach\n * @module ng\n * @kind function\n *\n * @description\n * Invokes the `iterator` function once for each item in `obj` collection, which can be either an\n * object or an array. The `iterator` function is invoked with `iterator(value, key)`, where `value`\n * is the value of an object property or an array element and `key` is the object property key or\n * array element index. Specifying a `context` for the function is optional.\n *\n * It is worth noting that `.forEach` does not iterate over inherited properties because it filters\n * using the `hasOwnProperty` method.\n *\n ```js\n var values = {name: 'misko', gender: 'male'};\n var log = [];\n angular.forEach(values, function(value, key) {\n this.push(key + ': ' + value);\n }, log);\n expect(log).toEqual(['name: misko', 'gender: male']);\n ```\n *\n * @param {Object|Array} obj Object to iterate over.\n * @param {Function} iterator Iterator function.\n * @param {Object=} context Object to become context (`this`) for the iterator function.\n * @returns {Object|Array} Reference to `obj`.\n */\nfunction forEach(obj, iterator, context) {\n var key;\n if (obj) {\n if (isFunction(obj)) {\n for (key in obj) {\n // Need to check if hasOwnProperty exists,\n // as on IE8 the result of querySelectorAll is an object without a hasOwnProperty function\n if (key != 'prototype' && key != 'length' && key != 'name' && (!obj.hasOwnProperty || obj.hasOwnProperty(key))) {\n iterator.call(context, obj[key], key);\n }\n }\n } else if (isArray(obj) || isArrayLike(obj)) {\n for (key = 0; key < obj.length; key++) {\n iterator.call(context, obj[key], key);\n }\n } else if (obj.forEach && obj.forEach !== forEach) {\n obj.forEach(iterator, context);\n } else {\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n iterator.call(context, obj[key], key);\n }\n }\n }\n }\n return obj;\n}\n\nfunction sortedKeys(obj) {\n var keys = [];\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n keys.push(key);\n }\n }\n return keys.sort();\n}\n\nfunction forEachSorted(obj, iterator, context) {\n var keys = sortedKeys(obj);\n for ( var i = 0; i < keys.length; i++) {\n iterator.call(context, obj[keys[i]], keys[i]);\n }\n return keys;\n}\n\n\n/**\n * when using forEach the params are value, key, but it is often useful to have key, value.\n * @param {function(string, *)} iteratorFn\n * @returns {function(*, string)}\n */\nfunction reverseParams(iteratorFn) {\n return function(value, key) { iteratorFn(key, value); };\n}\n\n/**\n * A consistent way of creating unique IDs in angular. The ID is a sequence of alpha numeric\n * characters such as '012ABC'. The reason why we are not using simply a number counter is that\n * the number string gets longer over time, and it can also overflow, where as the nextId\n * will grow much slower, it is a string, and it will never overflow.\n *\n * @returns {string} an unique alpha-numeric string\n */\nfunction nextUid() {\n var index = uid.length;\n var digit;\n\n while(index) {\n index--;\n digit = uid[index].charCodeAt(0);\n if (digit == 57 /*'9'*/) {\n uid[index] = 'A';\n return uid.join('');\n }\n if (digit == 90 /*'Z'*/) {\n uid[index] = '0';\n } else {\n uid[index] = String.fromCharCode(digit + 1);\n return uid.join('');\n }\n }\n uid.unshift('0');\n return uid.join('');\n}\n\n\n/**\n * Set or clear the hashkey for an object.\n * @param obj object\n * @param h the hashkey (!truthy to delete the hashkey)\n */\nfunction setHashKey(obj, h) {\n if (h) {\n obj.$$hashKey = h;\n }\n else {\n delete obj.$$hashKey;\n }\n}\n\n/**\n * @ngdoc function\n * @name angular.extend\n * @module ng\n * @kind function\n *\n * @description\n * Extends the destination object `dst` by copying own enumerable properties from the `src` object(s)\n * to `dst`. You can specify multiple `src` objects.\n *\n * @param {Object} dst Destination object.\n * @param {...Object} src Source object(s).\n * @returns {Object} Reference to `dst`.\n */\nfunction extend(dst) {\n var h = dst.$$hashKey;\n forEach(arguments, function(obj) {\n if (obj !== dst) {\n forEach(obj, function(value, key) {\n dst[key] = value;\n });\n }\n });\n\n setHashKey(dst,h);\n return dst;\n}\n\nfunction int(str) {\n return parseInt(str, 10);\n}\n\n\nfunction inherit(parent, extra) {\n return extend(new (extend(function() {}, {prototype:parent}))(), extra);\n}\n\n/**\n * @ngdoc function\n * @name angular.noop\n * @module ng\n * @kind function\n *\n * @description\n * A function that performs no operations. This function can be useful when writing code in the\n * functional style.\n ```js\n function foo(callback) {\n var result = calculateResult();\n (callback || angular.noop)(result);\n }\n ```\n */\nfunction noop() {}\nnoop.$inject = [];\n\n\n/**\n * @ngdoc function\n * @name angular.identity\n * @module ng\n * @kind function\n *\n * @description\n * A function that returns its first argument. This function is useful when writing code in the\n * functional style.\n *\n ```js\n function transformer(transformationFn, value) {\n return (transformationFn || angular.identity)(value);\n };\n ```\n */\nfunction identity($) {return $;}\nidentity.$inject = [];\n\n\nfunction valueFn(value) {return function() {return value;};}\n\n/**\n * @ngdoc function\n * @name angular.isUndefined\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is undefined.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is undefined.\n */\nfunction isUndefined(value){return typeof value === 'undefined';}\n\n\n/**\n * @ngdoc function\n * @name angular.isDefined\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is defined.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is defined.\n */\nfunction isDefined(value){return typeof value !== 'undefined';}\n\n\n/**\n * @ngdoc function\n * @name angular.isObject\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is an `Object`. Unlike `typeof` in JavaScript, `null`s are not\n * considered to be objects. Note that JavaScript arrays are objects.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is an `Object` but not `null`.\n */\nfunction isObject(value){return value != null && typeof value === 'object';}\n\n\n/**\n * @ngdoc function\n * @name angular.isString\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `String`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `String`.\n */\nfunction isString(value){return typeof value === 'string';}\n\n\n/**\n * @ngdoc function\n * @name angular.isNumber\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `Number`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Number`.\n */\nfunction isNumber(value){return typeof value === 'number';}\n\n\n/**\n * @ngdoc function\n * @name angular.isDate\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a value is a date.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Date`.\n */\nfunction isDate(value) {\n return toString.call(value) === '[object Date]';\n}\n\n\n/**\n * @ngdoc function\n * @name angular.isArray\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is an `Array`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is an `Array`.\n */\nvar isArray = (function() {\n if (!isFunction(Array.isArray)) {\n return function(value) {\n return toString.call(value) === '[object Array]';\n };\n }\n return Array.isArray;\n})();\n\n/**\n * @ngdoc function\n * @name angular.isFunction\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `Function`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Function`.\n */\nfunction isFunction(value){return typeof value === 'function';}\n\n\n/**\n * Determines if a value is a regular expression object.\n *\n * @private\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `RegExp`.\n */\nfunction isRegExp(value) {\n return toString.call(value) === '[object RegExp]';\n}\n\n\n/**\n * Checks if `obj` is a window object.\n *\n * @private\n * @param {*} obj Object to check\n * @returns {boolean} True if `obj` is a window obj.\n */\nfunction isWindow(obj) {\n return obj && obj.document && obj.location && obj.alert && obj.setInterval;\n}\n\n\nfunction isScope(obj) {\n return obj && obj.$evalAsync && obj.$watch;\n}\n\n\nfunction isFile(obj) {\n return toString.call(obj) === '[object File]';\n}\n\n\nfunction isBlob(obj) {\n return toString.call(obj) === '[object Blob]';\n}\n\n\nfunction isBoolean(value) {\n return typeof value === 'boolean';\n}\n\n\nfunction isPromiseLike(obj) {\n return obj && isFunction(obj.then);\n}\n\n\nvar trim = (function() {\n // native trim is way faster: http://jsperf.com/angular-trim-test\n // but IE doesn't have it... :-(\n // TODO: we should move this into IE/ES5 polyfill\n if (!String.prototype.trim) {\n return function(value) {\n return isString(value) ? value.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '') : value;\n };\n }\n return function(value) {\n return isString(value) ? value.trim() : value;\n };\n})();\n\n\n/**\n * @ngdoc function\n * @name angular.isElement\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a DOM element (or wrapped jQuery element).\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a DOM element (or wrapped jQuery element).\n */\nfunction isElement(node) {\n return !!(node &&\n (node.nodeName // we are a direct element\n || (node.prop && node.attr && node.find))); // we have an on and find method part of jQuery API\n}\n\n/**\n * @param str 'key1,key2,...'\n * @returns {object} in the form of {key1:true, key2:true, ...}\n */\nfunction makeMap(str) {\n var obj = {}, items = str.split(\",\"), i;\n for ( i = 0; i < items.length; i++ )\n obj[ items[i] ] = true;\n return obj;\n}\n\n\nif (msie < 9) {\n nodeName_ = function(element) {\n element = element.nodeName ? element : element[0];\n return (element.scopeName && element.scopeName != 'HTML')\n ? uppercase(element.scopeName + ':' + element.nodeName) : element.nodeName;\n };\n} else {\n nodeName_ = function(element) {\n return element.nodeName ? element.nodeName : element[0].nodeName;\n };\n}\n\n\nfunction map(obj, iterator, context) {\n var results = [];\n forEach(obj, function(value, index, list) {\n results.push(iterator.call(context, value, index, list));\n });\n return results;\n}\n\n\n/**\n * @description\n * Determines the number of elements in an array, the number of properties an object has, or\n * the length of a string.\n *\n * Note: This function is used to augment the Object type in Angular expressions. See\n * {@link angular.Object} for more information about Angular arrays.\n *\n * @param {Object|Array|string} obj Object, array, or string to inspect.\n * @param {boolean} [ownPropsOnly=false] Count only \"own\" properties in an object\n * @returns {number} The size of `obj` or `0` if `obj` is neither an object nor an array.\n */\nfunction size(obj, ownPropsOnly) {\n var count = 0, key;\n\n if (isArray(obj) || isString(obj)) {\n return obj.length;\n } else if (isObject(obj)) {\n for (key in obj)\n if (!ownPropsOnly || obj.hasOwnProperty(key))\n count++;\n }\n\n return count;\n}\n\n\nfunction includes(array, obj) {\n return indexOf(array, obj) != -1;\n}\n\nfunction indexOf(array, obj) {\n if (array.indexOf) return array.indexOf(obj);\n\n for (var i = 0; i < array.length; i++) {\n if (obj === array[i]) return i;\n }\n return -1;\n}\n\nfunction arrayRemove(array, value) {\n var index = indexOf(array, value);\n if (index >=0)\n array.splice(index, 1);\n return value;\n}\n\nfunction isLeafNode (node) {\n if (node) {\n switch (node.nodeName) {\n case \"OPTION\":\n case \"PRE\":\n case \"TITLE\":\n return true;\n }\n }\n return false;\n}\n\n/**\n * @ngdoc function\n * @name angular.copy\n * @module ng\n * @kind function\n *\n * @description\n * Creates a deep copy of `source`, which should be an object or an array.\n *\n * * If no destination is supplied, a copy of the object or array is created.\n * * If a destination is provided, all of its elements (for array) or properties (for objects)\n * are deleted and then all elements/properties from the source are copied to it.\n * * If `source` is not an object or array (inc. `null` and `undefined`), `source` is returned.\n * * If `source` is identical to 'destination' an exception will be thrown.\n *\n * @param {*} source The source that will be used to make a copy.\n * Can be any type, including primitives, `null`, and `undefined`.\n * @param {(Object|Array)=} destination Destination into which the source is copied. If\n * provided, must be of the same type as `source`.\n * @returns {*} The copy or updated `destination`, if `destination` was specified.\n *\n * @example\n \n \n
\n
\n Name:
\n E-mail:
\n Gender: male\n female
\n \n \n \n
form = {{user | json}}
\n
master = {{master | json}}
\n
\n\n \n
\n
\n */\nfunction copy(source, destination, stackSource, stackDest) {\n if (isWindow(source) || isScope(source)) {\n throw ngMinErr('cpws',\n \"Can't copy! Making copies of Window or Scope instances is not supported.\");\n }\n\n if (!destination) {\n destination = source;\n if (source) {\n if (isArray(source)) {\n destination = copy(source, [], stackSource, stackDest);\n } else if (isDate(source)) {\n destination = new Date(source.getTime());\n } else if (isRegExp(source)) {\n destination = new RegExp(source.source, source.toString().match(/[^\\/]*$/)[0]);\n destination.lastIndex = source.lastIndex;\n } else if (isObject(source)) {\n destination = copy(source, {}, stackSource, stackDest);\n }\n }\n } else {\n if (source === destination) throw ngMinErr('cpi',\n \"Can't copy! Source and destination are identical.\");\n\n stackSource = stackSource || [];\n stackDest = stackDest || [];\n\n if (isObject(source)) {\n var index = indexOf(stackSource, source);\n if (index !== -1) return stackDest[index];\n\n stackSource.push(source);\n stackDest.push(destination);\n }\n\n var result;\n if (isArray(source)) {\n destination.length = 0;\n for ( var i = 0; i < source.length; i++) {\n result = copy(source[i], null, stackSource, stackDest);\n if (isObject(source[i])) {\n stackSource.push(source[i]);\n stackDest.push(result);\n }\n destination.push(result);\n }\n } else {\n var h = destination.$$hashKey;\n if (isArray(destination)) {\n destination.length = 0;\n } else {\n forEach(destination, function(value, key) {\n delete destination[key];\n });\n }\n for ( var key in source) {\n result = copy(source[key], null, stackSource, stackDest);\n if (isObject(source[key])) {\n stackSource.push(source[key]);\n stackDest.push(result);\n }\n destination[key] = result;\n }\n setHashKey(destination,h);\n }\n\n }\n return destination;\n}\n\n/**\n * Creates a shallow copy of an object, an array or a primitive\n */\nfunction shallowCopy(src, dst) {\n if (isArray(src)) {\n dst = dst || [];\n\n for ( var i = 0; i < src.length; i++) {\n dst[i] = src[i];\n }\n } else if (isObject(src)) {\n dst = dst || {};\n\n for (var key in src) {\n if (hasOwnProperty.call(src, key) && !(key.charAt(0) === '$' && key.charAt(1) === '$')) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst || src;\n}\n\n\n/**\n * @ngdoc function\n * @name angular.equals\n * @module ng\n * @kind function\n *\n * @description\n * Determines if two objects or two values are equivalent. Supports value types, regular\n * expressions, arrays and objects.\n *\n * Two objects or values are considered equivalent if at least one of the following is true:\n *\n * * Both objects or values pass `===` comparison.\n * * Both objects or values are of the same type and all of their properties are equal by\n * comparing them with `angular.equals`.\n * * Both values are NaN. (In JavaScript, NaN == NaN => false. But we consider two NaN as equal)\n * * Both values represent the same regular expression (In JavaScript,\n * /abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual\n * representation matches).\n *\n * During a property comparison, properties of `function` type and properties with names\n * that begin with `$` are ignored.\n *\n * Scope and DOMWindow objects are being compared only by identify (`===`).\n *\n * @param {*} o1 Object or value to compare.\n * @param {*} o2 Object or value to compare.\n * @returns {boolean} True if arguments are equal.\n */\nfunction equals(o1, o2) {\n if (o1 === o2) return true;\n if (o1 === null || o2 === null) return false;\n if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN\n var t1 = typeof o1, t2 = typeof o2, length, key, keySet;\n if (t1 == t2) {\n if (t1 == 'object') {\n if (isArray(o1)) {\n if (!isArray(o2)) return false;\n if ((length = o1.length) == o2.length) {\n for(key=0; key 2 ? sliceArgs(arguments, 2) : [];\n if (isFunction(fn) && !(fn instanceof RegExp)) {\n return curryArgs.length\n ? function() {\n return arguments.length\n ? fn.apply(self, curryArgs.concat(slice.call(arguments, 0)))\n : fn.apply(self, curryArgs);\n }\n : function() {\n return arguments.length\n ? fn.apply(self, arguments)\n : fn.call(self);\n };\n } else {\n // in IE, native methods are not functions so they cannot be bound (note: they don't need to be)\n return fn;\n }\n}\n\n\nfunction toJsonReplacer(key, value) {\n var val = value;\n\n if (typeof key === 'string' && key.charAt(0) === '$') {\n val = undefined;\n } else if (isWindow(value)) {\n val = '$WINDOW';\n } else if (value && document === value) {\n val = '$DOCUMENT';\n } else if (isScope(value)) {\n val = '$SCOPE';\n }\n\n return val;\n}\n\n\n/**\n * @ngdoc function\n * @name angular.toJson\n * @module ng\n * @kind function\n *\n * @description\n * Serializes input into a JSON-formatted string. Properties with leading $ characters will be\n * stripped since angular uses this notation internally.\n *\n * @param {Object|Array|Date|string|number} obj Input to be serialized into JSON.\n * @param {boolean=} pretty If set to true, the JSON output will contain newlines and whitespace.\n * @returns {string|undefined} JSON-ified string representing `obj`.\n */\nfunction toJson(obj, pretty) {\n if (typeof obj === 'undefined') return undefined;\n return JSON.stringify(obj, toJsonReplacer, pretty ? ' ' : null);\n}\n\n\n/**\n * @ngdoc function\n * @name angular.fromJson\n * @module ng\n * @kind function\n *\n * @description\n * Deserializes a JSON string.\n *\n * @param {string} json JSON string to deserialize.\n * @returns {Object|Array|string|number} Deserialized thingy.\n */\nfunction fromJson(json) {\n return isString(json)\n ? JSON.parse(json)\n : json;\n}\n\n\nfunction toBoolean(value) {\n if (typeof value === 'function') {\n value = true;\n } else if (value && value.length !== 0) {\n var v = lowercase(\"\" + value);\n value = !(v == 'f' || v == '0' || v == 'false' || v == 'no' || v == 'n' || v == '[]');\n } else {\n value = false;\n }\n return value;\n}\n\n/**\n * @returns {string} Returns the string representation of the element.\n */\nfunction startingTag(element) {\n element = jqLite(element).clone();\n try {\n // turns out IE does not let you set .html() on elements which\n // are not allowed to have children. So we just ignore it.\n element.empty();\n } catch(e) {}\n // As Per DOM Standards\n var TEXT_NODE = 3;\n var elemHtml = jqLite('
').append(element).html();\n try {\n return element[0].nodeType === TEXT_NODE ? lowercase(elemHtml) :\n elemHtml.\n match(/^(<[^>]+>)/)[1].\n replace(/^<([\\w\\-]+)/, function(match, nodeName) { return '<' + lowercase(nodeName); });\n } catch(e) {\n return lowercase(elemHtml);\n }\n\n}\n\n\n/////////////////////////////////////////////////\n\n/**\n * Tries to decode the URI component without throwing an exception.\n *\n * @private\n * @param str value potential URI component to check.\n * @returns {boolean} True if `value` can be decoded\n * with the decodeURIComponent function.\n */\nfunction tryDecodeURIComponent(value) {\n try {\n return decodeURIComponent(value);\n } catch(e) {\n // Ignore any invalid uri component\n }\n}\n\n\n/**\n * Parses an escaped url query string into key-value pairs.\n * @returns {Object.}\n */\nfunction parseKeyValue(/**string*/keyValue) {\n var obj = {}, key_value, key;\n forEach((keyValue || \"\").split('&'), function(keyValue) {\n if ( keyValue ) {\n key_value = keyValue.replace(/\\+/g,'%20').split('=');\n key = tryDecodeURIComponent(key_value[0]);\n if ( isDefined(key) ) {\n var val = isDefined(key_value[1]) ? tryDecodeURIComponent(key_value[1]) : true;\n if (!hasOwnProperty.call(obj, key)) {\n obj[key] = val;\n } else if(isArray(obj[key])) {\n obj[key].push(val);\n } else {\n obj[key] = [obj[key],val];\n }\n }\n }\n });\n return obj;\n}\n\nfunction toKeyValue(obj) {\n var parts = [];\n forEach(obj, function(value, key) {\n if (isArray(value)) {\n forEach(value, function(arrayValue) {\n parts.push(encodeUriQuery(key, true) +\n (arrayValue === true ? '' : '=' + encodeUriQuery(arrayValue, true)));\n });\n } else {\n parts.push(encodeUriQuery(key, true) +\n (value === true ? '' : '=' + encodeUriQuery(value, true)));\n }\n });\n return parts.length ? parts.join('&') : '';\n}\n\n\n/**\n * We need our custom method because encodeURIComponent is too aggressive and doesn't follow\n * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set (pchar) allowed in path\n * segments:\n * segment = *pchar\n * pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n * pct-encoded = \"%\" HEXDIG HEXDIG\n * unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\n * / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n */\nfunction encodeUriSegment(val) {\n return encodeUriQuery(val, true).\n replace(/%26/gi, '&').\n replace(/%3D/gi, '=').\n replace(/%2B/gi, '+');\n}\n\n\n/**\n * This method is intended for encoding *key* or *value* parts of query component. We need a custom\n * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be\n * encoded per http://tools.ietf.org/html/rfc3986:\n * query = *( pchar / \"/\" / \"?\" )\n * pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n * unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * pct-encoded = \"%\" HEXDIG HEXDIG\n * sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\n * / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n */\nfunction encodeUriQuery(val, pctEncodeSpaces) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));\n}\n\n\n/**\n * @ngdoc directive\n * @name ngApp\n * @module ng\n *\n * @element ANY\n * @param {angular.Module} ngApp an optional application\n * {@link angular.module module} name to load.\n *\n * @description\n *\n * Use this directive to **auto-bootstrap** an AngularJS application. The `ngApp` directive\n * designates the **root element** of the application and is typically placed near the root element\n * of the page - e.g. on the `` or `` tags.\n *\n * Only one AngularJS application can be auto-bootstrapped per HTML document. The first `ngApp`\n * found in the document will be used to define the root element to auto-bootstrap as an\n * application. To run multiple applications in an HTML document you must manually bootstrap them using\n * {@link angular.bootstrap} instead. AngularJS applications cannot be nested within each other.\n *\n * You can specify an **AngularJS module** to be used as the root module for the application. This\n * module will be loaded into the {@link auto.$injector} when the application is bootstrapped and\n * should contain the application code needed or have dependencies on other modules that will\n * contain the code. See {@link angular.module} for more information.\n *\n * In the example below if the `ngApp` directive were not placed on the `html` element then the\n * document would not be compiled, the `AppController` would not be instantiated and the `{{ a+b }}`\n * would not be resolved to `3`.\n *\n * `ngApp` is the easiest, and most common, way to bootstrap an application.\n *\n \n \n
\n I can add: {{a}} + {{b}} = {{ a+b }}\n
\n
\n \n angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) {\n $scope.a = 1;\n $scope.b = 2;\n });\n \n
\n *\n */\nfunction angularInit(element, bootstrap) {\n var elements = [element],\n appElement,\n module,\n names = ['ng:app', 'ng-app', 'x-ng-app', 'data-ng-app'],\n NG_APP_CLASS_REGEXP = /\\sng[:\\-]app(:\\s*([\\w\\d_]+);?)?\\s/;\n\n function append(element) {\n element && elements.push(element);\n }\n\n forEach(names, function(name) {\n names[name] = true;\n append(document.getElementById(name));\n name = name.replace(':', '\\\\:');\n if (element.querySelectorAll) {\n forEach(element.querySelectorAll('.' + name), append);\n forEach(element.querySelectorAll('.' + name + '\\\\:'), append);\n forEach(element.querySelectorAll('[' + name + ']'), append);\n }\n });\n\n forEach(elements, function(element) {\n if (!appElement) {\n var className = ' ' + element.className + ' ';\n var match = NG_APP_CLASS_REGEXP.exec(className);\n if (match) {\n appElement = element;\n module = (match[2] || '').replace(/\\s+/g, ',');\n } else {\n forEach(element.attributes, function(attr) {\n if (!appElement && names[attr.name]) {\n appElement = element;\n module = attr.value;\n }\n });\n }\n }\n });\n if (appElement) {\n bootstrap(appElement, module ? [module] : []);\n }\n}\n\n/**\n * @ngdoc function\n * @name angular.bootstrap\n * @module ng\n * @description\n * Use this function to manually start up angular application.\n *\n * See: {@link guide/bootstrap Bootstrap}\n *\n * Note that ngScenario-based end-to-end tests cannot use this function to bootstrap manually.\n * They must use {@link ng.directive:ngApp ngApp}.\n *\n * Angular will detect if it has been loaded into the browser more than once and only allow the\n * first loaded script to be bootstrapped and will report a warning to the browser console for\n * each of the subsequent scripts. This prevents strange results in applications, where otherwise\n * multiple instances of Angular try to work on the DOM.\n *\n * \n * \n * \n *
\n *
+?Zcj6CQ;4=THGF<;+Y@ErkA#w#`^p59};8t?0Y z@-aTip2_s@n0$&lzQ=N%UF7P41 z+zj|TLBSzd39$%ztDmjnz3&;874vWVr6gE!*T?nreNK5}_e=>v z|14+z;(La3I;7rt_q*R+tgn2}Kv)!xW8=^R!`URCGoDjp z)%zdo9$OuU2<&l`+BYPuFVG775?Q*;FVCFwy^mb;`KlJ|tBBT|q=9eP-U3386KMMqepahR19(QW zU_n|TPoP@_L1V(*1MqWXE%_i3zZ!o6R{**95qN*1e5LLs*+WoDIkm%C5!;vs0PAHL z;O~d}pRHud|2KgJ0%D4v6+Gd9Y&rcywB1@tb|<#h6!?bkAL%m)e9IJV$`>ApcC3`W zxz(GWtHZVI<)#`PqCDv>=!{mrzKxMPb7YFI%ioWF!>#FqANW8y>-;Rq4BCV5JG%pX zA}iS1H5oFuzW<8*jMmIWzLy}hI^TAcmG7ZCf#&f_!$$fc%e|WcoiTuI{mS&l)S_Yz zaQAv61DIpLtXF?5v&ZATzQqNUAKPqx#dcruAia9bZ3V=M!f$)~d!{B>WW4o&EIZN- zhfe|!unui2lkoOhG3=-S0ZiC@VkXAa%>=>JJtlkrlK@8;4nIRy90Ai4WTIHt7?VL~05MLy_>mBmwZb2D{5>;m49$23K}WJ~#*DGU0_exU^IAre z9?#ix@tI7qWeUgBd2I6fd0=$nu=%ejQkTGu!xSxzA0NRRfIfU~cr^$6T6yV56^^CN zdNUR`7q0_`?x`^$5iw`v?xWuuwABJ2vY599a;g#@w13&K6`!?CKos8Kc1M)bF1uC% zNcq3=0eR*w5YYI#=F^wdKLQ$vKxG^9vjRA$==&+UPH+QBiUEQoGbXZ?qu_SeT&92b z(0jkyPXadxl%Riu`YUZbty-{3ZBJ>sfsv|YDig2y(pmp1T?)N|mC(u=07VCK$}`j% zuKBVGo$A=)he_%j#_gw~0pOQYNBGVez?_Og-oZv|KL&MCZDkj}tF!^$k%*fJZonjE zUck|3l~&6pREK+g=L96OC!8mWIGGV7_V@Skck$(OV@_X5L3IbYT;X!Sajf`w`x9Hn_$2BB&o9}S zX1dRhhdq;xb-Whq?mgrA)wikFzNl+5otEh>|6Dfqv0UHYE57iBFFeSI;~(~o_me%V z%s-z^>YgB2j}V9hWP^vW0;ueuXdt$3Z>2X@qswq?)kFbM;Mj_9f?p-u^IYdN3#@&t zcuD>oL&$p*H`2=shuF8s3}ZqgGII}9X2K{FoRRr@V4eGzfY1V(;x~dLFM=k%HV5eQ zWu7C8E#t-*0RDQ1ulos*O{%fgS)2$x`b7b5_t_X`br7KjNJfBTF(q*0UmJg7u;oegCl7S#^g4-Mo@zVYZw4%+misd z3N#Gt4f=x+);n7$G%!~?yux=pTP=G86I`k{F!n;ym&pC%C;^DW^yUoO&j`$)jPH@= z;SZnW9uU^P*?;A}wEOBv|FzJ|g1+S>~|-7Jk#a_+04?@ME6C zw>aPv+{L2Wj(^M|fTO%0o0EQy_U2!dEm6m03f9UUTX6d^iu|7Gu{f`z%+Bh}WJUIz zr^Av(mx+uCJT#dB&?CbC)vtP0$!5Wh!IW~3wEKPeZ8R`IR~8;Mi^NTJq7=#eA0W_& z&Nh0C^|eRmIIbBlW&C69^SryB`g`|I=_lX5DL#+9osI3BcG!INbojjv?(hteStmRp zJdrGN^4xRJEs;j=R*p2x=9dKk;|FPLDWL;&uJE&;{p`gZwHoP_J?HwSOujjTJyw3U zTG-e&liQDzRyaU=py;aL+LV4~&t6ji-~n0%G6uKNw(pcenGzToEj(Zy6DCnmTU}oG z+jl@80vulZmw)+}axx9pQhZWvyN$XE=&MTG67E_Vx0(uJp zy#jOnDt#z6eY~8^f6|`7T0e*QWX;F1jJu;5S+;_{p;`EweIU6^& z7?06rY2_7W}BwjmIOw$q>LHZbr_q;It^UMYK!TgJuR7x}7s&jJ5d z8bFKR>i?hXz8A?#bg0VzTCm#F=jLLd?*tM72)TYWBK(#4;E7Lua^;-Q+7@8$GuBCD|C`?Qro~6KNc?U+ z#`KppcWrM08~OY9^|xOfAlnEmxt@*_+<*W57ted%^UCfHJ3IcqDS7N^p7C791AaU_ z{iBSsvgefBD`#pkVb8^WdK&n4L{OUXbg#XhFEV~EXZ6O3J%)n){gL^zj`bLG4B%u0 z%uu_p&p%^Ut6NHl-c-JOS7v)fN`?v6d$BFdmK;76uYdjP7d(r#&{hW7b3L@Z9`F|L z9b0u|ZJ7JK-M60d@%_R2x1$cqew9|CQE+Wep@VQBtpF#9Q0Hr2``T7~Hc=vD$4MXC zHs}9rLi=)h^8&shMa>aPKg726f7Hk~Kp%7m(3ScDcY4Q&U7~Zbblpcvc31HnCr^|U zHFTZ-3}~!arqsA-rL*?N@ooabfyP!|1&4$3tF?>>Y}!w5y%Wg`r}y`%ZoveAw<}drm*b-DkY8d0w|J0bA zp!6@KTO!cwIe+z6i*00y@5x^)&(9ryEzT)VTi=%WjCE&B7sTQ2&CebX&6K~_Z+;Gq z$=RN~&-5zS2uM8o=%W`$>D>Bb<@?J{0dss~k1g%6{eS6YqxqKNW8?>iC_GI5d=Gp0 z!^>`x58{ZxCt{3@HzHqT{F#mKTz>Lx%7Fiv9-XU`J^%M~+!U~jw2STPwSADsugAdI zKxC793?%g?=@fTPb)+`{Y*E;D1-YxRAbH@IF&j!7pNhZxyT2Jm`S0NqX=#Q~rbXe^cbO}C+cuk7wMgqh3YL2a80|{N zdVR;*!;xNqzOh&KuWw`gzwtXtzqV(fTq`i;x$ns8@O6y?Th939eN*3w#KmvydwR2N zd$Gm}Uovwrr+oa(0C+dndskU3Z$<>E-Z$jL5cP?E`9Kr{1zth6J|`A0+b-?#vhTn3 zafJ>un6i~$0dXt0(p?Y)C6d>os{*}f!UzF45^qXJypqb#KyZ%HmQ zvxrt8K4^ZzBepFL2f|Bt&^VCt=f{#;7paaK60`IsV9*`$sx!_e$d94I4I;^l7;9 z_`Z#SYcC&S2gktJn6BvYOKitLHrBZ@rE7f|S$l1cSikJ|9MG51sn_N)9cOiwlRFGm zPBD7C*FTs2H%6$bI3y1%(}~))WmO39`-b|Am5=tBPonvV zQ67D`q24#(Q=o-YLUtG6*g@7kwyw)|H$bC;jDb}xw7v1C>stXcx^D&S24Ggku3n2g z-(*KE*YnIkc2O6!sX({|i4<}Vw;1iYc7LTQ_pNNFo7LCu(I@A25U}%YfxL@E-!Eu> zogv!eC%H9SW1=6H(b#WKqqdD-JLKmL)?xxawyFH|cv%_kMldu`}kaxF>^uPKw#DJH8~OGhp%I* z-M$P`jUfl@83JX_RqeY>6rAu~1 zYJ3K8$FZoq><|DFFkiLmK=ke11^V{eZ@&_ZiC)BS+v}g6ERPF8KL(l1j&nWoX5^7b z-!UB;`7^6)4i8T)ZpL^n(}n(;wW-H9zJGR4vG`?^Co3dtTyH}46sW&H8;~)@?(2`t zF~kU;;|^*=L`!%He(s zOSeemOt8fEXY|U1VDC9U_}Rp<@_XZwF~8kwCwt(K`&~r>0*bNDL5ni+QOZ~k%uma0 zmBopY(Z19JI3UR=k(~9Yo@|18T8=4&IQhqTC-y!2O}$w9NU6Yyhtki9Vx7jsvQ8nF9Qq&_<(8Bk20-A@aj`zv>^m#3Uuf&1_Q19|78W?2!0sHv) z0`>qhcUAsBWT^#xEQe|hn)c>WlsmmS7Ii|Vo4kCBKw{2Z_RmK-5&P4Vmv$Z6u?s}K zoV87`OgREg1)V3b_iysyJM)Y)%F$+k>EG3>BwiLzS+e}Gdc7QFTrq%Tbg-aD?g7l% ziA(SXJn@*vJZ7=Ie0NKVF6lu|$Xc@baKU8PG9BInQNI2Do~R={zhr#b!yJ)sqQ3O? zXZ+XGpFRGJd^e{5v$o99=VNp8zh!Vo#^i*`A9>`Fi$D33Ke=4y9+LroLXMmP46-u5 zE0E!x3Yz($f*S02w@ipm)q{X4 z#|4Rgl*18jWN?4zLm&Ek72JW){OU)KZmg~^^Uo0sV902^- z=0&`EE1C(!8%dDvCne1hY$P!z7~(prs{y21R=J-tofXTEH|0~W1(fjL1p@2G3Rt{P zTZ-GLOz!!%K;KdN9l*w?q=0|!Wvr`ZbD-ENZ?(mu zn|K~H144<>hYt=B@Oud0@A+oL$NKJt-|ECSQ7l6!Se0k_TF<}sRO z|8Z&xAc#)@5GPR_{fSSM#M$HroBJ}0SmP-P7mjZO@ZD2K>XF*TGyNF7GNF<^JBPNB z$LTB9U;J{upuiIng=6uh{X}A7Eh`p1Rp_0w{g!M5hRhEvWhI$u?U-2!t=y|qzRD%& z<5u{~iMO`YHBxqv>ki*Jv$JrVk{zjZ)#{IlKi-j2?4OqF!mS0+$fJkV2dffb6<87)Dazj+69>?{rg)g>V%oNytg!otp8=tqpL=c2pamr8+3QrxWV7b2Nu0Ha;(Bco z6zaag)}{fS<$w+X(IQU_%C45MOr~Yq!M?1vP3wU~y`j79>iQSAha*7qK^mofqIKDB z*ZT>I^u!WJr0=yv-@9n6iGb#8V!&WIy#%YKS^5G^A`KdlHp?Ys)En^kW0mzB&Ee09 zN4_h5z>15HpMS=V5#$r#zm>q~&EzlrKeRaGd~bF+u>SO{H%8Y?soT6=W0$o<1jfKz zPcHbe?kQORY?KGFJ)S36lybxw7CoN3isk{9JWh}Lf==RL_v2F0k^He^$1O&ly*z)L z%SeJy$tAGPNM-(S{;!f3gaC!!blZ&-S_g%vF zl#9ZpztnX#wVUl<-dpMWouuSBS)%;bduPU~3Vzycz_HNL5xXgEWJU#UgDq)YH-Hj_ zrEL$JA0Yq7dDfnxe98*-muKs9?O9VE86b4m%qnZ!vx7NQX*`fq2EwX*G{E1UGr(2r zZ~s?%Sy>2Ta{E0>^5I6J{qY*RuWH;l;p1(h`-3$OSXeo_u9aN{J4Fq^V5Lc^qSB!W z{dzC{h1V5tK2qgwr~24lCeb!8A7}uuHne%unIji{8#nbkbIdDyz#48(>_8D{vD1bPi)(58_f+7{si&M$EV!gx zK~L^==Q}U9l$%uta9F}f-pfjnqj)$PiLGD&Q#_Y2wxtKe<^bd| znq*@=r_9I`2ofB=G5-_bg2j_#$t;f|hl#TiF2chF2JqWXN!eBaaxV#<$LZJ}d`2iI z<2}3PfnIhkGJ534-bC~FVI3wymjuk8(KZe%{hz2WMYsn=YS*xcur;zRLRIv*n*{8g zBsj6mv4uvGUeciuAq#-JP>KYLj?dS2w)o`7q8GsIl1i^~yqN&Nd9}0D!PYF+HePJa zp^&)`L2u=KS7rQI?_a2%@2O1M2N<&L;>KILPJ6Ch+YR6YJkmB!(_qW_Y7V>@ubWb_ zQ!7@$h=CFVZf2RH(UfN(%H~hKX2A+wC25wf`dna^r9$`j)V7!U98mJl4Xk8#zq`TD zC0o?R{`Npe0im_5QojSTr3=3Q8p8v$fZ7EGtoJV^qfQVYd$)Ef2=ZWzu(&oJ_Mq74 zTj^S=G+rG}sO4YOt@`dMJ|&2RasQ$53=0r9U%8is4htK2`3eM}9ClbaFP4Z^S%o1Op&qBr8p zWIyyQycBq73fN>c+1P8gz(N-xk6EBoza4a7r(^)wZ?C{be9~{BvD-rn?yHFB_>E8Z zk}a2<8-ZI7)MfXMjrWi(*A_Hmpl(c0MS#^Szt^wGzZqbQd}ef_U1M$Q@!{CwpjV!! ze~(Wx9{2ql`1oziMDx$g0UJ{cy*bL5ssrbI5@&u;5t;Uih<~b#vHvq6#%c)x$yVl5 zp7NB%2CcR%Dyk>6=CmQwYje_XJ!Jv*5S|Agd~jJIb41x^?LyFK-kI;EuC^ z5kkC4+HA=@r+9Eo=y*C#36HUIh`__5L0TU`pgBr+&nB+Qjr19hlc0T?BD_h$j2~bT z2vvvzNKl}^6b()mElAgKE$&&)$i-2zGGLuMzMg{7(r(m_%~6h#emrA7e*EXRmkq3v zZ|`BUG(A~De|v#>+TFlVUDQOtI1rxRVrC$bE_ncEG^l+o?F6JGK&a5eo^@qR@?)rP z&it8kj{&yQ^pOYRHuka`L$H^DzXpPhcH$#W^7xQI#zEpmUV8|jJyyK+bXjAxvRVVN z5!_V(*qRx~AoQVFuT=(-+wdR0pI^~DzEpLS=+t&*BiG1 zpiV$WM(QaZ@XFfDfU&yx?=<->BeSsZ5pjFCbc9*=vN_epHfiML0sQ9bCw3ojIoU#s zPjt+IT2SMH!;Z|2Z+zo+273lZBfYF^Q($Y#Xwa)Gk}k^ROt&q?M?MSZ@Y8zrWyVh# zU1Hrmpy&IX(IxBOdU<|Krde5|z^_-pR70Ww=>4|IGly~Fsv{C85-}^=?ja8yg6g%e zdClS!P59r{i$1XO+D(U3Kj1+RDqAG1$XG4M{>|xcCSc}V8)H5%(4w#zE8A#`g^%y} z00IC3gY=ne#c5n`LjJMznbp&dXY=*VnK)CEXpE*&a9e#}l)nzim^p#NQnXk(%j|sB zN~2G^^2uY&ynIMuiM9D zCH{s$B1dq2rJju81rN_#^eyf5ziFTMrDSWC?Oc*5-(J?p``5q`f=D<fTC?3F9pY-iy4TuaUR?m z`V_%%Blu!3@z>L}czg&}aoei*{fpx;6A04} zwse23I({miJ45wiWjsXIJbXm~e9vAX$_BUsrmds<@$U6^PgV=+~Q8gdKGva zOCw(<<0G$5-IM*#cJ0ew{_?VDWs8@4$`PMN+m#9NUw45>*&8b02T;mZ?UglmEw#$i zp8C|qHd=J@n>Q{w7#r+WGA2kC&!uMsV*a^J1%vAyw<(H`VUoH1=#?>rcQ)p^sWQFn zn*!+>Eu$`tW4DsPc_|l{;;u)qOrd5SiOPGupu`$GrNDig$C%T~0dU|;hS{EIERvM| zF0!UWBLV}?P?G4MC?XcWF@hLK7LDos21*;lWQ}y10)dfEek`Uyb@qQ8{~iI6^v8n8Q*4QS(_PqqVYa))KQDiX=|6{sy;8D zftt2ur-lHi@O^rQ1nr#!ph#A{y_6%HB<3e(z`*;f8LzTYYuhsAn%+!C-XuE40*XK0 z4l4H|(Gcf*^1QL-_a!Y{zM?lT*wCFUP0!!WiIcJnv*cq+M*s7+4y^7P0+PIx)5*>*pM>m(|k)aZ`NL8!P{u*M-@5 z`+HY{JN%@G0y$1j{+}Xhk2%IVI!4sqa~ZS732x6aAvS2W#JPd^-o4`;?9i2b8<^EIhiS(E(;T5XCa~v>TLB>zyiDCcHJ-ix zMkenG|HuPzLNMlx{rleg-g1NzNo#+kd|V}=vETDf?X+v;a2Dhh2|Fvfd5aIDWnU#KQ0N)zkC)9P@2X!SY( z(=2bbf4=|zy9e4HFg1W)>$Ca?{quuGVf{ZgdvERP?mX#hB zGh5M()i>7v^|o^k&8NmGD7H#(qcPcCTW)vI_z>l~x0LeWOjT#KDO;gSVzhjF?Y9%a1A5ixi(|ek ztCVDlSPJ;cHk)OtT5p#KV4c#am} z-`Tj=v>}YQmS#JUKZJ~{f0gDcNO<$@7GKrtRDHjClDnUig zI_8x&zGTmQ<}(*0dMI0bXe}LBKr0xut#pEK&Jq|QBAonwq~>A! zbsK^Bn~NtcWlm|jDS8i99p4S=@nhzmvo_iZE!PlV5arFWawp@ntMBD>9XCJxxFACb zpu36u{qQj(-BWMwPsyA0$aVt_UM^*_z?3Iev)8}=^~F+Ik}iuLCHj4ipuC*!!HW0i zfBxr-gI@Ha#h%&$A`s4K>-#sRW4+At^qZ2&R(?juC~tlD>08%L{|CamyHVPWioivI*u_GCdyk&qd)>K%CyJ=!xon;~Ugso6~y47OW2p`yIJMXda+Nru-NxOz_=b8i7^ z3fryF8{n|}D*(aoic=S`#28-y`W`92tov%~`QB^(j8^q^jdX6N`C7nwJFeK_F zr{HN)A5pOJ8UEUMn4JR~m?+ zpPs&TOp44{3XVE#Yu4DdP3~!5?=Rz7pEICiWwf#PRu#uLZO(e|4gj<^20%HO!}UJ1 zkaC&}K{;n@%zmWzMdH651jz6$#p>sQ?qHm1-Gl9Dqo3zpN0+8JjGy(%$t+hE-*Zw6 z`6z$sazR?&zc}|!l_mXZY9GgUZ6g2}WpNza40ud|5vwyR%gcx;Kl%L&@jiaNCn_%? ziI;i(uKfFKSHZ@G0h2+qfJP7fsY09mhH>uJ*zA9)$*%k^#Tja9rS{?7Q@#?!ZJDWZmkGk;&K zzW_g9xbH+Zz!~9Vh1uX{43u5-^=IFCW*T~;@sBF6H^p50iwjPXo1Nj)EAlivQ1{KD4G zd*#nZR5wXWId|B6JGr+7NN60$!MCTt(|u&Ic&GpsXXpa@EHI;iH74D1mK9*ptU2}i zV179MZ9>zmL3Q%Bar9-Om{m8q0N<~mB$Dltw3!#c^g(Lh{ngIxIaNdV;TyOU3mUy| zu72Pvwu`JoTkC&L@8DQ4EP|Xo!tWo6&jFGoj3y@_r;>1TM;ZItAP<1bnACQg-&muy z^``<0yFLJWu5YDy15cHP?cM-{tzKWZ(YydEPhV@dYpbWNZFe@FHBjb(oa}JP(U>-R=0)gGcm=s3`dOlDb2s3$41!@E z@W2O_1orrOv&$0`VlUZj&2ntNy^fC8{BQf-yB2l5zkh7ZqI}K9E~_(>_r13H`aM6y zKG}Uee(Leh*mJSINSA?ZuVd6JFMBrYn}2?+zf-jC{ZIML;+HkHSE*;h!78;DGDrFM zz~M_jJb7TKgCcp}_`UYA3$W4X+7XS>u58g5AcTOKSrcItX0i6I+R)gDW#oUC( zI_Nw$Y2$y{%4W$`;6D{=OZEOt6%-<#R)o<1Es{c`t2{a zdWdq}QK07mSkH)nl{IZ|jRV(hD`=qjmz4~Tx@yYQTXpJvwpH2$xs9j$zg+S_vI4&k zsm=I$o#*_JIMbDr9qwEMHgNbSAuoUsAb3lGgFCAIH{sYXT?gb{s5b#3yolIDfwPtP zU93sZBnbT1khR{LW#hKe?#dfWHd%E8ihMX1gjj!Q1Af#TIZ1|x z%Okk21m7gs0oninAOJ~3K~&W7WDIQq04;Fk*-Zf(4^nC`@|xa3fqhu|tiS# z>u#eY1b ze{2QXR=^ZJHuZl$K=>VgUlu8nitfALenm+699bD%Gx}w#!mOPc!><=;M*%%Xk0>;J z+dWhJGBZJwEk0tq0eB>oe$}g9wfOX>KV7!;*}5`ejEG_LmY@hu-*~*zv^-x60Je6w zt^Q1A)o6){4b&x;z6fXxNHia|r6g(K&IDXW69ZS=^DZgTFN-h8@n^3;*P`GqvP`yi z)<4*eE&#PuB?}%YK-3pr7wSJ0IZFFdmz#~#8@?h-_ZMmu=Z<>j>Uw4itQ8KFS-GVT z4sfgpJ_C$ZfJg9VZSy=j5Li4{+usG4^?z@5vcL>ayHajo$U#5qm>5th+u~L>z{C3Q zfZ0I7*0$PKaQQEQmr`DBL+g(Lur;Pn0UUqBqXc_!Dho&X;qM24zq7_47(W1%)_&vD z+Lyr?I8bWsDs;*gGL?Q<9kG6M)-SmRf1o$d+QO7MWoJ<{?=IAW>l7tN{)&z~+fC>D zZmmU%9skwnYjk$wlPS?LMK~sVq730Tvh>wp zer~(9C(s7~Yi&|2$zR97zPB=*1*TlHxAn!9<3XvftAR%k46QG{c7BW8{ z8tu$l==q6V3H=7R-&_m8<0KCV^uXfwMUB&gI9g9*OKwSPcjQjUR)%b+~6Lzq0c_|+{M?GUv+c8O5*EE8)(F?(jPzev5RLv``L>pJ?TlM0Hr`$ zzwT)LjQT3;Ur*24y&1R|qrn)!^71(H>lmQ)ZSnMuGCj7rC*vdVigfYiM!;kB`_HAA z877{Oy3)#t&-H$fja~dN1CpLjkuEE;)XRrDFp(xb-dWk|jRPAeLdI}wvNEox$EQ&S zEXK;u2Fhyaft2-J&+2AXNCHigWpd6gndwQo{2R8!45N zfMa~ufVP!mK+;*Ryk*k!SQ`sxd5gSnpnXMoR^BN0+w<<4zupvR<+)ZzpkcZ0#?RKzHE)b`y zJpeyztJTkV85sOSweeB`R%93p+FNO1O=4mXETVk!^FEt%e$IHspDAG94?n(J2{dyW z##Wk3xPol%7wxk1$^ZWE|GxP1-SU>V930u{mAr3fA%%_K)$L*Rh^Y{ao<(`1VB^lF`NP&*&7( z%EmbI{8(RnT`jmHQ`GAL31gF`S58*voJp5GH&)hq@AqwBHHHZu@Q44!w%P*3H-iM5 zYz-jn@C~`V^Z!v7+Y$K8kS@WJP)DZQSo&qpMP}TbWk=zb3FT};^@P8ll$3>XIY}pQ zy#4KOUwmAVdzZ>8!B&g$0$ZGvg@xqWQlwAOxZY2oZ&!gJPPgC`j=`~O(J};p35wGc zw$Hy8C$`_-^Y^C$u&(H^#*xD1-vs(jk;42BUB`C_0Pv^c$-8RX4QpSii?@NEW#wzu z$NIm4Kknnmxf{rGb3^qR3n$)ySFNG|%}eyg|Bo$3wuY%6e?k5O0NOTi>l1ZH zs~t2qz-BeE8lA$V^BmH57+;}@A_P$e?k`nTVCKASZutXfjZZw z)@}z(?OL&L)`H>~HA|=is!?tk7=!LCUKk^`dI_>16bxTKl8SSpN9;>0zt-EB;|&0&fr) z7$6Rxex41+ul8k332z~~5qXSj4{gBTkDVR-yf^hlP{*|-S9aNDm&E~!+I`{^pI8!G z$DJFi$J#ljvmy}k{q51q_amc4)X@>x`1XypEy}UjFF#Jcj$R+U4w$NUj90wgu)4B7 zdfJZhOax&Wpp7)oaM09vWjZkOq;IFEV>YJt>=j@5!WSOYdoUxkJvbK>_U;>dJ{zQr zfjj}m%FFsOg^YV;0{}^=iBm3sk1b*IZ6O*MOQ5ZMeZ4k-aUkak7TQbX*|(Hoo>M-s zW^p(=zA{s1V`h_n&NxQ8O^x{&zx4XqdnTK7nGo>L(>?$=iMUVFmhMMC`q9PP-tv|r z%zgRe^~~F}TiwnY=moc@SG!)7YXJZr1g$an zpg!(F!4u8<_X7SLn?)NqbC>o$Pg~MNcNYJyYDHTS3|09xfmd$;Dx$oJ*1WFDxRtD& z1cFfZPgT~hM2DZ(B)tG-tblC)epfWM9D#sAl15Wb+h!axT>CZf)hpe1sZA<9npKYf z>ziwyUh$~7GA3q0bfCA5PXJ+d?3z92$Hv;UVsWdzXdo#9SNq>UV4#74saAgAuf{7p zpYX+?kLoL@#c-xG=Qw{)Z@!a?2VU5~`K_)!9^`pB+JLBm?g-TD7!~^a|LnRxvH0N! z3g9Ho3sy*gXdAP7Z`lg2^Mq|*=IEJcoKcR>M5ZFgeDGSF>waGO?<>4s={F?*+N_Oo z#p*$hv#7_N=6t!XP35v20J%vGS*Ax14UPTcp{zG}_q$F7i?suWX!6ZZ-L3bHtTp?TKyhw2All@;s26 zYO|k1y)q*W$LN*ni4Gr+0nFa``s>!`!B%g)Ayf2ON7rOnIH=tTh-`w!YmuR1d$Rle zAY}h%6U#GFe7-jkBl9tN@2D{Rd+M|e{QqvL72Qp=l4Coz9Q0lL9{Yf$WK4kc`rs!! z0PxFS{_^5x$~}lvFe}xuG1wTo^(OaNS^mE%keH1@uk4JWv+~(?$13`|*S&7>rZ>KE z!5N&KzJZ@j@uR5<6$Qi?Y$IX6pJ@00iiS56h`J)d5EWRJ{tsvG8W;=~mDU#rI@;Ew zw`8p`Tlr>+cOdMj*9%pZi67V36>#wZSt6`mQd`Jc!&R2jHD#{rsxxy#(tYw5h^~{C}Jq{5~x{-mNwPps^OR&A3vBr%A1+&9P_! ztPLuF&x2SKf~Gv|zDVy3_$KvxYuMm>7#}~UJP>T{4}h{+ARXU$&}B+!U_~?lS>;8W zckqELzm22yUHtqreJ7vamt+Oz*tD|*R5Noy1ev1}E z&pXt0Bl+vmhVO|tINFUeiR>-GQaQ{Y_B zl)i6E<5d=hb!P`R9s=pEs|D3BL|2mPTf%Ad zrx!nQ%C>g-&#X;e5BcvNp!mK=y)~x0v**0ArSWMt&ys6B9Xpsmj=y8yBTZsk=9J^d z+PB~94u6j?)9cnqn~a}4KYAXD->1O!#*Agg7qN{QeOLOchi2oDh&D6konnI6fNX+K zU7G_c#>$vGDdyAz*kDV5RV>z~&&hfDutN`B9DVfBGY!yY#sZk`Dw$eD1C~ z&gXAl_`=0rd+k*mrq|o&?Ea}fPyIhNc5(dIQ(nB+|0e4Cd_`aX*;AjoIE4e(1xh$l zssQaOu#M6A4Pbh_1TovBoWJ{rwPBfJEPpvr;gxx5!*U|50XCab6?DW2zS8FkM5BN& zzxBqq?>$nIuc|>soEq{dwVj}jtpc#=DLy|g&7aPmb@dyK;8T)56G(D|7BYuxYwlQq zy^A>MBk(Y1x&ojN(EE?nwwnqBXi}{Cyw&@SP6Hl^bSSSFx7 zFGgAB$9rO8wQbcEx+V`AzZj@%ykR_4pJ|H%Xjl7Y0Il$vc=ljznZ7|T4M!`*&la-u z0lfAVVE>;2E&H<=#I+%|A%J7g?*qEk_LQoPw$?TStM${Ooqw*fKP6syzuNWQdIAz{ zW(TDC|AqFD+JzuGj;iEs;3&$8(J^p;W-?-BY>gk?-0|~MT}pSTAQh!v6VSsvD@KJ|b>_S~2p-57nhGUw`?G+NG) z+i@QHc8~R~SN2ptdio*j%NXs~)3?~CxY&riw=v^nb@Z@RM&};w?fNpe!$!VhL*|0M z-bBo{g5`;0;CSAgoKp+K1pU2G z^0%I$t&%tV>%SI|xxIotcHd)q~Edh?3!71zTy3dwR$uO|!e_pVYToE2RB`l>^{wRJ$xWKEX| zT;C7tL&;~TH~9?r7ns8b5DOq+1FOzYw8&xGnZ*n~f5(aDKhU*Pr63VbeRoPNwr$W915Nd_w8L4`Ru%xA z$rjsYyxF$4J#QF|jHfCMNa+L3&k((BL5U^%4Dkth{_ywPAelr8ZqMIVccZy$}T6~r5-4WXYez)H|>#X9BdwXq(-b2S{E?H*P9??_$ z+~1QUZLYdG)l-UgFLINGbOCNPh>k@)5x6Wc0eQ%I7W;nQ5wO8;(+Bn$*TZ$-h$5aPn`c&=NL`mJ;q~ma7F}w z@Cnv!3_<8@77y@OIU%a%3$`H9D{9X2AHkc~6Nb31GKsKo;Dt*BDc!tY@A1Cpp^U~g z5O6uk;-JP(t_N}Un89Cq;MD)a_`+zeb`CUmINAX&)RQOyZG(hxcYG2OrOy9JhkUE@iU;~CpG#PFvzJNB!R{s@FL9t zfHi?5r9TyX4+1{8R)JHS8x9nEnh%M$EN_KR>$8n|-ZEw58n4whtdXmh9U0X?P#B+q zMa_U<7>gC2cf8qnEm)scl$E0kTkl6;ft5At`=WaRewDuXTz*#9_tN{3PR+Su!79Lq6)9sipPVtqS%;BhYA$od><f+5p6y}mA|&YFJlb^CH~XCQk0 z6d5G|e0<`f#X$mBufWd^iZF{fJjZ|AlTJ+egmHne{Jk5*e}F+!0$oeHJuF0e7^=r( z*48VHDe(*dM8!KsoTXk_n*gyf86(eS3SaivgddxnJ!a_*nk5!(i$2{gS#rF_j6BAzR1$4c! z9^;Fwtz$eE@AngStlxI3%8`d3zBp8G^7CO`#UF<)FVY)(07v=}jx2k)0P=wXe*eif zm{}v7(j5S=jxt{9f3W;`->kT0xWYrVj%N9CU=qNDr4NvG0b8u92TKlMYHNT%^}8!{ z^1!72F0`yfEcKeeitVj))Ni30_$(km|Kmu&(QkjP#l%llFWY%|==oT>fw;IGl#gCL_z?O*F} z1}K*eANpQ;x<=3)%IH}iZG5r?Mx%w*TWJGdpINPXr_1U`+2yR=7!^&o_uRExzeEyaM6u zqn>I+cK!2o@c&!8#`Lqle@b^mdS`k(11UY=7~AUGo6*ph-P5tY4_SN1=+mQDh9Qb2 zk4y;C%is9MHx@5{`O6ny_`(+o;M>?2J9xV)@Q9Rh#1jxO#7Qq$qFI!fo~L}kV~?(l z=k#UOre0f@O^z`oz8(eNBf#b;V`GWCIqJ@Y=bPXB=5jXdCj|hf7@oQ}L+QckMt_ow?P;%7?eEhXm zQ1_D+;wCleYy%ioVP;$KW(}!@uUShb6uk#w9*}qiZ;CqGW-U`vbnK|nR>|MR~9_*d==?0l?=GQECaWY(r7LLy|E8; z9<-TfIiN} zh{o10??0?(so!b$-4}Pg>s=SO7AT}m``qnr#Z4h@346X6MD=Eb%?8yIVC?@MLyQr7 zj9E969Pbu0cZE6Dj;xFwwRHhfzxge0u{c?lsb5y#kU0};WBYuWl=8O)8a}53$T^aT z?Pl^-Z6_ss1^n6qcUMr`T+s4!Zh|-^>1Xw#Y!+zUy z4s_XgSPB%Y5Bie-a4%VvHb?;dPzwDA0(O88dxrEcr1fcdpF4n$FtAllP%WvkTM z;AvUMw9&HiuF-$6U0mrqIBV98M^gYcW{&X(t{9a*jb3Y$wS4P>Rd-(jO9?*=p0&O) zB(?3OpC0tp@%XxE`8M&x$E8SY`}De^=^txRhuB7KM{Ye%TVbo7E&I}z zTGk2xbu_g$7q)P8ioET4$t-`KUr6(FbIBa6)LcJPd{BI%U0uvk^OL59oIy;EKdc%z z+OVPg=jVRZJ(;p!8-le(pqEE{?4K+nlJp@7v)2i{Gc}%lhocC@VYilieR_(fHct z5pzuK$4X5Q5H3dF(~c8*>0jk{|Ni&Czvx}Ab6+zeR2gkn`poLaJh)N?iN4Q#2SAqH zF3t5{Xkmp589QAB8(~;F@`xiAzt(?Ot>BQl&EVsCVKkjfkJ%$L#fcV)9hoKr1wAyM z-5ZJF%O3+1{<#c%_JD71vPK4vlhuB+ZNYv#K6h7^;v?k<19o{Pea2}NM`TtXBr~SY zAIj9cg&1~6S&UeHkX&?(CVrAf#*dS5Oi1+Vh+~^g!noQYc;k>m4k!@99=hE(F3hBk-;%fb4Tarjmf<7+Mn{s&rLdYH1gkBYf z?Zl4Kh@p>^-%>2eoL$=*A5}WXzP0gi6<^ zrOmQyGkwqMbIj9kX}gr8^WLNR%(g$YBVQj;)K3sk;9G|u==TY_sR2KnxWaLS(0YS- zri_o{8_)B;T?6^fBUN!_iy!Nj2QD^t)JKAFd~3-uh;Jg`6pJwP6u%}u?Wjch32gv= zTgX~WkQzG|Q4WpipEj1p3y$tlzF3>H@;!*i$PJy1G!Pn5fZ@vZYBjzf=5v7er{{=e+LIG$b)Svj~+k#mtZTcY*?Ad&hEqlW7Wb`;%pZM~fr!+w1 z+KqIyI&o>Z&24YH*r3G?AdhyE9uAy9Hi}=cNU96CIL9c{&U~hg=y?u!xJYe9-;>ee zZ27+9SIAcLkLC8kdD+E(P&x#5TC*#>$u~GOwF^?Q3M{4B%zpEGx^`mw}1+ zOs`!3Y@Do~_*37r{u7ad-``W8_O!*%G^qHra0V}Eok8F1FAXkC4giD!k3atS#kT~M zekCT@RZMpc2~;A8{3{!SOc2HUGJ5vz>DAE_XkHj#!36LD{7%;7V#3(gR!PuYJ99nG zlvUrbHatR(uzP6r^9QEPtHmR0hgWc=-eu)0Llga^4A}K(Srn#$zj{+P-wX)-QupAr z{{>CvpOS}A<9L06tH($v;J0-ZQ^Z!L11cW$l=)ig%i7S!wmxrw&z|%BFXOW&6q+)I zW}I~LK#sjq8&42#lhWfm5=KAMe|UGngGY!5=?fOX-L(+HYI%M9&nk_rd~d~DnMV=W z1z z)1v7SvhTZ|@3x^D#`FjWB;rPyUxu@p} z?*`cyb@mk92K*A{BhM1;3TVLqg05mq^rw<}ShM^q;*Quq03YT2TICSrXfMhonwDIQ z7+pAd3rkom+k$x5f;B&U+QavA1fb45^UTFr3Lu0RNu36eJWc-exEP^V@!tn{_2^;O zS;%asc98G!&PrU)E+BpTvOwjRv=jKChdiW!HUdD-Rbc2;x@jUaJ-67xl?DwHH>56Ttj&641|;5G03U3$pQT zGa4qe>~=pHo6Rw=4AfE99NI_z&9-d^S zKv`q`ekrln%aZ*mrzm-@Z24A@13=_OW`c)3>|u)+zxc(i#Zz*{t21v|iXfznWd%0t z)pNd|zMLMf^#IcfpF~-Z6ga1>_s4%+tbc&PpTl^4EWWO; z7$dTw3lp&Ad`k(_55D0Ii|u6fyNbZkruJoB4eAJ_sWQla#F@Jo8qozt$;P(0bjO_qgiyK^)M)Wiot>j z=tJ3m5CyK+t<@(iJ1+B=6q`^!_=5xioKSnZ?$;r$7r9*?Y>0dGng|*_Y-0(R`a$K)dxDdU|VJun79? z;=xwEpKqRiZv5IjaXiqr=QD8X=|sQX*mM=J@q_r8)Ho+e7CcwN9>8a3B5yB+^n5MY z_7~0A-nC=$7(;AmpOw;hgA~~N#5-mIB?^3h(fN%8OH|p@7BR71^|$Zu$_XM&A)~X+ zX~#3(YU?eYeCHUzPm3?!t2Vx+^0)B?fmyuD$vS$YXtDOaOM!8>lFuL8Z1ENKRtEgm znzlAK=E%MEf+y>&wS=Hi_d=cvx}>6PBuQj73}r+>`(vn zPZy7TyNc)w2R-12neM>J6wplhrdeLFZ0_x%bUsxT&&? zrfg+!G|)@_?(fPff{^dS4?C=+CfOV>W64>PIGo zr}$v%|HzM+tv~j$k1Y;9_~5bv^L)T6rvO1s&TXXxZzsj@XYzL{TZj%+nN=bJl%|wy z;_9=MZ_ie+Q=WI_4J;v!2u;8k5b(gGvtTOQ%T|y2bDH?Tab(#86_o$j@OjnX8&5$3nnynd``NiIKpD|wMj`4gi5E44-SPys;P28?$a zOIV-bUEl87k8+>U+a7{7?(}j0*;R*_u>Twjii<_a_?x7T8vMlNPGa zf58ii!W!^lRoH>8Yg3n88s$v}u-Y8c%8hy}1FBxf_CSg+Khj`rIF|gD z{U3p3R!;`-BFM?WN$(!Uk36;{*2llRu#(!xv8HT|UMe2N?dkILb*Ii2NC9srFWPUq zB)fw?vs*?xJ>7UFTJ^Ywj~*}l^~kA9+LitH-@lwtV+TFNG0S+BdbyvxeP9JFf>6mmQDb8EK! zmJ_Zty^MS9Uj*Tv6w$iGy=*-LfR5zoE&aZ&$|s38C%6o(!Com)pZi_DyEZgSWbL!H z!OJ24%m64mP*t8&I|xqtxoB~TKG`0JM#t!rQ&8CUyoP9Z8-bpCiofq)eJQd0HmjWj zWB~15H5YCxp834W;B*z}`z_IcbCo&Emvfj)0&oY~27ZP%CmeC3LTq5zcmrN=bHdYP zFh;s(JGBwZ{QV_|4v{sOAQZ|kQTX~Ft9P;fK^KAGPY67)O@`8Ap=>;{B!2+cVeFEr zvSO9X^j`!)Ytt(P9o07Ywyf|@)`*$Ujp@iS5E`qD<;(@JJ>VRlx8H18vQ0?<#90a~ z_`nB0xHwXYxw#I{Y^)CJkg$8X*S{WJ3OG!7$AC0#2mE1Z@P>p4dii}-$-8R_^pR^1 zz_r_MyOk5Q@bi!N`}P* zegHr~r&-J!@QV{DGP(a98|o)vR!+9E7+cl!%8NwF7&#L*amCeZ9W{zG6~?1_`DU%9M}998ld-MQ@{U* z{v*ZAv6?@BUHxO8s#Wt7#4|S`#YnX-HrW!!XJtG+P1h#f3IJ>LbhPtx--B32`g>SC z)&FnmjaBY!(SuYt1oaT41W@H1WRA`wHA~y>ukA73vN0u!mot06j4Mg?vE-iP1q3;* z2CEt}fnbl)_t=*@FKl7r7XW_Fm+Bo~c)8+vpv^h>LNo_--&VZvO!;`y@2?WMuIqq3 z-tc_^fhrr|%Lzyyk}SY~>+VWQZwfGizGbslfuMEI%eb+7d%7iC%xAJK%C%U3R=1nd z11qK1d&}W=iy;HrVKI@lDS}b^ZAXRq`rCI~_*Oua=?&__vS(4XM8D#`MDW8=vOJxn zEDZKsZf{F#-mDib#g|`zjRCNg%0*x3L@;F8t*CEY5-1bH3Uol8m4GCju0c*cwsq0v zTw9xBYl}*cA=blll!f62-3|z}^R4Lk$yMr_VXOAJjG{&YgBPq!$4G8H6T+lEG$m%)k>pbfC6(_s}P)5!UnC6nbpRv#bvP z`Jeu2@w(T)zW6;_$_M&p+jO>ae3|@~u!4}Tr6|NIq)hP)tSwG4421ZSpsVwJDWR9w z1K994uk_V}C1(Zk78+By&FZJ}zosqE7szCfUmSh8n#S;*>fhaE#Uw38X%0;p8ASVk z49KSz$WEE9oJxxo#a}Hmp6;!kjt=FTgw^>1IbW0&=jBokCkotS?eapHq|f)(cs@Yy zy9vlM-qznqo(lDG+}&ZS4bjjz6f|j8k)>w9kR~-u>Cw*t4w< zb^9LvCF%7k0zL1PCGHST->FHCZTo0@jsMftPV)3&B`b+4DnB-wRlXc3Rg|&rd$Ir% z{&eTpg#-zdiF^crKUh|QmqLN$9^)c zXY+A<(LMLuuK++M7J2N>R$3O!>G4G-?|W&L!C~QqieqBNyo|4b9rQehDb_>V9#dvQ zXAXTYkpIUqS}6khh^T7kkZO{WzJ-a*WW}eC{Ctm6-?p)BJGUC{^`Whp{S67|D-#kP ziGtnVn*hA33D!!t`|G`Ct@0Mhax(+LULfP8$bry@_q< z36=&*=&QA}_P>o;uqq7bo6vn=akXdFukF>(d#PV{l)!wEKrYdp=ScyXKO^S=vn6@7 z1oO=W=KopXWIK+1GvIAwQs?hLaQb^hvoGQ&CqVUOmoDk6vV!6Nc7TLG$&GDW+Lx2c zDYpRdASvZD50an_JgfJK8ru^E^zduL1^~e4EZYm!|BEXKWpQ&80W+-Er0%)5EOQ)z zhTmkAS$+Xfc-89FC;op=*8E^Q{Q@nd0Ghw9ita4YfP8>#gCE3MpcRZ7&)15E7Hdb_ z*p8H5fiPZ9G?1#k;>z$qfl$)Bkn#t9TgLQO`K(XoJ#8m1842kRka8_4DZ;$A=vx4qUMXkgmj$YOrgu-uXPt|_&coy;L;g8ZDq%&vSo7_; zUqB(=xk)>Y2uz;11-(;!4*9<>(-rkBh7tpS! ze{=3NI$EF*&s8)ioUZQZRty{p|O65c=`?kefV^eACW~(si*RP>4zI%8>iMT z$E!Ef^F;KL#}8mxlABj0PZDVS>&U6Nm)_SS3Aa=Jg->gL3Xi*T8~r_Rd!CDJbaTqK z!3|`<4|~aC@=dkjD;k$?YutR|TJE#0Uw{Y7`b}?o)8bjrdRA$MSCn4Xdhp}ZAZs<*T4BvA4^w5VswCGU4EvaX&tM7MLS!}IRHuT3eYdf7u z&h8r5%y-_8b)=2)pyx$@E#n=#76}%yjIYaM7+)sW2ML^e04D=4Jpf=0TMrQ29HZZx zP}#)E`q}G`XW;b!z%jr%Mx*RG%;_)~Z>)GYaWZjvc}6qmXM7DJBUznM5RI)$;xkjU zSPy;Tn6sihQ-bT$0)59RlD7dDXK6qITt$k|e4dD4Ea$)0!n{KC+f!}(vz9fmwt2v0 zD}RJnEz|Cu$gRhf;UH#cYeZ0Pe?mhyyDD5(tt5v|4yRtY5 z7LYc6YXdn@<^~o#-3(Y{b8-N5A~@CqO^Md;X<60}eeSLPVa>a)6w4N}_OLC96^e3x zDLQaA?Ym`};)DGGI|#w3XcSUW4~FP5TrvSF@ZXqWqg$S##Sc2d-!tJ30gosikH(*@aKGz ztaJp!;D1+Uu`O0A-6AiiV@%t0KY=wwN&`4QuQrrgD~~{DPWpJiz~9!okGBD9i-hjY zr^dS#kd|UAP0Dv0W8;Z1Mg~?(IidxDCU;ajPf`B?q@KRz7L^B`@O5Te@f}L-gzppz z*jrX6=cwb$OsB0)leOhal$T2quKquz5B+ly*kwR(IrM9RBnGai2Ox5xEL9}=1&je! zNHmOf@A_KIkS2_UGbc8DQ@cauS?gT#xr{+weVGMsB;Nm36Sk zAXDHpo4j$dPW3C+9S68qhktGia7L8g>uW}LOv$`sA2J4-5`@;Tp3v$&KLUvUU~qp=SXDhemsLX zkY>er$L=<}<(cwG#Hv#NI*{ z53DnsEsO<$t*Sd{C3cVm{atFXL$k_M1=+T}OfWkI6esv#CA5^tD$qV@l#Y{R`P zeYN&f1=0Z0Qll)l5NV@?_(}L%$?EblZNKos0*24i-)jYW9Rn1;yrfS99;*Mxm0osF zqsd5_t(@BS3;;*Ems=^*wR`#a5I}n6Z&s$mWf>#T;gk9#aq*J$S11;#oh8(tB^QSM zswLFU1}-;=R^Je?!P56!(UKsB?B#(M;PUkZ2MHWub-Y3aXYsi*FAZcnUIEHsT_k{n z*LS3t0eXjvhsnoh;1#~XPwiK(O-4tebswSe-cO(h7X}0R2AG>QyYh4!GY9m%waqVN z3eDB-GiBlAM2~-vPo>e*_mRcbEd)3pAUeE6^fmA|u%w5v^t@BbbOm~zX^V?wFxtEU z)M@-kXY*On@(Hr8FyGq(DHs;aVgIlG>aP}$c*G;h*4+wSD&J)DAOm?Tpgzz$J;+A@-50<3#l_$J&EJ%h8w&Untu7-aQsq|<8dIkKKjXSuc&pD@nfx^aNtwcL{Dh*f)|UnjYx{Rs z|A}VBzwIURtHElA@MqhXv@b8l4^&$?4-i-)B}f5EQiL20cc=i@I|XnM{Job&gQGm* z2O?^}u4g$r_#x!CwEoxeE~KdKg(m@e_~_x6$TseI`a!i&#<48ViB|ZuVTmDMn$JrbEg@bpMv#;Nf#nbkgD$dbUS3D#+f&9p z;9(~;kduuByx$c_w`-ho!7-J%_q4^6$*F|V;T78UyULl@oopNVhqvUhcml-XLx+zZ z<9t({I>ni@Z1oewh?Nh2L;_K`*ZZ|+`pIAG=|a0F>cBYWna+-7W}wgb$w(C2nf)KH zm3iJ<5LOlAUB3ABQbl8S}&T7<&1&7$Y*m=_NKNe8@$-=F;F}v ze4@bV)s@lP4?6WnftZz*wKMWXuMJuGy)iiT)KeFS9(w5FBOm$5;&kPF!Xm=U{50%D z3zRMS%m98kp|fojL(x}&Ty3BM8b3LUP-MbXWiznkEQ!7Jr>kZ7Ek%2-(6uAfJg6F2 zVgfj&9vs=(f+Nb37pF6D+QshVU#ji2y2|(^b($5j^~bfl^?%6-YnH~^&#}eG0N@!t zYaiMijDWi;eouGbWV4_S`r<8VdLAq1)wRt+9Vclef1Ci;g|hwtNZ6wNvc6xLbT@hq zi|}nE@S!81k2lGoEf-v8hzcETfkA);+sH%{ljF{gKmz~**xtY1Z2lylqhvdrm z@m-{AKW1w>fK7O|Y~$*avzB+2aw2F0;K$j~H&VOFwTB-b0S?BOrOh7PIi4I?^NjWm z@Rx-_{oR1KeqW>d#R8}=68)eX{RD6lHGG)p_BHkA9JTEu`c9-VXIWMTzw@qQay<2}!pzRswx=kPE0G#wgIYQ_i|^Tzu!VAey=o)A3( zjtxRY$*~U^h>3)mb5B-JMvFK&J?6<6F$2z?wsUAdR$mW*6(t;mh`*LGs~3KeLH+N@ z3pU0?n{oK`hn1Z96j}YSzFb)X--KH^K1a$2#fbt25OHi7irKuW2K{lCjs}jL@{E(Z zO3ViGOtF>rnL=IDBFo#WFz}YFxD_?ZOTIlS3+H+wSx?dX$8`&k?aW&U5cr&ggSJ*d zANhP>WeI?w(WwGm%T7PAECoOpw+ows83CWI9;b*JJx#b(IySy`prz4WmK=Q3NK|~F zR`et={z47Xz?w$iPnMMwn;szQw*oFF2)w;b$`Me;nYLFY{f7lmbTk_MCxr}Ud|mXv zKtO|M0A&Rj!jo*N>A!0e@v3W_077&w$)}-t**2~`Nu3_7?})#N?Zqts03ZNKL_t&> zKvwO?s`nUKBkm+cMj#K{!1RLvj<&Vy`OX2j6<)3VNdZ_`{Tr`B&l}VeU``T{2G|ii zbGG_%U$yId0$9)iP$4^W4TX@{p%{;Qh$c-V)FE z{Y9sf)lR@TQPEM}0EnRb50ncMH<2wxUy|1PM7e9zcR4#UCGX44xiGcQxWOY7N$5MVw3t^7!%w7>_j#=}1i_*?i_`SJoetIP6=ClbSYB}zV zfX3~$l}k=q3tXhpJ)Ic!&RpFY`7D#?J>BhjC4Tp9og(&%Y!7ofwlOQugZ|iuHV^cr z%O_)Cp;uvsIHx+BO_=pOv$^i=P5$+iAIq2$D6#LxBy;PWTi@LBHrH76`i+kYpzp7r z_q@e7bqt%GqZmP}Ir4G}0b8F3Nf6wTDBfy~%eIpKPw??8lTCf%w1Q`AE0c&%{L!#% z01{rN)$HS>j0f{5D9+6CXX6&Pb<;VF&~yXcvzU4T=B;&hz45BICK>>sjsT=>>>9|c zfW6xm(Fw4JCGTLp57(ABz^OQWvnWtqq`is$bmd%4wp%-*4ceNY*ogQWOqsZ-^MCT+ z9s(;n3Lx6a7|)Qe+>RPgEPk|eOMP!XgcXFhGN1$W^5BU+I-s4+^YXm2pq1ZIQPeT` zjoR@qiUfU?-e=WFXKsJph7H9Ui67wW6hw1E^;e|L08@^Bdxlb7a4aGzU#{r_SxR-a z6N53VZD_n0_^t7(wYB!&`a+7EPYd|HOJM#jYLidG8^?>NUQ%_uU6H=zXd`OVUSq(Z z@owd%sJG_m0&B~Z&dcs&+x8qq+`d}@ZLil^#6J;lBO9YK_Rp?|SLfb4VDjI=j|gCW zl|<8WwAo#>jr-i^KDYSpv5jkEIz?|kX1#mYt1lyn%0QKulLMLQ=3);^MLzVuSLR7) ze0pulZnt&}(z(P+GsGJkV+BP<8=E+DCe`K5gIOD~SK@36H?gya3>hjb4Kgqva=si3d$seui? zo3$i-t^lM22#k$++lDel?W{6WJZ%44`BoP8i%Yc9f1W_!DFS_$RX--~d%E&L(P!^- zSjNO#gEA{wGH{V59uQiY4e&Wymg>ARbQVNUtMc9Gnb0M(D6aIyTefN&2IDI5hTj*# zE;kkMz^Ctj%h?@k6)$+@7cK~(2wkpEoXEl0u!S36oNU2%BQJc5*jl#Z(M-MpLT-pP zPxoLk+(CT#KQ(T*(Y39_vsejv(Qcd<+O~IXv(eV-&bB-w&m_ZJNx8PQYhw`ss{OvA z=F}4f-~d(c*W5d{CbcHb%k5-g*oNKt>l<6bkJen|l$`Ra z^lQ2Q0%&dhOL(LN^(39LvFDR*W}^GQruo6y#aGeTFy1T(y|oLg8F}g6{N^_=4m#+d zlExzg7m;@}U^I75`};h&?2VIM|24cy0P>y4S`fvIs_vU7ga-xM!p z^l9_g%k6q&Y|9j1WYel492(6j$Lc48JZCtbrt=&xBdMtVKzSkru-x#Q z9Clb1o*`w5mEp#Eqg)m5IP`t0prL^~2T)3V`dyT&v!-~fN&`0(J7!t&;KY~f>!U7H zgk1Na$hTY9*-kq`R+ST^%K|x<92RjNEn>!#&2O&K$&Zg$ z+(q%YvF<6T=B`j_$8&yMxlEqE5=g?*iMWqBg6A?^kEAYxf3vi9S$uyULn;Fs-l z03zSNEBbTpGJzj&KXeQ}O34{JXu4|%YY#{3={i(}OuWJCc+i7+F@%i)I~ zzIf6TpIDsyu@a3bUn`}R8d?p{`eOU3nqVzKWyzk4}dgPHu7T?5+ zw7p9(8>c_~cYHC1#=Ay8Xj1|=G?r}R?t1&%|Nrd02h_Dil_q*@0|JU5IR}Xf2#6@C z1QUV*)DdmRFw@<)ZF^?j3AWSrxYoF4w0rK{zT>2J98<4W1Qo%6iYO>3If!JCoaHBo zfC8rWK2N>1>pZp3u6p0|@e648S?jFtJMUXz*RCC&+LdN6c)<&1J0nudHGDirkB1@q zDSI76PXRSnU&L4IGc9v4>vexeGGgg`xmMOP@)Xq>0rm*^P676wCjT3@YfxKnY?QEw zfl&u60|KT9`|2of3V4}9ORLkpQJ7NSRN-yW6$#qZHh6&_%U1!KAhEW$*Dfwr{ywgo z`y$SsD);Yl1eg_$2A%o2o@#G6ARckCUOvRuHhO3zESefi;N&ZS-2ed*u7}dKGppO8T z;Er;5C_wF|+!>jj^!0eh^?wB14+8vAZV3Q+=rT8`aF9mOThSl`kJ66@a3lGR^bqMe z;Cl&x-&vsP99|37ShvZj-_=)Nop$*?6@w>k_OMUn*VLx<{8;20EwAQN(4cv^EBD-U z&z+r&`)hfE0S{f~%_FOGu(DD)|4rw!frYk}Q?@)*nY(eHk2RSG9&}K;0*!#r`w^qh z_kr;`df)1YWV;&?y+}SR{h)3O!J#pUY z8)G8^mTA~ju%MmXqpj6B5$g4w83CIXgEg<_^P`B!=%_GxrStVgzco*9bP}~M5>8cy z2uLbGG$Hcs^mKZxUV3b-=|W59}vnw?&0bIxO6q%r^l6XxrrvT^YIFz}bkHbY?f@?Qmo29OH)%H?wN z3J>?CGv%SAkHc@SqvDMX{~ROUr-)N5kuYns8X=!f=vD`u+L7~ly32xk;jITAx@Iym zf(sGVOoxKD!f(ef?I%rB8SlAuPk@TMYk7Y$&%Aqp(}0MWP@TfJF^i>(w8<(CMs zd`?MoIRV#}UIe}5^>~az-%H@fvhm%Ez!vhk5x^bS*21;t(7>Ji??)8!4{)5xRc@Ns_ciUyHUND*_Jiv@ zOIhN))ow?2FOqZhdvlSj0fD!D+~v)U8y|taJN494(>0s?qyy>2UOgOneXQoS1D1`x zv{4GOv>|L9H)?Qq?yFz(nsgM8MfW0q+T-eC{B>g!YR6ycAkY~Lr| z_p1M?Y+aVomV8EX>7RKTBV1(9s$IR2AoVgY7&SrFV??z&H3Ab;>1r`OG5}HiEx~9R zgQ&i!V|#UJ*%1gG>+oKEt-PL|h(D1~w(@x;;%}vk(=Z?Uo4=Wz^6hV@s2SJmq`P^u zAy0MT`F?Qd+{yU|7!~T;s%kpd0lD-}9jJgJjk5T@Dv>h0C~J$%X_})540MSix-^x7 z&ly$t!20eXSOKUw4UUwNK1Nx1{oD~~?`Ax_*BuE``p??Orjp*_#k@&Ew+FZd{3%T- z`;gywuaVMHaOS0@X@X_}rND)}&edd4V`lUZA-Wnh@g7RR+`cMIW<+NBI%hZ0Be$#bw z+J_qH9f-~Y8!3lJ2E7@2b_HaShf1G}sZ<_0!-#4s7jpP40J~kVCh(7u?j1N=?%UuA zr+N8#0C_IM_ZooY3sA;iV0w<%3nuv$kh(CCaB}OXuqzoPKtg%~(0wrwJOq*6Uty^T z?>cUM81dVE_ubPy$u{><9W1Hww1{5V<`{&HeIm^Ioc8D?h)v{>ea8F?SbiCg1rc&7(ZKpJo1lPj_)(?&pkM= zY?afqK~(2Uc>G|_@<#Yb^F}~)ZVGD9+LNaqt)6dIe^0Lck!Y2}ZZ%2?pNfQir?iB0 ztWK}Yy+#gpZ*gr#iO; zOzT?GVVro*BQnw^4k?JoVQ@Xq^D)9tfK8@5)%g`=G(}a%>YZdRzbGx0dFY_I;gNE} z$Vx7w0+=nv8UPaKSNar&|6%~XZy{nrsNUEX)CVM6q=DaemNzXQL#xKWuNluv`i?wD~1HAE?yQ=`O(osS=EhlgZu>Ty3 z?Rl-+cObhLL56vbAwS$X{XKxje}~`y6oZ$;F>vG5Z#o>CGLv~$K)ViLg29^VSm7sS z9_4XOA=gv(KHStpptUAw<-xvwH|UgTOV0+6fkD3KZe7~EV?Ot}*-0mzG`lzNlIHO( zocbNQZ*g&gUFo;FWckr7hqiq~3>tPvAG`^7D)TSb^sNh9M1D}75bJhJcA5eecHnp$*?@gXXE>a!_^z?Y>Xo>seBeZ`$>TzA8% zj?1yQnZJ{~&=K)3zUfRbd}$Q7fwAU!XPoL)P_rQHf%1iPQ<3JvI0t(QSeQnEhn1~{ zIY%BM{&}6L)?Q^LP9`4z^L7O8PUJ30<|Am~T1I|(h;Iet%m`#-6Giv@IxhoLx>2R* zXQT6LGm{f3@G>5HFy_)!K*xCJoV@l?1R9IpWqw!DAni;1pAKI}`M;^PQUv9UZgE4y zClReV0w8JQe2}q$nFPp%E(14()d3$WIaN6hfIt$PEIU=1ZlGee#GpjUqd;>Igi;Kz zL8Q!a0}G)P*ZOgK`wB$UxS`6T?aaV+j62dzM z2B(sD!k3$IxQw9!tVP7eH%jQ*TGGy4zFd#UvlMv;a`d4*aEI^ru$K7DGtZnID2F<0 zdbMi})hN-P9@y}CnU>e8or`sRynW+FL`wBTJNLWvvC|lmJ@x)%4I;Y;kbT}BIO+kls2tNJqtpAIDL!z)&bbcv_#(noRz?K$B0Q#L z@_i2zSlY6=qbJ}>NRKH!Mn_7bf}l)qH8@h57VsGB#Gb-y-mx}~fmGiqJw7b+u4h1c zG>x@K%bk)|}8mTMm=Zqe->3TRVMp%9T0L*sp zhW7I8H!hO5@=CdM+L>Mj6dvqF)2C%>&uF!Xj{prn#pZS2c%S&80LQ?DMU@-~@v>f( zV?54u`2JN{F!~nF{?I6{HRGYzT<7tZdb`bOWvNh3PY2%H^K$)hc=s4L^ zFw9p~o7~{VzoU{9&!%76VFFG| zea1_Ze>NX|u@B0;g$GQ7&K~f42zqwywb#y$$62BK?z?Y_`guoMlTb@p4{RvEHJ$O7 zgWL0P>&Drzdjx$3dVf}4;T9eU`YRn*n{ z^@xWHwkX?claIf=Ce zV#((dYMCW!r@$)HXrt>QcbV>#KQ&`A^u zABsNZvJ}`Z6h+?WHYMF;0yvkm0ie0T;MT@^sfeU0&vZb-{|SgL0igLJB7c`6%EUW? z%M`28>U!G(}(`-}fQ!+2GfQFzEYJ03Y5G z!pP}^x!*kfg+`NY$IGO*S!UM+t!c0X0H`19Gad_NZDG{ycw7Z}7eG6wSJl60A4lb= z{zU#w{ekye*I$4A?317TWZK2ccf5`0ck$!fJ#^pW(iLj&dCz-h?|tukXNMntcopSq z@j-o6WV@8#YI8jvXaSxW=RU8fQFG5Z98ONY1pbG2Tr{>-ke1 z;2eRNp5S^U>QU}W$}=JIjcEa>Xe7|0IYP`{`J=q8b}ZYz-;@#1cJ&OG=dCG4OZj^3 z(|6hj{Qs~2`mbl7$HHdb$2-{kd_Xh)Pfmh{f(nT*r;px+HADv>I)F*03M{3cIj!-| z|6Z65%Zi@p6NR^QJ`z}st~?mbm8LY=VODbK!Jwm+H2ebJ^8i%-8;){d#E-j`_k)3a zF&yR^Hqgjmpzze!r#zFNi^ z{?D6`_Ca)STY$jVVjB3n0LRB-7wh!^kBr3fsiow0d?$FjWfO>at5yta-{`_FR;_UUw_M1MLtrWwfdq}UIbK4p1rJk8=!I+`C*^m)5+fn z_-R7Vh}Qca=!?pjBBUz;Qp@C7ChZh@TOFi%$H3;4GCVC~{WXPl6{hI_m6pL1^iMqT z#5CQ)DH`rpGo{ywIYtF}|1NI?;K96H@>@9p2U41mJ<6}bU*iVGTL`7fC@KWwD`4*>}py@jTq(g@qq^b zBu)XS;Sn91VcK^mPS0mBRi^S zwIvw*O;Amq9uENb7HrhmPzO%Iz=B2bs2d)+vOBMH15bDi%mo1CJo4q60Fe*kJ@2IE zu{-yIhdjoJ^3U`<4u+dG?&L8tuo3Ix`(y&T+!hb~`I|S3aOd%E0GyWu2Okr#+rW}% z`+W`@EdKb9|2Q4!Y<_GRTNl}eDfWVCNXu_(4eCnedv)jIaV(7N?Y;Njv+Z%!+EzG^ zkD$*6`mE3RrF`r0Fap;R-D3fts2u;S2bzlAGu<-XFrLVV?b&p!X1_ApG9dRp>B1?SRGRgiW#pd^=f^s z|9yE=+T7|#?o_=O#{M{*rNxu#dH19mKwTR}gUFqdd%_7Ef=J&sT=<*MMynzjgK$<= zhKDjcK(auiffAOL9cAT!vy)5D#PL^ALdjR0J;9JvW>Zt?FW#-<0j_X_CxaKf^qz-P zb4TUAh<@134%!FR@iUo@LW85**77wCgV2@II6Y6Som;mdqN%(#o*KZ&ec>Il(r?kB z($~swHGIl%M}tmRt32`$j5`5LjspPW0)GNDu2Wf^tNd&l-OCS`BiszIc^2qC0lPG} z#StgARK4`MI0RcuXY#b*gan{j->BSGYyJe-sm!J_b02yzsY?usyi+Dc4@fsR7;*4L zPpI-RDH;u9M^j5Q558 z`2GM9!HbZFH;6nHK#m7O?*Ti&vj9m;IuzUFhW}Cza(!##Id}K+TjW=P?;wncFTdgq zIT(Px&uGc!iQVQKn7b zOq`8`34pk{fs3}&(Ji#u*>EQVlK(GlvJn;yK~7uN0GaW(d~Q^h90{GCI6jT)R8wp$ zLqX46djo+H8bbA0mpmG@^9e;c0oypnpJ$F%Z8jVL}m}5x%4*=J~?%Zqu2SyG2 ztiW8RE$OVJ(J5-ljSm@epj=EU-GGDz@I#>!QiWT>ulGft()(C%3uvqqSGS(7@gti8Gn8_6qM* z?!u_G@>qz9>{a4Zma7T~3SB0nrfv1kKYSXKEI62v3%aO{9M?9djZaPrChqLC)Yz7 z2`oA7tn!{BgQ5>6Bk3;R%qRZO>mj+^WDBfEBxqUaSLqXPV=Zmuw6%ZLG4uSu^*DQh zw)0MM{dm8%KuplTk&le>@vv$FPENb}JSq!(#|{HM%R{w+uj1=6i4 zUj|U&XAL;CSHLOofa>ze2FOR=6o4t9Y=Wr_Xe)VOd$VEHTRRNACYF-N{A&P10J;IO z3Scz5z1JHF`Gz2=0uwF^ZS2pv!WUbjj)`eda*t9i9H; z6>bESugqr!egpmXC4A36I>0B{5H8t-`=41whHxUMqu zX&v-E?-V`}cE(N!PbLnS^zA1ZuTnji~bpZKL>|KKYPzTXV+kv z%eB{CmjF?8U~|=->9kf5f9xY6vSjY3p%J+CE^2aSc6q^vx z$~==cceDh*#{`woTz2)BHRIK2Gq0j!q{wc9 zPzPM~QT|Z?r2xcYELmOtrh0RGG^%IDt*}xmDF(xwx$#K&o`8(C$wjmbyxCuCf242T zkX1m}4C&B$b1-3G61=QUOP^c+2~bw~GQO$|Yk%;6O=E){t4aqymQVE~i7UQbXUE$~ zwnPM;z^}^hcwE^Bja-`S35c}=$#>#?z5os{hx{LjK0F6Nf=3&1=>u=?F+JifHhlhJ zfNDkT=DoDcow)HJ7~Z$Ua8c-dy0=<2>RahUS%IAVl1c`)*)ZJ28BJs^pG z+q2ib?saK%$C01<)a=J-FF%F8C5|7ej!Hopl)KGA|FhT@fJ@#`!p#+oF7p0co}EWf zX28b!(bn7XIYHrD-}=^MvrYf`zVtcxOW?;&d2kfbq`Kd0hn5x5Rdg)#V+=dA@XZtq6k!fupSQ=xyM>5f zs{^e;ErNQ;bBaJH<0I!037qC>{Xd0)Q_6|bECZq<{zbfA7C=r(-{Yqj_^7;|vE(J> z=i=lR?w}8=@>tJ9{$CS!N+}(%gPeGgM_!zxloAnUj$cU*yZ8{xs zwgnguLRK5#9K|ybsMB^f{p~?))ppmBMHUPYTGYqt9T^QL5+!0)=y7x>zGg?yL$7)G z^_}4Bqp@h7fI>k!4?O-Nz#n<>T1<6uqk;`!Yyjc)r~vld_R`0L0928Y0_byp7Tf3g zJe8T{RR=Ydt?^*m%FK0ACwWF6uV_0hSH$!Aw#PFbHN0eIiJ_Y6dK0wBc5Upc`@e-bShbdo9-}9V5PSNsEXztp!&*Skwr=S^u?WU3iea39i9nD={TS(EI{qdtCRd(hU!TgK+R92UrH}|a6q$GSrRb5#n7sG&8OZc~xk@HaoSh^`7q@$yuFpeSS zUU|RicOC#}eJ!48nuuS^w%7MV)aGT%oI*G2pkd;=z7sLUd+DW@rmKqdB=?98uHV@M zhW`~XKHSAO_6er}ktuYlgAk@7HF7dMkS7-565wL>BxM!HT=j3RHvvHBylwi6@92`g z4QF!(A{#frVcA`yJb!FcJ+sf1VZbcWE726sBL!ZS!EEI5)6>e+;zqGw3PrC2N6AeY z+-za_&jMKClq&PQ0DyvP>@1pHoT`zWLr@Mf8ATZK1PXdEH8pdwwP#KYq>_vS!`*0bKSvmF8Q)e%K`O6dVnPM|NV6o~v zXi$0LJFa=#2SDv9(03jubHx=`q)l&}GQFP>G`6uLzod=Rvm0X*#b$`&aUIS7Ncw)KxsPuPXMRwS9$RuiSO+2YnJQFjzE?2Lj8ybG!cNF;-jMW zMf%(VP*EFIS6a5g>yz>|@^vvz@$S2J&IDuF7tk4M?Nb&vk!{T>nQbc7FwAo7bSF zDE0^+j2C5kK5*iN00meEB1Mjp99v?QFMDRXKY`eh7{tBjw%cZZpQCAvQok4= z=_8QcjR^uL^zV>l@jAAJz5t!H6I`ds&n-Md5c+a9zE8w6f<5x_C-}>q!Kdf@Zmk^M z$sIZKsP7pq`@|wWyA<#VUBz31De@_Mdf<1!!d zY$g2ZVXZ0cE~a920Ka7gXDoeBkXwygrqQkXedmmI?CPj9QmT~*L`3TtAYY~*d|F2P z4tvdOX5YW?!Ze-XKi(j3kH`TRl79fe&o*=P07W%@I#`!*4M|EDIoccvDaI(LD-k>X z7NQlDBss8%;GD7Z+ddLGE)CN2xQf5UnSFnSn*->y2z387M(S@syLt0LGLEj!>UVCV z2eZWq2`yo}#Q3T_l!#}m{7hHnkfi-ePca;s2O2$5I-_=Zn#$Cm@Fn#F0M%_gx&<=! zE-WEpq*;Q9cC#glkei4B)q!9G_xxud=KWH*2HUAJrGH+ewCU zR56vC`N4I6KL#kg3Q@r|xN{ZHxkLW1K__nov9)tP0<5-&pq=m6gAN{uyL&(V=}(WI z>o?}4BR>&=IR%fjkz5Y*UqAT4w9}ZoetEOU&(S_c^myzHr*OFrk4L6(&7MuKMzYtU zp$EQ{#+Hxi0bcKywXX)z?METiR#ekj&DUA`o$`ofV-vcLAjAD$`$>&H;C5Hw$@s4NA@ivL0;5d13Ef-A_ z1f(+xB`Tw|Sro;lTua&37y*}+!BQR#gg1e41vV_5bw^CVNHlNx{$~nIeBKmzH9Qoz|fN6>} z%eVq91x%rF&Ur$eRr#^99pP4I0o>AGp2r1v<#MT~Jlcgvu-Jz?Zh7`zT2GgOUui=$ z2s0X~`&mA%zfzmB>{WU$a$aptqKUxwi71mxLUsk9HeU1Uwzq+%%fWBk9P&iaUak9+ zwwpbA5HfW>B5t%ObKJYBBu(8()9R4^8z|9_*N{9`lQu z&(dli_1cl_O(5sm2R*Ph#jdnu&CAXdKOV`R^^N*As}mcg`~=yYWMx*XGd)A65NTz# z(vEd#OR!m?v*NDQJ&h708$(Nx$JVj12HpgScs8c~ zcMnx22v)9uBRTU=$=R67`D|(GrP9{=c zb>y36@Ky{SqRfNUAIwMP{2YIIgiVqO)03=cTCWYNOmFobY;&L`y@G@!Msq-40cJce z=lEqXP1)HTbiNczMfSn~i_0nQm!qH<-Q%Klrem~FWsi}y+i$;pcE%ZJB#`CT`i(i^ zmK%@KRC9hdp7&iXu+yVG@~K6hdUBfy^<{g& zWHkFWF4&I1j<@tx>*(>=@+-g9@3t^dRKAx5!y^%|D*cv5crZLBmz5s6K|+t7-}4QK zD(ZEVIt@>B)G1>P=?O{CDE9!^m@yv%SSu+z$}%9Ejyx@w{m>tD_=?1 zA+;9SCx@87H0HdaV^@rLH<8T^Udc<_Xh(y zN~7ShI9ZKam|>-n#dBWEb`hM=i2#1Tpd-SwT><(Sh20{jFJr}9mZxz2>nqus7+mcbuC8WQI+;F`Y zfgiu=pyu3;$3nEv>knzNHgO%=xrpR&2kPIOtYmPW`qBE*Kvd3Kz>f5{@-+b?rxP0S z9#}jFc4hD@{gh-ae|0cao*_Ti@jV~%%Cq}y1sr$T-h}?(z$UHT&EGOW%M2-lHPbDT zvC4*I8kAns#WFllxmA70Jm4!H3C=>`0@D^-0A<;jtF=}prDsND%YCndE!B< z@g?%JEdVs{`daf>;saa#(gJTSyc5ytd0)x4*ayu!)@E&c4@Zpg!uOeqCG6^4AX^Ob z2sly@>+C@0t4BTX(-NeyGJEf*)YlTSv3kdp*^F{jPSj~$XnICxrHaww$CS3P&eKmj zEq$kcxQ^w|u+D8i80vImMdPC~mgI2Wz~(gOf*cAcO!An^DBvQ4A0N5m@AQ>=OB7@1 z#QHv9Z3mnTucf*sAAZZUT=c&`M)&)p&7~OwvGtJ`=CG|i#~%ftDZBE{fP_5LHdn^W z_+XA#erule*q19jHK11UCiABPHe{L68@0*!ozs2yCEP_7L zOi;=*{@C9?2B`Q7uPnrufT;pl(sxP6DF^wh{aW$}?;@LQU@?`I<<`KMf@=kpCgU1; z)_&xUy6P@)E#Qt|I>)?)CM*fPPXnRbSL=LTv(r?yYFL%bL+zyRc7keOe zS$jA**&KB8AaAu>jPmh%IIgedC#~;O8N>g)#*J(2?!+O+gShvv1G6;#ulIM}k6L#>lW>lru8(LSRkm2WzgL0I)n z-}wmIK->UA4U9ROteur{vwXq?1-_n_Dx(YK7@sr$%oZfRqx>R!Mpy0+HA7ytXgNkM@D^ zP$Pzkce!8F|CTPxOyc#tg9~sp@TP;8Bp+^2Vb6S&whSh~=d~cO{{phh-N{T(@J%qa z38t{u$WgRXcBZAYE!S7A~6ybdxQByT4NAPd1cpKg{q<=oyJP*I?Wn%X@P-|Euw7q8$ zV_Rj7(G&@8B!CejS4D3rfCtkpf%Qhm3&9jY?PnjB7SEYio6;C%HT8~d-Wh>~n zeluM!PSN_F^yE6czA`O0PVo#y9mLQk?S&{ikBi!k*XiXCY3Ee0-Nnp^-#OUmaWe+6 zYF8qkHJF#&7ovL}1Vwh$gCWx!)iqzg@uBcX0JXl00FgfPZ|$J(%g$@B6L?5L@+n{(5`q%WToBZT8@=vVk%Xiuk1TSUF?QR8~Dt zwA~f(^Obu>N5I7tL({4-_kdlbEG+?D*1(T}pq65^>hX%M9oVByJ0eP_O5%AK@xS$~ zC+J?$r}EOu{5du(Tyxb`v(vFKnmc-@e0bf`W*B|%hsYQA3NB0!%4k2LPr*f{V8N)U z+%=mEO3uU_Yc|});Ekv?Eli3j(77rf+7&7a|20nD!NrpVo+kw(|L@(em&*LNlc1Dtj& zvS_>-gf1jA@z(e*gX$>Kr|Sk&kxs5d@MV4CJ#K9=#0_=E!auJ>H2bXi_d8@SP zyQoim*)19HWm>-_;O7N8Dx}w_R;RV{j4?}vYOIX0_ntP-MBo0g&TEy|1F>T?M(UlB2FM73U}}5*8t|$3 zEKwb6b7cc%fZzw`k^ESi3S?Qoh?Dk%UxFwCJ?7)|I@k4aDFXp{S~n*^zv^ex4H+aA znG-$KXK5Ztc0B8PP3wn9oT<`M}0Q1|hM8oTp z($E4QszXs4E7ST=e@E?8I>*3O#G_HZ<^HMqEbFTBIRZ)AR!dv#Y3?iit!?qL8kObw z;rrcaR*d5L8Oe&KQMxO6a`LS7`E*gA7CrL=U^n2=bP<^J<+NllYExw=oc{Fql>GNH zU?y@5%J{CfO?c@WG9k;uPBMnNWSR}!mS$B)IzoUMOdAE*)L`EZ}Zpn?bTeiQuUhsy$XN0fLU0O+*2 zgAW^JOqIn)Ivr`|@h*P>U~ybNi!k+P=AlOC7NWw&Xa3EE7l)lAK2;wGZwyFPav`#q z%E<$cfvpl@#BXlC;?j)QVV&QOE@D<~-Vw)E0Ifu$O4*L_N|#N6CmL*El4(*|UC6^U zkdaft-y5Na9CVcr%DEK4@2ecB;`=0kKd$YI1`rqG;Q0@K_`}W39ZGsdgY-$#9nnpr z+tPa=<)7dV!g05vu;ghD}(Ff<8bI$C_AN-(9d+HGi5q%p1{BW(! zi?QB~XPUJlH@#>@5#&KqOC%u4Bp+p?TSc-o+Qc*#NihR0Q3W&FR$gkeL|&5ermAHp zF8;p&j)faJxP#Lcyz}qIjQFA53vF^V`KX^70Cn8zRP4FYWOW#iDyLy>^`m@iyYQ~? zz<4Rq7NteoC%=(J^>-Jo$)SyqAEd+#Sm((;r}cMuM|EReG2~Q+Z~9Ou@S}%y_A?sXA6g(z3qz zzSiGXG->7(>DvMPxN*WhJe-<`Ia?ktZwt!|ydF}%OfFpqr9O6T^Y&^%zR6q24A<52 z9cLiYUp(hPjGI%q&hO*6O@%WKeklmc|0VK1fXz7REK&iF>U@n3t6%BRK8X0@Wj6v5 zk)w}fzLl=aCvSJMEweT#*kCzEp9gjx14KOVeDZWz`Nk)&qdlH0Zx#G_o?Cyk+GllY zdwd>kN2Q;cKh_S%cn{Sg54={%04#@>g>JiwXdf{Q+U@)Go@ZtQvQFw=I5OH z`T~H;sfhI5glGd7i?d$dEWii}Z$Ho}tHjGpw?_IZ*^r1_nND?`sL?+wQ~N0zZ1_B; zuQpv)0JKDJlt+b^xee7+yaDmtHqSq!Et+cQGw#{t6#1v`zI%2d58>r`ec%JZ#zt5t z$=^5SoxOGo%)^!aM>;>xl;io1SD_szLtc&nz_^ba3^F0U&lLRVGKG{p%Wma#lM2jp zmH%=C&H6i~iPB{{G^$PD#DN;u$ngde+ev*o)?eO<=zUsGXCE0vMFY5$Owv@q)aiZE zdH38Lvz3*6RWA2t05`5XT~=pGA)B6U#165`remq<+aM_mF3GFqdW57=JyxmP-VrnwO39=lRazsLY3br zP4vvuFr{oyTVxBg++MwvUYQPMo@u@@Jf!lZeGuiV^gNJ1>r0=m$J2C<-x$HI_g*-A z!a9YSV}dfbIkl;o0%)eB@ib1!)1oO7F5kYWe4}Amf$r6(_4WX%FN4uOUd?v)*=G;0 z0-)yeYyzioFh<+2=IQ#jvrZxxReEt!)pG@l79q+B${HvK(kjqGQk7nDKuO{9xBM?r zy;P0<&a`mB`?Xl_bOIds6^J%)Dw~Hj^D=uL-SSL;76X|@sU6Q!e+S@FWyqqLMw`*2 zztx#1ewg72gdjPE+$M`Q8V?IEl|S}>E=vJL;ahG;$*=WF-=$rd=B(#JIJ+Ou2%f)* zFE-2wjuAo16#-#7L|y5{|2)=(XZfA>-S4JBtp_3M7b8EH_@#Z~ej6C`_Ez&*8t=G$ z*%7c)KjD2w-i$OIOuhTOgYF)l;O{0AAjTq&XrX?uL042{%-=HyJ)c3w& zQQj$OJpEJhc-~Aw`d(O7aK?D(X_{JJkDsk~M;&$4?6@y{A)VXD5AVaQM*Ys1^5@Gi zz584k;Z60H4vD~3{Wb`}V)YW8Gmul{BOq3zX@$2m2(I43yX@pFZQ10Y3a)7wMZmkG zF*SKJoHxOVMMHK%TMxjr_KpC&hHv23gq)a`SI- zIsF5WvAYn>AuV^AIx2TeHySO^&iu}eDf7c35XnC#wtxYW--}-Cm6)gI+kxWE*Cjx^JAH2=7d@Wg2*|Id{%C=VK7NeG_ ztffFxI>8ei%li z$?3SSMFfGv&B-(semEM7VhaciBWYH)^3nlE zi@Ye1Ei|PrSe&XWeUr(d~t&R3Or}cuv!+?(m;QKe&8U7ta`+klD z>p)gs3Fmwy_{iP7H^X7`>^Rn8gN!LMJ4r|%!9->s=W6il*#!VjJlHwXQ3d3cY-XNU zd9sWp2VjGY4BY$x$)a%lTSdXGT$87)15C3H^qAKTz6f${pF2VKk6D+~6_wS>@rn#A z$a655ut?s*pv1|&$spJ6@#q$QIDp{V+k-K9*p};TdCn-loLYYcmYW;``64LfhgZ7M zR;7H%bMi?irGYJ@e%egct+RvIs=nr`T_MNWA?GkLLrK|?2W za1`;y%eT=K@yg1I@@PH<#8Eke*v|p+So?Z3P3>P_r~Yp7+XMSzFCDKH!1ek!0*Ss) zl*cXEG1^&Ixw5U*(LI3DtE?eUqmNtl8PToxE$7gC-m7a$2UmtJ7@hPwAYz0nW+ZSu zA#9cBpO3Yf>ABeX_~VaHyLoxJdF#Wno|FwK*Vk}l&4W|9GqV6a9oY|>Sk^4*6yyS( zX53sf$#_)qE;ew!_HSU=V&qTq6oAS4tWIW|Yu4;KMEQ7LAEOA2STRDiFP!50v5S{S z)~qR!n$XE*gR7B`#0uq2j+hv5OvWPf%ba%g+YGo%lVnl>m_=d|EAsVJnJ?Bv1J{M8 ztUCj41td1j7nNf)+WCovj?7o){VH~19s}^q1Fs3FnTC;JI`Osf_k1|tE4knvz|R)! z|2Bd?6-m`M?p*#7zUKpQ0DM4$zf_TKiD;F);-u3v0p~vsu zPR9e*F9FSr{_O&r^g`&X(Z{xNEi!L~;s3utFsI+b_@VieDeLA z+ov+5z#%Fl0u2$^@XuP{%GX`l3G2%Y9MxxezFB=Ou<4)M?-rkwuA!Uj*&^RQ1y+L! z%@5*k{kC$W{9|%eI87CA=XZ4rESsegJ8wINC>^-q!D^&wkBC+}N>tK1RYn#`Rfx zIPC%-sC@b1`f%K@#Jau>004PlbM?`vUZAX%>`7V$9Sg=%M}AQQqY<$;76x!~ev6(I z{-O@vBtf9^4e;crNYCq`Hb7K?Q%eWInees_?uJ}&hPfU3yf|8;BZD-Z?yF5%N?5Ns z6oXq$_c|KbhN`R#91J`ro)3(#*N+)+%uG-Ks&ZG!dQ^9g3=t@EedNgieP06TI}=le zcRT~*RYU>p#)}0$Ocm5mRjlC5=V?01O_N*zf?RNqVw91nTl_ATf$9!#Bf_c|JiT)46qfSa~Y^s_`G zUA-!+gQ!OFK*$%KQ>M7)&t#gLXwC*0B z-E!mk=g%I3v+jLpn7NLL&V!K~9$uV|P;r^6=}!}Qi4-Ir&xx9^Q_J!bZYoj5aY~f< zPr0)?TwR4cb6}P~gDj)}SNP2{`*^Fw`QQubV03SLIFe@~iokQvQY6MHY>`KCkfncw zHz}PuG*NhSuE}vr`yxP;^kNXy0t^=9AlIc4(1qw^tFs*#Ol2$Z769vkF4seHhvomm zZ3&Ecaf3r@GvwyEaK>-I`G=e;{|Nv#qhZ`YU;t*!X8bn3|31LTcc53?)%?p0j+5=l zjnU|w>a-3HRDO%Cu>pa1D5j4hTWT-UJ?z-zzT`m9Ct6Pa215<;V4!x;>&-*s(qh7tsyz^g(x^U9|5Sc3-{rWE z_s>4~!P)oVoVWv#M&H)N_;T&aq>T^(+Zl$HYx``SnW}VEzd3-`Up0(kh!>27f~xt; zip175m@4GLAcFPhQtpG(I0hR!zK$pjKfi!8c{SDxy$kCY--f>-ARP)Xba;nu?^3Wu~u^rD!D^0(AyjxZQmR!njrE{x`6fKu^Fjc6`V-y7J!5svl0BXWE^qJ6yP zjvr35Z3yuE?>E^bttBIv;Kl*&n&xy}i4-YV7*oo}*n9Q~^~N><8F{~81R1*ZKe40q zcKlE9r;)8Hf+uZ?9ImeAG@g0+Fi=&B3V3SuE4bwPIWB2nJ09efgy-}nIkojIJKU>tY8{$x4A2ZFYCd4K-6?Oq5Fm&83S~h zwpX^6(*i|SR+M(k4|=?zw6}se5$I|KhNAL)|1S6=r&|#QT1j7x-Mm#gPK6^9#$`ZX z8Jz`AX-dae4ra`;bu?#;$*rtoqXe&nQ8}h$UPvNA>M8$JNT5Te@nUm94^?APKS`kKZl*#2()g6BV9Jcm$cmlz7L!A%BAcGc) z=~E;f^-?Y`$3`}u=Xd3mS5~#GF8Q;*YLz#&9uNMPl~J$1WBFTlbPRwkTdt+|fYtlL zG2k@C7gqLgB6iSv?f)K5@$D%3B4AtlvIP_)+Z4%)r)dg48NInf9b07FwA02q+^6j^ zFDk3Y^ktQ*1yrMQd@j+*6I#kOg*RhPt0hpae!3OAEib#|lG*jRz}zAg@v546 z35;qy9ZrJlwREjp5q=*H&%Cq7_sWEM>-%3}(w&TH^4Wtyotde`{K z5O5t6cb$Hf8#>@L===y)-ib&b*9)zkopOq@h%)=K(z~2SqZ|r4RF=w=o3ta6Q!7`U zV^vOe_?7JO8R^OV^E50tl}tlvBioTH)OIT^X$lu#MzOvC-hBd*zOUdffis;gK_5Z$ zpMZ}q!QZt3`gjQMH2{7*pCAfRG9K$yhtcPT_Kc*-jWtP)8}}1m0Kkpk~m_B^m^>TiHSDD1bJOa>=VGxvQ6lI@>3* z@y2`Am6rWpMg}85({k{>+%X?8bnRdVeVGbSdZ1~+Hn8ty(CW)>`AehS^U-KbGUa5r zZ(kw9v>y$){G&pcywdp@ta{r1_lxT#|m)?@i~ zH?4Yj))&vtO1DWvxDndNXdkC}pT?blN*`%zfZL?FnGSWX3ksdfh^G8h z(G$6I>pADP)vxvW{+Bwme$}6aX+kN_+LHK~fu*(0c*-arf!sM*4|z1Eb{WOH1pjkQ z6;FhFHk|Td;33!b@z@PQ3U21${i-|^drV%(bnVf2uY6gie)5Xv6@CMNmpfALvt6a+ zul2Jy*Hkut>p;jm$t-I{L;`|TA5`wOY}U`IUV=VG@vUFjk365SELX@h>GFa~UbCDO z+Sx9Bru4bzp05jf>)J*d7(Lz-GRD&dYA2LK{qqF||R`oKXC6sF3Pw-HvB=2y_6bhl_?UTdq@OHZdSyU3r| zeJvyM+0lFN!xX@d`D1;rpsi7lq|~Q%Z&0zG)MU&VQzIsq@+q;FJB}OQ`!;n%J{5h_5^FJ9&a!n zgpvFS9JSrWYsVe*4A2f3L2m(rx+Wt78Z}U-BqRS)R(@7ZaScpeyyDFRE3Id4WlBB+ zt)5Q{ec{Ssl;8&#^?x3K<)c`G#UmjYHP{-C;&1>Kf?NZARap+$rhdwFRq0xzS zU&~pLCc{i>dg`b7{nTz0B{ZkJFum{D7U`YPnp9Kz+6GptuZ0IP5HUNcw0k;Ju?lDd zJ5qd1r@MKK6pvZrF7Y*TdE_gBA6J($a=#yzrECnF#p8si+osPKe*gQk(@#IW$Y9H- zMWDw>Y5}(e9hQiU^>5+RNW{wnnj#yGe38%4I+ga?EX+4V*z+EM^0szNA0m7(2A&kW z__Ptw^KJ9~ZYl;?G=FXusv(n+pZ2_L0bY{_{p+83FgLY-SWdaiCL$ne@EF5AF%d%U z=x!Nh^n|k~RMESsG(^Zb5{{O#sPc}{IA#nY9!2f&21?7F((Z~*L}_r3QLlT-J4S1s zfsyrJZMtb1VRPEfZ))gGLq+`?EfP--Mxp`5knwr)7sGT?S<94-YI>fHp*I+sM?o5+ zE?jdzC_e<=eS>n8KfEV(Jq!%a*?H#~kNmNn z(5Y&Cc{LlOe*X|Yj6(5{YJPYG3GbNwC4QfTDPKm|{t8o+e3m{0!mclkXT$4xe6~ag zBPN>cn0z?7vA)-=scfX@eZvG(Ru>0C>?ze5TY6FHdd^?U7I|vvqAlMTL~>r5*SExz zNRE+@n}j&!%j2YIj~)cj;}J{`VQ2C0=ZeajzTO^OZpR4&f5;w;DDZ;vJnuzEY`hToD zh@RmXYiBEOj~71ASpBWCuK)ViXJ7gJ=VvFJamFMT(?J~oFtiz*Rl3vDMQn81a#?v; zh&lz1pdwO0k2*(7Q;jZdv@M`8t-HeS&j7G|7f$%+a1{J-I_RGuLiJi4Q^RQ_ozhB% zC|96huJG3!vpDjUT*0U_!lg}2qx`h?iL*CdP4(G#u#R>AS$pN_!nB!299{n6cys;* z$Aj|8J5KHX4}iW?!9QCc%Dg)QIKL0OcNy`cL$3M)zd7;W| z+d{=SCX#gAE!P1?2x+-}fVIM7r_D8y93$>1p{# zeePv^Q2XKN5TDKilqk)h*0o;yI($B#$AE{Hqcka~@j9-3>*?1rlm_dUh;9#{JP#D4 zM&(qtFZ0Ipqa{yKJ6pVq`o@5B1Ok2gJ=pSeTUo9C^>XKVsreMpN3x-5`91+Z-_a(h zkui=MW9fPbH6mKe_wUC5jHhj^{3+>sz^ljfsZJ|02tMz_ZTA=-eEF9C99+%zy(_Mm z-3;erA0FY*I>4E`TzM}qcgxxG?*;cA0G6tL4^k+LgFsf1HFHQ76|hLc!kV<4U!VK5 z<}4Nb&=H>lhsI-D=-Bv<)4Fe7fBo6Z(Z(I&00~ga8HL%1>u&>Gsa(G2H#4$Ki^=cQ zCeb}jYY|L~2x{3H0ZGd4>PrU6o@JUV$E!5u`YliD8%MXFa@IbkGvyI2yvpu4e0iTM zr+WF}nopk7_d4wM=CxS_ec9Ng_sV~3yFdD5s$M;s>8u~8&_G>F%P6v5rNe~rCD^+S zeB*`~UOmP$^K^ia`iFh(fRvADD-9L6x4}jd&0$bseNgR)H@(a6*M)BH5BcYE4n`!o zzK{1T-^80PvaFas`^cQP1qpa$xg1n{h$?EjqMI^U(Wqgm3wa6V48WP(aFY1?&l%GUQ&>hruYJy1SXx*-Ei zOQZeJqFedm+n{yY|6}}BU+sBrzpWnM76Xy~x&5|${;$1Hwm9l&Wt2yrUVuH)ZKYR+ z_%sm>Q8`LiF(9rDO3#!sd`D@y%6MP*vcJ8eOyT`lnx4Q+rSF$;-e+T^djp&|oshNP z)?KM`@Ew63chK#Jh0@&NTB1x6rATFD0-Et0jr25}S^`4QI!rTb{!e(Mfz%D?XNyd#+$VaiybNsYeR^l|Y_ckCDt6idDr;+cZ#s-Lj6fE! znJak!z?5`xv)Qg0*m3HYS1w-2Yx2+rwu85LJP%*aR4_e(BW>W_nC`ta-%alAsycdg z%3}lV$hm9&mh48pLi>B6@72C#d9bo08e5=bsxGzKt-wR;_h8QGZ}~5!!-Jrx?jDBm zpib+K`p2GmT%+yL`l7z_G)C=NgJ7S8@*Gdz0gc++y zD5DNHdVIbyx>{`;Q%-$9W(dZVaccfnIb(h1+rsDr4=-JH)m5_xWNlVuu=5XFn9hS; zd0;c6VsdidkSZJeGE&daMh%J^g_ZUVT3SU5(jzIiIDqU(isA}A3kHd4Vfb%?!RJ|X z{|kq>+Gd2c06=yF;Cm+8_%wnM1wcm2oI&&Gg|$J9aH1tUJ#&oa0Hf(#GfK*TUE^3i z513k_eVGPzsEG%TcLhY`cM3++JKq-837&8h%-_OMz70nJod&SN8#mHU$^898Y~Rl7Oj{E&z|T40zb}ApzYJ06XJBx`sd}#E^)nmZ4!3}qlHBq| zEdZfqTAEfFTF(^F=KW|77^%(i0Kx-a({B$X#z0IY!#+<0mV7>=Cu&bb`&=vsNgDHy zE$pCRP|KN%a6SJt#&0WQDqvfNf2}rX8Rf2C-!LZX3E{G+yJfum^C=9A%4$7Z21t$7 zJ*BLbD1ZuQ59LP!_i*@k51jT{pZnbG&^`B@eeJv7o!yR&4UwXGnn^vBz^h&fLTabARoC8u|SEl1~YMWY9#~bQK#2+@lBm9+o8fa76BIhn;Dqt>s z-~lvF??^*yN_kag~iA@Io4FK>50LBD4iFdAf#kh|}dYo() z;GfG&za{ck`bo;&f}3(c2mAPbfb??_ndC+&M$003EIQVc)!?0#)s+EfLzvdU-v7PP zMzcM^!)-t>2Ob~TYOC3nh*;hXJ^wzyDhGCHdKf(6MkAj2#}Ch!ZladL8*iZx8i%%P)@k7C$g;)vHduC-GwdGV)U`|2D>h79A~+#k!~9hlob+AE)?a zqb~xMk-ydUw)i;3&uf~fo-vsq-M#jC{`RngPh0Nl?GZ7h^05x+F})|i%a-ezHHEoT z>tCtRO%d{`ZflCbO)cw3I7Z`=TW_6Rj_*%l92xy<@ry>8hMx}L8329iWScr zN}bZ=Z%Cg2g6e$+Fa7{5?2-PSM(OfIT1&Z^yyR?*(Yy9S(IJ@Um>$aQ(#H zm)yyE5z63(f#1fXT&C*SlyvNm6iv@-`|f~jo&<3Hf52xRN5WWOS~KcE9)Ft?wW)ra zs;^`#_jjR1%gJRZofYuH`&VKo?B)PaJi3POC<_aNv#f8G4&-_~*i5qlLA^>}Xe$~( zllcgod5AohWl-+cf&M;^H^bmBLF%pGBW2CjN^XOQ;lWtHm?F(6*A8;#d4AmF!Kq*4 zZ{cNbk8h&~3Q<1|T~0)~5&!@o07*naRFET^PWSk{<>x#|YNhSbq;=OOtln@kn5?;+ zsV`{pA_8#{jZs-Gn!OKFzFAw!;KC2Oh0l@hHT|0(;AUPJPkjGX`r`W4x7G5hzFK|{ z4x_v+e)NEz?{n)X<7GO|MLRXBBl*aSW3!JC1 zRfbo}NN}TP)|tf#1j-QQdkBE%PJlliQtXXel|F+4nk_njXYzD>{MBhdFTj;zh!RER zMoN%)Ixu#aKFo>CiD)Fyq862$4xKlzPJj(tdkTQZiEysp&u7Rn?G^yEyP|E+Leu~! z%~gjbCub#5v?wB0_~D&e2DP5%DjFzltmq~kuKlS|*+8d0=TE1{t*D7TSDspVgeNgy-!Y$%Ag;6uCZ+az}?rp7C&NUfs7lc*jiv#*4zYOe3caxsl=1m?ma9wu3q{ zic{tPcOf15#A!$JfxwDax$zj1jR8>pDWazwh@_)%^2gh3lYzwdoKB;0l?;u@j-M`m z7W$XVJM5;5;;?f)MoZ7eD=lTJ*YreXKkHd&BO7*&8zi_g*6evZW&ii8zFraC~KU5re*iuY3KPo9-NN7kAyx_5^vOu znabcPKyDeqG(LHr`+iXY83Vl$Uzumh+A11KTLZHz3@0Nx<-DC-$lPVjdRe*fp=u*_o$(=o0uoo?W zfc$!BxdBX#(kc)sa+PH#irf{N9FSG}wosy?#6P9ERflh{_v2PiB#W)`HBYO2%WL&{eAENt+IB4` z;*+!SWtnb)YF?;}fBbOL2_%JE;^aKr4=`Cw}+pHY>K;5?78+c;!B zpB_Kbk}q3SPkN$7`D1eVyZYXC{E{yZKt}%@YtMK-B7t&|E7y2EKFD6BzMTIkIV$^M za^`@e>K82pBeSKCP%e-0Nl{uzLEdpZ^dZQ^tNT|7MQEf zD*(1(XNVE0B4~6TE<*vIffFq{+{jZRjRxBBm*?|+6CjyWkLLJ)g~0;PLOT#^q+Ww5 zUS8S9bNcjS(|Ie=p?}O%bASgte*@80ZbKvmz?)KbNy|I=>|-rS%f*|@=oR0EMz zj+0B>NzMsRM$NdBb`^C0ZhXHAAo>*0vm38J%k>tSH`&Y0@Vn9zodl&az^iu7=X{}k z;5(i~z=N~1oN`Uy#(63_m1}%Jx`QC27a+2K9wOC0&4+FK4KuvH?eFETZ$+R}pS5s{e?Im*yt2(R zMGNu9#Utq+kv+v2%a@Fn7^f-1)e_QHIjW>%o!4uN@voJp)fOEEv;?3B`lisN#^M10 zp!=@BzNLfJb4DR}`~kmQA7j(IA)mzIEYOsr1Z4y-(X_EqN+Kwa$_sIUb4ztv+WeQ% ziOT_AP6UYIR4+jcBLU9_faT)#ZF%g7M64UcvfVy&)#%r%P%A4#w5#|*8F?+d~IDB>NJ721T{ zFYNPbAYr=X1~HTiuJPmTH9X#(Q8OOJlQv73uI0)r+nVK~Ouq`4sIFm5YCS~TbnU8w zTLX)%`#u1sv#?9|-h6}*2c`s}c0hR10i-1$BEeuDSNw zQYW9U3mrQXVDS9&&YN8bV0Z>@R@xcYAMUl+UTF;?r>5^jM4ow{4S={2W-ZpiTH7a} zeLo?OVB@)4o**-Q@ju^_w|0;?!6N@pyPG+igWnH8=eNSHXqLA&Y^1e4@=@Au<&Dat zwm;%iPj(e^^ng(d?6iF582IXeT#pqZx_tXv^^Mtp2n-t!J@0*4o+n0U0e-#8eWSFp z9=P%hk3hndXAw{v14br*q%Q(=$~fQlUMH$Tx0vdUh5haUGkX{DqlezTQuGW{X(yEb zK1?6oi$j}#9-Q452@ehOi(!Ng!bo!$fTV6jM}S7+vp4{CHU^x``S=mOI=9k?+34yN zmO2)()a73Snag0zPX*}XnRBFpYa4kMAvYxOOfQ|@)%F+Kvr{yhilfSjOFt+Gw8%pM z?3Cuxeg&}#)&{FvoK2Aj2k3O#wxqFWj6_*HpNpQN8t&ZXO$S{6$SdsVVABE1xebhv zz5<}{a7^#+4gRH_sM#S_vYXR;P)oqgLxBGweC%Aq1ZKEK&*Wi=#*?Q6B-f%(ehvBM zu2pVIpyB58o(+m@NwSLq>?&Ev@?_CN%gyHSPcS)_HblnM! zoY?R)CJZBiEDssp z9!?>($9=5r>909OsiW{&0o$NqgAQclW6r3WX3LS1DTXMFj!64eMq81fo=oUeACD2? z)nUA|nD?R5Ihq5f4D1h{y&gQ{CZ7@^HBhYJl=L~iupWYlyYgYhEgSHU&jSvCm$yKU zzl^?lHyk?wxDLKdMi=a-(}{&?-MR6e4=hC9DZ@9Szj*Y{O%eg)Zul>O79N*!1lHF* z&YcWU4fwo2$aPk2omKIMA9Ob7Wz07#(sna_M?K}ZPx2qFpk2p9?Ue*Q3YjR0{|Of?ha-3zJS08rR?1e9QL84*IA1&B$>q{RXaCXE8L$sVR9~XhD$gYgx4K1hF?_;3fw`Hz& z^?+V!Y{`?Q@pvNY3!m27^MnXhT7lZoF=Xo*-D2n%qkUt?(m&Rm#F#)vou_30yE3-54cghqLZ?E9mA|8#9g8uouF;7!9igz!Y{TP6?5>*qUQu5PS zNFo*e@Rbw00S4&NJ?leA@^qBNzV#35?g_@B|KUvrw7Q7YIb+NY;#`?YSA!)qni%Yf=G@R0W* zbNBw9pnYqALatF|lv{z{Nhh5&+jiS+XU}@pv$~O54+eV9m~DCp{QHYP|MS_2-}pv4 zDB3=JM_#Bs9<$|LCId1t>H@fJYdVtrR2-+t4Kyx zt}1G%Wl6{SDPxZI=`=5evE{}0G^}(2`(ujaMfj%899kz0Q!cMW=hTU?Ua7kbkg{V^ zT}j1=^RnLtvUCJkoU&7d!Uv%-<;#XL)o1jYW6!^PAiU(^6c5sK+U^rr3-o1tdB$G4 zks+7IbI#s~2p@qz*LOZifQ-@YL8zAl1?`Nsj_)JyS%lT|j(ta9%TLe zE5+Mn?(F5E zFYxLa0D3$khtt1L%0Q4CL$*V^F3&rElWyUA6YS$E+)U#E#n7CA-{$=Nvtkz{9n&y^ z$TfVIWAn%za$8VKBDC+l94seAD^IO$G#a>(gww>wAAkJp5=1UH+kErcjsSmeed}9i zTWqlfZgfO6+GIig_IO$3*W}R2gyIVi$|_k2@@fAlC)7{+zSR0!xJTQl_FVNz+vVlN z-bFs#*Qqk6ZSZ*`zWd&18p!?JXtY3wXOJ)4H*^dn` zV`a74KxO5E<;$R~_aO?#o~Hq~gIQa=c0Mt;9^`@D$xyEG6{pGG*PSrB< z_uKj*rx;nh?z-z{H)E3ucNlMV$t8(b&wJkUQk0atkqH2mr(;+{f#I?~+NX~&ivmW^ z`v_?HzMPxk`utH}Rs_;p0IlcCqjyTv)HX-FEK|KvqoNE`K%X+A)v)M!)G?6)c>(cd zX*tTMo?x};@%6Vru;-sQ7@iJG@5|?NFNF3iYG+G0eIM{QM{2ji=-kgMiD39_>V=DY z?KlH3#8h2^fX%pW#0)xVoHw8tcAYM*+AD=t(I5u|Rbh1MsMX)v&m|3=0>0OvtzW~G z*e5YnVQZ5Zx!4SV?_fmx(k-0=P)gkas8jHn`XW0B1H9Hh>I6a^$j;HqP^0L9oKEo; zFfDagbqVNJ9xgat<2U}^k38qXx$&3~uIJ-@rd%JysKlCh&uP4W1>?;_nHf#kh`8CAqon2-*EhO@f{UxM;S^HV@n2B7J;M7bVK+FErNdx8W%0sl?`Q0JPzdqFoh z+3?7fvXRDvFq79T^O2ky4@!hE59W*>M#%V0K#w2>ykoSDJ!ug+uk(JOrh2R(FGa?M zMh~WnsmZ!sZW;m|+}OeOj@7_Q20F!GAuk8Hq~ZGj&bz{%y#O-42J+tkKHfunD8Tgb zoDJYqI(eDFV5HNLPiff!0>3k{E0=5hepf!+C43KL@m{Q-CJ;R6po3;_d)wP)`|Y=1 z+C6OR4Yj@M^CJJ%^VyY;aA3W%eImaRKr)-{^XPNt^L=T*L*HWq9I3lUQ>72oBd2rf zAMAfGgGR4C_jE-*hH0vZUsOmBRThObXBj9+1Ri}oT8=U*5*E!HfzYUIpDv=QC4jz- zEtjuse<=;V5h&tg&Vby&+q;AeMlT9hXe(hUHV_JZ?2G@l=q z$~7lxQ7s4HN<`2_y~d1P)Gw)hIpcz3kw}K}<~A7eFJTe)r?8gn762Mvz|J;u;r$f{`V5_ zv*jDSzD0n*+mCq{%ny3z5iKpBxVmKIkuJx0!Q*2%{mY2v0sHSi+aKROaqJAQzvCH$ zZ2KT;d09cje@q3_y}nWaWc-MHyzf^{Yqa|OK8-IoqCcWXd7*W+FqeO>7{k*PwM*$- zI^x$8DkUr$B~1~?F{N0x+*bN!%ZX@@%4i9f&)*Z;DST?B8LQs}kn3YOUBdKFh7;tP znX=GY3g-^Ew_`hh6%p}3Z*Jj=Gw|!Y)CiWgXJ_Nz6|k4VPPP{HS|H2o$^e3yodN@N z4!+#6%nu#>K4=H;lRX??oyJNDvePJl)kS|QBOid8%E{*Pym2$fs#8!ExD$g|*zen> z11qIb`$Iu$YFdtFfiDDHXCd0~w*bUE+J@&DCWC`7qc`LYcW6ErQ-@stSnYIHke3N8 zhKKbS9|sFI2dOzN*NAalC2vr;5PkD#e%LpRZ0^46uCpfsklq3Cbn|0$!-=g!v@6m) zX!;TQkh`!6ei)s%$XV%+KsJgKQu#2swy1^4V@|{SmpO2<59#96KTpF;G}%B(24kjM z9)#+;Lj|0bo*VeI3Uj$!vcZU*wSjbT*@i{my=}2*BzN%cjC2>}b}<6YYw-Bl8}d%Q zxD>#TEu>xK?8qHh<99udP~k4tL9FYI34_Sjmd-nP^$|QH@6B(1bGi%o4tERAqp1(8 zqizM{_g4{0y$XTNg_a*2Siy^K(a4tArSAYVfm4d()!^hgbY+IJ? z^j7_xYT&3$!C#8@(Wv2@&K=ADv(7bPR5t+t;OIE@F%6w3#zyOdR4s03m`nXaGxUr% zulQD%U!1;BKOI&!$b>PB@bTD|E8)-yX4odKPka>=pHsZtnQT)_1@N(L5^bE z(PYnc9bRc>F2{o+Pj@&-vJr4Dtk7hU73HrzlRi;pS9*9TE!Ts68%FX3PVIs}jGT}U zoc`VhJmFb}1P{9*s>1`ihaR8zcWIBcPkPh9WdX>J2TaN-IiBD5SUAIvpoPm9{_v0f zD4pr{Bk<%R++y>!uYD~!WP(C|Z0#%i&Kyqyjc#DDAlR$%fz?$-pEGTwi<_2sHYKOf zc|BPIXVgiNrDDfTzeUfJzDu8~9@snHbn#@=!#?E32m{UpNYuGRo0aK6f92do$4q9d zz6BbEhn9v*1h^6DGOoSL@7b4jZ@AZ2Cb4t`h%bSBAIoJfcz!d0-KnsJ2V=0q0g+yZ z$9z1%`C3d}UV^o2yuCw#hxZ*uss|?nTL!AwK1P+d-e#NGQ!q7eXXo)X3CbA2YUPW{o&uPrf~{Uzp5`g-H02$maqRuna+GhY0}%fVM(!>s;N_QJUK|_C z)jLvYfXvzP-6r{{gY~&cmj-<HN3DXmFIzqZ$t7u2dNPXTdm>4IM&TB0-{SWxWxd9Gj89NofUWF7P7* zvvN#O?K%C~&>+wxh|Ew@*v=)A!p-HeXhi7#(h;0712c_eS{0B`u7XRz%G z1Nma`=FN!o@oY0Y7`Uak%BRwmsjKrDYMBQHsttfJAJ0(aLi$JhvliOCBd+K>3=xR+ z5gB+8U}8@=c>+F0V{V0>aDY^RAKGMxF_UlU`v^JdCCm%n0RDIw^PO0F!%w;rQwPwGwt`Hoe~J!pw&fR)%?mEL zAVug1;GT_Z=Lp8O-g@g9`N0p@1Fp&I|IkklA@a(!4+7LN;`&1@P1+R4Z*2q6NZ`k3 zTr2r~lt~#_7vP=eI^Lc6c^*I^rJPh(Y@Z&+%q=%bQ zSf2lAKaXLMNLDP5{_V+>(MLLLK%q3-bL)dLaLW2QhC`MCe!>q7&S7C_SwBF`>R z#Ao8mJ32X)lbnbd_*_V}7D$YLN~d7T9D-FY0IJX<>9uVIaIyY@X+u;)%fkOZ!LyHI z%8pkvr7PJ$H}8`DFFax((_i?4^rc^fAsX>aRarV^nzTiu9fh1sW94jpo}q#BbyBsG zEC6d&@RZc?(*p!X`MAM_QNHteV*y6LyupO+Nf8F{V;l7C8(?^OTnjhv*d4IO`x3>; zv@Jwi*#y^)kbg+SoxF@X-uD<-N4Ei-&%rNyS(+lEEm#YD*#}O6zd!kRe>eLQ4>!lO zkv6*}&j0`*07*naR7L(Q>NcO~Y-!LV_nb5(hmfm04%1o$@w~yJ*j1;aYQqeum;N$Y zGysph>F6Ci|2hU!U&o+n2xakf7jMbwR+N>d*stelItb z08Fd}$Ij&`rlST}D_bji!U#4Ga^?Z_4*?MT0_E`BKBnighNtFfY|@s1nA>@7!GWR3 zc@(eZdo;cJ242CoKW^Q)6=3G>GtVqC_Q*-jqf-;3cZ|UCdli5eZ!BSyjX;Z^jS&6g zZ${iWMSC`Q^B`o+bg)M?BZB(jb$I$=gpeObaL>WnwMQL&^g?mZ$8O|9U-`<}OJDlZ z+1`8aUG6-N09%U|>*q1hRq25YD11JXp%(V>`mA&*Egmp3-J~nqtUwiJRe)tg$urWI z(_-EfW=3>qzMhhfwPCD&Zw#V(duZPqmML^cG)MenS!ZArbo7_M+-)Wec{27edK)29 z_D4`gUeRXjcMNpd4$oxl1%T-P;r+9&_642>Wu^8=zM=%`Xz>3<7#)5JBfhiXp!ng@ zEj+jD9caVv*(eClJqR!5Yu$rT&Or_HS$%HguhGFG%g%9`bG3HpZv(Xj&`Mj2yf}cU z{3vPIZ=jLjj(zxXL@PM0b!J{q#|5?0^FgoE>%4 zQL~TXkXrk2BUC!j8V?>Tn?OuDW*LdPMl!u-@|!tlm~}HmGv4=t<&l#b-O`aB-Oe;E06#^S%LubCc%_0j)?qF5tM#ok%~;*OO;J5l%V_a- zSp#5#5g8|=_g65M_X8B&Gi3og4IaKc_JmWsyavhlZDhz76mOAPVU#M0B1OWzAWzw$ z5s-Zs#`}wKd|%+fw)wLYoZt(wu7i%DL<8_nffAEOfXkevI;Y}HoU*4f{Il%L6d0G? zyspl%_WP+--4$$glLrKRJTB$Sh|XLA2YE53OSs;Vw6TtK+X2$>>Z-#qvVIFAT$~z& z!>cyCxM+s*OQVVr$gcqDK-@4bn%jIo9PI;-fvH|b%XnvL>$CgryQjtBysPwRL+O!A0yn>L?)pd9eEz*^nR%Ecm)-w&)IC7H)9V(-; zT!VQbN*)|D1ZNH(@oQ{KgpqZhbWCRuv*O&%ni&u zuL0Klmur!)fjsk$UamQ`9lg(jo~w>0ot1XB>@g!r525`(L>r#Z8$6&F1csajjy^4) z;_WZK8g4hWpWHFwCA*iw>e$Qz(=$jZ52Nn&d|42fdF|xhQFxS zxe9RS@(5xsN4t4YHP`PE1alqKeO$1f!5-=1wD(SMZtU0BAmYVy%=E6^65*s?=dZJF z!#X|}@l0}&`^aQxAr1187EZ6(6lG+XdwQ|D-f=Aur`xu`v~Ek^Y4CXnEe-zK00pPw zh>G(rzIb*mri}hx?yFs0G_9l@(ym9l5KR04w4KQNr~zJn0O0>Jw3FAZaf4Qh=Htt# zC2zjC86e{rI5{3^LOtiki3=e^JoEBed@twvD!InY)}gUZ_A`HTLj>3T@hnK{+x}cb z$ALsguagW>W}KcS9^^<{@hUdB!>bgbLtQ+0*#=}!L%XjMfE*KzZ+Ov+amC1We=(` zA9kx>P~If}9oT1mX62;gT(t6v$$_&rhWn1O=RLHmX+j4Q07>7$EpRavWo!F<*%6TK zrT4MRMK;ZGwE$~N z&Lahk21|t}Vk}rEV-Yq|`zb&a?;Yio+zD`G-vAGI%mt%rbnYyd3)*>)Df@AAM1c-L zpB{)WH@O&Js;NKKKQmA?x)yzz3t$!1sceB7s6ly>5$2{2i=|94{3{TrNm;nNZ!4_% z+yy%e&7ekuE$#~Bn!mST%4bK&()uT!IQuGg5nhA!N!)e#Xn)L+8Ib0>&6{{NA^M*O za$f;`;Evy)fc70Q5F+R%)tu5~WRDTyk6;#nQNJxA54R#80o>&Pe|{Q`n??w*c>d$v zNKf#W&H%-4mUSJ<`aEn4@4uzIJwC7(=C+E{5*>@=r|kA6qfr-k^4%#cyr~s+$$(p_=nB*F_cf8{r>0tfKaP-JIm~OlPn-LgQ<>mygcjNi1i{`7Ye-Wl;uz~bRn#O_30X%}-Y%lb1K4C=E4=tw8}iM-=G{!LfJp)8ikb%IX? zp#D7`Mvvc|;%E8yqYv+cUa%c}$GqIY!>`rh>*qVYPnqj~ufF=~88?FP`{EbBc(y*) z3zG)&i+_7<@%E-Qc<2op{(t7)1ZumYy7PUEijhGkL1sijK<0UJLU0Z$YT}SMM2$Bl zx9w!zjO+HWI=!OZH!Izp$(X*;3~DQCjEbUw2#A6TGKowI2qFq7Dk9?4-v6(j+V$?U zpIzsi_v8EIp0%F$eV%jbRPEZehkxywvivj9*vs3RZ*&7^-^LMy%mH{~GBOvad2~DX z9j|Qh`xs3yp)51 z3yQmLo6zf6g!{ID!1EE%_gy)we^t-yD>Vv3bn+w_=>H^R%C;?yKBL!+O$8%Org>hC zb>mM2K`#2R0!)n$H6P=HHzeh|%d?cz;a>w|mH!6%Se;Acj*H>Ax5*)#q51>*L!;+BOHaY($%f15rL zWeMGJIx^@GO6Hixz-n~6XdmYJ0p8L`bG2K|Db^Ps$6QXLzT(3jdY63fQ9ia>*<^yc z-68$D_PXm9-_(A7tU4v?Gi5({Kl-fbnEi9ov(l8$amOB8=9aNH9UTu=!oL6g?_d1g z-~HW6%iDZYFSijC%%RmXMg|@w-C*S_a=?%#fQsQ~BA=IDa!I+5ob|w;FE0bXMyuBk zZ_}sfwfESQZx87&(=~R}{5#qP`dJ11E5Gt9izALWq5yT9i_2Co9F_MeEpEI*pn7x3 zGhp`10&zF0BgZ0=vCHWCmZlP&e){PpDKs3X1tG6}-RlZ?XG<9(fL=aL7P7p3TaDp^ zj3?gide9nq8O!x$j&A1?U(5>h20sHW5ll@1oA}%V&M^=;2V6z^<2yaU>*YPC%(-^o z8;7~?cq0=9&VD1{XP$Xx8BQ3xFeDf|<^(ankGm;#qF!(aqUsRNViRV`+%Ei1SA{o1h=6|oD6IQ4iXlZ<@ps(AOmCi=9 zy=b&q^q`PikC>`ynq0Xw%j`Pfu1+L3=LX*aM*ujYDL5fEm?gqOq=k8LSE#=KU6a6f zsXPBOocjgN6UD(M0D1?dV;Ju_GEm>r`)|@JLiQ^w^TJdH(ZE;8nLkdvBGN&bHmq-} zIr+U4TfEf#+g!lv)Eh4=K(+c>y=X`1V{4tys-2jJSe&Q+|2)8vKU>=7rJeAECoG=( zyyvCURMwh&>Ds)#z_6cs>Zyxe_5asj^{N8?IOdQ=MDU09qyD8#qHCQF(|UA!ZrXwK z*Gteq`Ox%@3i!-f+fb%;5|}&3i7i&&vM-)whsYf(`d=h4_e>(50!!~zCxbbm-=dQN ze@y=MpVhwqUc;hKm%Keo>7PKf-E_O^)}SMX4mo}4MfS510osyP>zujG@Uor4Q{>TX zi^*(gNA@Otn%=uzx>n`{S6&?^dRct*`D}CXpkJ8{iJ&XOR@ zd$Lyl?!W*3i&IWHWpRz7f$!JiJcb@^kGv=!UJd|l%tZsBFl0%7{6G5Wqsz)wz60Vc zdc7r^wrif|4g!AM2RM-jd9uCAm$e5U-`NiAyz|amoGx1K4d)GKou|@PwGA?Pj-Aac z4WN!l-U%9JeX3|bT&IDs;DU(Uwru56&yhzSsTb*OXx4cAG_B%iJ|$q#+KT8sTfH!c z_v0V`_~Hku=XVwLW|-Gs8I5-f41eO>a~BtC`zMC%*_)6ue*3q7d$D;P8uslQ{d@eK zVG(bGqU=OmW%R~;viC?cy0{}YLXWs91LeWt7+9JDg&qV>m6<)CgR(aS%#G1KRi~an zjMdNQIfq{6ELiWSr)buDXNBjX>TTl825BAeia^b1?Sb}{y41WHz)OHj3i6eXz3G^E z&io`!fGG3WQ~*Hrg#t29D{aH*Uvtb3ds!2NP^06lBHPlSeO9`m-Y)$^Mxuh@!$Xh*rK6ZLcu z4gILV$qh`-SGtQ0B-TWLx;rHoL_Pp7c3B4iemp{sh&}!uq30IufVT%T5uW#;#qp#8 zVxvdT%0dc&Y@Kgd$lVa-y`S$`nVZSMJxq1-hBKA5(%frv8gYU+!=sNnYVrHO|NDz~ zzT+K>Yvcq0P7Fm_m_S+%8*r}YRt8@sUm~OaxH(*2BtHf@0L#g znI_;jvu3L)MkOA_(4^^{am#l~s}5Qk=s=$B6cTjfY}pZxaioq6VMoxO0h(y*e3}RX zeIrKuo7wWxcKQHlm}d%D+eZ<>gSG!1BR32`Ua0L(dKb2yDA!(l?X@^c@@hw=A;Zi~ z12plSsIAch=p@PraN?dHw*0Ap=))_JXZiym2M|USjXcPosRrMdeWF9enZ37*#(VYK zcMz7%IX*_T9H^)(v3I zFhIm25y*|n+|)Dgw=#b7egl3zKoBdtUhuV^^m9PW6p)I_5D~8_Ri-re2f$5P=-9B9 zegG~K2R@bW*mIPUW%75iTRoGaN0hGgmZU&?$k;qpias{EINhqnjIBk;<`6!SHp(QR z=yL)vr%ORUrVqze6$O^DI#~vSJ^L`~?Y)}6H~MM2*P9XiRclfl3kD2_cANM}6bm53 z3P2{tm-#rN^086Gy}a4LBtBD$H~> z-opWN_9$S|=57{)t~`nG;p8sYGr*%A-Dl~R1^#TYl?*z^-m%ehSM@F6#7{00q3>(MB2-uA5H+d33{MM3B+6lS3Q*A-Jv#~iHJb)e`k0}70 z#S6$|0R@X3j#k~63tDui@{b{0Mgy*w+;AZu$UngGGjfa!GhfT1BBkG7d7UDs_b8Ra zl#v*@8_e@`Q95|tWSNeG%K5hPg)Tc{kg|zpvl5rnM10x!Lw+OqYfKjLFND`j}w>xSO7>EitSy{56A(eu`)da zLK)EL(GIY)O^t~l0vuWV#EB+l9v$;K_4$6ClgJP%b0gU|kIm2lX!ptn5K*ICB9VYh zBFoqmfSc{tM>*8(#1l^}Aa85g^#aZm<+D>YBJVPw9sRz&Y+#_4Led<1 zo9u7Es)D{omj`t2d#i5*d@dgY2L>K|bO;CVZaG{gp)<*xNDDyYSyHH%Nx?W{)^9@G zIvrKU3vX+0x_tMFR{@(JzQPe0FeB3VIYkCOu4p4GAX!~_nUtK#;()2!1dy0~UQSNv zTmVMqRuPSxb7548q}Yin#aZbCO_aiHzh3mrdch`hEZ8AB#Sq@!GHUF7#!6s-9W)iz z=tFd|tN>Lx3=N;nb{*C6mo&=foCvC?Ovc|T$Wt3U%AQS7AqM9iKcC(daWTLK1kk2AYjJb_-6 znWPo0n{2T1^+3IMUfnAbz{eTb$Eu7=r5j8aKpt7?`$k24khv%8`Ccmj;Z=4A^YN-a znyp#>T!V3>{fT}9G%u1p>-89<0W*{U<;t25Bos|yi1z!)1I8{d7~ zF$Bvn>iOrNzc~A>v&vk&uWErIfC~SE{t(S$5e72)P!=E6JwBQ1NWMfW{hZ2`_6)KT zWhb_emyZlI!5@GiX9+`tz0dG4bhDxR*%}UJs~1*Y-z7g}9Rvfd{J!SeYs-h>aPp&W z3<1CVdQN%gdUNR~N$r0eZ%k~HfFe>>d z?_$8KF>Qic4eDUdS>j;Zb9)x@DN5>$vn{-Mn|f8B&`<)$N0m!79x34Q9ERW+itwPe zI-$lJ0AGzJv~x_Ye4>PvL8J#DF>##LvH&DN9udZWma^kO{dI<(MFTvC*Xv1BqGdJm z2W_+y=jxs+=T}bSa6GnrapHit5baZ^6~>HVGc`Lci?fE7SZ9-NwafgCL7 z9DiN);^YsUGLcLGK>;-Su=knO`Af>fxvF~pWjSus>k>V! z9fkGqU_;Ut!0O7{UXhc{iT2f%i%U^n+P=(*+WpK?Fr0&fc#Byb+SU2Vp{Gsv9Awk;z?{r)lq%^1a4b_<^c_8?L&6bm=o00vv{jWM zFDubb_dr9f#`EL3b>Joivk8fTV?7O9nI>c}>5kWq$fBoyr z_9$#ubBm&8-_hvP!HPlx{1{I4ypDb>@~NkQ)vtbaIUgKA=y{gemnpg6ow4^a zUivc2b}kukm}6w-f|RjdNanPnFj~V+q1ZVzZ%CSqMlXa@dCuWeRHCUoy#dJhMcA51 z-)X0vwz!9VtBPG6pI!AG8P{)Br(U8L7)Nsq0bC5a3e{kn;qKPg(m5kPsAqlN=#-IX zNcB<~{=d=i29XBaV3jD_&N49nP6p&qwkL58rIqjMTj*t2$kmAm9ML<@{=7@ySvANu zDS#f1sA9r8!{0aqwj;rrmTW37#tv4;0pn1JJTb}ME{53HT>2p9)71Gy3;|oOk$P>W zG(;kB#LSPoMoyK592O~Le>RRkh^ zq1|`Ov9kyST|y4%FcBGND47T&TfVU39=QX=S!b>Ax9XMrC(!&wGykb6{ z2H(C>ei*iWp;q~`K!%}frcn{`zkzL@BwMV4zCe-A5)pKEpKV}1tkJivBzFM7o?K); zIs|U&*!)8TzU=f1uqtm8Ou!g?hkPC44SH7_Phr|diOIB+ylp6$;W7$qmUc& z{urPvJJSm=Fd5jQ05-Il2?KM<*xdBs>KwdcWQsYUH-bVJMd_vUJ^Yq`eXq!sZUQ{m zkoW^K&Y#e543W2DhxMFcp8rF`4TsB!Y|HSf>%g=!jSl_CQ7~M~LGQQg`xoR8nFj|L z0O;`y-~t%r9$?E>qd`mTf#K9RFLW0fHHJo+Cxt`X0jIC@0JyTBp1#{2YUIO^5+^GV zwIke48GtNn6W-xt4voCnr;x2&4ESMS0BL1DBgPi`>i?#%?tU5Gj-Xr5neWA74ZmGW z*@~kMS6dq~C-5Ngnf3rY0Q`7X>Zg3aA=&`vtcqmgXaF%scroXXdco5v`!YvI)|1BC z%-W41vct3`%Pw+2lkyxAL_PC%4<~l4Rto=`hH_5Vu$;Yp&`95d#*p4<6p^(D4;DIiNMOr_I&8^Dl0GAmQ;Q_42kc0 zkd?KC)q@2lTr6N=0Sa^c@VTs#K1z0`%n8&GF$-~chD-q(*|2-;n&Nw`Tb7rvQ>=qM zYjgaXfpQLXEQ4NwUKz6Qv2iy9%=xm75mO9{^k(VfJ^MX%f2!;rA0ka-KrZ9=6z|$b zvs1lxWlr=7(03H!_gYv_p;pSZ9(M(7ZKx&yLSKh2?a*2cAajM7c+FxCI~<;g>6{~c zjKbxwl=3kwZQIUx5X5)lY#8-h<#28ikmCq59M#QI&U0n(aV9t#Kwp{L<^T$`KAfn8 zXaNi{L`r^axq`!ETMPEdJ5(QryohM9B?J@Zi}O<2HeX126mX||I4x*qPL(>Gj3od7 zAOJ~3K~z6sV5NNxr~z7)Kl7Z}T$hUzN?0UP_Th7m&mtzpf%quMnsTQA%>T{jC|XP0|8{+A8r8B ziDrFBI`p!-!mtgGRzMf0ZDe|Hb4$y@h#CPyZ;(Uw_uGTTKDtj7nn)gtkUm}`^h84j z)^#Jqey8F*P!`PHcPk{zp~Kfb&S9C|v(^v6Hz=}+bhV*X=5dW<)gcjVbvyF`BU z>gRb!8cy|K?w+?P$7p}QuPXY_urMD^e__7jp;|z~B9hoPS-q`&v$|MWncVpIe0^ix zyL0?vfw8dcdDfVjk?jF0W9r!RXawhit~thYy}&EWGv<*AXsoBtXT3D^%EJi}@hkkV zkrz9%$!}I_Wi$N8WbH@R=vkHI!HT)YYcm=K>>R*rppkOtFnzT_m+y(@GiC5G`nSnZ z*xqF9)yHCv7uL;UOOM|H&oV5d-zT|e^KF*9&5iS$JA;R}Yfrta8_{DL0Lu#O{I-x;CuBQ8$ANC6XxwUD{XMa{&%R#=k zo<)qKK}jFj)h^&fzs3t~}4$s_9-$Q)tn5GaPK6VME9zKYbo0`f&K{jdlZ3 zKk=PO{cI%z%>chCJ>3vdnR*8vlr1atpH+^m;G@SrW<$oDmc5tNWnXO#@mkH_*;PII zKl{@^UEHXiewk;fmx%a|Mca*!WkC*60|#EF>Nw{)E6(Xe*`~^#{uc2Iax#b@(~(d? zZ2Pk%ofh$up>w7_d{+RMsG=q=mHqU#uHf%+(wG0BwCAerzalxXiSX$0)dGNYV%{PC z{IWW4Ptm(XpONbiYl!R!{r*+yI770`L1iVq&As#UgPYDd{aJxCwO;OJ@ik zK0!BIlh~^C$nR)>dvf0M15GER9-~{Gj&lT@S-Ku59khLB8^S$b-^?%fXo=-mJ;!ut zjx5i8-?woD>pqW+Pgxt=y$mo%kj4TIwsAS=po3QC^2M?vUwVKxt9K8aX7Uh0@X9`Z z>tX)=O`Cz7jqM^Do$-zW#f#XP4H0dsQ>Vtt5K z+3Gtp`YT6utx4bN-dTD!s2{&EUh5PR91)8WzA1zM|FUy_jdEEwZ_qrEQ>0idBq$Lt zjH8?lkqwTl`iLS=U(@$1^d3<%fFG+?Z7v-25Rn=<0^MWym3eo7MV$3B1rmN$^XP~= z;P8yE&r?_*Cq$%+XUvsqk%vlTsk3w5R@Puxmgr~&cJ_Y|aWhAttZ=4mT>*_ZP$$vI z5E>gJvt34v&`o4u)+ZUh>kHE)LgL4$pn@i_5-X|C_mP zM2ppCWsf-ID~q;>xH433&HuAMvI_N4Ow-^-LaHui2jRPFm5 zf&33iKbeL=r-_yIP1i*~PKBu5Un&yH7D(?CnEP{`eo?@uyNHy(Q}^Gcjmb@is6X>r z-zD9r+%io9n^1LXCv~`9Aset_SB!5?u1lRNc(P8CE$m{r_Wznxv4|MoG1>Ag^ zsC+Sh|GTF{P38=ccK~mE-@h00@N~ucWHd!ToYlkg(&s-0oMS!_Y%N82ZSjzAKW|4Y zU8JEW8<~B|()G&d8Q?hr=Z(H+fM-xts<}ML zl-M_N#)C{)BaKl>#~e^BkCmLPrsA?mrZ}A5ib{YVD>F;Pj3|i-3C0tFwf|Lc!hPZ@`yy1sH~G;z!&;wqY~bp@O=wC ze_V|^d%17+$K=#HJVs;%h7B<4Ic06mq7hdSWLvm#GHKF4I0XAuBqx;uwYy*f^Tyq>H? zzD)7S(>=!TUR`=JP!@OegssW@bcLqxBS_*PuO+6cKh$*vI(L6Z&4`dmc=s z$po^e6jOX32u2lt-m#UJk+)``>9GSU80syC(L1wRXa-h%uR8)k%e(Qy5$}y}OQ$l~ zQUL&WzMRA9nuBNOjh-^=~QXKWDPKEb~ z7O)o?bC4LKWluW*;64IX0803PgT(1D=aH=^jJ^^z(x=SZt2$#t%)Sl1qcWK?zL(#; zZf)b}%OWggQHIhoCy6HK_3L#(WbA^QYq+y6xm1;1rlUcbWj-yV)1X?T-f_<$O&}=eSbN z>*E@-Vx{XPbq96ofkObe0TOLzes~Fx12{26#bNXOr=F}T1OT?)K6TZ{Rt=WW@Xy%T5bb- zwT{JcJEvJ*TeCK+!^u@v2cXZ|zw&`$Ubdropf2O(LnPmOYr^$ritI+m-E#~}cB~yQ zmA%*NxN@J<2VSX7o>~0C)(&j?TIPw7FT6G2W$l7oI9^3(aDRD7D_o!s74uw~(!p8I zwn1|%x0dfa4OzLKPSTd`fc(2Px>nv*JI?2P@?m8wLsvR(q%es z_Xq?U{3?-meagZMC$p68k5n7jT2F@qdYPkyE{$)L2q>qUe3Q`ubgYhekQKkPGnX?k zvMjoG6kP|b=f@&V(NAS|Jp(_WGGqy=4Q<3Mf-D4hulRL7;%NjT%Bnti*Aw`j$ zazsGZGpIcyVpq zcfJ&u>Dd}v)?!XEPy5X&0Kf6N*DW5a4Pf8!Z~o14&Y$>#ToO@cpTi!oxL+0Syo_G4 zH4;-8*z~-u=B^-gP!A{HzH?JLEY6NJet3W%WUz>c0mHfgWNXRp{sLXk*Ccp0cxJ^f z$1$>41fcju0aVWZWlI>qAbTS+askNvUX|klqP-ufzin!Ub=?%W%w5Zs&q`b9>iq=7?`SO z104<+Ot$%w(TjWa&W-Bz|E`w2Gw+8JA^u16;}R$6Ffh26ngUH3E{!v1hYn#?9d`CQ?VwYjUG z@1(UhuNh_S%RM%&J^7@Q7Jv0uf3^6{-~7$R4+L&(1MsqtLm#3{9Q8+Jn|W|7KH3zg zo3O}>qtBS;Ku3uAcX4RG>AD9$wcU&TU?p$Wzk$pl5Ae)&E?QLEWZm?k>INMa^lMjj z+I~qx&}>X@5k7$5`!vt@En56x!}B&m0bpx#8gKyAB0Bun>Vnl{v_ zXUxarSg;Q$5^{?oL+txzLt&m@4EbtG#%kRqpt!w&#%G!z5obTcx>w4hpRVTHM|pV8+z@C2Q6V5!jF`OV5#hKkwzylhbu<+#dnl!@qD8h>gzbj*-%&I~T^ zN^V$~MO2?spwEsAB<2lRD@E1vtb?_@IUR`|Oovce>|e@R!(aBGbwnVeY-D=X0}^xO zER((7dv-t5`$78zS@p8qdpFCwC+8UtG8WDOSW`Um^3>Dc?0ye?#d>Dx*3%}w-czy> zZAr%SSl^f?;^- zl+no0dCWT#LjN8+g|mSq`%lqZw!O?SiEWeEN+k2*IAooTkq5)P(TLXHJ<#WYxYd6J z^yz`kZ)0WOH3EBV`g?|es_k{=fm4h^GCa12K;Lodp&zdgkpfn`KAQ7k9sMO5P@PK2 zBZ+Pq58GTf18^i?Yrw(63Cpv|mg7k))7^{n=mziUN8_bA+9bNvlw9d)E4u)Ib}~jO z+Z=ZN?jt!~M||CUMA9N5K9bU+eohvQ2L((98S(j%4xnI1>}7W3=W*{B1gJJ+>z~?z zX|n0s+kkP@vs9)-8`-FM8377P}~Fd+BADEv~=mrZqWJp5=UK2lzZq z8;egw`I$a(m2~fH>0DVM&pg)}(aWOQO=gvb`I;PY$O$@ZxkP)jwGi71HRqGa@_@gt zGA6U_xdAWH#F1~5dbk=Z12)*|BV0M-e&TXb>5ez zX!VHHtXwZwbL4Q%WUbY>+tKr#xBB83Aj`_{)g{Zv*U#tG+M(*A=};_hto&H-jK4ja ztPWWou}yq^V|&N8_WAjC^tLCN2Ga{p4+#2vGv(?%9|N5|S~HNBrS(cwfS-ERJ8UqqYw(r>fC^UGrV1pC?os7MBBe=*z&5nPakyph)fv{V_TUTA>%hEcDz{I zmpo6ycTCE*p+`23wIQYm`m*T5U>LI+;}xe@9h*hb8t5}X>5P>JgoEKy^46yTGjI4^ zRAn&yY z0GUe_8RE!2yEa7>Yf8tdo1HYVBy;F^GY30Yr%7jq)!WBN6J-GY{!h*GJ6WrX-|>!j zEdJ~*Z(01P4%xGcoYm=kejeAC6}9`Q^zW&P__1H*Lp_+SvN8ZiwSCK}IYcm3mpeo| zK=LjD!Ow@iHhsjf@f_ZpyjeTcdrPsZ9f^bi-qB&V?la(G?^PQS_olSbh1LnGz;e*O zy2sEl5l7p|-FJZ3+a8%yjsRy)o?fozq;LA}^>F5kJ;0HH+gKOxBcm>Oa1-rR)E7^K zeeVGrlPQy%UNz(U{&xndVqG#UU}Z%bGmO)-BR#AV)AvAI)0fbB^)e876L~SYxFc57 zGdUwHBPuhvF`o?JM8V7Q852%VOAmZTfgJmtl|Kc{rk-bxXi8r*f$~D@-;XQc=<(ZC z47s8q+sc^xy{uZBcL?cq5Im?DKoSRXFwVEi@vuuj=jN8prA>hAN?P*gQ~*xcVE?cE z>TvGM1^U?1oB|XO6#!8>{9{pqm{!@PfR%ig0#&%O^4-(m@))Fd@B1@S zBRCxZI9IL*VYDMFAN_G_g%z&sm~V50R_E$42kmY3sBJdjr2&KpI6YtLGw5UfCdbYF z|Kak6eo5{ccji2c?_|HH?jh&ffJsT3NI}M1E6)Vyhz{7&@3sd$R!B zPX+z}KE-}`xwZCpGR5Mr$Ed?~qQK$@H2;qFCF=eh4W&13X8Ke+3oV*l`9ByD@PJ(3 ziGK1as$K<%I&g}||I`$gUsA;1CJ{t^Z#Dtlv3j`r4CGy9oS^xRUs7lCoBDns9hIQV zQGPS~+q3f-*zoy9IqZRjNJ9pcJkaXVlgYi8+urk-W{d|@dGvhV*n6$b4D^Q%T(Nyg zr_SCR<7))7R@e2kUDl@2uJr8S9C^yxvv)7UO|k6mb}ktzT~V-3#335MDMES-ngUI} zoF4F*!_+C^=z+^IVVbMJ8{!l*5bN)8J|G*%PF+7y`_X$Y3q8gr;XB}#<=InM-zFIE zTQr~VTt$KYShiVU@DKJ*?yf3n`M+4$_1QqoE*`K6+>JNd;@HWQOFEK zDcgXRb8rnPIwMoc^zvSvS&5p}Jj{8PvPkX;4Lod72yd`l{(~Xt08%N3p>ejqu&7;& zvV?N14Xm!74{fNe(z!AWT)T<<(IbwADbHdK@%(eX(s^rXEfyd3bhYY z1_nc-2}o-7>475jpms!7B5zK2ieIUjwK9<%*TLb0kI%|JT&w>8VCGDr=67V^2Yjh@84I`h8)dwV<$BuZ=8^GW z%I;)s5$V?+waeiO`LpR)T!(`Ri6qwCinS`H3{8|Ri;hW)HsZZh%JZ(%`ze0}Yof?Mz zta{aVs^`uGcRNkQ@?(Fo6J&&cS7)A{s$Mu}zH*rQ9*Qim041fff{td?T|}$Yq0*Lh zT)e|8&#Nw!cCYWQM9$VUc);TU04~KkkeWn7jJCAr=E|UaBDdd?(`HzZT;W@Z=2nME z9xFhTI{3(z)yd!U-wiN3y0c^ZVwBMjvlp_JC;POq`ZzlmdQvbqQUdC}%g#G5jyvu+ zC(5g>naRbN{$)mct+~3=(&XV0lIsHwKDeCid$9g*t%#Y)TmS9*#}qG%l)>CQ^br8) zM*+;lkE5lv*g5^wEZ_A-^-*+n+SPYamC@m{Alz8mdjq1$!n#(ZKA%(b?vKzEGZ z)W$d(?A@q^ z*2|AE8S(Y9bc4km(RfV(lgNx-!}bhoPZ)irv&I{vD`QwpZ-zSxa-^pxP;-T7Y2${y z{j6?Tep5n{85Z6F_+`#xAt_a^La)httC^B;*-U%59bzrVJV#jYkH*e7172IVqQ0^%Y z@7V3PwdKHw)x4S!a=#0I5?cKPa~m#>orM)WQa((qzZtL`wws6%3@>w$<|YrWoudIS zzpImN@?Y<@w1J1-`L;5vgZ0CE>(QHyk(RP|+ikbSlb`aG!7xzIPFa2Z^X#6Nfq|?z zne^}ZH1_TmlJl49T;H!tPdOdpiYu;I{74ZlJCk-})IZC^qUuZ&xS>X6=>W2qotGCc zyUhky-N=BSk8lqn$=^4{R9--gN&1=!| zO5b4jfeMP6qb5yd%nAqvV6tDJ%AdM=IveF7^O4cEn@lu25<045_QB`h^H=_TpJvRz zMVXCurRPI^U3{9xf9qVep!HW68Q2z?Dc|H3$aO{7__TqY4&VeJYr-AyET#1+-MU2Ts1$ z%jZ|>8bGmse`RZ!K!Z6b?}SW721dxyRPO6@uM%FV2n|uvIM`jlRRF?+HmmLBft&Hp z>OLqxb^xr-uKt;^D*Rh2?czAi1>=~#%^skA{D_7EqLA&)SqKz(iH*SOYW+3f}2iO9Voxeb~vD6d~fWt4vlVZ%ynGs+ z27F_4&+!M*k9qy>(I3+^J7s)zgpBbZ6VC`*VtvN|QU>N?89x80yBV!>+Ba)g%RBNn zT%nGN?d#W5gfRt~sz1*$ZWuWL*Dm#pS~gP6t_G}o*0HI0{#l4s>jR%R>1)zN@l8L@wGvhvx{Jm7)V-PNzPlWQ*nYmH~dAJ03>!||@wErMjx`j2XF=1Z{|@dI^v z{mKllH~#kAr^}p4e8=R)|F`eEO znSry7#XHJE_w8egzCNiaJaaJ_J{{~{;NlW&np8rnU9O0WezW+yxZ@{Z(oNg9WmM?Z(<(4EYGuy?)B(> zFJG_EJ^p4uF1BkgpD{b(c^2g((mU2}#h05N>ib}*H#2I{_+^#x1|WX#3Exz@4SjEn z7Ek+J;f_G7C)injQ@rwx;e{eo&Z)fYIS0eDf%A`K%(Dx?N3WfsRaWEywBjnZHgrcpys0(mN&20$}|9LV64(%?N!=mt>Pl&rks zXe>V=&CwU5o4)?cbz)HmeBxNTJ(9L-!^fq{Ywp*}u^+x}G`Kn$Kim5*pVlUpzqJ9* z*8xC)!~;3MFBSfJGj_0iyZZW#<*~vClU0);>v%ZXiRBo7_uFs3#j~IN?8Vo#*yDpA z`cMHKMCa%vF|@xauP+NgeO}=2F_NbPI0CTB=V0j8%aWcmOuU{eZbuZSQ&?VQCAjPa zEB=}1x25EKFWH61$W8&rwiZane$iq4f_4UAgXf=cFUb0uY7U)UbIx9WYhvXO*_iN|VEMfK`@YOrS^usV(6Kx-h0H)(WLy;ZSY9TmS^XoQBB;yio(XAu zFY=-%*hbSAzVL-IZ|KJz;Aii1>cyTis5|NZ3ZIlH8k~}UU`DHxyI=0fQ2s#wzbeDb zP|{_J^!a1PIGgt{=JKf*|I6ylpD6IhqK?v^55TAhvy)Ma{+W>5aPZ1|mY1h(spZQ% z71a62MCtwevOGYn`DDXz1?UCd6#6`1a$wad+{&=t08|!oU5T~V#x^{FKb(}0vJOtz z2=w}VJe8jn1UIU<9ovG1NhFaGN5Helc6!$U*9PgDn2EglSG5wgzYbkPTZ5Y8H z`8-ln8xB46(8UX0@Pe|?!=_%?(Cm77V6^-Hy*yZ1|2Y9arV+FVbJPR(GP1+opQF5~ z>6@)}9VlhM`;Smo_p@O*s>n^=XvSvbp{}!%w+A*XiYj;V*q4n z##T3k&f2C2czoHJ%xAti)<2W+G5MG)&(UXQzPgu}uS=$*k!H&$xMr}&^08q-@ z8v|pplTd+3Gv@Wn4|V@GIh2bP?faO3ABV%UR~g0?TIo$cQPI9b1^!Ae-j`eRusJ_1 z`nblhO6C%F#0Z)3x!e!HD}p2sTzz?#Z!|QPr$ra7Y#$-Dd>T(G&pasebgz6Ty}gq( zASbajpc&@-MF;13VQpA+EjXCLdrA94PXzffBGlxhwh2!3f!@Kd0Qm}1qHfu5uV+0Q z;B`0CxoB5$8zYqG{y9hu`z8A=z98NUB-Ce`8M^Q)pLrcJm+lE zu`LO#tV1>7{QwQ4*f6Rex-8{YC2Y>KDruwJB0TlK-T#5UoTIaM|5Q=O|4Tzx^vVm} zH9r6;!_eEvn6r(H%?)bN2A5wcoA&@JA$ru>!#x}1;lN6fqna)%vDLNE9}K~uUA#jh zscXQNuHN&C*^<==LX$hAsn&5I>%B-5dDJ;b)-Hwq3Kj=-^8&UMpq0pO+i$I=%?zsX zzvzdhtFq9_gKwccrV_-HMIuR?`Zo)Pwh>_1Odo%Z*@#R&>|J}7wr`d1%*I4#=*u@} zz(S9mwe`$<-}~Ohv!3;=#ny_1-?xc}c|A`!51aFGn|ua+vpSH1Xk3ftnymW&?%mee z@|{N06Gs5~-6_!Z9?mhYddNvVM+5ZgyKJ|@8QomplnwbO%_BXF4VP_unGpT*I@Rh` z=^XeJy?2A`)EDb036a*)!K${XL|~KmdTpKBnA!n}bSzbKxV4Lyw@h}t{Ple57>M%# zBxiaeh~lb3-Wzl>KI_?x290-gslQu_-Et!ao#)84P?>>cMjdrn2Y~L%4q@WBgwP`aYZ`{kIE1NbkDwssf`X)Q%7ja#jGK(Vx^~pa49t2Dao^!BU&(T@7$4Hh@`w zuhhFbm@Mky@2voJUJdoi`0a<>2KBAZhl%fO?@~xLdV^!}M#%tl(~HKed+o5pVqXo@ZO?+C#PLQ48l7n7ATy)dbH2u-o@4hs zwC_azp7Eq7EsoG8&r4D34#saZcClyP)f!^GNRhTis{x%_N~xo0VV>#10%L5Wvb}VA zUltkBfvg>pCU=2415r($f(+iH_iq#Mx=A0R#cVOdsKk?1mQ76nbo%YUuT|R1HP`PJ z4f|%i9NhDKG~G9uR#^-sGtZIBrYRI#%kR3M;6SHB=gjyv*48FZQ;ylolh4<)G|IEp z)q{cvetLPue5ZIh2GXX=jCJ=s@&0VZc6RhP>R!x$Oz(U8nYCfBUS1|LUCqkx@w+EG z>#1X;Gs>L(ZbQAi5QSz+P^OqXM^U1Xjajpd0ht11jE(o^7*wBk2C{sfK0nV(?>u7N z#%RdO_JZp9X61cPz29rEy>{_!4X=(}+X?isH3GZgj{!fMH`nO&$`^X|_vknCg#JZ6 zb`F7OPG1??6(PT*xqO_!vAx^c<08?@nW616uw{{@5Fs!lY>_MbT_SlQ8bzMvTu}bk z0@~1(MaPy5TmxbbcpA7H3|~5D;qz*4IRMZ>*@d7wN7Bj(4dm&xq2xGk(b}qP$z$(V zFy4l$t(;P1&2@yfl8xsBKaFSh-_so1#ij98Vn{Fo<58j91P`~-)JH@PWyMKI*+j&=9C@xgeNSX`HW{Qj@IVRrFmSN%wdz2>Hm+tN3@S2 z(_4vn#m$+keA)X95i!3MnmAdQ(|=4~ERBK0rn6Q4n-0L=`Z1aQlEB+1vB(b8W9EA!zj`|B z?@#IC7)?Fi`8>yX@9oW)F2=Ua>Xp@ftp3@vhh)Gc-m~9Pfae&;sY>>gV$OR$O%Lhz z@>x&%2yh1mu2X;qsTq%X&F5>pjC93xz51}}D1h&pYp$6Dei&0$^aA|+TrF>?N;$PN zu)?cAJD~4+8Q>3Ui1!jr6lXXW$ImJ`A_6Z~6yq~8s(?X`W8%76ppQ8^gUF#bs%EG$ z`evkSAyXVu!JrnBgo)qU{0@}oSnXoc_fhX_DR=K$?Wezn|^wN=3G zx%_y>{42Jv;Qzz)jG*ML`mgj!#Qc{lc! zBt6;h-G7J{N<36UrVnzfF{7Sk`j+Wjro+8=Jv~!tGBEJi{r6v-Bz^gwR_I@O{q<#` zR?pb4mnXgS_W=B)kI2^mXgUB-#Ela_h|F2^jRhHH{{ZB|cQ8!HP?z#}DM3D(ZS((# z_A$@!Z0$zCyt+roHa$u6>5dohV;Wvo}e=J@k5 zor}E6^kXicjCP|b>h&1^*39v+W9akD?1bH$>+^e^ftZiaZ#_1vNAF;9M@*Fc_CjvR z-~V5ap!5`G4E6RHIwdeubeV8uO4?K0o&d(Ori{NevKP=PdgJo~{4~6J`|YVoPEo%O^nKn8HXkh)tHyxGR8N`5dixBvxa!hXcCp$RYNs@vit7kQ1|_1tRG45 zySla^fhzg!2I|BgZ-0X+zv!w@pPESk@ znF3-Fc+1PCQ~XSwPwdCVYNyNep>F%hRy;vA<3Is+=Cm3;to%P(VDMEM!nccP9q+e% zI~DImpP}o60-Tqs?#ywVdt_S#4VnC8{=v6#lr`hmz-CmrjrK1CEn~9kb)e@%y?kbJ zzG7DbK=wN3^(WTZKa09(K46SbCjVK!84s+!Sy`Shkw-l}jqhZ7ozWQ6&9M_6NPD^P zveM&k#!I7Nu(%@{l%BI)uTfcV`m851W$dP&M;bE0Hb%v?bMo%-YP~$1Qb*27~q z)g7CEUA%RJhGm( zMbnhd1C*vn_5CTn`Y1!o2cYY~t_MrrF$~fejrLvzcRo$4Q~=UGx;AIHu62ZJhJMKP zRz*tx>utA{jcuPMz5=E#&k|(|5l7#KmM+V`7)2{Di{|N>kJ9*h^g0RLht3CjAHT~k zxn%LF^Uq)0a`VkA{P9N7jA-MJ=R^3O>F0Xh^Ts|p7H@wZBwg8Rmt7Xe>zrX*oWk?b zb8^>X1YBCc&Nrox=PTj`0Hc#(Q86zY3?MqB= zzXvCG#GZyJq9Mxcc@&6f%;xk$tQ`M8-t!Fh2sbM~BIArEuQXACvikP&h;(JfJOi1& zjH&W`JNWu$bZ?05j|QMbZCrG$mG3eKY;dg7+XVQ|lHp{r2J_BvBBySg&5EvnmD_Zp>&4BaBf@a9+TgjQ_c*3A_zT0KZ_=4 z4|#SSq3EG)+dRY#5z3A5PSmR`%P|M;)AtN6dYHEGWDfAfa>qt4#m>Z)r zCR_TLhCJfE$mi%7BG3KrScfS^ws-ea51qZZd|r{4jfb`Fh0dA?lVMb$?DAX6z2J{@MC)o{g%0}%J&k{eLEXE8)&UM(b~jy#*p`~ zs*ao;PK1*YkfuRNr*1GO&{fp(jy}fhyw}MAe?l1<_=tJ<_dRIJ{97hZ5&ZRN@6jCZ zPx+cL`lBz6^v1k1{`B}U#^+2;vU+6gImMTO4Xo{((e2wVvq?Q!h_q)m#n&aaZ?rk> zlHXg;FM6r3P+)wvSU54Hn(AW`Hz9XDVll;m;u8KFRvB|5(UBQ2!qBpE_wN<$`;tH(h9ASJl|qYWYX}mfyr+hM4CrN%EkF!g zH*i4w&+2@&Mz?pkx>?>ggKkRY0h$9%W~5ttIKbMASXsGki~=)_Rw`jK2qdH)Y4XGxTXQCu#Q{DggAdm%VIp%rVC- zwpAp($=XI_EFjOOMgYJ#3Jn0|J3Htf`b?+8He6>;9C~~^t7@Ihnw(%KSTtf&I{a>m z>00EN<+l6&{Q{Y9ZayVvZpw}Uo-lfW%naX#+M`~>d*K<&J8Rsr^qH~m z33S#VG4DBGcSCqHmal*I9c`oXwzs}@agPk?)FJN&saMVXoFX*qAj;A*?D$rJzE8?< z+NQ4zJszkn82+O+p?w^^^%18J-8dVZ1}g+tu4;rmFe#2{DdmlB15PIVmfqLPXfE$p zfM^l5fy|-AHUA<9j;KgSQTX~XntVA+0@su=J{!*ecW^)YAseeu#CdDloYhaGyD zo=>eV<^UbtgF15G1L!ClwM|OBle!gSr)L0ER#{#y87Y9^0ld(I=G0x?%rIvTue5FD zXJ)`NhvIEiW`r%zm|y&zIY-hwLO|%m6Hi<`7BC{E_GsCGLHwY+Vdq~5a!m{tAKGszk z*xdj;tewn10+m@s9aBGUnX&(mx9 zjM3z2@aZ#M?C~kn*T~~YcLwA9Lr1a6ZtPL9Qtoa(y@x@pg z-{vhZU$*68{Arc0(TPeIG~tLoE64gC+nce@l_c^~>SK^18;Qr@+&V^ z_{{x4uh-3@HvlcA+eHriiE7(>1QKot!+>+;d1Ix6F7&}W#wC0E&e4~h*`l7k%ABt+ zD}Il3MBC(_A92JHi`%rg=X0O?+~Ss7ZrNDuDfwi3F1F~d$%yoPJIUVu>NL{9yNvSF^+l8LpsXW*Wn$7LG zppAO4xW>y%W*>U@qCXjvr|9bf zV|De& z`A=q@vV40?94pJyT9g_`n3O*Tq{a-bN8r6YRve!*R#Et3y^Ypbk1=H&dxrzWPkHWh z7t9M9yW&wxt)BIzuJVh&^wKYr!T-DrEJHZth0{1l;O#k@mvglKOQ6=AfEk)#a99As zZhkn0Tj+H=f?N3xn8s~StiA1jHbk2mm^Ee>kkTR$wX9-1J!o}wmHh0P&nHPUR`!6u zfiEq3=)gJm7|LQYIu|@<9u(X0SiMPObbDU5$X@_`5zt$`3_KS(tMzJiiF|R(+2s8bP_aZVIwgZy{@!*C7I#=?nep0Q{99a1HO-p?~`RTpDf_HGhn3VJ7{11u;FL>k3;yf@&QQt0m0@d zG1%2;8*Qn~SQN_BT@yChsJ|O;Ev+lVfS?WG`Z-IHA1m_e4XAT8o|j%v#$?~*siaAO z)8jbPRSt^1{My_lmv#{8G_dCKY4vk7dtlvkXh`JRo`E&5xP?rqpNl>cGg$$cQ6M+* zZ(mnm)RaMu9jqRiQ#u}PL-yP9?m2mT2jH>KKKm@5|GeidcGrm{@%-WY%Stadmk2n0 zL3+u2xuzFtcP3>32str>ZV39$*||jg{Y6KG$k`nNU+DSfvNuG5u|0rC7IXp7E~>z9 zJLSXPeTNYJch`#EnaoxhBm#Ma-r-~*<`feJ2W(!)d_VRwMb9hvW0QI6^=^$;+$h=r ziO{mEXgX0t>44XwQ@YBW+A7O*sElCXG+aEktMh+wFd)D^6f!BJ&94ChSIvLA1e&ZX9^EK34CS%v@dCKou z`T$6**Pl6jfF{E-o3S#H=#}!s0Do4-m{oP99@Vg~D6%P7>H#9EkT@{ak2~m03ZNKL_t&mBS&LeG@{ciKQOy?_2)aA~cyUJy7??jJ2m} zN>`)4WVXiZ#}WP$`Old!;feh$A=Xe zV}&mpw3~d>`2(Gor=1eYqM=I)>((ENb#$KW9B7jX}c$Q73SuG4uCCbPDTLeP?lC7sS#LJK_ z<-XHX2r3a`6cCG^74A3l1 z#L`;(=VQ8%(b9Xjrx%{Lkyn|Y_WCoXdsF(I(b==x#uKw`Q|*|w`5eCVFjwT=RQXa_DpHc#X0{m=4=ecWlB9|py$*#tFv#QG2tGg z>A`h>Enrjz7};Lo3-ze9UDeBecmh@i`D1)#-0zaXXOren$sv^O65O?y3@1Hyn`@SV zKAy2X!!a7lIYkEgz3O#y-6jWcl^no#a3cDYBfc!66 zOZ`1STUN}GR6%FVzk9cZ-(QFb!RpaMVVAJIwneixZ? zvXGvn_=k%dzVxNV-HMp~utwiEHan3wj#M;x zj&o)y5AbLE^7+m*3qbxx^XLG4=roZ-j%>V0K#&OCd7}G+?mY1qYdH0ZvJG?`O`iw$ zFzS@kNo0=>?Ta<1?+oSp1A#t9B>q;N)VuY4cXdcvfCgY?&Y`t0(Lq)P|2v(G!n|k} zdob<9o)?g6a-A$x^X-;7@2ssY@7Si%Zh3j?fyijzr)0~QJtiv|2I$?3vg&mz`m?Ab zUeCtf%Xk~>;_II2ldtcX-e-8j-im=%MhyvsOzDjSBEK(yPh(}8g#u%mZcwShxp9zTNd-8KMVL9D1v@;hvZ}&St0io z8O4usj;4E&xjH8c#2u?4nw^*ojgid2P1I$IiRAI~T1=E0-~)%wo-E9Oi+kk{k2 ziTJ@97G+gz<9X#zY!6T8SSQQ_oLILxoxWZgFT0tuZ@gCfZ?or~i$nL@Z}BxP^0-k8 zx>!(UF?im!Q!m!T`v@fFyt}_Z)q!>H8|eW{pH?*Rz3L#A#UGLn=E@-lM+?}oa09!+ z5Gx%6u5I;<5eUxVjW)#Ouj#OBJI_bO2^WV8P(De+vKPos0a&qe9~BVXOdn`4yGN-! zdyMElMMK1o5lw$69-bpm$SP%9{Kl3sTPVL>v`fL}oRZ@^e3d!T`S;p3-uJ$&*bvvz zh;q21%Yg^k^QpGWIv$o!^s`YGGg|$52htUzwX2q$2?@yY6MG&&jZX=2-W2i@vj+oe=X`8-|@l{29M z_G8Cjwf5NrU-l3{+UqfoS!^ND5p{n~abrd}+Lf4}m*X*K*^~E}pU>l=l7SrE~7U)2y7lHnRu2Wja%s5TLt)-cSr;i8q9v~u;Y%4{U87M1q(c~c4{_m1h{#= zMmgv?=V(_l`HA#Ic^s2nPt%l~#(Y+6UbM%~uFa|M6zKJ~Iiq`NZdMOQn0hbkTxBvg zW+!^>4`=uGCTrU4=kq?H`3{Ulh3{CX`grAd1dIQ?C$RXJv3wZn1p?* zj3cY;4EUL0EsoKY7G>6lfsY&NJUljAHRHLZj4VB745ys{(s+s@I$>&{LH97wHi4S* zm?OjrL4W?}V4hjcr^mNaM+027+(JjC-?v%&UU_5uiP176y*;-`mhsd8T`gxI7c~M_ z>fivQ&&vRa$(Pl^(^KRy@{vf1_{HYfJJblP2QyZt$#A2~(G+!}l}%X=AQ}(tzvbEf zJ6UP()p9J&qa|x>65h5Cax(Gr`ua1rl#xTf4RGX~gXfW_#dv0I5!1!zQAT23_P%fP zXh(b=y>c^|JX{M74%QYgI|`fttchfmBNJT*=l<}Sd2-hXpxxu<^CDwyyg=oY6J)9^ z(9t5&_C>vOootcGF#kydeJl+7+dJ=Ed{R+3<_Qy3dy)Vc$FmU$EHZEU<%l2f%=EXY zSdG|_Ry<&?F$>KeE!*UWjLmLgi=g9Bfz6YYmMA3AQI3JbF7e##AUxehM^3V!h6Ntp zK1Y3s?HhG4wreIQF;D+a%zvyrPiJQTdh!-!CB7SJHX3?$%k(YNgRCx|7g;%8AG}TT z@5MCyj&11MDb{aJo6X^6q(8os@u?>Z-u}dP_I1f{M{LjTP;X>tY>bS_cF#K`-vHVD zIqzgb7xSG0PEoKUbL@F`e+tk|y%Y1c^cg>TbdB+VcYcJSzUG?6k7axKc_`&$WR({O zvon-Qq~PJT$8S*r&j-&hpYMQI0qA-~U-|Ab8RTs|@IA=2#v4RES_H&^XHvcmUq|}Q zxtODA^u>tVs?ZiE6}P+?)XxFVOr{5Os4P-Q9Sktks7D;OFLm(r)%2}yOCm~<{AG}r zEk7Q}>&)}dUtFcRa2J05^NV-9^PNlD0^MDCDk?Ety%%+JOjpx3clnua&XR3Mx7Fc* z0}fcc-~}&O+$a5c^PAsXssVVRgEpKEx?wE$}F zkj9BXR|;eT>R9XsuPy4#LXOvJKHx8@(~2H()-U@I(t&Lw8p_xoS?9}(Halx)FK1qc zrsSvRA2Ye_`3@^@PFYbhGMk%8&m6xs#uv|%9)G52$?%EilhJMY%qb`GZi<&1s=IS& z%krMvrgQ98nP}me6N!q3F*Zo=caO--Sk7hORKsS^GXd!t?5wv*p0W33JQ?d1WNCUz zv|iIZ=5S(OMk7X!pqT|Jey~hDOZ%61}v() zVU%$O0Lh2ds6vAYA-d*!D=Dvt76kfZTejYkYfl?4ZEb9M)accqUiCeT#0|=e5wNw! zUm>^AWp!K@zD(z%X57~22YN>275;A->u7axQOTB5V8nKIoSFFI_SQm>k?q;a8$_?A0yj2Ucex`eXK_brpCXQrd@z;OT zf{qIXxVQjL#a`(9p|TZhsO*n{W7OeTjXpd@0IbdLGkLBRXgcfbaSyhP_Dn-8() z1K^p^>Sf2L&DymmPw{?c&!RjxlnlW6OnW89Ii)6#%djj{UZd zm+_1sBbx{0$)Kmt>bY_>lJW!0l;NWqK`_BBb*<&K;THo+E~@0)%F4ET5scdWq4K;E z73Z;e179MK7NMz*XK>FssX^z5`|!&-1TUXizJ9TV&+9(%2}jC#$T(QG;sLxH-)vrA zj4Tf7Q6qqU7{8V0qI@>wU7or2h92LpgEqD{vUeO`t$i87W3%oD;$mq0hXN}%-E`C9 z!V51fAcG29+R1#T&~#I&|#j^l_>Y|ceG;zdmnsOrql6W&xa1|xA~Xw--E5lkBAwv zcDMKayIvo9vJ%^6?49-0cV%%$PXJ8Ny}%cz;GzhscG zAicUoLy!rzZ?tH{efkJc2TENNP61*wx;S#1;9LxwK7%1%7xnQ*7emMf%k1KBv{EJ; zw$g*&L&k{SbfbHjXl;Q*1(d!lq7iKB8i6TC!Ijr5ZJ85j{Bl5bMJ5UfL-^T#+kNj$ zg6x(z4eV8V1~L{wkSl9YuF)9MS4OUZ!pb~9w5wemor~aZO1|hb0S)x!yL6Nk*}Xs?=5`wY9?cXNO-*^G zqIke3+y00YtmJKrkDQDGRyP+<*|^zX-e1fCHlF?^`43urS&MS6zyA8gb=O_Dxaz8_ z7S~>T?P4c@pJa1a0l%}(I;()X1GKONc?I}AMvIgHd5_Xcb-t7SymQYj(d>KSJ+w20 zN4y2l@%tyTAHU!h&2Xv{NB@08@7$$fcjSlscinZ@(uuITW&kV7YEO21;3|{JF&mbp z&%m{{vGF#x)f7GJ(ZQ)YM=TNb*V`NWK1E;T!<_UzaOml8`}k#y^MqSw8E`TH7z-R@ zLsiV#W{X0>Z5l7X&6#^`557cV7O&i4v?|tyv{bvTM3QEI#pcVwE2fcX6#+}zwtc+ zM>Fy+<3YPv`WV4+-)vdoEMTMWM{+ISxKIUMlCJJblwtBedfEfuJ>eHr~bm48i69FM%M zfR}Nese#+_Umrh*DwCD_d#^;5EA2#2-uaGqEDky3kOKN}c4OC=zV|x1S$@&Rc|P|H zc&5t(-qwQb{p|&2U+{`oEVdL7xb08=WTOH}xG=QI7d5?@ zccxx$;(eo^x!5eid)K?(Ridh$VYzj|@S<(DsRxZ#Gy zmg33DC!f4HNfG0+h(*!B2LpK3W)bjuo91m-=8L18kNMqbD>J{J`Oc_YJzwngvWHzv zzbx&TkM->u^R{|tw8Zy(+GtavE$PWp@4bj!ES;}c8S~336P;6Lw0cG=%hNZM83_A7 z#Y|6dOq>1o`TIuA7?m+4-pd4G>|Q3Qk*26fV?sBj4Dq?GVzbCv6L=NE&|AC)z3wUx zUy^}hON8Q}>pPEThkY5*z0?CO^{E+Uf|)4=TR$8lWBRv>O0>ChO1SKsujOau`Fnm? zwt%+)oJs~+1SQnBwe7M&1`&tibRsyadHVT8B@gd_szX{Ziz1zD6(rUSd1%-sr#vaTWeOAvNFMU4tj-|Bu3L>_)-`+KBB+d|}(=qn<^cS5&+MN-G9}B=dQg-5H z0vmhl|7ijz05XPxk5r_IefP>yZ*|n5>0VE!jMuJ%S4Iew9zc1q!2SRI)vqqD5!fNp zXxG*p2UkJngKUJN%0Bk-E{00$)Dw72oq7A&I-mC_H-ECn!(RJm_umtD4arxqGr zrvF}+kd1Oau%q3c^X!68eX9JtS_}C2{u{4(&Ek^JeQxnBMeYnJ^8BX^_q+E0sRQNT z&~W@4-}uHsRRE6v_z(ZEc%ajpHq68l@+m8ua2IVV|HhZ50-ZUeq&6}8a-oN%x8{3 z#C&@1^pwt**<)VDgkIxJ0nk{-DZn#EcaMj28f}gsl0Qa_v<3q(XdI`sRlR3Js{>Gl zV#mWtRp@enGXlB+ zXj&4meA#H~M527>!yB+zwjUyG?Nn(pXR`vvE3ac`$n&-V@LF%HM{9Er2vrB%YB>{? zVKF(%V>KM}kUCjCf^N$z8=m#$8fY%{qC5kzR=?^LBaa(kGw|ozC$t}VvX}_xeu6&i z>-O`$?7V86t!-$0@x>P}KKt3vE)F{Apv7K$?NwQ@#<5JFr#hCNw_d(XFT6aA>FuD6 zMwr!0hr>Qbd;8rY@bg8@8QT~ai!r_`8}MHQ7(Sp*2%u`IW_|cx=IruZ0OnN!6U+zx zk^tlT^nRH~C%Isr-HCOM@Idx!z60I#9WkqvfzJy1I9l#?U-?S0R}4Y>>vTZ*u_IKmFrBF1{jKH}u36 z^5Fgd_CNl|;ya3NZpdcc1)y7fRrhbo)_+F}To@LRL1UUX487LfUX%sD*d;DZ-W zRbBZCCtc^&?ToG9Ay_x2JPsy1iZ= zPVuEDm+`&9;*N}PFSwBbmOl0ZvV6t>&4xZ3Gj3yf_8M(2pvvk!*633Pf2!Om{=~9N zI}z=uy)~j9+o|`)f#fmb=Yawd8ivOZ3P74ocxIA3yX&)4KcH_J?_0e_>#5`bNMAl> z`=QGf!=f7&35ZU01^g`~dr4G?8bl!1`VS>|1&>jFoRqE&~WOu#3F0 zr<$*K`C)wRDa}T>Un0t`1Aq*(vF|58`N=X*>J=Iu-B!^kuUlC!I@-TEozqMYqK)j? zRj&g*z0dMz{uUpiG#l$;)hqK%-zQ+eqAb5Db5=%KHLVA1IrKyUyHm9f9{LUNBU*?Y zAF2C*!AI53W5!P}Z-b6gEwsqBK5Pf|d4bUn3$)m|zn(7I`~dNUZLF5Fh}SN*r6E%I zO#vzLSPl_n%xQD@L(~n>7u(kIn`%4W`?1=Dd3xoD&Pw;# zdlAsYk)WTjxTP-IVL#Zr1t`xFZyE00Mk}xBFfsgl$f1WWev#q%s#_j}c^zM|DP~WV zsK>VqGUxJgyKdKq!`PY2gK-3uFd3WeTee_DY0W$3IgZvqR}vAzNM+GI z4?Y{eT(3Ukmx0@Ah1TW=xd?&1*M^bS1aK7``Y48vdijWh)h|XovIvMXcHMS01G-Ew zT#2pUOe;6TUI3XzM0{k#ftx{_c>X&e>xa?39M}-|APQXhH5fP!MtqmV?mQ}o7XY`Dz6l|45UCII^ zeTvNJ|9+2s>|z&f`?95I&DwE8_?!914aujlqP}R;Wv23J`fDAxYBMsBV|fu(wCfrc zpQy9M)<};LZx|M)lTj9tj9ktBx{k3=9s!~~>jAikO-LWHL`F`gPh(|_)oDyOd-a); zp)ov=(QCr5yT>yFc)qUnp5;FP;j*7ELp|7+RCYhNeNfB&B6ot2s9n^~-SuXm*2$SWKC$oOa5j4(l- zqYdBmrZ+AAH}jv|Fkfk-`e`!i+pj+J0C3Q5PDUGVT%KtsExgmye{X{#jYb3e&K+~i zF&oUQ_#*U{?L(a2o6JU=V>bN}0(UItcn-&>iMMAc8h5^c8EwuUqAwIMWx+@3fFjcF z|BBx6+@)!4BAWh5QOJL%6ItG>lR$1(G&0hIo!VP;?4u4ZbBp7}=mw)2T&(K#9fe&) z-)8Qe*e1q*U#6EG-}Y9n@dtiR`Ju4}ByXrLHbG$8%Y~H@-!F3qot%{^Kzy9tVsxl1 z1gvSx^d8!sVR7lqo8R)5#UK2^A1qEg?X<;>+8&8TDm}jVI!B%IASdd`(yXnWpX>9F zJoh>f+rigA)8|M-R!-K2Q~74?*0U$xzL;I`X(LVE&SZQVqc`%3-`W{s&DeQ^7BlJz zb|iL;;NG)XR%Tc|Xv&xwm1z#W88f3H9~0E9%=rG8uvl7Oe=h`CUQv-^9ejB<+vPqf zDSLcSre_SWd-ywPg4P*&S80g91Yt_ zRC28`%Y3M}2$0-Yd-R-=up28NDI4JJouTJ((hh?mV&m;n0orhyr71L8J!@X2-d3Ii z{eyG{__Va3(i@^iK6|m#{`)Vs5m1RX#cV`tUk_HQ z!||P(p21xc)%kn&_4qJmOFr_Ek1WpAUWMmt4&$c2Xhm!d|2eO>%n6pPata4~<#Boj zL%SDiD3<9XTufUyNcUM}G1y8e$Zyj-FFWKfJ8_lrJ6|25e+6tn19DVp*irWBiCWeC zV|A98_gC7@^uc}S7F$$(TlBG+eQTd8mjE8N#(A)tE1B8uc+UfvOfHZQrrfY#!tC^> zZl_I=KXtoHz?-dTzOH$OM;&$4;yKTGPT3MBi)LngGM$RLwPGV_H)m5Ueb4{$d|-dQ zEq4CEm+#XzS#a<9dp#YGdO1Zy)-FAHvb4?rRG##B;Pc7eG1?{m#YT^yu~&~V;JmTwzGl6aunvP)_Jq<0L&pAZtPEw+^l*ELTsw7!@&*T|*yKyIKYk--LB zB8aQXALLOH4+U46WVa?C=7POqB z(>!+6ME;Xif6l&TRb!(y0Fn$Cj3+HgNfC6wx=kc*@h+NZ0fM>E1`D{bI zoM3Z~BDLgurJ{AlGvsS0>BfsRgv{10%t>TZW=0Z@7EN2aIh>_T{k}=Mb!|P}!*^P@ zkgeNY`LO8cp>A%fZyyivVtd-}OjfuDFxo{?$&I-HXH&PemvNIxV4#e@p25Hcp&9@T5Oop%O0OSPkMenrs?UuFV6$I2)rWAS^fPx(RRfA zrerSWAHinCHL<+zK7L-Pdrb28qce;sI0|TF=)hq*M;jSh98mxib}ws~Oc^s;Esxj$ zvAoO>M?Pf2meqeOZ%<>-iNrkPJPsl(Y`TnL%tws*=W-)?+2z~Q4Qu2NAZ+9QirS$;0B72suQ>N^8j){j!J3czgs zk_RXj#fyqGkl!W42F5Ox#XxsyhhQL?d&D*x{O2MCHYYiA+hlR0)9y7k7UIY7(F`0M!0DrDr2JqVfKnSswJ!<+gyb)Y`1UcXd(qWwr4 zJHvt9<&d}0Fk!R}nf)*ty{rw{n@xIHOEKmYeBO~4-mcsyAoSH+Z(Ure&3Hflfe$R+ z|1bZt_;FpCxv6`Vnw=+5S9XXfrbU(-S8pfCjc9!2Fi^@oT)i+mU{VC11JSTY%| zgcey^8p8qUHn;Uo$HXo1b&RNGyqXI~Vcqg-fuy6%?^ z>ru~=z24D(&K$m2`~x69MCq(P+b9}$tXA`G$5u0S|HmG1nR2X|{R0pksAJgJ!1>NP z#b8sn)yB*}lXs3o{LqI!w75<4Er0wQzp*%2Tfc0tg*~hS_KQEf>}L67e%EwwOecEv z%YbFk{VHQUKR)Jb$KK6!dc9@D^y|$t0|1*qWWRs0K1(%Qu3}#ar+P*kvpmx>X2*0H z(LLkn(~g0rsDwVh=7@sv$msU8TK%nD&pgY241{II+4Hm~m_528V8{&59Az#>69X;7 zMlYO6&i*up#`9`$@0M|;H+_zVO6;Ns&2}97xM7bH>2W>%Ht($7n`-x#c?Bk<&nEj1 zB7Yce2Mz~Ah|m)NRa4NRz%7BM15T~&t7B-<(BPO#e)XP@P&OJ(hunMKNSFbO3u_E; zwzMke>vG;iBfe4>!LXp_VVup$5E*nj`EKn%x%Cr`q=Bt653=&f=r(6){A_7`J&ZTC zeG3gH1GPJABn4OQS_iTT?IWoK{(iFX`Q6PZB6an{E_ zK9I3!MC?47A}W~Z)JwDQ0I>7OoM_xjf_-tz8u7x|3y?KTDf zVxHKC*J!BxKWKP#SIH@hXaHVkYJWUCLzXR|*urIJr6tnP1o(|P`sgRTeDvgkq26EB+_>E|f6zx1e;)00f6DMaD8mCp{XVRz z2G4)~^B2GWd%w5%xO9o(V1GrPm>f6TSZztPoBnsyJ#X`(o_T-n0hPVu>lE|xX)=BE zc}IGEog=1*`X2e?pU1k|GtW2AyNtiy7I}Qc_ZIQXh=?G}3wsYBW#BARlF0b@o+lLA zA}u|k8dFx!h^#y-XO6&{0>nHszKkhd6v`g|vip|rrP_V{J@0u>S*^&iJ>&`Svqco_ zqjkHC<^h1eKuj^TGKg2RHx!e&-Sgkk68=-wi;o*N`{>p{(3g_fowEmB{-`cfu$5!T zYE;Gxdn*S}!gB+Au{=l6z+lyS7TRNjR1g}YZ!wvFuh$-JVMFa*j>&_cFIhmK=-{l; zvjx6?P@^}1ryc7s`%2qYx(z^PayED;ME@EO>x-!obJ3VszNKIJ?+D>MXQmKv`IVDn zIAz7NAolMbBoS- z{lrHR#gWFU0FyOT5u@NCWJJ3*kHAzX{tF-74l$?u)wXF29k z{60*ekBFR|oRQ7F8$|ph@3(NYnRMYa0mx4YsIfxW>;a2SxK5F6dU0JPe4WyNl?7}y z9r-b*n8AA=!DoRRAB(7$1q@0<iJTYmr^yQPg89famJJ$Tg}J(^VBns0kZshG{yR6zk6xYlRJ9MTQ5_4 zOqs*{OgJM0V*XR~#q^%xmUk?7y#h7X$h|sE3C~!b7pmt^sQq-UP-N9uS(3lBkW1y% zhxvKTyU8wwycqI$m*xs_Hmn_P&+%;gtLMuh>$d#Ay>HRIyh80RJ$ClnVudgf$DKF_ zQbz6x%J*CuT%wGC)3!xS%&&qDZ@3L0wWy!b;s9Xl{a^?}o{g6-s#TPurZe7^bTv)+ zUimlZS@i&_<4>>cN}Vc*HQ>es_AAr|wr?7XV2+Tn+>?bJ&d?5Mq^T?YV;!tQw@X{< zV^P4&U>ZL&xe4HVDQ*?;8;I6DPElZ0G85^!Y(YTz@c=qGWW1djEmFQO@N|uaegEPw z{-R7$f0CR(=lRCDSkYcsy*-#KvgCM{8TFpiTowPd=>y-;u7COCjpU z(S83Pd+z~%T~Xcr9*qhX1OybNJP$=Wf;1^glVYJLYOo}l#F#h5mh!o|_l;h?H@R&%+}+Uv~hbN&wxg1L8pKIe1J z*?absHEY)T&6+i9;?2s-mbA{u3uRG+*2p4 zz;jptk=?!t4_X5NABdM56Xx+40ibV@pQ(*?eK<#$@6B{l&gPqMKG|Dm4sW6ppjvW~ zckv%2{aRWnAWcu__r_Hmi@A)kcUogRkMCYTkICI0)|n?uVp&UiABe%^hQm z+be8U-dUvLJt8j(tfGQ$y|YNYyTYkdZeAHZ#u;n>BK0C10I`*>x#pV52|9oD4DC+* znvU9`oi0S&H;w$((LloICDsQ^2TLKhN?0OXKUMr^93Zg#!L0jwmKpI8OtG+9FtXNN z^&k`s=gb~2D+M$CN9%n~{~&(X?gD-nsQzqXnCY7YMj~LT*2DtJY(VgF5HoGyl)Mf= z;qtHh>`PlbPw#gZ7Fj4c4^*pdtW%&%kA{_Zz3l~18qLDEfWD}(s3>d#!IJg; z2>PmA@gJ%uOOh;2VSzzuF}C)5+S4YRuUt8KOxf|<8tdMUEW}%iV5zuS%S4O!oc_cb zB$zIskNTY;pwK#tcb-CCj?DG67RwF#IN$35Jh`jJ@BUKE8?YSe&y2j{HXfw%S>|Qa8XM9~ z4wR3VgKwz=SEtWCDi6LiP@!)FTe`Qgma4aqRqDY4w6Q;O-?R(_@m}Wb3|x5529N#s z-`{{A;ax7!ijAGo8^(pVc~$x?^V;efZ;SGnp8`TXZoKiv$%!YOWPX2J3Rr*Z_S}g}k;lj~%#Lbk9%WXavtWA)C@T9eUO-e9S> zHB*g3toOSrlQN)MglZx246IrVJN90Sa4iAb0#owz18F2+!M;y~-k73xbgbkz9T)n4uOutDo)>Y;AwUB_wzeNF;9zZTa8 zo+&-N`*lrPIQ0iB9H4D0DO)Cb+lmKjJV@uGz*~%^Z|l7e3h@1t=>HwH9r@)UfM_=p z$3rDc{%t&_p z__r6l;01Nrmwv_H@gdSL=SY`*S?5dx_V(F(@5x5$lZO`n@-?*r#Zh%!kCc^{-NWoA zW|Iu`dYImSn0Vla8pH4%_b8vdiOIO@uDeb+&w6d?GxCq2XJX&YlW}9uThCh9!|B-q zgIUfjDnDYLxxZR@4wibCBgArrdjH4L^$6ZW&OXpu4H;wdd7T*v70ZtImy^e$XUqi z<)R?!)dF1z(~=-s(q?EI-W>?}Vv!mE8n;rFHpIMKu~my%07Hd9OFM9BYYPAea64mp zD{b*QT3>`VqBuV#5YDC!3p^}3?Ig$)dEo3+iVx<5;z;w(|I73o0p1Rky~9u zJqJL!&|o0E3Qasepxzzo^V=n`;X$(;L8AvK_+y7B*H>gc=kp)O95eZg*S&6X*kOlF zR?7N^#lXi~YY^4wRk9Fd~EUikIa=z{xHEUWS;l{Fz2}`B9T_BNNa%YwuydF~z zK}+1Y-;{twXdi}f*F6qY2edhuA&+Xk3Zs+z_;kHXvpe#}w~HlSX6Gy!u|w}v0Ya>c zD251*9ANkoWCU>)fCLM{Kp+ROQ~Sy5$UCL1%7YDwGAJ*CrvOs2g)P#f0`^AUJ>K#B zP*gVwh<{15RjeLd(CbC&2Q0a^3$?VP4Av!K<-%ghME1`?LbT)!EVT&~$KBqs`hzwl z+Iza%wopHB7nYcdoatTgYO2N9w@h%Fi}^=+}m|j)tP6WIXU|1qYVJ! zdt_s*fW$bKTNAk~;9LLk&Amek@ha^wKJm2EtgpW+>&O=ss^v~io}ihZw7^)!qH$l- z5sMg{XmJ?zF~@%01M01Z-*1=z{#3uu6YpLs(07~0w#g&Oiz5YWm_Xv*F>_i66AFFq z7QdgMHhxjG{))!H-Q|7v{iPgM3!W`2564Eb@{p}~_P?RW^2Cn+rxf|aJGir00BCm3 z6I`0fX-~!k=A4;)+R&S|hG(#7axRKAv*^1y9o9iY&p=y(Pj4hE;EEM1EPf|P9d4@Mj}q{IsQ7E%*!H|z zeVNN`@kLD2!YNUvwB*ZJxnq1-A5)r;In+w1l zDB!l6gxSM&AAyb4@0$`VoX7hK&DyW$j7wx@AtXUq57z9Q@AWhQHfD({S!V`qDepzF zb&&-4<;oX}9?L@P`eT#AkHl=(=pF~EGvjvfI2Z)fr6E8wsA~Q9rPbOVR|Hc+R)HSH za|B2vbIW3+eT#QJUAEYHTL$+j-ZEc0t2e6%6dQ5HzM;N>HuxrOtp3|af(QU_g0JvX z6oOv2>VN1n%hYCX+rXMheH^S6#at&dr6EB(M`%3& zL0_b2Tvns){J&9tM_AS$C9v}YDGfFOY$|I3%7J_9YmBXw@`yaslQmWrCq~Gs^R=69 zvP16ykvD7O##M6NxKhCH0x5c~J2gJ>JG4m)6TC1E@6GaG9B*U4%?DU@WwK^{T*f7R ziZ#%9k8!0;*dcp{CVICjE$$*~==tMCn`cRuJOPlL3WDD`2OJr}WalFSHh?}RjXuHg zF+|{Jb`ZZ%AQC=eG7-mW9G{FECQNZ0S{?Oa1%&o|UNmRo3k`9LG5dr;Nq8Da*0_2@6kOjfZ=z=8`o-g zx4Gqr*0cd@8oOw*V6mKOAJGjS1Mt9ey!*?(dZ5kqXB;b8wyla&NX$336}qBF`4D*e zCXGL=`j=mR`Q$RWP&`(?yzD?G&LVuk4&<>b_x~ajhE|$fMh`5v?zeDBug*?ef2SM3 zIRm5Rp!Zy%EC^RO^R)(J4}^KyV*|GbR5J~h1B4f)Uo8830!gMMG;rVXj(1GHBnE|X z5p8}dhdaj7F7yA<2ha!LIsl7Z5pIZ$Z%W{OPP6iV7I0)IFUuX|g^)+U?k8);v-J+k zi(~$LGyNw4gw={D{Verx6cY6!1|4U2K1#y>rgDVS7YIL51e_~ZmV=3#HI?WZ?g;Pl zT^Ux7DsA#}fJ=DSErhk6K_ENWso=~NMFv(apfzRWAqXq)JKzK;4<-eHSOd^WRy0>1 zoYOgqirtF{aRMJ>t=$6u7Cox~&B1H|vh{w+%PoEmbnE}vmO#5o<3d}nUj@%miIzMf z0CnYGcPBfL^z!sRmK%VA@ut&nbqj!1$gic42EY%cTG|f?`<#wKyB_}|Dc0?!9C)^# zEKpm@QU3t7mmRIfQ-!`*$k)#qviEC>>TpP8=eD`R@t@?XO7?=lr^i zur@?qrv3r=K_`IdCdz~RfK4_|`Dr5b3l>ejw-ms7(vCY$He0!}OWi2HBRHJ0^wP-A z&pg8@6MCS*CQE7~%aS{)K3Jpn(Jt7tWN~K05f?y?4M+>B=TF%qC)GQs}sXl_om{9oc;a+`L1DlOz5yxL^EcO87ym~GA9xG;iaGm1J zVXVFf9(bVb>VJxMT?3pq&`JeBn*Q*9&RAot?k!x>!Vuo39=MA<7V{kIyIwi|{=!GL zwS+~F2rVY}iu4-S0#S>ArJSY*&LYF~^6ddWzu&53@12&goyWBK`9)gNJ?^;U%-Y9p zsLCMv;XCafT4vw;M`+^!&0*+AiD8*_100x<6YhZJn73=t6JCYoLt82abm`hzK=J8V z2x0O7Fczw_@*xxn`JbZMyDgt6f9kfS1UJ7=)%{}xIN5*#%_tk;jD-N8xG9@QiV&>| zGzrxzL>(OZ^HSezX{&X2U>Ne7S(picE`m-6D+B+wn3h7EUegBDcG%xJ1SH?@OX(3f z8|B2sPDl=#&w0iC2FfOs;WQZVWd^6=zXQ1?<|?iqp)KAoak)6>KLB+hf2_>6Xp%wt z7zb=2zPcY1AtRPfautZ+B#PowOPn$;l*PL2aMk$ylKPJ&PhTebx&H4b=Y3+%T_@|z ztx~uskd5^Y7MqJ?afmT3@5iQE(Hm&|?Vz@NU+un>IFe;tVxf1dl1=6WG>8Xk;h~h4 z9lURnU!DU*`k9@!uaE@=Ao*)P>GCnF=UsE-?4S4ka`g*z2gnih*)Qa^F9)-_<2vc5So}mMfC`fd05l)!`l1)T$R-~wbH4Sh zZ#9=82a=v|tQ&ojhV*RyP?2E${WK?{(du#U#q})Z&Ak2v!pT5*K1@CHGBH8!I$efFRzH+=XG8S zaOO6Q0pmE}VqOeT%+T!E{hXNaI#~zqDzok$^Lw!7?F8Q5swD%QvYC~ewMatmVhQhe z33Po};Hw7HEfxyT^Lb)++kk-}W@erkvn3!bjf4}+GzjwlM~8M}0pLPO;0XS&DtBus zf&-;gFrJg{R4Gv3ea!nA|wmvdr4^L|1n89)k5pmfx$y$G!=v$IHLW`*w;* z036FL8)b33Rk9A{001BWNkldzXlY$T0?vg#vRbE@; z2Uz&m$|;jCCVn3lAp4L$gE7eXDe~m6CBqI8|8J>0)_|Wv9KY6NsLF=WfdC|e*5j*4 z8`$*mp8}}sNERWN%%wu|?&w1fnf$2&DsR%U_QgrRXW!EeV+yyYd$KVh=iM@7u%wGs z&!5G-TXka-2^Y(mZ+`QeCog^3%O+>ae~=S4&XOfNw+mkG$(ZGikzcj+Ka?)x10DbR zum5^-?6Jq%#9-U)wwt`-cYk;CI2~$0c$nx1xGHV*erf?g&uu8&L)6Yv3pj6m!%d!1Yrx#lTbcIV2dSIcGP-& zEd(gbyPN1e&f+~#%K7oW#9R8@l@_%spL;!Me+0(3AMfubL6KGk%PXsp3+vU9(P`Who zmU42S1pSeBlAfkj`SL#Ekox?T$pRLaZ;=5lfzGS|c#8{4Z)SewA zTb`qI4=a-kj%MSujGw68fXa1o7twQopDoM!7}YZ-cbBr_An$8LE{}t8Yn`P`7U6t<*s^bMJ`v$d*G3KWe@!n5} zEy}7yiSO2$&@ZYNVmi+!-s|b3F@2W%wFN}S`kwUh9ZuBPQ5LMnN>^;7VAWgeY~s^p z>AF>uc8`g-2rvCtN|XC-DrTn}Dv2$~()g9~!Tpkaa0$LmSeTWXD6kaIPX88vj7#)V;J*{WDxD>oI;z>m3!DeBNMa5w1tf-u*=g zoa@=E7k)lCn-b^flv7Tbe3w~t5wK%z!I}B75?ai(37dfMg@S}tIadOfrPm9~!R79= zgzwDy5_nrk(C#9k_e{dKNNAcr&XDtl7Mv-emn>!aYYy7V|H`5;oG%c%9>kek0i)D& zEtSD;I{b)8L;dk-t5z_I2<1dR8(6=Xe3ZIYU>p>U^F+%+P%RA(qRK=jf)^*lz@q2* z2O2f4d|tN#++w`HTDH>Q+jqHW$3`10vE)TK9ge`lFVgs~2%!NTVjlzm><;+ZN;t#6 zrGA-i#;b+?gJ)%2#u;b?D|H;8WI}zNn-DVlNkCpHek9JCw{?uKe;Lm#-kbB=Dip}O z767=k+v#WY;8Xa^=}Yq;IRw zTDU74#d>_%0i|H6A3~Gki=M54yfMtDv{=(P`s*L$ zLvy|cvMDGDW;@(m&k(Tq^bz@fcL{1ci?{gt4eFSgbV{TpaG?AyR^2&T=|Ytk<8IM5 ztN?2>b4SQ2e=Gwi6zJ*^ZsPX>+0M@z%K$n4A6v|Pl)a6>A zcr1-f`{nsqzZDud|3@Vm!K42kSSU;W*JLTZ&Ox)v;cVWm)hB@C2bCqRfiNlc zssODhkm%@M;d=(c-j4EZw2ZW7Tuui@ZDSMQ1=`ry2u$Oa&MK5>ulgQ~5*v%~_q&CF zz#X1$jlcWq-q_e$v`hyP@Q?Y+>Kh+5{5I``h(vP$lJ{L)Qd_jV)sfD4SQ&AAB9p$& z@uAc8E%nVsl082xeG~f->);*4=oEl^ywbBFi?qlY_ywOo{8Bl>&5nIke%i)0xu%40 z`mg}s)dCbh5?#!KSa=PfwwG2LjusfZq^l12S$As!PnA|SgJ#m4;c{j z-pzn7)`{P_ZY||Mrt4x`@N4804K|Ws_58vYzF@!x0EiBPPOhg`2j4wV^XSQ<)_ryW z^TE=0uEN5wp=LWR1G5C|XME@PTKK{HGV@&S@2NPR`UAH5)t|TcvXz&YJJ{9R19Afe z7kV!;Z=S7Wz!!m-HzG4a22nkb8Q<%@lLuNP^dev_*R3^k%AMC^?ABoB9wuaBb>U0E zMh0=+7*TN-Ig zOH`%ab!jwIh=8>$mHG8>SvqzVAm4+-%%fjZcqanc$m4}^h9Jz#F7Ny9TW`}$s2Dh+w8*qiu&$g$rdInSgYA6 zhSmO=l0mQ6E>gGl(T4XaBEiX$X&2+}QRIV9&X^>!+xGuZoYCir=L!2ldEZxlALNW) z!n@!)BH6^5x@#6d$UR&~97g zHcofQebEDL(_yfrh;v`%d|J9@4BX}PJ>3!O;lIb~HYWQx&g>0uc!NcZAhZyEf1F$W zb;aJqC=rifTM}_oDRO^J;Ch&(H+C{UspE5j321!R-vb!4$?I9qde-Fke((1tFL}vJ z3`BE{^;wIr#`r1cHj~ z(Lc9X30P5moA@Yt}rD|Unt5+P%O~x;ljuv<;BX(ekZVgfg zKZ81i@?$$Z&j^?+&+FmWQDV>oe<;yrKlKggpl(MEr+ui89-*542Ot;we1XUVZ&#L0Vs z0w=E}(Av7P+;5J%INlnv%Rxg+9xVzA=NUI*-CN~FIobmRq#>RlL5+{n$rc1PKI4ot zCMTYF;^Y&b_(WrvPgiu}&i7yDu=c)KG{|%0iLri!K5mfk_GEtYRSlmQ5qX1fIhRSN zKU+cG*?8kizcG*4H~IHG+Vyndy!U$L*ONPJ@CU)3Gi)(m9%L;Bn@8kc#WN^u4U*U) zJ;2vv^jPj#9ml|3?7Wz+S660ESouyn_0-8ZG85y^hhN_>BfYg4hh z#lX&kK8;o=w?M`GN*e~tx=z>(LK=X^c!P8a9JiK`^RlS%L1J*PJ3`|I^%n}yt!$h( z$|)&E51)w!P+Y5Bez+BKP`5~rP_~up&qBN7edA~PAhxy8BrCz%U#WeyPR2S#5tFBQ zWV7PG$V3JH{8hNjg8i#d(K&TQ7C899hm=XiQ{_(w@MB{UXLGYbE4oWy$>WS~mVSL% zoDjgcC>XEk<7o&*behKcS0xV!@j{%w8_U_@wj5sMg3}T!orN)yMUbU`{Qdxv$Puh^ ztMw`qKId7Ji3-Af(7^{=7?-JtnAR-HmJFi&f3I#mkk^_(j_H+{e`|8k(rIJ$j_n(( zJ9)5N$p=&G=LJ9i`Omi#Kq5bl_1U7lkohy$FJq?o+{^dx!O0!D1LuLB zF(zs;!#qN^l*?G1dSEXTXbjk8M#^;@1CBlVwBEsK_7<7W&sK<*<8%h+<(eJbCLcVk zWBA7~TOAuLJVP`Qm+Bevh520xEd2Wb7R-=Y8aYR0oI%j%pj6k_;APh?r$7+-o{$Wb zR{==^OIhd)1WI_wjQ=yTDgs`Zos-VRwZ;3A!oaFXd@t(G#txjeUAU8$JlN!6vqlFP zrHl$b0swXJ=RQ)kp98?KdtOgyMq3N$833E<%S$0xJgrrwIQ>UpSn{X}tkAH6RWG;n zla(0&=m4DQK7bFOCqS{chnyxvqCrbIrOD&YkpK@v2CTEGa$9x z_qx>Y%pV05)=6HVcO4G_EJmMDHm<)rx}USA9*AxgBdmY4~S>{m~hjDeY+{O?WtW8HdsWgZB~x~z`F zGUj^iZ?!MBy;bhYl`AcvG4UrkS!4}1_NW{{9|nsbh+oiad{`!4oo5S=@(KpkyHNpS3tlM9ZA?H!@`P)bq zzZIe#n`qcP)7mi}%ZU?%smNb47mQ(-vA&Rs>P$lumnm4IL#Ay9u%1X%Q(tE0f+43u>3_a^xMRE zC(EbC1EN~_%6nhU?Eg&5Fi*s9457=i>}u#d9I%NC$V}aZy89s-2-M(oXKNdj`p+g3 z>dwXmoV)=)#0_H!7^UP2DqH7#pv8Lo@2XHDNTYoYd`eqAKA}Adz^Ud_fL#S^4vrhZ z)3OX;s**F`3m|aN2DSA}0b-7;BEFcN!lFzF;o>{1D@e7Xir)xd+lj4W2O?dg|M<(V?* zORQ*YoWMQgV1YhBILAKnjM$pTN+Eu&C`nF(fF}t_LjZO*eO$xliQ=YVG$~d&HhJK# z@RoGyhzD?|T;If!EvGF7hh;Kb{Gx2WHw26m)3r1aeu8`wTZ%QyVjq8tDCk(fmhz3| z%>!|<9`owZ9EU|tZ=j0pP781IRk!XTTMK(O>h*S5DR!kF!|?Aj-*CQ*r$ZTaG1u;pfgh z*N$Y1n|kiXKQwKoTMn<8j*~3^*vCF*C#yX9$xpWBa+b|KK0UE)`v3?HW7_lV&TN^A!xoWW_RBjPnP-U2-V{?+Vuno zWoO`yiiz|ceFJuOlK?(p%PlR2pp_FXTdCX#Mw-Bj*He9~^(+7(% ztUXW~f|6WIv_DDX>`9UzOf=b%`|s)lHf#`92yn*I9pBzo2kW#0rPxv+#vfQ-O2hzu z^PY!X8Ix-*`m}V=s)B|nkEj!%l6D-r*Itv~R1o7A%PGIruk-qCo)Mz=e($~2ncu4B zHLuN6(LC$)z&*~gCLGzj-~Dd$6a3;Azi2>^lS1z8h4qYhd3(z``v~bkz$Sf0I2BIT zz{&@JL#G1t*k#+h{L~YC@ivmh7x3qSm`^_WYu?|rV&f#gv$Ao zKlzi%(+@gmvW3RqTGD}@ZdG`15qkEpQ!H<0sdub0y;*_}{y5MUAy`aPg^gQdvIVCI zm=^P8P}=&R%jz+4Y-6iqK1pwaF!&8Q=&Q6V?R4hA zr*9jMk0Icu7!^w)J~jkH{dhU&lBF8&1M=g1OF|?3j%Gt1eLq@ya(~6LbHC;HVp?|8 zDca!pr8LCm;z+1lG)O($Vorj$`14w&--!{Z#p_R<( zQMnBGJcF+Azn0hF)fr$^fFON$zWVNJmPyJC6Y&2e0bsuCd#->z?}kM)#|MmjUoDKK z+zbvE0r#2SPX3serGX~pq0^4G5kK+_@hFb|TsW4&5BE2kN&_jEY7 zmm0HP^|XMkZMWTa^4izF)_@edfw6kAtlGOQFFoWu`cEl_;QG>4J1DFS*0F1@xyF`B z*(C9JMWA?sJ{#-kI{5iVMRu_K49Ilake@I4_R6GgfH8trb0k|_?qx}vxQ4i6VL80w ziYq3cm30tM3lJO&ZtboS*(zxmK$EL?{p-J40BDYXJ6L|Dw6V(4kqN!`+d!^&(l3XH zZKBp=Qolb2v?7!A2F2>Up9Mp#TV(jmype!Wz(wMZb;OuJYJm+7!e+)pT%_Z)y!#Ce z0{kH2sTpRmLSP0i9e_^V2k5bD_o*6Khm?>lEDht&_g*cto}<}1J8E%~#wz$233vSH z_Alw#EMUjBwFEHbGsvgJYL699lPx_;O?m7NW~q{0!}+2uSQ;LyG*8hWWzzziK(GMe z+eg{lqrNQjIz6m9B{K^@k_6GR`pG8|V{HuiH~YB^wAjzJekK2zK^H7!m9nJOhuCH~ zz5{-pY5-{BDdJP*$K};_7JB3!8d%z*l_s^>>NXt!(=20O7fWBgS3qK;GY7XQ+r#i+ zAp*?8hgdJ^<2BSCocuYV;q&@jQI-&Kccv~_JbgEwog$(C00*~hwwdw%z3cQ}4v@KD zYFy|^*=(pH_E< zC&;`H;36Qj9}UOSFyT({`|DkV72{pfts*iC z-iCaPT8mE9e{Iz@V+VW~vBur4aY4Oz-g##Ov&1#LUdN_hq2=sbrN@1flgm}-d-8Q- zMXV>_4=nH_<@;lSRsiH-0)W<@h6T094{;o}a8Ij$TYc;41{S|Xm@ZZ#)WQXAz;D!6u!`4Cegv&$qRHw!yCD`aMVP=@1t~V{9v~p=UloU zPE}e_u}9F78XEy&w)*%p6gH9iS-KmXr5W-9$PmdwgFfN6PlnTEuZpk%hFZ*T4|btY+4a}7Qt%dPXG_V zh!|*ImK|9q8a!EaQjgWE4s>r1<%YIJrDOspw6_aV3VmZ+$TEV{=2Cg67d*(h!hk)( zZ{YAxJVG|9U_rvMpRhsj1>ld3M(%gYq{Su#YP0)t)sP&3$wda;{gB43Xw*F(Wp+PQ zW#J;JGaET}(!`M%pSWfaM44rFEUrBFa7!^$O%=^mgbiS9&iJv9$uPONH$ZIR2CSxp z$Xt`R$WQSr7Np0?{RLo=<$eZwHa4Q1%;TrfWK8My^q|u)zngW_RIH2#@XcxbfBfzN zzewgNt6I7^rfmU2f6lRRd=|}n2QB5si!eK5SFh}`I?uxil=o=qPD1;TKTF96X?YgE zKnysiN|#@vWneb85O4Rcaxj9?cuMH0uXYE_-5>yYr!WCa)tf1A+Kk0=-kHBGesJ1k z{L!LIk0#yC9b+9E2Sksd7Gbp9xp|PaI=|O}y#|hf+18+2q)bl}2P8pWuheqx2S511 z$*Bt0LYzK?4hjwd>ejxW>URwAIwM?k13$gDtXw(STY!mkYz-6@UqE8w{ijUmzJm&D z8&)-T>iv^uS}X-W80$&2=#>grP~!imh0ioO1B}6dFMj}MKPrmQ+rVifKQ4-%!9a9< zf)UdmW_U#7_hr5T?ZaRh0IVer@6L`gP^qujSS;Yr!B{EB25JlR1?ygZ?mmUF?>)^x zfmqg43PuGsUFG{}>nuox~Pmq%Sg#c;5~B!rQe}sev-{8K}3n z3Xzhp*S{{U7kX9tAjnEu13&uQDc(9sJjli#c9CPP#BY;#{79|bb^x6Pg(&=j0`|+^ zY4G3-Q{Im^Y^f6q#k67fV@>84O&>!~#@rvtV!~>{*VI3+m%@1us}4m$c}^^U+Qd}v z;A+5`%3l?DXZJrLnb?&NU}w4p55}+>^J{ber-0K?a_}FMl$XE!<&zzBRxMVfI6mt{ ztAM*HyDp96vFDlJ{oNjji_cqNYcM%2B+LLZ1IHF<%{sByUhkz=9^SV2%zsB3MH*y4 z9l4;_-m$z|_0IQt04dX{_doZy|Hpc{iLApc(_+0tw;yxNF=o_>yO@y*J<#XvXW95% zZ7lii-})`fV@vt`!H1EanRg=HBkfu`CiYeC)7-uq$B&F!ndO381d1KI2;gfGzX$r_ zfXmDg8@fojUe85AVy=OoUL;Kgp$#BQo@a_L{!RUN zz0CgR3{U&@O#oc0a%pqr`I7mJKn}F-ieuStdA4fb1Jy$I4Q6e;StnNJ@N1^1DuBhvi86 z`Sy}7^WX#Fzk$=$v>X1H(H>~}`?72uqzT1U;1c9mq!f0y4AG6(<6tfYP!?YTE)&~L~cmpL1XE)NgBVL9&>SjxJo zHP*)NwRBqx0L{~Nv99y#Fz@+5ZUtSDWlaxIO^5SPGt4V9(>AwvtbOzH_IG2tMc$d$ z2A(tN!#an5;9&~T%#K}lIkRCCe?$NwOV+IR%?oKmTHg8X-~R2%)1LOU$upn%%*mmL z9y&_PF}{fPUj)~9n$b9ZnV5?Za*;vWBX+Cey~gCa^#*L~{T|57b#JAMb-z@{tzE36 z*7&|c*1j9%n-GsIo9gjt@KY1IMY;Lm@Uc9?v>Ys}-2sF<5wj5o&m5}t9s(BtmOyH$ z001BWNkl-YfkfzI?7m&MpDE*3jVne8XAhp#TKCBy~AlZs>4)=?U)xsO(#?I#(7Pb&Q$ zEiDhkzRGnn{#4rutjlJBr#$5;lXW#o?#aIvux){~2#8{tSrPj)?#H~xz~GpbDg&{> z_znQBE7OXM@p|R9RT)(HB?G}$zJ4#ZHSr2J{BOPytG|q#-8}4pBgaG&}>yU8p)4Xe$?h zjyfAiDd3MX@LR(IF*uE)yaQeAq*@17q0CArz+9|L2aH;l0ff~yOgnrk=pFDh+MN3( z0>eC*Do>DaV7gu&qyh8+qFCC@X^Bu^FtD10KZ#RPnO28{N)QvrRQZps3-`V@QAKhvjGh&#mno7M*)lU zJ-(c{Bs^L7*~kJA1ZZF-rXHJ$2GvwfX=6zPDrtD+`?4YvZ$wkqyc>ZN@T-#hw#**c@_S13%~edF^dI z?}0WZSdY~t`I*|exdj^th=E$JmORejEh^UhUVcA=i&)RB`?7p)l{2RJt4v63@pp25 z^V%Bo8`F(r^oZ@9S6;>mtv*?_EiKvGqi?V8TXH_9B@LE8HiPi-3*g6+Fd&d4SZ}-S zHnRZozjc8ju2V=aHhmCS8l8zHkqs>^{%m2LdGyWv5&sX)>di#%4X#$__6AF<@Uaf= z4ftLoTQi_}1j$UDQ8smG&FBDqtkbj0=af@UnY{I_Z#C2&uV~RSVM|`csonp(!!c!8 zXqN(RY*`lorF%C?$igxg31GcXppWG>ERzJ?yWSOpckrx)9lJ9y__E;9ylVZB1#B=la5XdN;I^bx6 zx1*Ft-_+f`PAAX6+g9G|)jM1LD(KDq906{cJ-^-KYJo`n_;UkD72=^ zXOiJzIjsMj9)ZsIf!W3+EPT4}n=?FK8`eES)4W2Hk{tvt01jM$Tsz4@@7V582}E{# zyQ0Up?9&=cXR0m)1!t@fZh@V^0MONbj8~g`ACPyWyowc!atomS`wCopkiZ-hs%J_0 zoFsbs(yr}p6&(S4&y(DEy1oJ5+#8IqGJb2{t1pNS05}AMJ73&a05Aq{&N^jY=O9<% zU*AAC6(!TyrrRiP+aD-)A3IQ6vVA(lmVEm1|C#Y0Dw6@H|8If7Ot%O&^0QWbJWYNt z>#z)BT5>6aN~c#3koj|`O^XLIEqeMnzT2x?E@#m`Xkn42TrT_(`?}YcF-@d{-v{(@ zRNDau958vuJKiz*%x6AhAz{D^y?#Z;5e)l;6Hb_%b>^9qzx}(vv-bg%zUiaY<{lk# zzh&CTdJi^t%o|vXK5qdpf44PTXc5&Eeo%z1M&$Pv`JV-6td{|>qDXTahyeZ}ZQNkD zF1vh)&oedvcou`0Mq%XVTcXI><%uxGZw_A+tQ|zkf8JNWI{Buau|#?gXK0q|1p<5s zczkj=xnpnzdRZsyQ`_N6ynGM*y!>7OK0f;&&{WTFQ{65W2t7> zk}vmB>MUzl-#F?!EpTwpoc{~>s8%Z%(j<={%>fVTOJ3E222BEp$!&|kD*7E74I`*7 zboS%myv~DVR!>v<0BZ?gp5?MfO8NYN^NTs64M5~=4gjb?SHD27=2?jBU@n3h(hcXtNnfX$^GggI}px+_8YztuJ zD8Lm0c;{;d%QEoBYTLhRDFguM`?u@Fp;!1@89dR+wvNMTC0x!4i@3D^EOAB z@W04I12jc8(!Uys*s^pEx;0epEX=^{L(0du3)o6*K6)(*ip# zYkFYG^Bn^>QC_t`uh_=O;V*?^~P;Br#1l}S-4wj0GU@J;gZp(_%6-+J{h2N2vU!7;d|W6(1S3M({r58QO=+?tP-$F&Vcp=&Qi9xm zQu%X~6}#y0_u?KtImE}~H}9k1*O9P3LYp|Aqt8~%S~;#Q6jqgK0B;%aR4ZVrWCUI_ z0H>7ifCJw{f-$oT^_Gs+&z82a29^*kI6>{H<@M9W-2K=6M2Z6-YS9 zi-6TLPxl;1RhoI88BkJQC%;JV%9kPSfQ}`ffdvyDD9+|o6YI=g0C<*9i&facr}1cL zOXc$dmg+#BGIIsXJA1vcD4i445ACxv&ygmnY-VXmCL3(K)X|V)iS$d^Tcwx!; zT#isGM-o2Jms!(rTJ3**16acvkZi*GPe5k+*EiEZI|91@o+gaX5$M~1 zel2~G$3mV|IS;Y}eT8He%gECqy83#=^K#jgcSf#CS@9iKM-JC6-e>Q*=S;t}#(CB! zE&Y<;8v`UhewK#vk`&4LWTVJfIg0@1UjC5~x$e0RG3~tk#_C)9IqIius0gxQURjZ@ zJ$*k0=3D(S*4Ojulb;iG`Uv^$?XkxmCR@+f5qBq^bkgLL3Rd0Y={vPFe3DKOVHx;! zuYbK+{>XQXFXq)N^Pm4;*2x`_SdmDJFk!4fkGU2Zh`Gb&q2kOGo<1Vr%tSn6r!IjP zFVk+_%M`!oJjLeo9g5x=?&CBjoOtGzHbR z0DTBSj`Jd3-U}qO3C*y*l;fisz@)az6>SmFV*}ZRc&16Vz(pFe3l-&$k5CWz*{)?} zj&nHi>G(!v5ZL!&SdHAzP4}>H4gf6m4puu;G39^t+baU2@L@Rhdj7FpHCAAt z*TC11dco9IWD?6LZBnQ~JbSmu2!p>9e(En#N&3Jt8hLW`)R0dM#Y zlK&+thvnoib09e0|se@lCv=70&0gK^90)NB{{QvsZlP}N+ zODR4voNVD=g>yTJ(>)l>{{$2|lwe)NYoc3hL zqIt)3*$~p|kEnNJy;l{4&7)108@axjcYA%^1B3p4k3TXE#_G#6`~V-PNh}|(wI$bx z6S!jK%E?9A5Xy0OtRfOD+Udvfa|ExxNO*&zBC- zt4{nS7R4@XPO6QWMf<({D1#!rSfYF4T;TXA3bQ%rtV;3mkfdJI}1~5KB|F`12 z#bPOhc1Ax3dZ~_ask&uNtHl=}RRLa{IZhd22|Si(p4Qr2p4T!O>6_&z%SWakMbkb2 z@>%Lv;-dkS>^LnHHX9#`HQ4GCCJ6(o_6kXRD=d`1>xCPB6d=>NZL_P?$G93UB>&BW=4`i*ro`Vv1( z_n#t=PN*kj&gS@$I=`lVng@EY8pB_=mWhiW1?Lmrd($nfh7eu_rT8e-)1xB%gcB49 zk)iJz5~x_EdB*@_X@`Tx7*PS9Vuhkb*@ww#M5cT>zkk;$- zoTvZq@p}uTds>1v6F7Xg-FKgyc;bn+Pv9Eu>}8WEN5b8r@2N=r`Q%$#_GQy3VP4?% z9uOZZZysMZH+NLw-LNd>P994;)?vN(BIEQxW^2&(23saT9u)o`f`40^D2T`R4{v$P z!cr)f zmuE|G|98zA@CEaeIIR7p;KA}^X8uOHmW3*VLC-$|uiDN8c6#l{2aFIk|BV?Bn>xh6 z+`|v)jPer9=f{*~e#oFN`p?BOo9!uJuIAyuwbVU=9m}gck7Y#bVx&j?oxrB$18@r# zIey=x&xz{OtIFBDZY`nRd;szTi(~@pZtVl~{XqF&D;~iDXSCDjT@n&skwU&!yaeF$ ztDdi_8@>~lXLjUJvEZ$#{_x4mngU#ZF5cWrz>cHze97IKRqANMw0v4tpQ;!_o2Fzb z0y!w^x&u43*V3wPjFm05H2Gpp8jjSY3(Mc_*`Kw?c>l%k)9?F>HoK_5&K6&puWdOJ z&#h-H`EH|r{97#*5g?pNm-+K0AYR9Tj~AEs^jD!HX}+a*KPQ=m71<^bC?nmsjX(>^ zgI>1~!C=K^n^`=w{r1~$au4UCijQxXdkwPqOr3H1{jz}$A1UIdaw^0c;*lu3f2?=z z46>6+&Q1c7Pm}Uo+3=Tgx!kIMG*GmZ?wA21wzCD4;=4JYvGntR(_oyHF=w(W=^{(0xwZr_JU7H9C+qM`Ri3kD5xP|CjM2&g(>fS3q*7uxq&aop|u<%_fVZ)hv5IW0bl&0D0k`lK-UN65) z(x+){i!uhIA4%KhL=0+3i>C&U>AQ&033e6PvvwCfPUEY zMZ4gEZ8g~v6Eu)ary?zllroA^4;%#_v9b{ z@gFNlqzw<&D#@=&(LP8aGW^P*F4i+D)Odf)0O9E(Xo$LsJURC3a-H>h8K*hn-l2MJ zsJ0RhZoBQa8;t+y@Gm^hnD9wcB4`FK5tPI_IX!!zq^CDyoAbLpz}f;%IsXh2V|z2r zb31y^dw@2VwFoV9eIgw)PtWMb&{y-oEaMyy$mtzFJLHhbOBK+W{NQ;kfW!y%Q$5D| zut(n(|Hga)sYVn*(*PHCadoM($5u|hGA<^FEfzt!2?W9G;K%Sw>>_9zG`_Pn<5~MG0T6;z7SzRyK>K$6Qf|S0@3s2+m%5UHe(Eup523^x!MGn zW#=ySL!S~Qxw(!z=d?)=7EJOw66~A(l^x-k15#N+gv&?Z>(2##Y*xuVw(;ZJ=Ci2WY|J^1Dk z;^Z<}UE;|nZVjws3ZBr%fgoVwQBpM95p1+rX^8d4dCmY%PHCWCeDEd3r>}xo`Yh9t z|Aj6YU{{)CP+_kuEx}Yl6@_Hv&r+^~KQ<;Dq58r{&;iiFDItu}RRtf*VB=p(QUf|F z$v1(qd`tTtq5dHx4$HMysO?xi@uj?3vg>oQe%&N17e2G*Iv~0c2b8{jfzq>~Do=_c z$g@64<9q-F1HYdrCG-uIZ<7j?Q?VFVo-b*8I>NKEo&E)|JIFoydC!~dywgq=zl=~T z@nX5U=BeMi?Y;M8TcurB6XHk9{l)nT02q}ddEiR%R5{i^TGr7Am5@TQzAe4bQt}xL zwt!Mj6Z6KG>mwieh#3}eA)@{GWIkN|x^m^p$%|k7;>p1WA8eMLe0e_kJEv=bz?dci zvey0he(QG+FfFmjlB8$>%+?@^psWWzdxJ06XWsi`b!q{pdHMHvC)0K+E*r8BISXb$ z{xi{2-?Jmw(*ynmbx5znTb(nHA?FR`)t)gsj`hf`$i_RRKck|xCGaA+YTLM1 z_$!t_kPA+`@?9q*ksm!D&np5!=Xs@BSM}UoV}c_Bzpf8K!f(S$i9hZL4=ySYAE@b= zAZ($&`whtgd>%h4nelmnz3-~s$PNNDvlH`fD~QK}Ol55K;nU--hwN-g!Sk&aPoDa^;p`kTiX zG8+rYO`6323|~~0wSj1{qw+lPS=mup5JGHfusq=a*GZu=V+DpzyJLfW!sk@ z%!hB8%EW|O01hnWu>pdO9QfzGN@o4XO32~Qg|j{9w6b%Ta4pfN467I$AD*pcnpfyO z6tl(FO5h^W!4>ZSAa~NY`quhDpTSaH068-=4brO(gaW~u)nzKxowgDq?(gM;_7pY* zG-k9*Qg8^jTUN_Rs}?wKwJ%Q`27Mbrp8rmuxC-*3Ff6}7-`>Q8cCpNDu^EeX#H=!+ z3sxL9x!{LI$dqqN=(8!~Ut}4;>dQNTK7uQ|fN_Bp|3{(ZyQtwk!v4HW77_ZDABMgVZ4_5k9Km5-&57*|0YWq;dRzTZb@c*P7{F#6Gn<1~%<*`kq^zP5~!4&|jF!jSS43Hu`(4zaTt)6-(ZoXJc zAa&bqx1AiSvrlE(nASJc)%z#cIgdF&6HC4LL=o?la<-9g;~yP<_+&4I(}<@a^zw{t z&%7MLTpV+Yf~?aOzT+wZJV0MIdVELL{9`dZ2(+%HzJ8+O4eq_qK9d6vJkUU(xooI? zY&yg$1Xzyc_UaaC8TovSmW#gAO4pKuV?b@5uI>TM-h19>W59HgGFxqHhu)Af2pIRz}Ik(+mWf*CQ&Y0Ftd~lvySM zSE!#)ltOy1j_%>Ir8|8S0_EwPSOINhN%^Gw|JeL-R-vc+d%>3oe&2{eo#Fv%JOl6% zw3cK3u*6`^X|l1J_^yuG7VT2{ z*w-~5)te0;EM=1aei~zMk-y^!0)U($`>TG@PM`Pz^bV2yAP_be{BVl+=w!8(O)l^S zzK=iBGgc6oM7&h*94vWbOQTqY3r(FaO^a(7R}p~6aRAS<5^}RX`0TQi7irtfUjH}KGUuPZ`qdL+1m+1%9Cs}PK)i>`4q-7a*C`431F{KjGwtAg#*s%( z9;OM;%%mkuD&jLQGf%dr!+L4C&S{$OMSwsW&xfPDIJzrdK1SR>6(4i1Pn>${^(V;wS> z$$gypq18|Mp0~Y4gGi@bRx6)OqgP=L4PF+i&cDmYmdIrbJ1K-D+r8M6vKzOCV;Y}#6 zvKyB`-teXSP_cC7OL-3Z9wR`&Qt|Gh+pgjlj?cpn4l5DP{KN&cUDV;4Sq9H^4eh8x zsMAi*E7H#ZuS%ysjWD(HkJnBbh9&^kwmCSnzQ0}X^eGlDw>lrtNmNISiPpeL2 zdXhZ6PW~={lyDsYQXKX3)dIAn!Mb;WmWTiF5C706epoZnVe89^ze1Zq_T6{i$-dhC z3@G$Tp|55!(SD?OfwT?~mxg*DyymvGcz7OwHW`{^tKaLwm|tn zK9)&qs~@G%QyCiMjcUS>ztH98O(E8ma9PB_xm9ghnr zfViwna@$FXKojHOPemNGXKFz1EaCka9|XGp1p!Us_MIu9bd>}tun&vaCK7%Gti^eq zK*xkT87zMdi8!6fJ7c+Z$(0!cF9MN}E?NMZz|X-`u*g_C|Ig2opYP1Ye{Jldo>(ys z#J^ANvK`A(SR6;kWxHD?sMckf$J>$yP6ZQ<*=chSlnTYV4|o^)q^mW_a2m%Y%?Rvj zo-x1D1}vBtsGl#?=Y|rm(92-i_d4SalTpaRV*nhMZ1MSW z|G>@ldlP|YtgGvZzIG0-DmHZyo&)gHgkWG5F8v(qkimqF!9>Rjx`W{JBs1;=i8lv* zRO&t$|0&Nkm1b+Te_vU~F4K7Wn3SV~X7kfk{o-z4+Gl597OPW~7jaC-Bb0c@+da0~ zi*yggYNc-rU|o2k0_Z{nv*hacMyfY}ouzBe-R2!OVqoFJ57?Gcl@8E#mG}o20Q~uI z9UxB!uZL({0s8h;K98mRQtp7(MLx|a@;KhZ*viU=w%o0Hz@z>Q`|2R@cVkTTIs5Fh?MzgbLPOjgWUW#p?K7<3q$N-q*S_DwRznt8Fk%9|-MQmC0*)0Nq#C!X~1s9kPSOhfA z_bj3BqvhhKiVmC~%jKI0a=)}>Xpc56P#0;_0z6fYM!k}LkEO{pYsu;!ul0aa?1L7F z%zd<+GROFJ9-qf{MET_4IX{nO<+d(T=Yfx34^g&=>uGbxjip_Lsm2JD>lf>Q|K2yX zE0=+Bn-uHKnk659{PB~EG)TV3VdWj5GPaDE+foCE>H!0d1L#+305W?A|XrZt;rm4TM~=0-%7t$L50+N}|>8&;%t%kYcQy03WwzVSxdx_%7dE-w1FW z@D2pcR4U9^46bxFf1v;P zNJ3WvOk)xA_nD&HDO&zG^k?Ly2-120q{ZKbiI&Ei^NJoYq47S#zjxyT>b6uLA|nnF zNTH8oyNy=*VClme{Bc?PP8O)O(`}Ro{f$+3OYy^V)$XS$AC~v=>7(!C(s*6Q4`amX zVQoa#1m5=cRmGnlNlFtLMYTE6|x;qU?Oe=P|Y`j_)cL0yxXhW0@H^ zWg0}l-IN2N58`-?`Q$#B;Zx*C1K_u0UVPU9Rja=v9kM=YwSQFSFfPM*$?_%F)6>T9 z77bdwnQ1siyV*VDX+Y$LMn;GYa$?1S(3&N*2-)kTv9z%hnO)&Waq7oEKKamb$C-H@ z!N6>5bzgS+fj)qkT?O=BCE!NTTW07e>_?-}HRx@5Lmhsc2K~tr;P`w&4=fWL)XdTj zN(+ZR#T&;1F_g&0sOY;J>aGIegc1WBGUjPnRZ?mjv#x!tmP+3NuCAx6K&WF zhlP~$gyAgZi9BhnkU!}bnG})^tLvbS`m?k8i+Zq03)hGjN%5{^ zw_cg-7=0<*Ukp6`bxjP8SDXGx6Ik-LWoo4b&~lQ`8|1_JG_`wOz;&6>4y^s&$B~ao z8~eQg^IAObMBdPEtbO?CE)9|C67-^*Ix>Iye|D}C!!84dRzJ`1cxeO6yq8>h>Es6a z!1;B!cJXd6Q27Wgb@txt-R}YZmTqe4rTjhs>q$B$ZV#Q*aF=w`jRIqFd}KcC(Q1+V zv1|b5X{ViL5i9Hrc%2w=^wCF8o+>LKG2=GX5q7aZ$LQ1p4iV7J>$4eMlE;1Gxk#f$ z^IjT4vu$*a+ap?R zM2}II+aPb~SR;tk{zVP`Pig1W2S5Db$u)|C?LfkIP+~P90O%s4XMr^Mr?A5gYr``n z$p1;g3!x4eT*noP1{Lt*+(aTIgQ34R4uJt+s< z?W@mkXcF*5@d8Jdv5OVgfqGFt_X|a6r2ee!PIY$wtxB`^|A&cIFV$G&WR%-Q>z^nO!oIvv_jVFJai73) z#aXtv8E^{4m&B7FR-fT}$^}Tr&k|PzfE9guD_G zYxiV*Sb`^BB0IQi_@X&04kmBubA5kMpzk!v4ML`H0bU=gJn`xKWBE1`fZGD22Rb@U ztPfH@#R*6S^bTwTug5&#ODxmx6`kUkCi_d0fZ;)6qgV13P z{FXzjMbi3dEphoBenHRhq3k!j;SFZ(W7qIs{ncMhHdCk@PLXhn*JJIb%z?u$DLwie`~= zT4`9a+))Dv0n7#t!ev;Ty&|-kowM`qQ<~v@MjrzAQa*|w#cd#<2=m*eXuc?A#I8cox4hr-dSqxaJip#ol>F+e9 z`%2;}Xu=F94g`O0N~)x34)Oqa9o*Fzh?E=3tNDZq)2~=>vBt4{&2sD&>SvaC30O@y z7B2eSm+tw`ZbSGH9tH6K4~3k-MZiwV(B}y_`{SIg`dI|0XbnmP%l%pT13n~e1Xe+@ zMT>BK#{qzmZJNTZei<{DmgBLgK10iJw$!c<6E%D_RrGkww<7olIOb-Tz;=;yH`9bnibCIR=vo}+)a)-vql17PaL!x&$9d9klrvOo9bB58Vk6YJcnf1Ds>knHuy6AUk_ z2LfX`JxmbGYSG`{8|>(D@QboWqMn zh_*14PzcOSZ&aPA7pF6DRNH@QY48aW=G(B#tth_%z02Tm#W}FtIj9XlXFx{=An#8z zTw2N;j_jF$ykj#9z_0nB6>G_u&|()KAP3AQIlU*kvjcrDuMLdd3GU4`-F4lmW9?jsSfGs%F{S>GgF6aZM!`L0AE2#yTUN+!Dw& zdCa5HAC*>-M_Xm(K96nHGlEoOWy5EVJ_DSvd1hOUQT%P`YiR8NAFC}(=nf`16@`rz zx9NLVebc7|%_dge_DZ*o(#L+HuK|057@nctE*GkdEI%qgB#>*nXT@8`NEUFa4<~Z~ zxEMEBC7&-~!=^EIGuu@F^PmrXEF^x2lY&~G*cVZDxSSBJZWZWdnHS!61wvkn%F|Xi zLa)u`clH=r=Q6;UHfz>rH|rOCx$lxLKnLKv{YdrwrkX_UcGOXmHDu-Wn1C^_)&z0d z)FsYt0hJyw=qcKtuL&`*t;`(&)#TQ!@u=sJ5+-(Yr zbg?#)u!-aesw1%#{TR8}@40O~`ZjqiHM$2{dOXkrLOJ~y5N+k%>aTfxxSam$@kuVD zH35m`v}E-d*c`)P{;YX&M-R-kI;=NfGTI#L?A%BOH|gVKtlEO}woVi|1gLTRyUk=={C?Bjs=l1M@qHAH z`U+5RimWk&wjd;nUvZG}8$dwNTOZui8{p3pA(o~iWhvfEykOQM+DTrqoh9SAoM}8x zf5!HvdtP4UozSoLUgW0;@M1nr^J!)?6N1-J=BjSpK)M5Xz0? zz<8+i$rwGO5@`Y=>Z`J`cwQ=5hCi=eCI3~m_EGM`)kj-wv4w4Ti1dqcxCOSNoMUPC zYnt#A6dAwAE#xn_qhj1`qA(}K1k6_}zgXVP3x&QJ>}Flj10xv_5mtp=%vZ@^@h$oO z#;6jN-vfWP>N9q)wZpmx5@SC2z?%U@x|KTqNOav%^lb(%R86lTn5Oc^56S}Hf$WH4I8&<(0JUU!Mlaf zes9rpc0Euo);HU*;Yz3|Z>$CgU_jZkG!UM`q4rYRq(6sk`g&)3Jwr)wl+xd5H!-Ji z;LnHnLAa9#p&ni#P{*tt%ii$qR+gx=jqXLM z$2v!Ut7`QLgo@UNdOI*jT*k}&9_xa2gcCV9Vr=XJ*kRo|SjrcG%+eL_`DNipk}|2~ z1kh5K2O~2(K=nQ=KxXdDX^H!XRaZW20Kg)7mFjq&`sTy3D%^y{kN9aF|E%18`h7it z`@5CjJyPHvvkc{qkC_FrRb97I8jH6V+f=}xw|8dj1)9YE&A>DAK^*M%8wFE@i2pB@ zSP~Qtil>#EKK6`~MP^WsK#UpwaXw2Ei$Q;R`%0RY?8$AdMT)M6OL<+dzPnI#CO9@0 zcdX3#TY89;*k6OZ3T+(JREu2z%#{vd%+zri@5M3YG<3ioXzSpQW#h92`Uuht=;JaT z(d6K8$(xty$TmP9+%j68)6KfMOqP1%q7Y)B91<_G3z`#T{9075MjFT8oILRa?Jgw- z9brbYj%fAw4FBrJ?Q-e)_y;~hAU+$EW0v(rc+kiw#O06sDW!H(c0>Yo;^dt-QvmO0OyZ%+pFFh{O$>-}Du79gEhzeVY=XuD#+E?Rcv zqh24>%^f-MJi$A!fr|``Jg@$s0qLHv2oE^%sWXz8Z@G0+21$^Ep zVfR!Go=x-&VDLgIsH5}&IC1#-+qD6N^zYN)L(m>A@W(RXn9pBJl(p^+W@Jw6sCZ0Vk5ZlOwtL}NfP=GAHg z7PUhTIb^bO<;uyw|J%P!J}zU%tpc#@>c_zG%LaU7ZO1D4@BjYqcE0cne*M=c&(ek& zESC8iOd4FCEJ)Pu1g`OZi=N)sW5s1FUJJ1H`pwH+w9ltvVmd}wg)Y5vdTsZ5&wK9m zYJuXe#c#nrv}CI~xOk7{TmmbzIRgvdhd%V7$(Ln*{;q`1PfENqBWO|7^(d<4RB$9M zMB!t>MPXp2B?cHvuLno~?<|4ELGfJpbg^NB+4*h7ncp{&Fry_8KAh8wKOo1i5wmN3 ze1u9Jus(2+FCY=8?*GtWBR|e;}9N@=>4wkd;R$7$T0I(=CENmX1Eax>dX_$_vA)h4xLR$uduRJ&Y)VnzBW94O; zj-}g+MQcta0E~T0b!1mApwE|aEg-Po^%#5PO<&{RxW4)bpE18Yh9eUMmKHZwy7l!O z%ic%DEBKrF#v^u?ep=SV4~Z{u8(_mh_1P-zYyw}W!F0e)fvj6MTNf%e`q9 zqGO?@FEKl;$O3twkSNQ+vjff`?3|YzWXHaUbuyZH{ZpUSJOU36tlgpB+^_XjK5M97 zR>&&9qsGo=(n3C_6O=XYME>%8jNX{;GSCSK{kLLk^T(?&G zc+baFEI;PqX#s!u&i&5IUv8GP3$!^A>mPAv@lmg1bBc}P9 z#L^=hFo?aiLW1gr5+($QH3bii^lj1f%Tge9@+kIn02>(yzd(2w0;>{W^$1xS02>}v zzYYxLx1P!Z{N1B;SpHb@`Kmw&VP5#&QUJoYT(|lp<~3u@a$z?e0ZU2wi}EN6yv2Mq zh;&Cfph*45xvl`w1AyHvYRBi)9_W!TETSI3cpxaLd#PsxCULpZL63vIsBBw+1D{0B zNCy1jYe$?ktU>rNvAm0g534OZGwH{lU=0pR4amQqjUBu@} zxf0YJUs+@X{Kb+kR=z_eH}E6234zxo*4uxVXVFqSsCQ^bUA~TBFXTzxxS04{t_czT z$Af?Y@k>LcZJOwTo;n_AnUt#ekqKfH;;VStfeAX4=I6+CdD?nVC*xqW+^q2;)H@Se7#F znJZe|12k|N2g3UqEH5Eg5#CApxezA&1LyMsB)+EhvxDx-61t}o`q2P&9Q8G!cf z#Y6NhM{c3y{g^xI$WlMcz`mP%AYe+HgM^*kfaCq>G${0O&}4lU`px;+`?Ly&#(14s zs*QkYn$ZA=Ixvm(t>qP-^zw`aBOjLjngM&E-<^M({)qv+aO@etj~(YM)8kXhc>0d| z6gP|kkc#6V(0ib?oW~-67rq==phF+DXy9O-7@&-CCLF|m^dRW8oe2QTyPVn0m^a=p z{BL8g)VIoKAERYF`11(pXVkLS-P`N(tyG%vNj$@wkkP)WBes1Nf3qQj)08+_X=7Qt zGAN5Q&x+QIJXah0SP=poaqXv_vd=l_pvg`3PnXZcj6Oh zk@NLOz5KEK@nItc8x`@fJ6_f`j2?tsp)c9sh|cVRs8#HW(bsH+14Bg_<9x9iciO3^ zP9Cc9^Z)+M-xV>^!5B&fXFM}1KIh0t1ok(_v+B?$K*mn>%`gVP1hSF${E){4=gq(9KUMt`Q6$FAI&J8x9V9 zNV*`y`E?9M_c+>PZ2=}7P&%MMz~W!`3|ZZXrS~*}HkRiMd=!NO=mb3cgX({JiOpxe z85$tDm0^<4s242lJdkuQCI+mIL zKv^=-rd(VB!HkcOrzvH|Wxp!!a=lXhva;bZ^x2v^ja*J={NxCM@*lEp5!(=O>laJl zTbJ+@gSG@=JeY8l7o*k6ZUwMN09+fO>JO}X=S$%nt8zal(1j1Chg^wOhu_$UL2NLN z${JkCYo+RVw0MKSx$AphU=3us+vyjV#3D_VA94BKB0o?32(jh@h}rOSo$B@;DKU76 z7;W`Lj?kyIJ7T4hvYL`$Nr5>Z1U`@0yR(pzwdqCxX9J$3dD<*Jd4JUCU&n z0{ZxF?C%zzHt2-q6~9}6-?xx^-Ca0h>7v5=i6x*sPE^#G{z;am{OWJ2_2B`c=ATe9jy0;cTxWw}0wd&z7t zkKQdFm^T*lbI+p%@bfs2Kr8co{NDme^V-s?cT3Lncq7-X#V5<9Z%@v}`=cj!v)Aaj>yH5baKfsGpZ975jB8#Y=SIOZ~LLlCii=Sv|5^oo++ zOCXQsId*UoUk%@^O^X%BveDqYNy3jMnGdS&_}_WJUI&v5k_{z zC)BCMSO|J{?^%)h{VDl>aUHApg!qX)Ldyf20XPDBgvQ%}Z`jx)BMarM$ zG(TpFfrawmB2PZ>8WvwR0^qMl|FR_fB3WRd{pKZ>o1K=hG}3DxK6tGUOTJZ^=s!M= zFI8U9{_k3@yi!UOe!~R-tK`0tLyUh`8a7ECTv%WL*QLJO%aVD@M?Y$QjVzB7z6Q%_ z49e`8`}yyF4tlRp@^xd!JXz9ue(W*F*fKRs*7zyTyCP^d+1SuAE#Q{Hc8@o5-z>^^ zWAus7T7YpLk95ap9&e3F##FowS37%jn@9V3&+ql-4l2qLE|I|@6c#<=16?Nng>TAv z8T0&|8n8c=QodbEFUH?X_LX^cU8Uz9mW8?*nAA7t;4OHI6nhXd*;h!#WPyJa|!wUEjfxcJDp&yz=z?cPr zlRPS8OJ4xpjG&!XX8KwKJXk(0z+b?Dmsjgl(hrtpOBtDmqR{MdO9U+gfDyrK;4`-j zRzRET4^7!H1bF|RHTf44HX|{)+h5~z##$WnE_r!fd%$4Ks$*n!dZ-Rq^{y8$;$M2M ztb7-1T;oG$3Rs`rH0EET2?0K^Og`O?KA?+rp=uub#Q(dM(cK>g|0BP~u^Pa8%-7{3 zC!Vy97>rqr{m%4h0mqi|>{)KmEiCi0#QQTWx3auH_wd8*xG@g`O@6IBbJ?*^7qJxG z8_=5-cm@#}oVpJn0Fbm;{npm+eHEXOb`rmqUCsD9-XTK-arn@s(8t3>xnCA(Qw!ks zcqhy5ML=!r$5vTm?e672u=wRnBO~PuSia>n4H(c*)qr_F|M|~P&OYlb1AgC@#cwJH zr-IIxbIZ+NivI$>Wmx@OX%ON6IRbrvHKO%DNuNt4nBCuufx#&aIEE8n>r4r3gdxms z=c?*Cr+DD!wMW^xySD(sdc|63{$-Jw8@=LSr>0YS&h|V&108Dxeo25U!hx_Gn83~e zOcVYg??KjSaF`N^_geKJucD~@@hA{eB5Yps_WJqG*q@7LfIt)pfQLio9r(4FH4E>S zAfSE#C^k!6D$sYVco3@|OS^2EpzNBD(z(#0oq##OC)N$<%lWEXsQ(G9`~rp1!RqU~ zuC0D?33q8QELGi==yYTbXSDQHdCp@thO8l;1Ki;}kB=dA!2(3+7nb$eSj2#IKsIo9 z$UGHijHwT+LJ#HVW&0|8BfmP33hxd0A%n!&e$OY=rS@N}TaWEU`KSO(HO1d(x ziG2v&tO)wFHBcA4=i?CnSwPGT&FAFfr%jx$v)EbkTwC&X8wG$q?3vFTwH`VB#uR-E z1onW(l-x_)wurKhpe4(-o}7#MZYcL3K2y>1i^*=X23`dCljZZ~n{S?Ox{!X28$u}4 zW8gx&$Vb+{ftMES!l{pSX+KN8=bUqn?fM0vZlhB^*3-m=Z=CuSDFa zOtXMnR0%NHdG`+S0fDX0Q{C;Plj4Jy2ZAq+XP`P*I;8pqz@wbbmLmNJS(E`zoRRE) zg?4~^5th`~trt9JhxTR?NF1LA5O|st2|FnFlf}i_MjtwGjG$>cvZfn(3N0fzix#j7 z_KHIGr8k1KZX~+wtumjbGT%YS5v3uHAij^6axQEEegn%5eOCHC(m#U2cqVYAp@T99 zbEOR?6aqg?8#K+$@-Ir?>)^^igAV)e{20qfJeJt2{*8b#|E@GH^{hh9%P9)1D)^F) zlP=hxg%#}!0tx^a`uTc|;j1)`*lgo_5+j(ZZTH$mpcMPN(8__5Z$^r)2PFBK`0O*9 zki1(f9fS=cOpu-JiyTqjxP##1`Wpg$go>*9g+B7CL=atTt1Om+myyE;?c*y!W z0+>>WmjS&lE@51J!ql@|^!l}Rf5Qzoob0yCE=zpe0HWCvLOv{Q0&+gB5H1)Pb{Ejt zZ_hm^o9R1WS)pcyJngzA>6R5|26i$17=T=2nW1!SDfnsk7EtYdlIrDYa{abbo4417 z5Z~~D6%hS<-g)Pl6_Edgpdv;f8z+BILd3v#s{;6HyWr=d!?}mQ<>zF9{lfX@Pqy4@ ztI0DCJ#@0Md^jne@M{kf26&wMdyCCCw`J=Xz9$2cY-sBBL5nx?z1-iu{>`8}_erad zdSET{RO^2W^tS+MuRWO`S~QHZqBW^*)uD!SA;XxdX8@zI>xcp9$K||7J8^vrIsni^ zU)&>w49J5CSmprixpf6FXjZ>cOS6nEM|!Mc+BF5#IJ1)zBz{X)9h|7`$R)St=r@X& z99KP zA%*Z>g*`Z0W_6Y@u{^R=#Zgo&Nn$O?mJaKyDc4Q=ke}r3pPoxi_xrWr601TF#>3Q1Crh>p!aDhbYky88=UvywTFpr zwi8kxPCr;v|LHTF{PES}R0jYT%W0hFiq-9I)q{-}w8zd04h@=__&CsrX*zTqP$u-1 z=lN*WhZv9V4DaKgNZWQ*zhg~~U@Hof2!x|Ra6m9vwk<$)(3S+s>I9_JC4!7-`O4{{ zpc&N9fyT6QOPgO3zsv}}4qYQ1ayth7(EK*QIEX;}*6Ia`O^> zo=j$$G{e(TKB#Wgo3V91KB&~$Cjg@(eX)m|Xea2t`|m%{FFhWLITFPG_~VbCd{aAu ziH&-cK*oz-@{*cQ&Lh6-?QONYm2T`_OHt>RH|gu+Apy=_y>p#=dAhFNXP+Sh>*B+1Bc2iKhb3Px&_cGv8D$Y572p-cGq5bI4z4VDL?15S9D@H0 zODdchiygD1maUJ}3&7-wDaHk$&UD3DEps%)JTNbwzdOdxD>19B>vy{Xi52 znNd*&MFq!1oQF8Zv>G+BlbFu6uYKE2cRIPxHMvjpwjC3bXiUe5NrQ?5DuarmA}HVh zI3Ui71I`*_a{s?Nwd(!X+O_w2KfomCdCvQuv(Mf&tnpu~s#Z}a&KAH2K#d%c!HYH} zYP`ubZr=^mM}G@FBPz32j7BQx!8%Z6@h)m30}dj7q>s5!{pH+dB9N?!%()-C(Q(K? zlsy2Zp>x5@&^hOK(@T@VVPC7hbWuj9PX$t4!ssZ%aXqO?CS3@p+C{S$;+l$~jpd^&{kI z#CMm&Oph#wOETO|^->U#Ig&}Trs7K+C#0#|lTSXmTmy*k8ZG{f26?A($nJn*q5ZBJ z6TiQJC>a*7Cy!1svaIzXqH~0zD@W?h!u>)h6skHKAS;_G7@^17v+}=!K7_ce8DJDp$%8zBx+n@K~#+BMb&0sIcowL_VzBvMvi zbLE%5t|g&4kfFnzN=F;PjTC1)k=i03)rdhurr=2YjPw*Bt^NSs0NO-CIJylX2b7cU z1aSEVHbCfiz#G@jR`iCoaiL_CQxa}hM-J#?jU2hqNE1Vv9Hw>y=r=x9gIc1##=Gno z+$ee^Y>V*g6c~lXQBM8e6t)`2m^Otbw1-5)3?NRGK_tf?GRH;_`b_>t`T;O*%Lg#H z)zOvu4Cpl;`L)XTaPA?W&gwS!3OcNb(eb{Ua<)E}{zjW>p)Hr8w=2s^7O?E@Pj@-l$258IctouOD*bHZBc3a$nhIcsD#_n=lq+uskVL6m)fun zIO!TGtH^g4FP3F6Fe3SR>=t$YIiK=p`po)S?!R_DijMvb?TPU?%3(0a5+c@zEF{TmX>scz-DQ4F5nIB1lqvD|D*;ne(xuU_tb| zv|0QE5C$kDSi}q=`Fe>2{v(?h6~#SF)BktYbnwC2rOkT44CcEslbp=)Hq#~3v$H+P z7G)XmXk4bnsI8f|Axk4!%XMW8Zb^Q!%tTw_nH?~J(Cd#_7_T?XddF#}tv)B9 z_hF96QOKCEF1g2eQ{ZSz`N$A#Cq>JW0U7=#p~UI?&eC8I_2JMlu1uNkA%n}V(%li} zI-S=d8nq0jQc2Si$#scL;TSMp02rnU0egR}(JE1*x(&JmQwc3!lP4HZnWUM9K{c_9k&HOUxLa70Ns<$^PczpKvxIe_@t zG8Cr>=(4^trmsB*AN&Ux?I&ZwZfIx*(C0hOHH=yTJ`Ntd|CM&G+-_*Rf9`17b)#`S z=MkD*R%ej(>{I2;$dyJknW<|ANvvBWntUhH3+X>HI0B&Fwyyo~vaq<1GB!E02OD^E zn%HwL(@~lO+D^{03}zWamb~skJt3c^{U+C=zLslIXXQgPuJw7&*?xpuT-o9AQn55;q)q!Q} z7qoFb9@O3GTBT*kc#hgkcvTBPY#0M5YKhT&yS|$<>b&I5_s0V^(`<%6N%K(T*j+*L1bog^_c2S`Brn z%EHLekAT~pgXVhfPo_zh(@|O8@A%9Hi<`;DJnd;uE0+LT=W27vHzlWl!0$*_nXw}$ ztv^rsMRtuo9q7@`oqtJm9Hn8S{3}%-?|3nTxcAPTtE0u&=RWUwB{4KRwPT}5rc0JF zm)~gL2n>%v(;R=j%n?nwHUe>(C*Jl^nYrvaV3_+nlEtOIjOvNHc3iHtDDQsHdsb)a zP-cMMbtEu^*$D~z3s=uWyJ`eR47)nlXhTlsjIm>3E3X6PFga)UdD`}0UKm=NmTlli z!p*ew6*g5^rix|o=p)CkVZe8)ykArJ{6_4&OXW-)ed<`}?AB5Tt4=SO6Z2ny4=&lZo5 z*Hl4?>Tz%7b)kC#K>;X=qvZYsMm!o?42k{TfK#P+0X?0meb5!3oXcR&q;JpMBk z?EEWjG}^jMx3&e1D^TMZ><7T;Bu!QrBRWY~_Gi|8pJ@;sFnJY&rl$%?as zbJ=j`%~GO|=xDajDMED{fyQ5b6s$1_=DCSHF7oCMCuGq}G!2Drb|cpXI#y z#M=x${pUGg>hd|F7xjEfe7;Qh<83+_mpIDN70|5OQ2c8*J1)t`?lRum7 z$VdiqT}wcG1T-^kxF_x#fp%|qv@hSc9eK*S(AlsA&M9xlgC6vtvIB_SI*b5N+-vEF zvKvTG$BtG;ZYfr@EB4@La&NSU2;VaV0!Vv8M2Td$Wx>7ywQv9smGmvV$x{Dz89SyP zxgJx|*VprRB{8#%)%^stID@t9_QdgIgPN{QfK@LEYr|EaS-O|e_9JEVm}+?`DHinp zq#{EfR-2jbWt~tFh=Gzux$#@)u}0KT^=ddIYN zwCf@2*MXw#%|&CTmo5;%jZ-afMDUQQr%;5FqC-FrUfhAc>kW^YLcVqapB-(hLk}R< zj8URlQ{dznW2)47<_689wIeVY3hcn7m8EvyQlO7S;tv;JImH9xOX?ubIA)C)>l?el z!dB(22QiR|s8It|0bXrz5Ca82uelh`kV(6@7_17w0!Wv8y}b0?$gssT4xlE^qPBH* zAQiyZ!2Af@2W^8mq;X;=KLa^7{SZZF0C$vRFWZKu1F3&4g0}9+S|$N~`u|?p%-1M_ z@)q&#N*rdDSt7O1lcQxr5vgTZV_F7k1NwC%_Nb%M!{x67yw;XZrp+Eq?1IaD8rTqJ zXHdp*g$%f`{QzX5(F}m&m7Qo(qb@Oe$>LC-XvX<=6t^ls3dZO)QTVM+K zrkXW+{_~%|dXUoMaQ^W(HE?*#Un=n00YmqtYd*xQ2d=9O+UxiG$>>Of!a}BA`q+vg7Vvb;^y1Oet^B?h$ay_buJC1f&7qoz#|n^?v&T9}Cc`GKAY8 zF?Cx!3H~-Ibnr-XG|G0bykk$VhvoCNt#mn zRvn+`d&`>#91PFVzm2d;!74dLKsqNpaMDSk+EiWu^#E%u8{h~$&UHRXGD)O`X?;@P zd_i(a>Y1kCncfD1x`-Eak2a-e9N;#fSntWxjit|4M;GO@^7C?oJR)xf5mFi**QB*5 zUge)hv0L*2@F9!dx9Dr-Qz@;so88-Nq+qagk#wEk_)J8ZNHX~`qYWbmQOYv;@AOQv zcd-U5XKB!QhQK5d@UV}__K|XY*bq(vVsH}cOczvU(m!`TuA{B30hR}J8Ac+~03iBP z26LhdDR0V}Y{}kUlDk6%T50zi1Z>%yRn|os&qjUmfsRl4u|E7gnpJxI;~zgubJ|Ss zfhj;h$Tzg%?wErPT0P()4_RGbw2YTWPx7@nXXt#6Hm*fw`=N}bvYi%l5u6ddHbrta z0h`?ar8=U&u_0tnoxE{F4LWbD<0OA5{kW^vPqGQ)JMu4=XkF!}bfhZjSqKKP-v5hQ z@6U^=*xeO*-BU9Xq;B!^gqdExmHg7(bm|B>2+8~Rx37Ke>Qa>lZ(WXEo>)3YE?|yv zr9M8h>EjM$Igk!-OK%qVnd$8EFw_;RaMSP3gOMDJWOTbSI9K;}+LZ6f-*>dper+L* ziXE6Rs^svgn+b|xsK$Dc8~*}7vUBW?61)dV2muAG-04c_41)~5`3^_?hGIhJnWf!J@4D!ST?>%Lv(1^Ck!ZX%9=B(*F$rK}uy|#WVH3TztYl0-)FsaVOOY=p$uMoWC5r z&QtFmwQRB-w68Mk(bhGY)=~c0SQKjL^zwm;5AeGDgQmYMt@vVH+Cw=ErqMqJU~l1E z;fPj-Ud`x!0l)R_N!~ef?SmiuU;}>nah_ol0#lIWp*!!q^HzJQ4F@Ps+#Qv;crHpd z0)aX5vMYcs+U1UUtl_gW0AnKt8*469^zFxz3qar3bo}Z^wK0SH0A#ln=-W@cxvqFrfM1Oc0tELGkUUgp z`T`8gE@J81d$gg1jiMak%CUQ~=_9a5&;ig#dKlIq(jImv-&yrUT9_vP1HeAw`*1)P zw!4;*2dY^%{dcd!%iazU%Wa?Iv6r<8Am%|vZmaht|F&bYLwB%l>tB0aUsezd5~I== zXjE}ujaqJBr*=CdXuZamabD*eWW+S|q=*0jAOJ~3K~(;y@};q9AV#E2Me<^r?RK1y zA;IQIH(8=)xN{U@t=0L3t4IBg@HBeN_PvFlT z0~=tN_9fpO^dSm*szAka#otke_0GsyeIEG>(APjm$f32P(8B<<8>be@%g9AZ4vwIPFIJ&5dh%Ailn5uGl&vTORO0%x7^Mht4-M)Dug zL>)!2db0q^tK`5q(y@R7*4#>V8L%8Kuuh)7nA&Xv5&%&VwRJ5G&{tYyJ?!Y>0KC#Q zc-PsTs`srQ!K>f}EU9%zTbNm3O&-&_@#3gLBGDXq$Seu3C7q7v;vDplqqxrWAyJ%s z-E{!KLB!|vuYY}+ZanIcLsmy=x988*TyWa~JR`6*a)xu)veRt@8OeOr9jCuLYJYYP z7>od0?!%}}lR=&V(a@KuKLaAa?rn@s6|BWPUhD06^J1zNutrK4B6^XZkI3GpK5{>K z1%Khh6APGs_q*P;I!){Oz9JtyCr|W^=-?mx{_n3Y&{Q$}%8pvxLlt0(urO`{~RTbdPptPY}mFHPUt*bwcFww7Kwn6P`@ zU`-rRr9o?>>n3GXT9n8j?W^r5ZLM{->-KCjqM5fw^CkzP*O3A+5qGTq9wYbUE|fa`6FvRE(5 zMva3GJg~f<{G=z92;whk6UT=H1Ob$p&e1jo3Y-SUIzcuE-T(ggZ}-mi-)W!eJ)-Xt zPrO~3UZcLw`6qAF2;^m6N4>ecB{`q#+Z^91n>o7|UroLKnLIwbAXLi9DI32nL%XL0 zBJ#0i;6mC40Mc9JJXxo5u11uMY{Su&-Jx>02TQ1*Bd1Gp=7X5t9rR{08m|s?=$z{F ztvyviTGYqNA4NMlc89}{|63A2 z&GpAUYw24X!s=*<2Yf(|kMnRzD7~Esz)&z$CP&c$`r;@d{u70HnxZfqgSUqz+Ad8g z%^AaOkDN@RBnc?R8nXZ#-o6Y%O1TEs0-UsHN&qb9rvZ=&FZeBizla>7gsj_qzv#;} zFZt#G_+Mn5pRV&8J48zx^XT4q75wt(V$jZMm?J{bE}oBf(7p7- z4CHn6PC%vc*~_aBc$uY6bJDH;0kFn4Ktt$CG?f==o*tor1?wuw^Em0B0|0%-j_^F` zS{Q7xG=cOj#dxwTK_KbZ6_t7-`6FdN$kFFX!9%V(xv6c=y+If192RvYPD^kD^O*P$b;NO8QKsVVqcd|YJ>i~6yW=oG?C=bbz@~tmG9>KeEs?GYtUTfYz+;+%^L8=RoOc_^ zNrRAV6u7sXz)>2Ju=|b(KuMZAcm<$vkTFrV83#9t7&gHiR<;!xqCP+Y4vOT_tW6}* zFQAWga-Sl(bM!x)a~0fh3fV~(1>Mq&EdyLXO#qe|t$R!9n4V=#$Hy&6?XEfo7T3oq z9>qzj4yLqmoNQ?EBjMZ_jSQ4u%f^1`dyWVeey$7ar^5ig^?LBUMFZ<^jb`Dn6JRXB zDax-h+nhLZt~Y~_V`G4m8m1PP+28Jd@g7WX5!c-y48&8Lh$VYOYGocQ=7sTY`SmL z@7Zy8Ixv#)kYD>P+C9>V?OdDX{X*j>c6~!fmuyJbkx>zwfH9!|@WT&Z-9oc#oZ>;6 z8KS+PQd*f20Q{hvp9o8)lgzc-#|NU1d4%0qn~W>U^53h@Bn_i*Z~@6 zfsRImxhe-6n+)8D7ObZv8pZV4)d7AHeZnELOP5nNSjWev6{5Lu?rs38E7EPoq&({Yx_GRQR{-f$Ssi;l3hdV z59#xPlIH_-PuWsK8!Fh3c9u5Q_D!Y$Q(s#91^_L}@#wSz!VbKaDlIRieQ)##aFZNj z$YB6Yk4AcZZNL>^+yPN#Ox)i&XTt@%z{`F5445HmUNRNf3_t_?)S)-K{m&BU z`(v%=yOeZSw!wjoArIC-j8lQwV0KX5SXLIfTiwlA*S2=@8hV}v2_cisK?QG39^Ia0 znf4_M-GHRZK>?iVJ7-BU6*B^pSL7mkIcte){RF zojZ57hz)IL1HjvLNC4pPpXAsdrbPMolyl!*z|VEWX*Y7-8Q5h&FalI-()Kw3bDi1I z`u%Hl?9aG&0?m~b&+)sLAD=tD@`1eT>`c4o07C9(wA1g;HZ$&7qFwYQXqg4XpLKcw z+=$?DY6pp?U-!D#t-hj7By8}=G-P-1C$;H=Hz{X`0v@N6TuAy%1ku~+w4DR{b8Yg- zS?+V@`|u`Hma}sJ>yOFV3TXlfdu#0s_a%uyWoiAcv`1#-tcL zcIz=Jy*><&+;Av_jM-Zi5j#`H>|+uXz)8tLRSm2Y>!F&~eY}K?b9}XxsS~uhk&zp5 z2MqpsXcY&}suOIChh3O0Pvz_{2g9!3FI47|B=rjQ+PtKgX^ihmuSc0Jp|I(%;AH^ zEN6`_^@D@C25^I41905rGwF6jb~_r^n_EQI<=J!~WQSRlPjhmE{>QQ!Y{)U{7g5su znscI)8)q)Cw(I3DfBEWBk9t&b^y}s+OTk4Km1qu|J8mgH-Ann~uCMiAyV)78ou1AB zp@|I6=>Di*Ls_*O9T0T`jC9W&&1U5y+qF7q82O-)oM&*7+c~1!CjU0FneIEcOi4er z>@*zJ>%T{NOxrT$`v-sU2W2hbNhh6Db`;M&&+d6r{k-p-b5@6G=P+wRZ>NC*YXCD} zaz93ch1}*0xJLkdS9qCaa!&R}zf{*;0psvqsS)=Nm|j#FfIf~-`*-AZs-TVp$6u5&XFBFT$xt(rWepkNg2++q zS|*X|ll0sJ1t?ihM%1qv?d+&C2(s@Elv-qCOB;sMWu3C6vcu_zK@PAnnIhJ6tV1LZ z84*x`EeqB;6rQO-^8E!(Ispr3UoU!_mq4FSg_dV37+`&&FKo}kyy<%gCF?U!lyQHy zoB(NS9xI+-S7qaJCeBOOI^czYtoN1r1_slow;a$#WT!l4jm@C3i{i!Tn)~NIBSQ`V zxi!_%O)oRrcVMRPM5l;Ab3XGWHBHDR0)X!ot&m^VrIp-z1`?b%ImO4ixfRS-Iyr4e zn?-!8yF71w?tY^k+3?i5;+Zf+jsBHS!LyO9c(kzNxq;C(F6*83NpvjiYeHviox}u+R?R7dVMZGrh!0X}OU;njV zD>(o;#e*}2NhkAg?sQ647H^hkjV^1`v` zI{-#@bVX1y5S#&qlL*@YkhIhvVTkiRR$u977`tlR8za@PJ>+~y>I-NB_|aER(I5&} zfL{P0?}LFN2bG=D=Kj^^qwNu4h+KQ)m5|$a100z}+8n0JSWLc~`cXF3SY)G%>ecHm z)LnAn^61t<>3nVuJq(?L_xKz@g?qgDJRd;A${s~p8ckD~9uaKq&i$x$#Pl5Hv(E8w z(S>zZCAqj{7#V-R0RDqnmQdT%44MP50HtQ!i=lGxx3*$ipv`IEK-7(BR2FpNz5!1r z@@HTzXwXF)L+%FcZd2NEPk;k7Sv2EK|@8O-ajnp7#%VCqJ4L`vDx9OCQZ)npD z>;7)4>D?RZXg1dN%|$%sqG2OP*{gJ)Thk*%`Prpt%N!YUyK)&LfR%N*$w9KmOJ#4V z=B`KJqW%m-GTm~YM?9FL;ikw{Ja;4c1J>^m0c3#iVVx-Qw$n~qU2@4KWomb=uIoM` zJ4^|GPLbl1PdR1vJvJxF|KIO^_gj&mdWo(Xgl$*O=78fw|LTQNxl7kJ@pvTPbGop^ zzj)?f4EQz1RioljKYpVjOzl2K5ujV@KThuwF&8iw2~xQa&;j@(vd4mJ7GIyGk?RNa zxj6jll(?5^3>INOSfGz2&qPf|Cwep^J}`KbsLfic)`B>=zl&Dcz2##FMb;$0UX6FV z*MJ-A;GoeR^gh4V{|V8EX(^@&_ecgas`1fezBbd8^<}G@ubdo0wBU!ysVtU}euRH_ zsQD7_qBe(9bRM**ngN)Qmq{eg$`9rA2um|+ZcGgfH92(99DR5GWFXrAg?I?K;N*nUs=;HU(s=?cpBFgcM3b@x(g8qi$H)*wJ!^rr=wGcgN2ap; zy1~h*YP$No>?AjxV+mPL{Am1j`413d`oVo(Ui7KS#g>4V`xqpa0h46zv(gpT_>m}^ zWbP!-{(8+#$tJMB5dh(I4|bfF-SqmMHE#?Uj}|`wknGxRe6MoS_*cQO)4X%|2Dpbn zB{}?c@n&lh{{rY0xv%%SJhyhmbG3cIS^7vsrOd?WcOrgd2VhW4jm(%#a=h+}qNjUl zD~Wqq=SMC$*7mVp3&+m!UU$(>&m(nQ*R>Q4jNE~1k?jG^9Kf4%s@-5QXqn3Nrgrka z&AQ|HPVb#}gZjL^qvv*|tnGq=%)ZHB%ye@EkBET;ihamyHFjYu{h|FP_f1qn@%3v`u;0#0k z3g!5DtB^la5;qVd5e9$=An^J!$YkUHT`dOX>{^UD#N@ZKTU2kHBfDYQarbaiwa9=+ zhVhX>84|EM*UsUsA6|pZ!9%l#$&9`O1~(c3D7$i95Y^8;Wt@qO1{l6T0>6i@5h>*` z__AQVw$Z2JI*>X50NHqTf>@2%7sU(KNO893Reiy8a-DIk)m|i~u2I>hkOPNNXkFXv z05CwK_cN5!|L3W}(znV#r*-#?(U6Y~JQwz_ThW|y<&h6&vVt~)W%qUifdG&CPyRwq zqzT~1j`T}K_j3gPPLw=fI{>HADmyqgkO2%zo9i<^7;w-KU?Mx7R$c-pt?UXQx^gp} zOm{-Qf{rb!96D!mAF`XBa>sZ0Qr~Sb0Zrkv>;Rj^unFu|{gh~Vp=6oOG#5&LPSx6A zPN-mdJ=XIvxV(jQ>S=NwKcF9_SFqazzMba^~L0C4m{=OA~-N|h*_sceakZF&t%&(N1JRLMxfQ7%^+jc2EX5F z=XN0X&+S)!K7*VkAnN6g%}A$Zn4d4lVaR4rU<;K-a`rf&mfPKy~{v?)OY)($=Wq28PEKs*1>7ocWcFoUTQao|?vs~PWV7s~Ti z_M9D>nx}MUtv?)B2d1sfO!G3e9WNrA9MkqF^)*}~Hj^meHTmLnBwpbY0$A>$%`$h| zci+`cMQb+Fvfhw^+sGl#+G3NtH4COt-2urQFj#snKi}y=@M54Zjdu(8L|GZ2>5|hW4=UHdJ%Wve_kdryGdf;AfvtrL8EcCypcf2)eo zl{W&4sVyBC8?=*jC%0vxxkfer`-&^d9c+SOlLsei5d9k-^EEJ-L+~@|L#5%}G+p+N z4Y{=zNL%=TGa*Sci|&{D>Z7Qll*UJoe0032z$A~TOIZ~N$CO}Jns!gUccW1qfYLCC zrEKamFxsuFYf4eq+SU6@PRxX{)Y1NqKV?`xr9 zHqrqUDs6)XrFjOH8dx_FGjxWvABA?&Czq$Fr z>C!NYliJdv0F@Um3m=k`d|h2eKpmu}VTlbnP0Mq<0euGimZBO^aLv5{w(H9tKIb{lS>59v_gGz|o#2;hiNIMp z0*+~2*7*HEZ$DH3p!j)hBzof;-&m%LDT6wQ{;`&j=rYsF>@1G`2btz`-?NNtlK+vs zZHF(xzf8M1`5DRK#E(|nIt%;D-#r|4BZ&%C8Y< z@Uvt6_ikj}GkI%zHULZgU!F-IyyH_c#?&`5{;j$JSS-JpjCG%b?iC!yRAH1?l6LDi zrtVqi`fc%-jRvekz`&eD1&<7ZXUEa5p<9U}~EGOVt`a96k;V9ed4VevjiQf`Wxefb3S|?@{!X|xJ^em@U=o(QcY!5WQm2A`# z1b_~aGhp`NW)6H3Exn()y%YI$IY=@d(c)1gHp@lG$6OR*vY{mC8}+L{%#wUWP7%3^ z*WT(kn~KPE(48?n;ted@MFW8UV6egqn;kZWa)|1%BXg&maHq?(x$@QjFY4i-U2_0x zO`7S3h|#qPf0qEgwIR2At%|*d&GmVX*Gn`R>7$dx`NaTYXuxgh$@%UInyqst41(Odpk-iFx>zgP1Z1)?iuM7ziNao; zSJ1P_PHK~{m735ooYxFLCeD!is$p-V9s>put(_=TJQuRfe{`A%jruG23%%%M-efO>*Gcri z>0r8**T@cK+nz1udfVpuK^-QKT~wGdqz4QhuMqt%hlcfD{uA}XhG1bBBoaj@hvIK4 zjTHG3v1P3twQa5ZfeyGFWtr;QRqfB(bkvBDT??6To3JLuy02MoT^`$S13u7(e^MD7 zKgXHF-;Tkv%4A0`Z_hwbmKO}x-?~%Zt{s4vx@N=0S#aexe71Hap$&{X<^6d~Be>h!3OoXB#=PO_`4V z-T5=uW^c=!AMvatF`WPaAOJ~3K~!g#?#Xll!0oAJ0lfc7GV`DZKe))~c{=x(C?Fd= zIO*ej?FjyXWc)UoNj&PPqsoqPfFWxH*+~x2<34ti0}%6Tj&_}{r9ngdHu4X-zau&J zHq6OKz9(dPB!8Rw)B(Q^!P}E%M4XJQr%Rz?cG%op#uGz}a^FIqIlq!4zFDk(h(^#4 zVZ99N!_08<`)4!?Wm*=%@>v<=cL}vGy~J497Mt znvc@wo^i0{U~B?Zs=;z+(-f_Kh-a7zWUU{&d&zqUEr??Lz1HA8Pmb%RYl#>F)*O+X ztD_?Uyccgse9Kv~SM`Nld{6vmn(3LGyGR1uffLPOyG>I$P_K>fXl-YhtlU-}jWt+lED!XtM5ub zh*C8mKpC~KojgWe-d_hAR)4oSp>$OxSzA3)9I$^V@AbLKK*`GUL06-b>0Bv4z^3t_ zn<}SI@tY62tj&c!dUKl3$0fJqL-bdfF{tuD1p1e>9{4e`PbKOVPTpwL4149j^V;dt z29~u?L9f|Cr91U1XCpuo#=Q)fb3ao%L*6^x)^k6W?s0ZGYZ~c4Yx{o4`o)m%&>8Hx z=oUbE&64#%Y6Jv2!VbQm_mtOCdg(js{dO0<|L_n0utfcE>h3f~9r6e?H@?<-y+3QVtR=|r^XuF{2cEp$xo&@MkC;T5_m5~{*FBI$U-M}_>vHu|3nA(&^kX}fI`y3Tq*e{+D9%) z50-AjXq5uZk~G~!LB^^%;sd~Aol+|vQSOzhSvjAR=9F-@!ZYgvy+#EEk& zSq#k!avn(TEKQljR8oo1#Yr30P~prtp6aPe;Q4ql<35_ce5FwM(hD`9tRn^ZeoF>} zqt}Qi=4r#cklY=0D?c3408qp|BZIviA#jk_3_x`nBcqZ*z+9Bkual~VT!%#a*oDZb zot${_8ad~=h-63eN*DP59r2cwF)vl9{2dCD6JfkMFBZ{L&M(O5v+)L5+0@R6{!}gP zKuPyoW7-Imyt-2uN-2JHTF+;^-= z$fMn(-JYdA8EhKR=msUF`Rgl1ULCB3JS4_9z-vykkRkKIKUeCl zj{(m}M(1=f=roZ{8wh0J5M}+7Yy&4Caqo%0MP3(Z)V&&C~ z^h3{|kUmBQ5=h{nb2OO)*-Pck+1ZhPY?oF$SbIUpohee*6_Klo7gKuV(8GA%NdV)9`i)aE z7$tL55kQRv`i!W*A_H*;-E*wovHO;d8l1$y%T0zm8;k%6Lji7Ym4QA(PK{};xfjOj z0D;Lz2p}FSgT>lFM(8{0NVE}XO_5f&XRmKUIWQ{2Q912*gYD0mbIj{;ysWNW);W)E zH1oCq6iTm-{#ZU4BoAjObaC2;&ThHgOHPA=P{wEBwyt>0;P ztIzHaC+ux0j~EYvwq1Ke9|ABSyHS_RtgfMRcaUy;QZoLPI`I0Ibdoi$oGx)w+F5mM zWME^k)8xi!;Qh{JaG&XvpD@z7|CzcA4NPZ(&JMh@9JYH*zvc#AYcg+v)Hb#4wAJtD zOU}-eUEy45B=x$YB?DOAJdG`5ckjD3!@yKJNt%(#vPRZr!1TyvrbU5WFRQ#vrp2wz zO-@YaI(hT*T%TP&MxPCYHW`Nx(mQx~uGTe@|FjI^i6ra&D~f#VU+uQHfz5G;iXJR2 zK+pZ;rS0nc+q}+s%5S+1OLeZz$C}Cx+%g!< z_w4Gub99UP=fG#ys|+qT+2L%99Ei^KIk#yO&qt9kFN5DB8p!7is`)LKu_=&~?{~Q# z0j&|8y#I6HZ;3`(cKrK@Z&?oWJv+#A2cTj)2_VO`2QMNGpBL!EXdWa30Kfta;`mu# z#3=%t-AevFlAtoRtAo_mA;d6NA>>Y}`WZt+SxhxxRLG%)QQ~ta=(?YytZtz9z5;!m z`0zNjnZ?NA+y}+?(`eN}cF5iy3I|!7Jk3u9=I_I3Tmo6Gt^xRp;-kJ%`!^{Bzwav= zFck>Babj22#I*3`1`Yyi8%EA{6d7%8r`$TNUigK>)c@eoT)XG47bCA90WPGJU|GO~ zwiPgR*Q*n5gNEQI{0e|k`D~?427&;OKybg5btdZ>0FQOTKNOvqO&|{_^2UI)%imSY{(@{A zz=nYcOHQCSwuS-ePSKa;CwwnpF#2cqWT-!L?Kb)}{@XRTKZO^S59MC7BTlc*rUj1@ zSR`W15{(ZK?bCmzUKuRkTK3~e*;EE!p16g&IpK&|8;(=FViyK@gRZZeZ?bYrt>?ST zUGKU&=%9lp5xvm>W+~#aCed08MmjiZPXLtR0CK>i?M6{XJk0~cj$bx-aR8j}$z@Ci zo3-LOKrvTm(?|2U87PgO&44cYy{mNc`ZJ&Acs^>+NCrj&VlUId+>*>?P&n83k(}i| zM4SBHrFObJMIT3C*2~*24|e<)EtDkMSB^rf1`p%Q^eq|gIX9HkA}|0bFK^bEg;P+% zgOYnMj8;+b3J@C5kTONo0K?3>KAb)gBu1fMmJ|CvYXfyX=AP*Q8$MWg%``GeogXN$ zc|Rh3BxA-HIiSf(RNLBi6q@mI!`VeM=A5OE{xL97mOFsBC(1|;HliRo8qztkRDTgN ztFJ|nDyMNsY?Q$%0irp>_hQyd%8)a)H5q}y2R9M}Kp291$^+x>8_sF zOL@LrAky^|<&QS4rMrA{Fz!*gE&^w?4qBBWg7@*?=@icI5D)&+uHWl z#zC7p9#)yDoos`gQS^}rDL~{L$v$Vt#_IwB!GrZC*I#Q}^rzC!4bYSvR}8bcgH!*c$-gKKguf)*uh`J>+ps{;Hvwjsf^XwyTV`XIy4X zX1CZ=qeP(>BVN~=yTJ_C7@Ug+46Hvax-f8{GzR+EQI_nKgy1HZ^n?Bq{bV+V%`sQ! z)j*%>xsGi4ema(ooxCi*AIWC$bkhIS#_W`{4rd*R@sac~Tw7d!GHoXIGue|7Sfz|jZJ(2YIo@PIHzy-5&vOF+=Yi|@ zsLdlFxdi&1#`*I|76b5gcBa~c3|w8#ooC*k9ZZ*o@h;3`8UO_qQ#b-_57z0epYH!} zaion*Tl67DU|TI%f07aUih#*`WP~nYG_L=DuN}Pp`jMV3>p=AXpqfwXDO!hv0b-|P zX=5x%wtB+pbR&XwPuImGWL{BjW4*_tVh)0GWU7ISD4!~$a zf**I15oMZ&6b(c!Si^LQoEQ1__N*HxmipXABpnATx#aN9)@G4E*V?|<`MOKdfBO@> zeZdYo-=wk`P~4fdMRuFhVva68lIr;7^sgYHGjJipbMl!%VbH!h?rutv@~hzr`RbxF z11Hs<4*(GDaIkCqrf&t@Gq57ETOBkzQrqb%(Ken7Kx*X%fZl>~=Dpb*(y}U~`mT*k$FHE_nZQKWaOC8oJS5^!dE#a+;=gU!YVEKahQi z!D_K-dNH^yyGyGK|3h8F7BT{G{G^`a_xG!uSCS`F&pbyPrk>_%i3@qqifcJ3G*-{MiHuq92_;hF)0zmO#!DEwhi=L^p58uJEPP z_ax6n*OOh?1V)|a-oLrBM(rN)&7aS78v$0A^f`IUJe-qNr-6g#+}Dsp|DWmWIx?b_ zw{-^!@6NLj!5y7D!=zZ@5Q-rV!L0w==)W2vcAYY9{NH7i$sxtU;YimqXEJU_qGC-m zlV58$8Lde>X-}%RwBN2b;@Gu`;EzC{3Fg?8)VeJ~G1re)-;7Zj39gsb35WIfdMsoW zZP+9M@Z)u|02OE8-ci@fV)aCi7Bx&t*VU&lACs|vx$+*pTMqD=dSU!a9zZ#jFUlDa zQO>Vsgx5sb0_=%)?LMc!e@@^dK=~psgH|IxMR^HaWx91B*2)0AVRgql-myKF z0o_nfl0Hso81{RhZzG2rm5=Jm^1JE#Qd!v%Zvr~`{y9)F(y=vLx1?#i0JyVX<`YI` z&Cz|WveTT1xlMCz+{E)uzk9ixXt30WrS|UXb57T#HjTjACOXZ@^oR#@_L%v=t%zM1 zfUMl%P?M8w5w37R)u$8(^Bl_ zjTiLBu@wWI0Bs&2j+z8~{HC6LsX!moi>w>Gre4q@a(S_F2xt2l{ojXe^$QNA$%%ol zGV;mvk89E3HwIK z`;y3f0e&ijK@;oI7(k&Lt=!bNcG85kIeWPp;1bF zX!2C+4?21Tvazt%lfM^AVq^5?7{S*F^qnDa!)A>#ZKn#PSBL?gSCtN5PiOh zbcH1hY*6D^w(II%rh_jRJ>RQx-YfgWfP^X0=;Iao?HvMtKhX7~MRV3S|2$Kq0lsSE zhK4s}HY<_IT>dG(yUiL6X1hT^qElh7`uZ{1T>8cC|8h-lqJ8^nFabT9O?BC9tNIp635IpH|%Vbg0n^=$W^wW!a7x}|cWUz^$+bwpYDf78E#p6B-EdoyjFk68v> zE;7GIeVA*f*Ey;qw{cTB-p5V!_OhpHKbEm2nr))P==V)++|fCQJgTh9P&!?WM*Po& z2&c}-4gtjbTd8hVf%7MtA3>NDP zo5Kx9H>0p_EE{9j644Z?MJl7-3?6D*vQhD=;|2trPJ?nv)mEOjsi^e;luYiaWfZ#U ze%9gKUe5peGVXwBoY+@oq`xU1;G6v1uUF*c`zpte!5Jyuu3U?e zKV@>>FKJ@V({%sdYX1=U4My@!K~jGj@Ccd3;TljZPSW^ZF5v9N~kZgnFYc`zB^kiCF&l3905^p62lu}92SNKVl!cBGSn2%RI+ zesh7Nvcak-p^+5*(IFno+PVQ-Gy?2jZLx7HE>(u9zMFay*aA?oxq zf!>LosO_3_-kY5Ih;9K6f_8I2XB635s&5pH8}ZZSW$u}f&&*$c*85THd*Fd2kele8 zX+GDcUE#s#-Z{Bg0-AIBka@SHgCn|l`*yVCuWsP05sFcDQw=w471+cyFQDVcy7qk; z8`jCN)`nemoHfb_nlj?V4H{L(jtw~`D z)7vuwMvZV$hY3hwgtfh6xGSU?;yl{!o*95OpE}9TJpe~DItdue37P|y)_)nLqh*W$ z$Sh1JipDw~64nxBWoO=!qB~eBq=M$6_ZcL*R9WyK)&8V&D=oo#m^eNjSMMmI2lhvr3yyKS!f*m#aBLJ!_PE zFR*r+3B0;tZoG?j322don0$~QmE51L|Hyp|D!HG}`-o-$9Hz?4X0Y0)(yoZ;=`$P3 z*u?Qb*_Zq1{#Q%>Niu#8sZ68~$R@h+b$xz^bnP5YUa|wva+95;>$S^f$c)p-?{%5tbFPQvzMT5- zrZ>H*_@iq{CP)PQ6)jIXMQ6T}^p{O3#~yp^>I*s+?BOS#xY~dJ{mb7BXZrDCQE!B@h$Ug;up{z)4R-*`0ljJW#l$5 z$=8VIxsRF8x$bNq@^`OegbhZ08Sy;xQ3rl*MM9brsS?p5A9Z1QON|i#P!Xli3Y-D% zUZHg$mkVq#dS;r$6aBJ21kgv?giL6R&wte@>KC+@gmot*aDIstjmGmFuk*>eEd^xi zVNXrju;4vMG)4xoTnlGc6}=f9|IJ6+<{W3stUtK3o=hbN4F~mPu(?!^-`hP`A7WQ8 zYjubU!3*e1Y6`&jKZ~Yu_GWu_h8{tyuZl;f)ss`&GvN?wov{Wg*6nPflhZta3uUug z_*^;guS#CnNR$T{tz47Q?iz{?U*~A;JjZbXE-F7d-c>-+Ilz$d;9ri&)bFkC059=e z1y{o|>pc!`-C(qn8ETu!<%gp_TtMRj0UgTxqyWh41)9mHNo2-p*U5BIF4`8L%jhyP++JQ7n+ecPvA#h&_>w+jL$ELK zx8&(l8Fv)edy#gHK2*SLYxrXk9@hivrA>N6%V#N}^P{9Y9}=yfe);9AZ*W>l9gMPD zo=s`INr=3sK-41?QT%PCC_xX4jZA|^w?mB<13fHJRCp9LNV3!b@<1PghOK;+!BZfNmvvsW;1JcGiJJ@W|WTMc;KlG`xU(p_LAs^gV+EPDr?!Xmoo;%9t)4y+#f= zbfVc0quE>;BcMI9q3#^NFFv1h&N-`7PCj|{>c9NU)%WcjW3T5+@=I@c!yC$**Bb-| zpY)_BtseW>#})t>uaUejf!k4=bKf%!sACEIjX=o=_+;A5fuoV{8S!NVPTaQ5$l;rfF{{g}p`1Yejm1w+kFF^2GsNEF;KT5&&PE=Nm^NMZ}1ZImVfhG9zTtgRls(1p9lAv-shuFVe&h!+$FH>2; zw|KT0rzOqW@Ec{tDxv5nvP4wk){=p6n#D+NlP2Z9%0E}ABGUm_gJ)UJ!^y_=kOQl` zft%n{=u6b;a_GFQbqC$TY5PDVs);(p zmFh1to%quLhTDJv4dynGbbYhFcP$AX)VdvTx8}q>!7~GwRmoRuyFga3NB={E%y-KE z5S_-(FhC^7By?m@h<*7#w2tiVvMq52cmP`mnNfDOe*hm6&~v`{6BW(jm_ckCdUm?( z5kQkc4{afN`s>vmB96xkAhB+aO%Y{qnsmF9&){*jF|7^u-Pz>>w~+bncPp>-QT1b& zOH??(sIC*q0=%+Wr2)Kw4`|cY`i*>kABh|wU(BX$4zIyu8pI%N> zh-uM@%rAht3_9k%&jGw5`^j!|4WIOF4W3^1(wDBze(!r%7hinw>PHJF6J>DvU6FyMvbS5$cJEuNYs8l_`?(T^uiT7E_q|f4)X$EXHQU`e@Gmt;+0ECnF_^YYoH)@GR~#I(u75 z#C*E?$^ej4en{QI#*Pv}RvEmpF?SQ#Bf-;4^45j`x{1H6;{(7w zQg#MfW8Xen*UQCjbnF#&>GNvSTLd7;d3qR|CIlGS4I67On*k3UH&EW>%)r;IJ*)RP zT|6oqHX(S)hLvyIG8^nIX|ZmtH>bk1m&uNU;HZZ|Icp`^jCHAKFt_}p+5O5(>LXe6 zVTT@CPU&E}cMc5Y2$ciFC2&F?MuYY_P!;!nU10r^ODIMIZrd4qTOYxHw+_FBt+Us%FMOz$*5f}V@8SuUZj>_EzFx_fPYwbiG`D) z@i7G$#*B3|B!vdR9U_DLd?^NttO@pa&ZRPq)B*rNz+gBDA{*}#DA`SAG3D|>)lHl4 zsd8?ivH=QZY@LjHD}P`tM}%op9R{p2NGi`c@XC&Si^^NmH3kCP&-FtFb#o&%Z?7ku z<~k0av^UU~%@Vu-Q>^>L5#5*t?6w=v9YugDQUkw5G-gc`Q)gkkperYUuo(Qla%3lK z0Pth+;OYRsP^6F%c>1?0mt2h;<;2u=0rWwm0BA<{Nz}}ocM*jo52YyMRX9dh>I`Pu zcQY(SL8JUIGzM5&-H1t*l}!$)<83Z8e$;iAIoww=Pi{59H)kI6|8()~K>{Z?t@n;V zTWN~_p8AyKGSg~JzA4-r$!nvJ>tp3%DZv4E0^i<_1`<^c$3mW?!RG&va|L`LBMeqJ ziGv-NlnH$fmJXaKIby1|Jdf@z)Y0lopf8@mPO*j-onuWUrx&p_;WTpM>9=xBVlCve z>`<5fF*|asbm&NS{^~aXWNe`D`qreVYfTevLw-jC7zfX;BM#UCkYWSAU1wT2o((!3 ztO3?fY+<1Q03ZNKL_t(t7+lw>@di9Yj;pRX-EO3Qvk~Sa>N~)14)}AutmCdWnMmoO zce>N+5CK1;eRH61lYF`CjpT4{(C&Tkd)S!qiBEiD^}5%+ZuJ+heC6uL9C?|5gX?Af z?BxO$FVk7`?|a|-R-~%Au6$Q)3~?T3ptc=a&#qTnHTXr zgO^vdW7;1 zdb1Ok+*agiXBy*UQjoupQ)Z_pXM~=iQSC{JI0Wb`=ls?wjWV^1LsA(;BzW^8r`)dy z@cp;F_FCOb#*i%WZ5<5CW==lZ0$^mZ^qz8ZOr7wG{8L02S%da}D$LF_Go$gsd}I13 zD#NuoC)};cNdRF|b^@5qn9o@XH>i13lAalj_(p)FyT%$n8FF@a#?%d9ifNt?>OC=9 z^+G8_&;D3%a-fmt>$7^U0C@ex)ENf(IW#vq6{_K!Ey!Eca_{2PH(((P!Ny837Ctu%2S zWqofvto)4uSfNqvPg|#IH13?au9L=woT+EALsji53BXk*QRC-m>iS_C#4+R2$#|8M zXhV)90vu!7d@iX=*<7Q#8H@tN`Fx}jHXnZ2VZ~3l!)iKUvJE`Nn+Yuq z)C8%5PDJTWJ@wSppZ(dN6<-Ee<-Myf%KNdN|FAZM{OYrxU8agzFBq?pgC6z8X))?Y z?yt*3JnM9b&vSIkAZ88>j{4!(=E~0?CfYv-cC$`+`&|aS-EOO#W^?zf;jT zw@ZNED8un4qC6HcijH!=Z#b`*YGF!{9bg=_=bVRcPSL{X z@E^y<5lr8alKBYx5?#Bk>H+lJa&St;aAd6VCXpmv^C_;S(QIz-B)T%_P>X=9In~|K z{Z@Y&jv}nxlPW|Xj5v;nX+NfSp;G~anp)v3&Tg@GEr7`Gg>p=pD)_xhtdO(tW+l4#@$XI9-4>Y$e)@GsuA1zGvkb z(yR_>io#HLEwfbZW!K*)*XuovM;YXWbFO`fHb>VYYU4(51mZ)XTOX|6pjjET=)FTc zhPMD900ysbt6%Iyy%~Ve)|ExOTm4D?N|_iNr-jjMefzq_qcwifrl4i1Zvcdg%qMz> z9?TAEbU*zfy8ps2esT5JnwGm%eZGDLP(+e=vHajMitusl0YO08{7?hH-8b@{y==bQnvI?cfNB;^Rm?6Xt(z%`k%p6zQHV0_8OQ&3R25}Btm*|`2dPz=4GLU)f zK+xMXs%J?)ysjPpL57tVQ+(v8Vp@f%Rib%6l(GN{n}IgtQ>Od$W-9mQa@Hi0J-FtE zA}Yb?kc}JUx#FG}PZdF1Q=;3E=~1_6JO&9P#xx6Q6(U^&zq81gbwBJ{Q+$2Pu~%o- z47pLF8^zYXG{Hg8>?F+AcDfGu&^JKe-)TMHJH+RYi07=EVm(d+EBZ`SfM_31f*smy{=k@*2-8Aa zw_`J1kmG)mbpvKtFN$+zip-V20jr>G28XHQh>R3Psq&T;yYa>N)lEgxPXmk-{y3N% z(Iovop-t*TX9SuOtU+*TyY4?!0D`G^QYA4U`?`2XR0rU}hJ*n5-d1<=xeX(kn;1%S zs@?qt5GM64^nDHh(@&fz>4@Gf(DY`>D1$y^0;tEp5l{iheV8JA56}z($%RQz!e%kw zFWO|ecDQruiQgHBj%ZitPaE{Ut?FkDAx9>jDB1&f{y%{THr{-_4w6}$OfEn`>KDW# zzSCaX4v6YNsmVdN&eCPCer_@ww%BC5iHtsAx4E~RKBDhL{f<(klH|=3d03F~0L3iv zDQAF-&g+Fg(-(FDzrY5Ln`@orvG=*pYEKRR`96AW0(c|4nRVE|Z^yxts^xJeP}6dX^`rmE2{QBI0&2rN#0}!CSLCdyfwcS zwq*lwUZVS`?W4ZuGIAT{%GplcqkFFEbK8-lCArHy9F>B_FsZU<4EI86aY zV8qz85zf7Yz{4<@a^RfzsQJa1&OKBhj}bQ;H&_c(UIDJGmz{I-a{XQ#X|nt5&MKdE zYd8RaM;L0RQiv2`Y%p$}u@6BWIG_&5*0wdUXLXk@puB4-omif zYAZGXn5@{1uJs3>LW*|s6JU^q-GICTqAK8HQ9O&(S+~iWzOqo=z!4yw9efWL@FNc( zCxLK+2Wy1@ma)EX4y0y*_U|#hmPfVRL)n~~fDvW^`n@DiWgSwqt*~I-+sqRm`M6^& z_Zi>v=ys@}H9D{+S)b3YU2~ZV{#E%6nTP?-sIO7ZTC6Gu-T6l!?OODOh$s0yI0U5qWMAysCV6F`ug0CS<243TyaO5#P-VFrx9BHS}4R%wP zI@Jb%YS<@sA9EcrewjdDISEA1@%xc#Gk|gTIu%+-WBl%Hg*#(&&>i?o3P*&GI?onh zCNjsp%+7F92^%yDy-emxeYNZn&?sO|@36bqTbL4!=K((l-tBIyJMXt&NpL&@INt0{ zfMp3FWnh)RM?I_sWg7O4O2zWYOD|oqF(Y1A9rE?W|AK-jZ++`qS2rditVGrO?6c3> zh74>_t9yfe3YyN*V6JQ*T<3xIc7RE?Te-aay|ZOi$42#LJ2QH2&h}(E2^uz?F`XXD zve~+9gGYdSu8&K7pKD8&gQT{dj*QB8I^{Z?4s&+6^IiI~BhJgk*a7-@5U|I{8--xY zdprc3D{tM$Nc({r!7}nCN$T#5>bTb(gg#Fcvl_WtXy5-d>R_D6jK7G0nl+)oIG%{q9~lb$=SX{bYpD`$2(EqZ3HS#P&DO!GT5XF zd9P^x*PMUKbcRjw?CLacw14h75abnYX_EM4!K>`^cO3XOaP? zcv*T7`S}2R$T^^cQzU*vOAr`rMn2D`R}R8!XQDk5TAKW1AeH+Nz_RFkw43r(Uzy(2 zfAZoHWhb@F$JGx&U(9l_Nsjb0Bw2r^Y#E^S9wbn9Tj@50{?_sxlttYm=TdH0-O!B` zSTEB$L)yR#um{~Zg`=c=GM)r@AL&7{|9W#o;Kj1LO!dY(zd3uvhMQZekH;N%-0J39 zZ<*7#th-eQa7l;fK%4h_2}BKTb#3TBsQsj0dC$Avwfd%P;5GSj;P_Ro?R@|H-(Sun ze(rOh+opWIZ6i=J(!IIpmueH3C=J0AK{GAq3O_FgZqv4JH_~lA=J@0WROw8>fL& z@CDtiliShoXcJDX*6okwYi|5^De^Vw``q)B>6nFnu<)AQo~*CDOe0yq+!sZozmgHU zj_Q2D9($C2ohs+^LS>vsaLUFU^%r0ti_>o|ejX!Q|7U?NUSHO4KOvQicuiWE&!}ub zb{Qb(_p7tJH+Kgo$@)anOb`v(8xT`vDhz7_fA;VwvRZxygj5+SUy<+XaJ;;ra~Hj; z<$HZC%2?&2C|?C~4lW(YyTKc=ueIIeKY&?jbCShq<3ZBD3-xB#CNHLZiSU+OnaOZ> z(Ts5TwK1)&2Ex{)>-!dT^s>S*jT}eUZUcst-JDUS-FH-1B!Fj)DjR)#a8SzEJw!Q? z&6h|v0lrN8IzLB)ub_GKC+ZK{mhaJ~t(!YmwP;+GslxLL%;LC9?)mrZB-VP^i^Y?_ z(!h$f(gm>Ux3YOa|LNPGTyaH7wEjY^1G}gC0}#t#a^xslqmb)LlMaa2zF-^4??@72 zWC7r|m+1944dx~eB;>r7mj@jz?LfwULu-IPBKym9bvf;0;dSuA2d^HZsm|Z|o!^=DC!J)pL_1PW&PlTjz502_rCjf zNvoX)d7zYOknKnK=%%C2zpA$xB#mh4^vtYu05(U<5f8jgb9Kf&(GLe>(T-93mw=<& zlx&km&t;m&cQ41=lIgKT-;r84zrB4U+WPYu4CcP&c4Ru_vf}qBXPv-VFAM}(>yMBz zVu3WDS-i~Jjz?&OdeaInxW;tgjr9Aq>WFgD5>$co>BPzX2@p9LDxX!)6J@wKY@Ks| zUm@ek`o4dVGQV95nAzp`8#1J^u-gT!b3&<}M%-|gv~^QwW_}+5#_rZMx}U8kf#A{? zy*B|&?%`yVHMzviS`Gm4%QD`q<@;+z0pf*I;;hj-E3$W6@$_~zsW#J4H=rCnzn^~J zL(>*VY1;KQEQH4CFfh1^G#Widzhc*6Ns6m_*}45ywHeuq)IT`85fEw-xi!yf<{&8?0qfKMlv0hXLMRz7t!kYk^t&K4QBa`N<~M-RR4he!`D z)*y%o5)odK2bbN}OygDF=g4C=V5K|*cnu6!pjLPtz&02c^oZvw{Ytw{z5^sXSk7Ru z{3f|$sRmQkU>Y&ls(_h7T=>u*WMpQQU9F1tpbikzGLwl>DK zkkx31+lkt5rg+bgeI%;StLQkXo-}YHf}aP*F3&9rt8zK%T{u`vM^f#3%PEi)n`s=< zFpxlpHWB3|;tHr>%C&)s((QG0_?mb{DU8Bdvqt{GPm_bNI>ew$^fkUuHeLh(F{ju? zh5WiX_n>Xirpc!}_(4Ysd~=xw9Mz>;2AWAcBc9rjWw|^T_tgIrBWOA>0)Jg!!(LRKB4rduF}_o8rY5hfJ9Rx` z$u8z!kbFK=dVMc;e5-H1>1W-kmo65=)q_3Hudt81{qztRZBx$1DEyPs=XfojZ4~?s?C9 zuJ)?4DSofh%KhPXXgCK#|V(IDFV4k2%Y9Qlai2E7m1L3O#tRR@syKd{9I;_ zuH*qnqrLIYWx%6C?Ro`@ZPb*$`)DeEF6}q^bc2|n&tOoH^~4i$htm()oCEtzhXeiq zdFQJcIA_v#kk@i=&R{i}2-$4|l+x@qSaR5&9i{^tm;Y|iR^_2ZO|#xqz|t8%J;Sk! zmx#wFDJll=17Ns3@R`jk`${&SuJvN1`QcQT2I3v;)&6w)mHI!*eb+@?UEba9q_Q2P zH(-|N$zX`c`*9jT-&5@dguPpRJYCl~oBF4f?$}!*fAEZ{-ydsMg>|~ zGVHYF1QD_`#1u345H+VSR+GWNpbeQEBYtH5&GF33 z%5~4RZ`MW`O|oo_WWn1w*9VuqeE-N7%mHYp{~Rxzrz5={^~vR8q+4+<_b=+&K|U%L z)5mDIJb;t0N}s0#I)>FR&8gaVpH|CLKN&Q%mO)RQ~H(mlOLz$IU6qmVT>*1a;uAl-T){lKvG>+Zh9c{PU(1rU- z$4th%myyx*z3(a z@cxjNUajDL)mW1Iv&Q1 zc;4xMq7S8z(cnn(XUax#F97czvabgUc)UpK{@C%$b^6PI2axqvre@W@`$-=GRuQp{ zR%O{4@qng$Tv4V^5m{udr(}b{8iRQ@0(H^xkaM+xfis)8{$3!Q-TUzho}lw=^y77~ z`oxUT83HhD`eKmAiwzx|Rr{RhJZE*#K?jvX%_7ket- z<11eAiq$DPqV0`ueBUjPqjZ_d*@* zc26a=CX&6+&YcAW{^E%zb{jx4?Y2bJ>{hLB6ir$R9L(`#ROcM6qdl7f6r*-WJ#$eo zr|XE1{`*LdmZD(s+Y$|OncJmhmWL(zAJxB!mPw*I(!s&(3`nyji~la z21U(?_1s%8kgtZQbH2%V#AEDMW%`12BOD>dR0?5y6!s4_iX$S(i660Rr2~0Uj|v-s zzd1nItsS%WZ)eBwY?-y3s}ecuz_`l6nS5SR6Q)Q@YMXF|bpr=gmBg|Y;N4Ho^hMh6 z!BkXPFO{Zmx;9rQbrb#H_1yL&m6*RqzmNeoken+AM%o$9_hcG6+E_+SwSO)8Q~@I; z`{<~R%mNJ7-%ATd*Q(ri5w6gMYV_MkYh76_Y6~{27lZm1$AGH}`pt-XYtyKjo`rk)7cu z31qxfPVgcU8>{>{;){CFZL$P#4mSfh^nAD2;4=c{QNHtGJ8d!$nWM<@z455ZWXMbx zoiMrU9A%{wc1;H+mOO(yZ*!Z~t@Z!q0s^E_Vyz#~00Kyr^d@o^iYEVA;N&RDJnL^` z@SQbg;wV(cSz7DNo5(LObp0sN@TrQJ{(}BDU8%f4RxVIGo_zV`W#>OjXh{3QNhs{Z zWh#_suB~>kk?*Nmj|iY;Nzlm}V8;d%iUU+VJLQa= zdZt-?r;X2g*0Wa6c*Zlz*}QLl%Uf2z_q)Hl`hqsF(D%6)(AOiJeqX1XGX*fc{3QYZ zHz=Jzo3dTmXrS47T%<<2= z7Pd8)wW<6}t5G>o|5Dkb=khg|ouxi!8QYG`c^kJQ!_Lc1U~Rklvz>O%-Qzh=xA+=H zc2*6lbE(R3RlrN>974F3l&zZlbE-d_5Npv+kTE+`iu-jUQ8hXV@L_Gr9c5tmwKXkK zOc#Zmi*}6qywIiv5>0;^&@}_YiE&JTqZI1psBIjz$MJe4l?&tyfUEzp4v%^;Hl&+) zvJ4FLVaM+%dYAdhb4)*HHIStkVjkLKpjMtrUZ}-FaqT$#oFf>4y)_H#rj81d zJ9!VC3O<+)P7HYxc=VB_Do1nFoBDjZ`1TfoH1d!}9b_ortl$6VD_>dtRLgIU)xChf zvIHZ`NNof3N546C?0<2j9cRw!TFEmg8a`iBu7EY}V}SfU-NzAlOtX_Ck-V8~{EEn3 z8F;CEoc(<)x%k+Spf)hoPP#1a=eW#Ii;qMTc>$!3yYGEh4}S22%T(%IbYe6h3YrJG zM!<0Co(%Zr>Tq_@K7eYxkAJ`e${FEb5#2d+_ndRiS)G60d6S*x+W~ip?US#R5g9Xp zm_HRgFBkBB-AN~v>0sK#K$mFbZ8T6gOh?__O=~9i&}X8mxgSg4M|8{AM&CyudIZ4y z*(Kne0nZ44W&PPsJLlwL31H2&a}y{Wwa;ZO+nKrYvTdRdb27X{lTkmm(>JegN1Ga? z5h%X>Zwkrv?4-iMalbjGW-QG(Wx&uPDz$=erlb4fn%{#%I9v*HcNs^fQobnT1wbJ3 z#ZgJDU1Onix68No%{yO+WyE(y@~F?8LXUuu)3XR?BcgsWI(cL#qAV~wGrWrmMR|$d z7;etF4FjIrz<2t}j_d>ESV??~W1WD$3`~vZC4ZNJuQ{4r-RseI92#jpSc6D@IzMJA z>L>~aO+wZx2ymlN=pW!9`d9yVpgXQb8CF*7Q@%C;0ga{^D3}~LAPo6vd`AYXo#i@w zFx{l68|XSwKQ?52Um%$c9-I&XfY?3wN%nmJ(LG=F%xz%%tUfanapQV=1{>(uWe>%X(g3Km=0W0N7aHhishBW&=ePcayw)Msh-Qkz??PuDcy$ z_T*SS_XrKF(Yv4OJL?45d3~yYC z6!JUm;eYrGr}-Rs_WCnG4%)W?U9xj?fW>uiQ@z^-e7T$vm>*r61E+JcljSt?CqL)1 zwKTvO(Kgd*u8(sx%-1u}+(ditThM7oIL2n+uyehXtR1U6B)=yN6G}gz-Vj(N!Rj3M zS_;=CC9oOoV#;x+j1FmLSl@RAQ=GbnBO&Sm@B`f77{h_MfzHmh842r4fQ9JNP`Sb( zn?v>cCm_!Ioq)jzyfhjVl1yP{(3|K8y`ga>A zqTS#1C1ffC3Zq9%^>)Qs8+~x(K$8BjX@IKZq49;^RWBQi0DS}vCw~z;)zHDHx>OvbNy1fgTvTKd6(U*9> z+D{^WL^T0*mnlO34gre-q~N38MABG4w~yp~e5()%UN_Nw z?BG56m}5G?N7>n4I`7wPsT+*UCT3@x)(MqD1_tfSO zPTe^Do$oA(m_Kpx#bpx+yL4R!T_<++a~oV#d*I~~5d?7ZzUZQhR%f1hW=W6p%x6Bc zL;;BkA}4GL0k8%D9MLobHs{L-_{`DJX*uF+_FW_Jvz>dKCoV6!t(mV*fA90iXOH^r z*YbeD`!WKTbAWJ8-bMg8^UnJ-x_@NH=X53OUDQ=(QzB~OBh}VnbN;>qF$~WHAfa$k zX00`hVY{9HMdx(WZyBU{r0n4`PMlSGx!!DIz=&~n@5iL1jBpY(b~KW ze&)V=gvpuP2)sq<-X559=!BxuYs8>jev8V~XUcb{7gKz!d8~DLUa5WMU>`0A`|mZH z-7VIFmB+V0cAKuWmXD&EeaC*b-#E$RI&yw@k+ZyMI45`PYf0|bqIHTBGMN6CuSUBz z0IGE~g*JY6^mgE0!BdOWIZu*2HyI4R*WZ0$(orbFOtLJ}D)1YSx{BV?K?7n9W;ep!7aj$#d zy8x0-=N4!le#IT;77KeyW`ML-*=oZLFm{#OJ%0aE`@DY2zyJO3zq+rcufHYvCF=IF zm%VIt>ZzxeO(56AtLT9W;*Adfq(*8d190_`Dd@lZyT4n#Q$Uopmp>H`c9+gP^_PEn z^@Jxpq0pX4AkSu+Zt`iPzKm!-;*SHOOlPlm)P@WU^F2%aT;gMH(^CIN<+yC}`&@Z* zbe-$R==vNDM)zi(Ea}BauSWE|){FPt^TlDnT4TcSuQ}QX&=P=FBNG|yTg1YYZUX+Q zpyy~}x9)DnVB}~_l+CmRb+en5Dc+dUWcq?5-q;n|+F0u^U9z@#*$p++J z#@2szK++vv^tU?cugTb)BnN&e3-U+W^fSE1v>-r%(>x9o_*-|c8vmeob!6QDqk^%* zBm3-4Z6iISSr_S{o+|%QuMddI^I>pnoAMy1i`Ye!qc)=O(XUa4eQ$gwf>Qe(Z7xS? z$#MUQQbw>)KTcq|QlB5iPS{GDJXmP`uk8+b>Ey1`v&nbuXCCyl{zpH=qo3$aj=C3U z+U#wLGLc@y2OyNe&etbM7Jps9hb0-ldTAB_*E%L`N|B>Uo042-!{{SrH@YLE?>s2? zCVN%%I|czJqaiz9K7GEq=m6kiT9-4mnFeRm2Lm@!FL7=$YXM2{49!^2887T6fbJqi z`rann$0jZ4OyvKL0@8n^q`{2pUn@}f=aLbQxBQXHrw`~8u{px^V>Ek3>gy=mNqbuWj($ZOhWQx9vO$ba_t>LXKvL?sZ~W{|S;buhNJVq3d_ z6Hi({5|GRWab&3CS_d?0=Ng^XH?56))vwNwdfU+#nmZ`N0avsca6pbj*19r{`dvK- z03-s0lfJ$5f^~pCm@8#ha2bHqfo=KhGz!3HfOJjL+RA7@eA0FJ#Ay%6B;b!IR+NXc zW9pFHj7%f`f}GSI(#=T7>}8hH698^`D{BKIBFmad2E1j5 za0L=f+j8FaSHz1`R37>H*d5RDYrOUo{aFH2%F}(E8BDoEAtPc<{oj`?eL?o~T-8CE z7(ie23t(}-``vG~|Ni@z=|+EL+Rg#(Y(qwl)Sul1u0{Z24rI=imD>P#BARvwC8nmI zfG_g@5d|z83aidulgGbx`elT5fXHWZ1b$!qB_H4?KlQ2Ag#vXl zaBi2i(;)LA(`~I*TOMc*^l;A{kQ?cS50bK+bV60XWOExqm~TeZZKxq9My+uY%XEa#SM=`(@>$vC=0X^cl$vJp)VqZrO`%mMg9 zz#J^vbH4DM<}hj|5=3@?cAep1NI5`?0;V?}AW+C!qLzxJmerhTI1)GF4nC96Hz9Ih z8~4<{wCSo;PB^7*syWl78j}`Hh%z!QMJILvzFAJ6O%R+0kR47@SiRZhhao5Wg2BI8 zrAKp|)`sSEqfdI4oxnsKpkYz&wI#U5*1XIqW=Tk`H~Hz{EjyRVJIU!H6TqCoN$}GQ zR(WQDw}pNqzIp?V9}(?qx)Tn5t_+uHH)bYdlflAB{!|aVxW0J80{#z(|A0Q$&9T&h zguE>72N(_q76~kO#>K&6w6XF#$Po9J9lNTNHDpW!ayrag6@6y6eV0>G_mP+Ho&tQw z%7L=Gl^vsn7nLX3__n(0ha7FpfX|aOXXn$(&iXh*+la)jyS=U{WFy*}+mmV2$@HjR zL{V=dZw$)Vgu!VaM^_RFVvu-#Jo|fh-#~J}i2_PqZeLRYZ8v89>?_ z1-?1^n6dzU^x{^kgFJkkxz6S;)&U|X?Cx(-aoxuj5zZVwOV7Vm<(Da5T`T&p=Wd~_ z0LN%uA0T7om~sTjX)(*^f!t;Kj~woZ*V*aK%7Zm*?jEkQu8z|;08(H2(wA1B{`9BI z`nyeFw3C6K!57vY^8S{1O;T#|5;FCB*Sp?zb;J=zlqevP$y+MA&KkxWO78%$T$=+8 z8H`1yhvBr<|wiS`7*sI|xFI*+pX z&eQ~_d0_llddz5IxS;4sbn+ zFcrm0k(y44aa6|RCbyv@&f_WrZS#ORx#m1ldC?{w9T`^EUJ?1cV?D+!)^(C>7Xawf zt3jgBH+PIN7;*ZP&!LM6#I|Rvt^qRN%*hmzuk$5~pOfCP*0v-NCe@Ojr)_M+`eiLQ zAX$7_n^^PMm9`lW?QD_hTW2s6kZLxk>TT}tn*3WwyT$jQt<$(UkJ_#d#8h4N=W>Lw z$&J_N{I2{A`3*YXSog5D?%4tuOwV4Z$m#b4?#T0pJ$tukOC*mxrKDE+sJ@@8H_Ir`dsZOG{3v_p7VhZ(LlNEs%BcbM)I8QfX-88TVAPl036HdIeM|K z@7e;M2OWIy>R`ReJLj}?RUA1)|2@le(eECBR``KmcmGb_z0ie@~HG#Z2F7B^h{p!-S6HYi`b;RB8UN)_eBIc&jMWVKIbaH)h zfHC4<=2_OIxk11tusBE4QGL-ae`c=yT(0*o|K?yU4-7J0aybq{=YCtFbM8yFVbQ+~ z0JD70*}k&IFPPh4gQ5V^yv#xf#NtqoNnqYWJh z(r*|>@>IP_QzDVK4#&r}$7-ZQI)buh#rv?O?FHyH5E^~3``ho))_RXekA|Q&*O|%= zun+*Jl@a9^lK=nQy$9U&M_K26C=v(|dP#wFN=QNpp#)4KNu(#VbulQYpy&#sDDUpN z?km2otM00+!meurcclm@y@V2_CnR)2AP^vs&>{4W?)&@BnQQLfTxaHg?k9wjJ)h5c zp8NdEl&k*cnwe{MB5ZO067}nEwea|tl>_S2DbiOMUBCQ|<7E*ysXmAdK3z0o6pzCu zV#FeI=SBCo>L%L8wB3_5wNL;i?Fpmdmf*YacggD)##rUQQ-=0n@scRT^=hKnQf&pP zA#+V(U0y3KL)IN^6#iDHzVUy(w-MoS$6o7i z9mqO;V)ygU2pq@Jh54N>6-kwQH&Q{%kTo}cuIrS;2^>$-dZ*vfdcN}nR9Kf5>z+cN z;M45|IR2}mL#!byDVAcOXf$jCC$|Ar_Ph2OZFf|7$8t3TZTxOLHyI7OxY%}mbzQFy zMZ4Q`6@X?3(aFJ5e-rO{?@po>=jsxrW0P80k0*WmumCmF_#E+essI=3C&|SJ54az; z75j(XWWWbaN#S%CmH8h;|A)#Ja>g?&Ws#jYt)kJf((D{&5(FOK!VC(_La?#=e=h;k zqm@_gub=Xi)xJtN9J%FO#6|DWZe0b-*bMs^Ur2yR!5eVQTd~1vLj_39aG%* zxzBx8-xM!M_rmx4`RU}gHiX^5Oa=308u*Me&RD%v$*M^t4fx~C;;aK%jz|26er8}F z&u02>=ti<3DxP;RpJijl+gx6*+kekwY$VUKKDaz(x{L-RBU+7klFQA{Wb8I7 zx7*y&8NqdLI(c@0RBoi`MhBphCNyB>qxCSH_1V%uyPv^SS7*FajR#XE7%QeUnW`wK zdFb!s>f&i%7~KF@YGaNjj+D6r#{tTAsr4f;-BWl=LF&`{1>jyHL-S;f>MpIj!FUUY zdmYwL)w7l{>Q|T1=SVC*aRd|pa}FmdQaDM0#q~EK+4bOqb7z|AsRDhhp(K(Nw2KAG zyX^X9dMqNB&<#h$(Qzz*r>`XZW#?k~;G`4CTZ^ZiNn63$`tdQ$Od4wEtny2oE16nJu8}*xh2hF>71UO96?QI)5$RFJ8tuw$ACE0J*8M5Nb`6r*0&Ql2i5_!HWca98ny zbWYcV2gzi$zw7}1LHQsL@Ho%peOvZ{gwdB=eDUg1wU_mO zOaq6mk0Mj~TF`rDLw7?1x1&pSkII_qQ|9xmFW&AEKw2t)>Nf@h*(~ETyAyqMI^;Iy zXZA!^N6%7zi}?AJSX+COfS7kCE5;(j!|7JT-kvqX-+@eb%mXJqimnmS`=|`nM`Z|^ z?w}7CLjb}dnqJyJo#ZhCT%+qtfN%yPNA$>oVqcA1O32Tm%{BnCnZJ`geo2f2NCV;Q8s6BvMX8=ro^N1?|RSYzo@7Wl+b7{P(&NCa= zV$`@-9fkM5<7<`c(r!HzvXGzm^|htU`atLaksYEzY^-1nXF171U*uqa)^F8mx(0-b zDA}eDtFW~%K&AobxJRDAS7{LN0?Fa4Bo|EWaxXwS1F+)+IG9enzvS_rT2pj1)4SAL zzin_=0bkdzN{`MELLZ~)h*xeL8!eMTo`HZRqnvfo2LvrTT6x)~=M7l3w#GBo=T5Gw zj`JVOFo=|*lNXDp(3l*3(3thQ%wRlUHh{rf4D3QDxeqvGE#T<_e5VMY-B!Hd9X6B1 zU}EHONmjzT=%)+NBTGIopU$duoA8|QuJ?^3;iY}}+` zKzPfh~_i78QC#!>xRv*wl9+> z>v)!p(eK=*4f|vAvaO#p`OfurHZkEMr`rHsN=X%LdcVhFPWd5%AK zO2a&V$vC+Kj&j?z=nMUih>iD`vfN-o*R@q@^o=r!*I|%9F2KWaNzc~0o7ZSG9v`A! zfW8N4Wd8)MJ>eLyV`S*r$;-lf08%XYX3bD>&=rU?J$Qkf2W0>haX95@G;13XMy6OV z0r(BT%x;X^C( zul6ze+vr;L4LLkVQKr9^48B@2$oemyp$6(?Ef{OieqM6;qncLaENFJ!U#YGmb3JKw z24G0^a2a%4P}*d?X;Z|}hv-lJKab$sKrQ4v2Bk)auyf7OTH88jV|A{HypD)>HnFzX z`_m1w>w7-%r3`eDG)w^bH;Lu|JZu3`xeKL>@6a_sxYvbVFoUnWUcS?BM9bWk8Gmv)LEqrVsGQ7$QCnuT*d|}IXx~~z`!&Lu z9;3cwT8`Q^(iwklq%T=EN54lj_kOG+e&N)T!`zs54ddp{EevM@3`O};Pm9q>4%A1) zp|GQ=k~}SzN77Wqj#WSrBVnc`d55XrBNcJDr3@gu*uwC+llC+Q*>N|+R1LZ-X%SHC zqZ`%M|3oW)KbN)P5cDofw~6Nbo)5!xFpCtz$Mt76^WPsDj ze6+CwJ(n+@;|yGm;lfEUg^%+m+6@pWAA7G2q$+*#?EY+#=JH2Tr)`m_-PSn*8eadkCG&?Jc33&9_#OhrM=Pl{yMQki z9XSThKO-k!BDIy)=#$&_Mgy1AZF0WL`$Q(mNBE9+ykqra4}IurFSVJe-#w+J_i2e& zO`Z%ud0noH831Pa8u4z{?wPDQSn_8^vYbJb%X|i1nf#+@XQtUwe_Z}@AD7{SEXIa-T!6#=jUvagWi!xZ7HngOX4eO6Uj}-+?)O@s{iVyRC#2T{i_Xp!xHuR|NcM}bm!YawCeN<*ncqCIKM zvq6j3)1qCq6aNQ&QvZnXJ?@fAR__tGL>4FueIqplyXv2y-Kf8;FF7^YJkaP_%h}Ll z(}hxh(AE0acobmB->Cp_Hc-n3zkn^bVcE_^n+M>n<7d@lch-%5wI4ZMQv>P61oSq* zfBRrG)yRFVygk|(zlpFU*_8^ zu)FFR^6@j3O4IGY`C#|b_jYiynzy0b)2Is3sIofn?1-vC% zRb{NuH2`&z>&_8W+4aGY?~=_jyDna}RDc#EuWk*X4|?KnYeN_HtAmzqkf1t+cr?F36F{ z29B#H8E=5E%6M}|YAdN*z9`QM#Eu&ysY+ahZ1!TLvb zq#jvWlX^{=?9{R|_2095xvVIE1XlcBZj<*R+ulqEeluOl+Q0n;_(=SG=%I&}$382- z$Jx6~ukt}h-~ayiuio>X_moW`oCpG-{+9T_xxh@tLU;1>m8hX;;~RG}ZNHP>?DA#D z@5!f}vf4-f^5a001BWNkl=cd@7;dlUNZd?W5g{yn7>wq3-M7o>L8kIQB4_n-(da<+iBlka7jRL+2w1}0od%m571iF&19-gu~rAwZsoqm4X35aKsRV`nkD)5Hgx=V z`!@h|Z9q{0mJhZ|nL$VW&ss_JlE@yLFOYry27I%;h0{0 zKC5fwZ~Ta+i$AXH4d1SLT4^U6M<|D#xqw7cYw?+_Dcsg>+Dk&}Hz@h@{%UUkKc~IR z^@#p6p18eTxK9gh&SqF7vs%k zusDk74Rwvh$EA22g#H>Cxx=Jn9AG~(v{Rwnraext$+NR5;Vwd@cUfJ-TDs>5&|rv3 z*T9rD3LlHN+0;OahGQ`>b>ViVNip!*;qY5uQrp~7?_%t)p-5Q)463I%1ARXxN5GWN z^+c;{%Bhr%Gj%;tfXwe_w9iS*ImIW79!CqvmdK|md&u2}q6S?mkgEc|VyEjC zsuuAH(BMWW%C7fjZD;_+jZ=V?(1!|~0>rlI&;T)O#Vq{0iFit6?owUCadVs(>p_Wn z2k^`NEC4IOEJf)H=mYq3)Yl&>O7S%|1gYEr)%?$zPX-R0Cc$peHt;a8QtC=zy5ocQ z&1KbPHqp|jgBz%zn&4N`z0S}Z&w~!@CiVl-4m?!)1`uuU#h@VG_r6%0gT5_#2+$82 zMO!QQ&u#J)KCIDw2uXMK&|9UmpAmof5aqp<^z+{dlpQW`PCSmCnx$Vs|H{{(5#`dZ za^i|)s!L+6C;LUV%;N&dGj&@DXoyeX8!&#Y8-V9Vm znU}>G`#T%9G7S`FAU5}L)DD(I0PIMC6Q7%FH|@zMpWI1oIDLR3A5P-{{C&M9=`I-= zWSc*#$l;4$^rF@KFSua!Ln@a+0K0Vomy`hrob4>0fnv`6J^b*)%Nj+ZmcfqM(Ul@sSM$HtOk!l6{wYAo*%Nv2X5tXvx8$9D{WSWDF=t!xmhmwUDwI3L`L!@Xw zs_5Q-(`YF^7_-mT1jM<@+2)QWR#725Fi zy4aejoQG=B_Pv?X;b3$Ctb>%SI0J<#v{gOi#3NktV&d>XR=_mKH&RNHiD7+Idt_v)ep)AP61_W~LJ zNMasrXuu`PF?o)9I0*!h_eTN(f3K(m%Ogk)!h&y{2=WsB{5h@VLk{n(!2|T}K$x|= z*%b$KRgRn%UDT|~toOfwQwMipb80_k8){nrv&{;A8yy0qdGtK z@s5^*RHa|HY8?RxgA=136p!1XfH=_XD2*x(9K!&W#zgs1UKr3?t^?2Zx4-8OB#e3e zKkB4EL?oE{y1s<`^Ad8#z^r+CqoRIak?~~hS{y-^*FQBvni0$q%ff)5MK29IQ{hg} z`b^MZ1K6rAlH#&klBvtTltPzX$+SVnowa!n5!mBI1~Tunm|nxW4aLrValq0dPxUP} zgWOY~kJK;MRy~pL&jpFL5M^YFoOU1^qZ9?34f*a~3CGB$6h2Icle*+i0;nXYEuRXS zn&OY-(|F_&l02{|k5!p%<(XWzqEnsgW~|#Y8boBdYR`te)b@3}Gte_L$kCq8$PK^` z+SvG?Y{jhYfJ4?>?x(ec49qxv z>C{tCEzv-}tR-Z}E&vfANHp)w=bpQ|NXeT6^f{fGRz{xAIp>_!S2f@x;`bosYXl^A zGUYxo=}D&N2w;umV8(|fI*sZY${+A0Esq*)<%W z;w>_8ELdip92*(lF2QDvTLDk*3^C?ju5qSw`pMCB_p;-!Wj0V+`;{F&X%t9^3xMI^ zb#`gS0&8~U-d(`!C*^Q&t9F-^H17O^9<}WqZTwo2G=ScXRW?&~jQH=Rr~xjXW1*M^ zq8yHBW6FCzmredRu=c+OB|WU|0I*< z!@!*Nm?V|vZ`K1IsA=U}Xd3rbXP#LAVDp*PHkHA={{EtTC245bcrqH`&v-wg#}eQk z@o7fW87*cq)agR@)mwPH8yQ=wcQ^NP-KZBlT ztOv#mBbkj>7}o~WYR|pg(NxJyiAx;=MR5bo2$nP?90>m|IW?wCOCB;A&WH|`HEV-P zwq7&G<&JNoD04nOwb+CU#?Tj)N7Cu1YuW{a{Dm6HgFbBBU>zSvG@YpE98<3-=!_?e zhOgd?{$cE6hch7X0Rn!c!2uw1@H_Vb4j+&KAp!*8T*udbFg`>+;^--MJ938UYec`} z1^gl+*rvM%ylA|0Sqd;?05N2(4OT+_OpY7SFdBEVVL&Eyq!_fdcJ55kd6`u{qTa@H zFKgnYfUpEAk)@490H_nd$0iPz1l&slkb~+H1DAr0 zb!(-X3JmFA$ZVpo>vE$@0(~Ai2!3vWN(YlJ=V8;L&jI?92zU0x-f_Neb$Sk7jn3Zw z!gJ)!>R+;D0oGW8aiPAf!z&vvR0gvEuCL(1-qK%o4S!Ur znLaDMFEU{Lh%GGWeQlt8|)iu%= z@83v%m&zR3kKFIwfWl16va2_Y(a0cm*Q)ZgYY9<$N`^e@ZBdWv=tcl5M_h&iR28}r znBQ(l>)%}CD6^7`xGECuBdyDQ1#(*C!QLIVDRIR|+#As~e>P|}an9vkz?8m!s5Kg7 z%MZ}UEfn%@a<*jOzh8j9frM-Tg9Rzd{c|4OUWS6mDAT6^zlap^4C^C3e<0=HfWDs* z!02~LM6LD_ojga*?Au!N5~q1A8O-5`G(cblAMT`mKvU>gpJ{)G@f`5oL1QRwj?6T9 z4A7b6#&s_9F#uFcw^Q|!6d)fFU5+-e(d1Xa;dL_n&(oJ2fYcx7AqT)>m*KDMyYK20 z0AB?dW$+O?wp(W!eHx6wJNXR&=Q?S1WPO`C?&9#OU2s|r^)=cyvIAcC09^X)MO#{s z`DT6U>{*UJB*0tbgnz`R=ZHt=3!s;syps2Ci3hh4PmYm;=VXr34tu||=am*==U=I* ze0FN1=fU$B=KY0>BDY-+o+ux5HGdYc`yQLPCwQP-tv~WTs`h_k6XRsXn)T zMs|Kkev;Ehq6~g#+UGvb_&;lJ28%NQ==F}u+6_HMayY^gnf^22xlJx-a-YR&i3WjD zmfo4^!%R1qXi2K>KJt|v+WPIaAXuxKQ=A!DH)Lk;N8l>1x$}$qMpGA^(mSP0Nl7hn zcs&@tJfeFzM$WpukBla#3XuD41{w#pV1ou8J(*6iSl=ByFn#ku8FLcjzCwmQKorqR z)+YXp0L;IZ5k5*IGzTEg2d^{wF>A*R)VJrQ__vl5xu2qopH|yms5Y^w1e$FKmKyQ> z1bu6EYWJG8?NYV*ZHi{ROOZb|Ia~vojUA5WjN1UD%0zS6lxa+dUI8H5h}Z@?zVX7R zEK9LbPI4Mm*Ld!S^Ur428UV+R=U`GA1mYXsu&$8JLO zQJ|r0AQGMatv2(J%aJr8k-~%ZUL1u-s-QcmtVc-(k5II)qzI`Iz$RxFB`9=CKqfoN zwesvpq06gJw+87p^l}hgnSu8f8BBC_I(GW)powNy`EsBbWp?%}fxOv3b)>UFvj$RY zSzZrI@INJaCgsW}>P$dP!I6)X#Ofs2F6(`xE!mz|Ii{?~e&i#o7b~($mIMFb^!Jj^ z5E**vQ=hsz>ZqgI+P)o8uE$AMnVtcgA>V5o)*`T`paYx{036cNWUQl~$;Jqv0Com06!NU>MQSLH4Ztm>T}kd){-kzc%mu!$17P>W>8gNeknA zX29n>%KE*;;~AJAwW$-r&^fo&3pQm5>_po~GCJdL2F{u18IX_eFWJG-`}x`ujk4bC zN&lT5(a)>qlq|)$1V?PNT8v>eicLri5XN*t5X7JD-U}m}N2u9|)=Gvz(Trr*E^7~| z4ep^4@snj7zaU3fQWWU^H)P~K!|4=&0_$ICcb3HTdn6ojZ3eu8K>#SGPFYAx64vJm zSiM*vlwFwQVk+mE>OKo~AI}L00;e|@0KAIcb3o!v8q$X6YZRk1B zR5}LW@(53%eFDXif}_=2%WVDiFoKMZi~^C-IIZOL>A z0M+C%8T1C66F-_6S`(#PliLYbqEn|AA@}i2()m)ZgQmo@HVa|0;{dj_BXr0>P4u~e z$NGMe*RWG&uc926S>QXs{A1*S3&5rS50#GIMZ7+c$c*i_-q3gST;Gc&1Fz5k^JV0S zQ+ZsA&288vrUmb!6DEFAyE%yrv2noLG5fod<*?V(Y2a{VGxK}dsf_^8tgd{01UzP7 zEVnH?;^Dv|^v?coa+-XY%cwi`S$noQ^BLXNBDlGBKDR5L0RR%wC9=zUzGpu3nXRcL zjAmCb>0yZe<_#W8Z5Z)rM4KhLW;)G)WT*d?7c&~n!1qY5XKh>RTihGT?UL?9A2Q%u zlBaF7<9;3}__erqDTA@|TUb35;~@;KJkEi~u*a_j5jDQnd@+w@~8bq~Di1~gR`XlOX&kdJQ30qlYX({!FOA0DrmijVOqPM5XVhynb-5_7dmkK34(c!TcipRWjtFg&je!h$y~JJE z==DW-RR^l%^gK~KVrd4Ov)p!fPNCM%#;uEF@18HcV686eK8ya=FKs&dwzpl~TgS28 zQ<0$SO79~w8dOr`4yv$txw%<**Tz2iH5lF~R)9WZQ7ksZb zX4gh-TPk}*X9uO*+OdrmK}VO5YfHy(af@4&^_>187a%8!y!+knE|I_ypGNiV_PJ=w zjFwKP84X5qu_TYPw)yp?_K(^+(uWanpXtqIrPtDXK7g8m$+#Yq`Rn!>XqYj#b#4So z2F9+GW24+~m{Vk(lxt&jJ!sglEF7Ai-B)0W1LTRa#Tuv&%9wuA)+#l{t8JaNtxXg9 zh;|q6(1(vR?Iu9N*}<&k;}|yD#F`zLK@#3O$e1%N2VnJlbitdg3g`59BL{24SlQoG zgQ51^N^SV%nm*z7;TFJPDxGra5c9PLn(n5p?lrU1Lw!rrL&XR>J|e@v{T6sogF4arD;# zqm|+8iRf=J4IixVUG+ax z_n(lhBT@U=HJN=`^SoAw!ecf90Ql~soP9S@q~8J2y16~X&kkkD;fCJ1L(0*JteZ*1 z%g<4pyv!)W-`y5zaX>ozJGX5VN!ellPQ=Y=G6Dm$a&n(CFd2cOPUhU^gv`NbI{2t zlx#ImO*W7+XxD~7V8iU9J9R)6x#})fR1N1BAEw1P#J=RF^Tq0Gsm@ij-_6m+Gts^+ z@05)Z`f}Fk|EC;FBwM9ze3@cny6pkvN7I*xO9OqA_Bcps0x)fL1tOJB8?>^%v?-{y zP?VDaI4+9gx&VH$QKm$R^vDm&=^eT2FVaYLUjdi{^*t&!B^1`Kd*4NGT!zE32gs>T zwE>l=$enCltIx*NVFp8adM`VFZ&Q}Qt?gDDSh~Qj&vHI*HT0aj{4z!ONYQhSrfyhL zK+<2o3E~oTobF(%z>QIawK+{zB!^FJaD_yEeEOfZj_Vs ztaGY%FZ49pzeHQ_5w77wP`kX+}s9#M)oOS{3tG#HT)#(^uvlhTw%=e0Kf22g} zoRiImY4@8;Ct0Ihcx>(2ICoj}_?+b7same_G|2$T>p9~$KxLflaG!hMdv(%DC#`O& z=+9`to1JwAakF=Za#2A@0GRBgNAK*WoE;V1T#r0z-;Np^pIv_J?`{BBUmW?%rlUzl z^Ru}<+koMyt!vTROw}>E7SE2#0r1^G%VLgH&c+Lr{P`;yG{@&mZTw(oH)k|QAC`b` zu4l%}+{SJ6nU%W@Y~}v$hG!$tw2fc8>Gw=Um8|m5+ zq^AhOj6&7^I{++Y=RPOelq&NzeyeWs%(0&D$vTaL2+KG0C0z!?w{GG|U#5%mbMZf^yYWHZMP}&v)6bCznt>#dI$8LBRXwiY2O4s7}j2P{iT4rgA zwI}#EbHd0GJDSlZ?pr=NMh#tYa+Y9hLP%_7~?onFPRW`%KASn7q z-%YN4kP+ae86{}z?RI@hG>e%9e>ayMeHhxO+ODCl8o1h+U8wvo_O0@)MFJ{Mnxi+J zFC?f9YJ)$nO=M}q$t3Vx-pexMzxDSA#WPN%;dr(pFKRQh7woVe(kA*-+eO~Z|DwnZ z>-sp;y1fGp^u3PCx%=Jjw))S%`@5_Cl?ZsrxvWKCyt%{gc^w%fti`!M>0|bcmlN-q zx|BbcoaR!SvOdnhOpab{t1s&GcFt&;X*mnLL_hQW48%qNdN;uwl0S2d+{v2m{e%V> z4*URxto_|Bz#8#>Mr*fY+rZ>V_A>vY?ri`m1G_9!xep_rXWq?ZbsPOhz-|USXZ)YZ z(TJw`*^!LC5{nriW_U<^kGCOB8Z%?{78GZB##U6d2>)((E|u9c}2=HwLd7|EzDV zsLDIaCdVIVh5mv76v>|1b=>460OCx8z7N-9`kB0EZV-v;J-a7tz<<&}*qpPP1I+s0|sY zW|}mePB+RaAhH4cUv$0R|D0rpjUJpEoXakFU}F16x|Qp8;OgbfXgi`)mXZAKZs?I| zw8Zla%0@iNefKuZ0Cd))p>3-8EbGt6Cye+$;{AGa2Vab2eXB&A!cbRm(S#x#R2Vh; z?Z$J7p+U;Ej4r`zuh0AAyduuv*aTb4=${y9TZw* z=VCIy7ME(!@}MHU=b){XI{@a;*#}e|Uku#E04r$Z@>U{Vss60+06X|}b@3^V--@!} zajYXHIWtLrN!ER;_(`gk>*}4DHgrJNhD+%|001BWNklrUqy!>&{| zbeyMkdGBV&zpf+GfO_m0rw%pUPW@qx>xX66&XCP{il%tqtM{2Q_LDi7+Pm|e@4R}* zgCD#itp~d{ogX{R*pY^gPnECPsWsW1*wAcWLO1++$TeVtlPB0{!2d+>m%zq0+mhRw zZRj>|8MeXy&wuAO3}rmgZa08xTfb+3VhPkn+j$1S$I)+W>bV-nFjkrRga!^DRm!K& zX}z?Ul>yK;IxO)fw|zv9O#2z2%QEWnwS+}>!-FilGdUQ^)rel(bY;}X5f5gx7|}ep zBMxuqBNla}9EQprX7_imwcRM7nT>&=XvQT#R~SPx8pVLxD0>FJmIR^H!&*9(AL$F? z`H#!EzEehp=wEX>H8QcpnCu*z5w0&$)&(+L&y>Rax{km3OC@I}y#~&?IAGnUEl0Ab zTFUmroHS8WxpV>+<+&l{?~(ILBZ6pC2G2t!bebDK{8^$w0M%nOJ;+gbKgb{W%UUL! z9W*E6Q49>?WDSqs*(i)0k{hTPBsB+ae9r)lThmc&mGAP5wX3x?JJ6&nA+!IYzJ6M= z{1Nq&h5YnAe^}SY`aVv3I9BrZ3tC!mV;T9fPO~ZF`lOa9H|uYCEXj&T-C7j5me&l` z=)Ee#LCetfXvz@m4rtkd#gXjJY){syBpbP}<+t0!`h4eHCQ7jp-K_l>0Vn$NFX9mc z#y9E9n$41+TpyzDM{A(SrjC-rrLbcs;?KK)JhBD+o}Bi_>VOA%pp1};V~#my_0S*x z@zv=Mdsx}M+Xk2mvO4OTJE9z=$e?2ewEQ{NIv+B+jyR%#zgV~Z@sEGJ?C#|VH~+Z2?3j+_LBgy}OY~c-+`8ORAD4jb?7fkF9<^=M zE-y3la)}4CI+x^O^iK9uyOF1fNh+7S%^e#KC`X%WN$t4=lwxFFj8a5Xq6{02H|JT) z3q$XQEF5!-BKotvB(8-c-EYi5xswyc7_#bx9gY}F*7`-RG6zR7?;0V>&yV1C5+BJ)y3MXM`))MYjti#a%NvhZ}oWev|X+=ZEY|Inj;I&%VG$v z-BDiWU=3u?1cqtf*wpbagI&=}g7&?<7v}t80dN+_|BUDjAG*c)Sw3lC@H1qoI@XSU zA(7~y+L_Q>%CLcf&Y(2=A7}&NgYKOY#;zF$YDwUIfwT} ziavixbYV>&dHUE%&KFsHqre8cxo;4e`zNv)b@>0m-wbrh@1S*(v5?8mUJT@L=D0h$ zCi=K+FVV8`D|FhN&4$j{z^jz${7Ub4@?PJY8S9V-+5&KUxxVKs+6BP7vUst#?8m*d z9OORw!pE>@Zg;+{I{v$&e19*{bdd(Mv5_MpA%J?;b3Oj?k1zS#Mk!lnj(EiH=*ynG zvsSTweI@S$^3FQztkt8LQ6-@DceVvGgsq!QeN3<2P1-);Nj=R|Yf&PxJjrx^s=cpYH=0^8t^>h7@Lk?LzM$`WIslWTXzbmrC z<}c{~Ee$3|yk3&!W(yL2XntoP14}k#MBCgZw|OI9vm3CMpV>_x_r$Mlld(}*&32hx z8rfZccO*l(?gIRZaZb^s;YhVAZZVeO>y0($dg?ei_5hZlmM-;4krt&Q6b3JIH zU+dbCYimOroVpBDKsy^$?WopH`kJzYWC;_G_!db^b03_jem58#%vGq|D39WjA>a-kIaS=%R~O zfBxrxzIxs3URR<^08)TpSz9KV{kr}?@4WL?zx7+cwYuXS@3=bdxZ_rLzx&-+2k7L9 zTyDtMtj$Y+$yt&er-Q0^ZUz!Yz;;%4Zhw>81dLpcMzkEYDf7dDk?UHt7eIYO65mVj zzs{gTpVz$RHLHDfWFtqt-9T%CGq@c69<_A@ggf2H1H!83ZZl>wm3cbj%c##zOQ(JA z!$@7X$@>z|y(wFP_IYyAj)nIqn6>j?A)=Ers5!s9c@y3h+6S~CUSt^?9@lQY{U4*v*gVB zn2hy5$&s=?=c{#XO`O}<0O%54yF=Eit+ur=KX_yO!q!p4)InpXe2nM{T@Z$a1t@Ha+$00 z(u|DJw~fdaIy@R}x5uNb08S1LlOBeQyjx)QY(@BxwKoaGmE^wB-r9cF`;`c-zF$`z zEbvE0`TMKv{H0#K^JxJKHo!0f1QdQv-wOmD4pXG%wxZb$B)5l%@B7!tQ`^n$?e@MW zyRq&p|@oOmO9><4vYZSqKvx?)W3-&F@;NX?~F6fC?`mKRWhAH zF@rcxk$BtN-nRO*md#wOW9Kfpz$EIuU|8A_!dw^=z^}YJluP$r*0OhYzS{HIX-sw(vTHWq;w=1W- zWSWiY$@XaUdxSl*%+1~#(QzBSy`3Xk_hxKIgGaiN>zaYES%0?iY;-@je^mC8>;&fF z8Lb81nL6mEx@@$&F&%;t7$|dTh_%>(THG5&&qgEWk#X60*CPnYQFwjqTD%^Puo}xS zsF+qZVsuU=`rzQnM)u)!VtNXP`c-{DD+9%55!RGNN(~|`?6xF9?(O76Nu9yY*ocyp zdQ;S(>*D|{chh2(52Zg&`+>t6=1R;!z4p2BFaexnr1WnP*m(cMi2fj4c4Jl?oEr5e zIh3~xjB}v<;rf=8ITc`KIU9}cL;g$Il$qZ(+AocYJrd^fnWKFhZPLRy^l#|HmlI&Sxv=D{w+G39z6ZcKs49jOY+kjC?uCgWbP3 z6X-Zj{~sgyW$<)OmC1=RobnRu##*1F0WnZa|2I0W6|g+r`kHJ<=xCFvfj$O3I|ovE z6uesGN3B1eZG5P08;$Ct%`r<7iIYe21Ysduxi8 zHGV$WWKy4#I9?~f_cxklAV(V_4`JO)NmZz&prCltJ@rTWWNl+_><}F zG8jC_av6R0`&s{T1R}}+^u1e=yubeIzg~SzxlO-OBb7TM)I-2;$gY0i10N{Szz==s zL#xL=k^7wi&`9>OjU0iB5g?kC<#M;JPr>66NV%S7 zL{9vXA6e}!kVjely`(p}AKs?S`w_UyeJnP< z`ny@Zp|iWO1wor_w4C{mksi%>yu>?i^NcP_{q1aPwzc}*WpT(;D@*z08dH3PoTYm3 zdsJpd&$FqMhld z1=uXaet{hEGc+RQgTXGT6ZE~M6zQQ-s=MlcjCVMz!Wb)mG<}<&DUTpZx#o^=Fp$XWD1$x@ zl$*1!<>iid#;mZ@MwV438r`{9zc_PtY5tL>0$(Sm$&qwr-D0jsvi?9#**sb@#|}^y zH@rf!d6xRmQU{I>L_W`x%zjN}Afu%Xe9b_x+nsbre4neeW616)0w71LOxBt)4NOFF zl+?JLl#%4A(INnJ$gJr?*1@1o0WvW#sh}o|ejY4!Mi0FXFzEEQwiOyy-D<|PKAR&@ zPNz7XBOkrzddmAzHrHDp%vrH6_)`LIXK;ig=PcI`^u4ug))N%5V`)f}6g~f0fxc%c zD)U$3&BX#m$O1Vm;bB`>tiMltzynr4{nJ0ay6auR$J{SBbC!{s7#6_Gf># zx=1`@BghYHjp!ZjaEG>beTi-(dGhu+XmcLAzAv?V8z9bo9D&u`{@mt~tSpr?k`3N8bd}%SZ@(v&i!lX-_Ont5y?6vmwk*#pN z)*4r|4iHrXIRkysj-{y;){PJ?A-abHj1MDZj3ntTIM0_dMgVLG%6MJ|_(d{6|69iQ z#WKQxj9?TyDQ_+(`L|M{duSuaA&S6Um)&({95ORDjPjs8*-&T2ai(XQM14!N>=Y$< zSwX=8iuSx;PKLFN95;7G`VdjszeZl!*f8X?1C{(t$YIE`$z@aOcs~G21yn_@26Yxb z7}&}n9-Snr^DIqO|7We`ymOE(~!IQQ2>5*Em6Tl3)CenF= zoFpecJdm&cewe@;a(SR+ly?Dx>~QxFx`EDfkA%Ra7kRbnXE*#0=^b{MUey3eCwmb! z3pyp*6q`{i3pxaiBAVtA(#}{0Egig7T4tl??+pi?)`qZSu2W$bv$1acG&yKdz;!{* zp7_9^E4#`C&$6cPOwslY^=LJU;4I#MuQgVj%gby9p8%r2Cs}x|Y!2&gOG0(=BbJqv z>cyAe`A`38^%Fnw6RV?-K6*v6-soSa<4(iOtDp^iN%uNl+r7??Ps%33_mBVhkE{Qw zwSBDR+mlZLegeoJ5@0;!&_h>DQDWamKy3-+&S>EJID00pFM%+pSLS(^vrJpRKce%f z{tQHBWo8-3{Y6e#&&N5wpVd*FpQ`IEdG8~dW@jxXQ}Z0@M)Z$$nU^Z!%+&opvL_?Z zGt!;hju|a?BTuukc0&VyCJ)Lw+kq{NL2~HrKtHm~WnKk7$n|EK@IJ*m`I(XL80mOi z^R`_zN3ojG9cZH);lsNu9t)p@`_8IT^`IB>ioM-eoGHP99YZ1Cj;)d;?lG z5v;r$IS+qkrwWVXWu99b8!%7Lw0c5D+)jngB-=Hc&Zjz#MC5dzSFq`(+5qUt;1T-~ z(=tS7f#$4RWgRBd{#?ta=nx4zU4ZXiI*#oi4Lp4_2ldUIlYh-UGeRopCo|qF-zr6kpZ&=+;n>;v6_D}&p2Upp-W``bixkL45qCX>g1Q;kj z!+^kAY}R(s%N_M=NltgegC$z!zPrrN>dmwR{E_RC>361pU+{t#l$?ry^w{b9WyvZV zZuqbUkaeU)0r`;e;W`SY9Hxy#M;&!knUc?daJMwrM$4IuWjcBvXEYhrm1R5A-swHl ztE@k{@4M~es836JI;tnyQjTmZ!deYN7~K{X3Zq(|YbG-x;Eky>%B$suvG1mFtUL!L zoq#0Z(Gk$v-5FIg#xZq`v)V^S^k_M$edPSUP@Nj@#kB8I#IW5{dssk?(FO3ac8uvW zrhALQR(a$~yMq+rzB0b2>5D`3DBsdFcH=|P&1l%(3jh(%I6z77b!#>&e;t&R`VxPe zQdn6<7SunS6VB!SwbD%OOHs70aHpA&QDS@($vIc_}2Xt*3zdl#`Uge}2_+$e&`e*vv z*)`KG_yNB;qU}9(Hznn8!pgy-Edv$gls;p7-lb=Vy1!3+`bwR)=lN*U0sHN@x{I9l z>8GDwc4LwrB|aILEIEd4AYs_o3WSz;$)*7|YP|I=Zz<=LU)B$K=3f5tmzQ0r0E+_; zJg^kyea!uKI*n+ubS<}Y=DgjBXHbysOz_PAAN3&viW$Jjps$m8vpY+?i+cb$*8CC3 z_`GHu-XeYx*(0AK>n&Mp`HEM(qCCErY!CqP{PWK*zj=n7fQKJ``07r_9=keN>0;Q0 z&8}gdbv`WhWyHTx+egpsMt(>7u*BEh$Ur>f{TlHh1J>Q>qVsno=ev>rcxD~(tDnyB zMby9zv>D5Y6uQuM;BNv*8puOQ6D70Y25>2Y63COiof$fe~HG0slRbF;yj5_U{&b6Tq-pT(4DB$S1E8+(L^;R}|C_?+g zii{PP7^8ON%H^lZMK>tfQIs`1LT}=|05TO2jCdUbD(?B;l*Q^Uz!&Xf^Tyvw#`qv# zk;s?y9(zfy_LnRZ!DjlFW7qcO+)bvukVylQrJexyJ}5GMBBIBc%)hQ_v-j2d&lRwH zvp~jqq8AYM!x799XUNu7)ds@84_B;K&>}4-2YtR6H0Nu!!x~<%3 zcc#e_z{)gQn~w4M#SZ>Ra)3;Km2-E^nFO8PK}9uAi!4|jodz`ZrZ%UV zz?}17M!#)s!7-jBpz(S|m55G|B=(B-fscUJzfmNObyG}zwrI5Rs{ss`OVq?=B>}^D zv_+XK`0I>TJQC(>pcC^gVwz_0^M3|yH0l^ma@@&SFUDI^UHk-)ze5dCTe{bjI2)%uc0@CjP$ zL$n*v$GX8k(AqRo!Z2M~c2Q@Y3R$k8u;?f4HJxp=to?8~_TutD#v}9%{21?e*LfKc z?aTi{&Z**WX^VdUy=>0Y z^vtUyA7w4E5rFC58_RkA+AsXV>a-vGvDGb=hYv;GD{J zK=Y=v&t82j27|X`LXzka~)JlU?3Vwu1;_ z=E3N#gTo9ZnORpkf+ z>`{r))S-{SM{9DHrgt+~E6>{Kuw!a%wHv(V$kIEr$QefC4su4XksbCaKfmGG|2983OGrec;jAS_htc}?NE31&s+7JV_ zVoWPt8~?mbVK2R|)OL?>mi`&=;5TP^1N7l}J264!eN4Q4uV{LVY|KB_)IChU1Mp;h_ZJwvv!d5Gl22tSpXcKN@}j>zm`>I=Jk-KcZ}m=QnL8nyEd?@#FJfTEjH ztnYBt7VG(5DZ@xw4ibMCFr_b`590{?F#fkf8=aq89~Sr@@MU7y>oyP&xY=} zp4C262l7qdSR>2n9&84=g#aNNJlNE9UOn%c%}ul?HYbo!7+raXo?(Lm?*Sy4x@2u4 z^z(sUqs@||u5`~+u??_>e%1bW_QY(&(9RTtvZhq0r%5&(0FKhQG&>aUCHvJz=C!S? z+55QoUpCU{8oQ+d%l8z3fzGU}{a+doyi0WC?{eO^o<%lj=RO>{r_BxbeZ(VH2P;qC z)g>eOciXL{`Rsy>^u3;Z|KGUtS4jb+4G+J+|~W= zd*1>iVjWrZd(GO)Thr%JyW`nW^ljwaM-ikOC zm+QYNn=i?miPSL#4BfA(-{02%UzZJF2QUeqKcOAl=fC&8B^3-{jZGkcJ=U6DSGJ4) z&(|5iydQOZrY>orz1$~n;3u_)^UQzxr`6#a$lT^Ow^`lc_P1YMUo#z}X<+B?sL#1C zPS=s#JMW`Br|;<6NH>;rDn}N#=|gVQHaVIB(P-yYW1US$ylNzy5>z9V4RxnbRk6a! zbdfA`IL?GwWUer#)|sOe8xgWK7yFTPQXVHNi~M6rF)P(B;j|42=apnI567X_kp)@t z!zsU3PMMLppR3Ch8-VX18Rt9dU3OHKHCAaf>p*H7(DjI4L>p#n4m$x4TGfj)x{hc! z0*DT%oyRzKHWRQ`@{0Cxxno!iRR91W07*naRHW^!sp8a&gV@|4V|I<&p$rN(6vzNy zQKAZXM$xpa_+B<^yGZ=aB7KtZzEbkVZp}h(eF0D;U_MA~J4W(#0-#TTVDDHrYVBye zsO^a|%Jr&yog+)ki+;rACbI!rhybc=a>=nq_DIRV9n`KjGU}IZyakXaJz}!~GDZXn za7_+C5@!P*(UH5#Q5>uPZ=?VB*R^i5iM44X@*Vad=-nFHOKxv!38Ky#VyPK`E=NzPxQQ#7R<1bXc6D46o2geHn{NVqqG(aI?H+lPbw?qZ? z+;#NaHN=O5Zg#WP1Mhdg)lonCqh+nsn&o}8rPJXF4cu{!9M*0k8u4BRAzUZQM`Y;j z+R^)+0>9EnqbZT3H@)diWdp)Br6X~ioA-OxwkT#pR}-B)>M{a_E(#-Aa=v7cklU8q zG^=m)-V&c??Q%NpsMZcp&i4Udd^tmz54@#p)&r93?@i~NQ@|U8RsbQ1y00yHW(xOO z;?Fg;DWn|9$3T%R1FX51{b2ndK#|QPZ_wGzuTkolgAO`qb*z>yd{#j61Wh-yiyL6? z{K&eT`!E}@fz>jJ7+_r~0n1=YC1+5>AjHA4-JhPsGtsy zTEPF>mXQH(4zdpBiesoU)BSIQy+*45KGEm3l`rcG0n0@39wd;$n#ow3_$ASkDQW8Y zCI(&4e@V~3QpWtX0x?Ik<6YA^zo>o@`76gKn*DHx-s!Z{JJEha_lsc%$I zT+6)4d>GL!-s$X4m08M-X;|(bsuV7VX-YW!2hqS!ONNOQ?jyNoO83;$PAkAKrh320 zF@*wlZ+zn$%LWp5Z1WsD!1?=WPkY+xxqtunt0(=B|FJsZgcDXb(_n{pU7mBhqkezJ zuPp&6_kE*sb2&2^*~V{wFUwD+b$)h9_cB<_z_pb9f9`OHwOtA$&!0<%HKG9P-gj#P z^N70v7Jp}?@eB92A=#{CO9qAMsJrRtnF|EuN-Bi9M(>6KGk+{&@gNyprdmEBL;GN5 zD`y&piCskO8@k4!>FnA)QDBdhAgr|_QUtwr17a_4V>cuv?YS%!4S29Yd&vlAgR;o{ z2^!H|5kDvej+0!Dd^p|=F!Ed(EG?z)kFqHuKA393aT>jf0%b5Zco%)3R_gv~lA#I+ zA!}v5i>`A{F7kIv8A$-ZPYWDz;tXp>V_G+ZA>IKn&wJkUR!@1#Q_6-Cz#tn<9`>+@tseT&hc^B?Exp_s7|eQ- z`*B%#Ka;hY&6)x55zX_UB+Jz{Fh6R;Rep2deV-Tr4Puw5Q;lpm5o7wtBOz^PTtuV- z0NMMaX`9NiZe7%Fh}{_JMz|W)h$POGrHs5~7%;f+ld)x_9iJNr_?;>ccPny|$x;1R z8C;?hY~qMSw%5@!KPgB2Q_4kjKRIOpAZL~mv6w~Nia@RIYoqgf}|n2gQjvB z96`%VS%XC$!b&&lM5n&MxwQJ9e2PpT6NQaWr!!t}(sh^3VYEN&QuH_d-}DpunjS}4 zzFT;s{8aW#7rMdme<~8fI%Dbv+;h^;&uASJ15TEfyhbttaE=_I{C{md z^Yfb4J?Y1Pe02jQXTD0E_8K{}p0(>9j3Qr+?hAb?vSRl~e=n6y9RM?SgK`8I>%K1U z4?04G>DtmAk_q$wh%Vb`HKNn(8rPd{hCUjtX7$f#>Hcfh&e1a?kh2@UE&+`UOkD}))^t_6%fWyhZ*KrNaYAkUncJL3YblY=d^u1;wP>MA&Ez_&iz3FIDF*amEN zG`TZuOp{+xfnNh`MkC-qdFtTN0dk_O(=5BPgYNpC#of48A+u9tOtvh*HRxiCmZm}$so{L^UsI|=osq( z*3OAZ z&P`Y%vPq{e5-nb($mkh0Efn{ebvRM$ppXTUjK4uL!XVX$Avcy>++ASr=M^_d_(m)T6yQRHTHZB&K>p#08=ciz?!xEQtD%gvzB zWgzS3wmz&?YkW>K;GNARZ0xw2p82Y#e)kfO_fw$e@LS(n({Wl>Qa3z}Y=ZM(sh-Z3 zPTJz{kDec08}Z6Tdt1FDU_R3Mkz6j7y*{fqgwvHjjB1Qt43I^`JAsMk-%m{T7qN; zBKjLpNmL8a_dPd>9;Sf>X2}#SJpuv^!Pw- zWYqn>4=Un%^fd!V2SFb3YZ0=l+kh3OtPc=9Z>_!&1-yVWWp$ruEB&V|qJiv~f2(NE zI@+7*xf_Ze0LXj{SsR2_;2QLI5LakY%Wi|DWW>Es?fFW~4H}xEt+F;<)3ED|!~+rG8|95bgE8x_tP3*RhcdjeyV6`_7{gUviuLca%HR`^;PK_XzCe zzGb@1>KVyc)0@eFE%Sii@Qx$li0~b*Wes}?_+3L$zrCd&N1b@$>dHjC^-QMIOc%Vp zGkM5;TB1w7H=}=CcUj1QyxEBX@Ep;3R9BY2k^Xb-Do+&f^T^tCnk50d){t=i1{6zW z0Ys|8w+7g~QKL$^)yb6zn7v;FgWo3U0V0>CGn-?QfN(Sw&X?n;V(rY=RNjX*y5VDyBO*nc?R(nkDJ?2}FBzowabmqmEZq_N$N- zL)Y{HfL@6?GFlCkRDS02+iwT*p@X4wUVoLrY`E5>*wIn?LKKhOmJb!MC3Oy9m`D~o zTKSN^h9lrO5r(sg8C>0nh&r2DY>?;%)9ph0JA`Q_&&IoGW3<=l6Kf3}taXug)AhEw zqh51;X*6~HSD)S_fcqS!A9=0@m{A8yO>QcALl&PVrxr&dMms6%{)+Vdj7~qe|DztY zy0QRZ%(gT+sLo>Mh#XkCgK0EK%9x$dl7q`-cf6`{8pV^Y;}}INImzMnnvT7`BHX0& z_zH=_Sx0>tjY0tlRsOypQ28FE4EdO%isXSKQ81}UM&MvaY<8xyGf>MQVg%$ea2-xlJQF-9S;?yJ`u^ zJ+wCXw%R~)Wu9hP&fiS`(KEC5X1_e@zxO-pojsRnI;+=tl!5B3{X-v6 zbt7m{fM02(gBOfdb!;1Ym<=mLPrzs6o$8nZ)Q#>3P%QV-h_p1XzSJ4vRM67BD1+U% z?9}~~j0{dEK3^mOt-dU@X1x)24wn;RJ>O$xJgy#~ueQ&DZ4fgPeB=58$Z7&wdEs5l zhG&C*g=FhdytiQnG&?#C`0P=jjxSUU@DttG^-Q{sEAppA0BfHBfnOIG;s1SPOparH zkjY0&s}r(Wb)@5Y@K^u;lVt2Ea_&#kvH{LmEj!a#re_M1R^~$@FnF;957&3~yABMy*U+bE3!X)L*8uZ=wH* zrlW(L0kfCD-j@Xa&Sn?Az%tj_08&QtuKxx=o8faX=JjTsFz1l<*CT73G8$45VUk5cZ0VF^|_Kjz>K5k*ni$D#taH*G!9` znx1F9AIX8+g(c_ix}3`yfrKVY4sOi`EwzQ|*qccQ?xLgRPSY;W;}ywdN{_TGm*rFX zRbMRiiq{+u_r^E8Vf9JrAi$3`VXPa=eaSK$zr%ieKeN7!Y_rSH2n5aQ&-Bm!WW>7> z;LPRZHfG>8;`_{=Y?Ggn58UueRbCctR<$b|ZBr0NbNH(j)4Z~yp@W&`qk+y6U3Q~4 zArD!fHf*5V8I#GGthjuQc<%BzlFgBB&UhYmt*3g|rLF(dw~e|20M72ODbc1l0z7&| zA<8c0I-m^VBnFR&vk{@NI$Ni$-6I1W*D$be5MUv~z~+ruI1SJv1`(t7{biW$rF8_X zxwOt05qfTW1A}@V&`e~MB)wPkPXT`c>ce^He>QrsR;^5?1%NPF?SNF3$KcT`MVDtQ zszVMoKwq~PF}QfKra0NOL7!N5QqJ2&HuMGP zveq$jIZ`D3K2iga$3Fh?tK0nW53jDHNXL~#Gk4rUkF19-6FKTI0v?U7dGMGA5k`Yi zlx3|hJ5$N|nP>}(_yJ)|<6TE~_J-Qf#Ck4v`+iJGfG^AG9&LF5Hc?+vhI~o7_$dLu z4=KMKYYW+25>vmdHzWeN4b;vYebCIox0jUxR@RFVXwN{g$)SOz>0r$UU@jM-@HychIGoX(w`jM`KJ88 z#dBS>E%!OmBIxhHBv1J@$89`o?Q!}h17G@4`PqR$J%>|fgUtU8z^`;u-`K>%lrK|l z0Fa{u(r~`40d0=F%6z=%fSqVD=NSLFrmoHu=;IvLIJ$@p4y<>(x18J~<>XjP80!c- zkl+IV``hJn$xs#xPm|D9f3wVjo%J7=jIqv*9r!%M5(73q03Mq?@is+UDnDD_f^crH zYTrVCW_b`hy0|{O3=DWwbTFRRp8z|S5d4V%2`dRPCRPqNE{kw?ohd*4_7*YoSlk;OeA#kRb>(fksX0&x$yZ$+C zMnGqD-*wg7G~@ZG-J`x`8{ln@{^q)!cO&`A?a%Gaa+1rBGDmG2$?vHAEZbgY9+>1l z&-gsM9z2-!!|m~`T{FNN?H=j8*E{25Zd>%BoYm`qDhz)YJu<4bh+r6a3||E-jp6#E z0g!b~ZS9XwV{J^Il}GJ-%v!G-(&D}hAUVLxQ8;fy8ClDizEMigaZ}`@IFT0Bu%}Q_EA@9OTE_GTHEJz zcL6Sc*M~il(}BGJ5B98y#1;O}FdR5z&P*k@8sEDJ^q(YWbaPFubqeb=tFlN0=d*G$ zY#w^Hrt@M@5%eV=-+cx8PS^A<$Dff1**_!a(G4^LxP?w+fM|U0Nq8fKO=%Cf3f9aQ2`)GRW%9b>J1meRPyKd)bNq#Sb1MlBP zq{ZZJH}7SmFmrg$2c~-ejgnClh5L)Y_>0xK=bpPqk-x}u7YVJI)*ds$ z>>p$O%p)}7WBP5hBbAa^Z}T6ti1eWXe*3Y5SJy^6b~7+5hBryj==aE(yQ6WzY}ZG0 zst%$Vr20(f)Qty?PLr}mZFM2^w*21~@q>oYja+)}JU${P&3UPuFH6L(0H@${=msFJ zE+6<)<$wG`?K+DLktLF-?_r7@{;Hh!1GHn#BofHU z5HHXfznt?+UctRJsMufY4xO&EHU`}?Ei)Z5NOs<3K92M$(|d_`Zm*YsK<4?99C?5I zy_pQ=va{UHz}rZkFEOb!T%2hGhL@H(j%#P3A<}vxAXwTl=?e`Hu66I{f;?Ih9B2^A1chNNLXvR3D?v zG|M?MyuYpRK4*uLL#&UtXnV695a(pxPtN%lHS)ZXev@Wlsq8L7mZNbqGn9lP8@-XS zoE23_SZOpIDWuWnQeQ@OI7n~z)qbX>m@+?u^NW`ncLl%4bT2Y~Z8=`jti(Vi6bisc z8WN6vd%C`)xQTbzM09(Blt&88kdT=T4L7YPSOgzB`3XK6&9c)N4wR}46hIo_)MO&s z+S=}etXh|Yz$m9R!@*+w9l(>itG$SUV3RS^X>XSgCX3A0wz2~lFvkwptBX$PD7&mf z#(5S{L{7w`>Jf?PXT0Azl&~9#mTiFR?XS;f+D4l@TjPVf`uE155SrLvmBGU+B^SS| zK>@Q2VRt$ZU3o(P0KpG=(1TWYKIN3v4YZNtN-5ghWRG@NKUol^Yn26)MF zWe}9>4-${+ihJ2M&D!l{Tu+g4&fw+zU8a2_%6xg66nM*EkMm)f3Vz#L-@1CMz8o7y zTL6N-8+g>$OuG?%M&Q89%788N(90avw_9)#^v%E|w=e1&@ol#>n9;@S9?5~1pJ_Sr zmD~JhmU%C;*+!H3EbqC!qyFbIM{+*{uQUA`;eb(FW_mXQ!ru0_xuXPLwc#LZv}s>*<;#~sMO6RALQJNh$<0eQUd)qt=nP~2LO=iy!afe zsUs3Hlbh{m4JbIFB90~-8rsm2FhT)pko`Px;@JeOe63-Ty#O~pC|l4YkLZ@B#C!W*ydIQ3s&*|I8tEG^l;uW(!90IIMmdw_7bdNf|MRZyIfm0zaQRMGK0)cD-`J}-5H+7F>&~YBE^CSN~`t6OI z(QJvA+v2!vpPmHl6f%V$xJTV=8n>UFkC+BbAx9_(?|G)Sboo)O*LG8Kd(1yPGL>;MvEMA z3a2|IPP8FPP+1&}^a8EBVmIAI`nxQu2F%i3qxybw>?Co%qa612^bFAl&zhe{KWlRB ztX*tv4M$!3?T)BT30cHpr?cyRhZ7ot1LuqJs{?CR#s<)|dmB?-)v=d)s~pS}hN(E{ z^GrE3HbMlD-X_>1<@iCqMt_)QWLdy<6^R1O5sCVwu5lJEX-EE}rgm9>7J2D-hm8yW zS_25Cc8}H|LX*3jxfe}eIyxJ8C_FO0IM15wntm4J8gwt5F; zwmP}z;L!CW>q(Ns4j72O9R0@WIIOYdm^%OyAdkpBIV4FV^kLB)P)>C4+8p^-^|i>L z_sisYeR*eq+ss7$V+p>Mj&NDcH^2GKCHlwotUq^o*bbLH0AShpA;9;}cfG3|E%zlwYY$h> zIF1fuB?Zj2zcZ*H^bkQkCN*9B<<*Wz6|fXHS#7u zUpW%0riF;pIl{pcwRyD^{q}P3H)dTI&p9AMNFhOOU^tizP@P##k&=UMeYElld6RUG zK(0IYcxTiuFRB4bZ+q&Cx7CF*D-2Nz&X|3vrbs?5V;Ltg&?5GhL>hgO#B9(T{%g>VaC@x0m|t&jzityf_b{8*cpLz7JYw<>rB{*EMp? zOOGnt?9bvHD3J?Lzz$=0ZxnXJs@B0s-za>s~?jR5r~ zhOHP@k4_*6TnlIB65t9x(Atsna--V`Q#KfO6X(o_DBp7w<$H>z;hv?nS43pEgVKIo z4x=0juis^@pN))(?0kt-B^q6lYwTL;3sX-_>qS=h4$L|Twm$Y z8{n|fDnFbYZNA-s%ml_=AUE2;v!V-0htC!GV-bER#i+ek*lU$0t$PAaVd!o!FSF9Ynx9%G&85(I%6#xVJHiGhK|q%5Z6c z$$R8~EM?aB+co+g*Ic%V9--%0ek`B z7qdBwXLRq&;>%fz(jbA?67ajJ_)~Ug*78P9&UGvgIyVMTF1%SsphX_|#&5OZ`2u~f z6EM9*?Pbu}=xk-Orte|*zyIpjw0rkoJ^bNaf?=;ZJII;C99S(MFA zLe8ZnN_cakH_>mSU;|GB=N$cxXEv0rmg4{{NBnl9#ESwkpx>?qXrWI~?P3|lSBciF zyK+U@b@^A22ay?iNJ3%O^|3*SzLWZe&n;_yzDFn`ct1sJ4rkXXvJ&z=01VM}m!F`a z{~w?-o^R8?HXV8_&ccjjhy^iF^ zfl-zRZ$tDa>z(&=)aEtIHxn#3c{Ewgc6L@?R^$9$1~nsxHUmusgo&S@RkV+Y-{dmAYeB7&e7amr-Ae=dic%OQVEUl!U^2F8J8s7%`u@H~jB(9Uq)zQLvgnDI<4H+a`6MXHB;95qHHBMa6RdwPYu%|?$m*C-$B z%t*S+hv`U?ecw;%C+;K}VN=2s@TH!2z^lqs;gNxkrq~z`z5z@!6+`ZlBMCj4jUKzm z{a_##fO50Ceu$C{s2i{x@r<_kjDhQaH!`j_$oa=fCuPHjbo-wL0Nx^gu+ykjRynZv;-jBsq99PNA--#a3?rw?-4qp z>vJcbSl0THc=_9`_uEYaF5@#fC*Y^GyyNV%&t4sL&_N~dAE%6rq%SXC&$~eO*WVYG>RC^0!C09DoFXXwyB>;Q%v~r*E4!it80vw6Zav;ph@U z%QFFFYFoO|d##hix#Y?EpbYj$`!q ze!6!thsMj1lVgkMU>J6sJ5e1#;o%zX5qTh=8yg!MaJ9bY-OnB&X;G5u)H_sOY2W~@ z+W=$rHA7Kp;v?QxztMDqz5!GNKsXQR`;Mk|iK*M#PTs4I54yZm0GX(2PK z8nW@3Dl5P~_;qW^&@XFI{_$ED${MpWy&J$F8MKjNce~@OEOlVt^)Pr>WhkOZQD2db zTIa@^&RTYETlpQb6go>8Hn8f-wChn{iweejYauNy85%#=?fUF6DqcZdDX5l*{*f1v zT$1QI=PQ>rrj;M)K2bJ~gkwnuc{%+^yw=uQc5KAR1I*U;sJqI2Z0u;fj5byp0{S?? z`u`O;d2c;)n6g=y7{`!ZU2Qr*(Y@c*dcH&Nb+6UcwSgf%Ge?qXxtr)kR;qBM>n?5b zC(Eb*&U{>QYD;~{Z5p-F+ZJu*oZXvh!wXZeZ+!jhS6>#7<5PS^*x_vzdj`Mek$`G|9T5}sYkvL6(qm(!(-316Rc(Lkun#%u_?z6j-1Lj$@-<^_SbO~lU zaPF>|k;-&(P@KyNr5LRPoUKjDK(6txg2~p#P>5{#DT8`s+JZUDr$X77=vW?&Q46RrIs7D*;?>vZ4^i2QNtMWR#rJ(2AuBn~JHtTsLbJ&YG0l^(oU zGY@~LK`4Vs+8pb}%BC{CbEIVEk=nU?zb8Clbu|q_uN3S5TowkB>a@(dw&aMzjx>8> zaSZr^Nzp-cGHm@GEB7A05Wt-cCT#ZD z?Pmt4cYA$SPtza#YYaFI*o^p{%bLm5HUPE+?w1A-)W0MHng2^P&TZcYvPL?y1Qus~ zT++QI`ue>Q??ym%H!?PQFZV0ULch7gM%bM*s)jmpdo>03=tdoNw+hWk%s`17em73r z3`lVRGW`ErYiORN1;0;G7@pBJ({UkK{Kam+pAy(RSzr(2UmTZ5wbl<8<9u+95U}p= zLPZa~4S*cl$~|(i?JH+OG@-P4H=Nn>jF&MI-VG2wC~sRkM)xDi5l(QUSmWWS3ru4D zgPa^^(y}fR-p6R@av;kOL=iaah#t48y2^K)&hIG4*S?a4lB1977D=fWrnwsPj`0rI zS?{}%c&&S6JeNl7oeUYsFDhW|rVT#8EAR2lAgbbeokz?=M`RAl6l`bN#F~IjhC-g2 zT-o4?=;}cNek{Sbwf?_I12)$A5v30xz*@lbbp0Y-KSKJ=a*sS1i*`g`TDu3jy|Ky0 z`=h@ZAii9H^S@}vH)(+4G>#$@q9bd?I2!COC!DZ)*yA3z+V8N#6bfXuO|P9x4s1y& z+?n`uPRGLU1P(%Ox79lWX_@b%@<$GIBrmQ%vv#u1?m(See3F3Ix8S*=aG#eAn(5Bv zZA3`+OpZU+`4NGnJxiZV`&qx@`iKVEuFRbJ5+7%NWmb06ixeT-O@C$}G|Ob}Yo=pv z^AgyMcW2;fHo%$5<_!3b`Zm&mkxb;eX8M|GKcho#%Wmis&#cqAgpo_5b)Pycjj2w- zqY16D6oH86%WD(O@X>v1gM$sGS4y=zCGZz#?s9(T-w61mvS`LJCL1?q1e+G0jA2M7$#3-zW;#bvvet z5-o;+EIERuk-#=%y+Qg6=2Bh709Br4+UK%}RGcA42mRUEds#;;6Y=Ofc3b5aF%Wm0c7(B z0F0v=iAbZb*VJ>7NPEpN+x=#3ioWOF*4bvYsHoaOvS#vyzLsRoDj@QJqDKrGt}D>@ zqxZb$>NKtEJN9mOTU|rZO8?A8?lVW~vNUr@qo_#hoAJ-VM0RBPUM@2`)!jJX=y!g0 zW8mca08K?_k~EewRZ$i zW^%#%OQ2(^O*7y&fp8 z?PPsu*6vZ=Gu@oEb0&xFfUMj&J)Qo zVLZR2FC%NxB(Rx-bv|s$aAq7L(03nAq5P88&T!T$+5O8%-@sSY=j)Sj9z_0FH%R&p z%HZqUT-uEdYNQ8@N-^dL}G$Dh(?suh)gQ|!&dL*GJh0&u4(^@my^i(`E1kXHL z%kciq)@?P?2jAm;0|g^s3-CKrPL4(O&}*a+-wR{>-K-<%m+Js{>?7lUiVXjCB{ys! zYWh&==0L{5Oa?YZHbd4O=)_59U{FwQfqkGt^Xd$BVZ5k#ZnE{ zWxik6*y#&MydLZR2B0@+R@zzn(WZ!v2i|w&gEUeXsg9S*9&tj)$5nUa3N6#mfK!2$ z66)rlvav|`QLx{CGswCwQW+BN_YPIQ9@!DE*JtIwkiqcZX}Z)?_tZIO$3 zH_ObZ&&?Jky5u^pCSJ0`7Qn}5kFRRE&o@cil?D{w4V%Q2FX#LoujzW);8DLB-DWiN z>r3D%(`EMCujjvK^d1EdW^x(4T#_H>_e^ePeDOABn&o>-ymdbK-x-{_-pu5<*(Jv^ zKKNeHt8IMSroY?zocT2R9c^$vx2fLJfNJpE0pxW)ofF{ss%T*}J3%(%Qv_hG`8(@v z!muX}cOWAOtY~v0UTZ;!#IPabD%{_p{zmjM0AUz- zj^|?C5F0{h$7hKC$*8k9I}8_j-Pj3ywu}u1{-$KzkEvwq%SJTMgvFhG2Zjd%6}0>R z*?SYPZL6|e_%R$nNx@kJ{7@MbnJ2*+GZn{j9&)T~*qW)k-_nwH+y0Kfz1x}Xj%Kqo z(lX7oazce1a6nW*MGz1b5J!|8)Bilzv##}?_xW6F-S_)RZHN6H$8)^Ta}R4>>l)8> ztx0*D0c8#J0mfSpTU+1;IF0*G>jX4}>`YFi=Zyg192(~~CnKYEBmQ3hUG{v0ZV>P@ zyG%e)hJ+Jdg>e^K8h~ldo~!&O;J?~X0|wOw8^D+H8;=9znEv@nc@3HqyAKeV=yvK< z&F}`*{-mQ*Y1Q_J-K|x43VP$-Zn(ZD7jxi4n|w0>7-dxE`{MIO=qFG6U`CMJ z?_8VqTzx~Px6RpCc{bjV7xg{zkBd3DPw4N%AH5P_;M{t?FprVrVjy-FZvg$c2ZnWj z=LIiV9eKw)u5N(My_@_jn6x%lUiX5IJ~s+%@mvOoG<(o=RO-!w(kOG`b$L+L``)fz zxmiXlu5qCSk5ju1czX#pS>|zT%*c%Zf%A7~{1EGBrtvnIYsmU};>yH!s-9+GulMAxcDqFOz4k5DxgL#~%+>z9jai#Ba2(}o zz3xjgIe0rW+td17FETl2{8hbB9`OD3P;c~RtCMTlx^T3$gbhVqmzD;z?$Bovm?lGu zK|^G>IPn>uPt~E_7hq1`-(g+{d-0L!BVBZ`hrtp2R~X_?q8D~Bz*vCN4O#?zmZnvj z8u-C|W(|))FP)pmUIJ%wF&uiC<5k;xEjV^&xz57y&N;ZpIyjU>AmFPAGmw@!oJQve z9E4-W{~pL_iknp80B@9~)XqRtqAH(K4%&J;z%RGbpgaQjWNrI?y2f^vxqtX@ix=u9 zry3Ca-2fkT9061&*{;wdWr~3^UDe&nund?2#b(%%@d%yP&Q*N3pb;IiaE9f7eP*JQ zmB!E^rEBDP9ITb{slQQP*rS&({As})&**$Z?<8_c$I$?GUxjSAmtM@ZBR{$NoWrr_ zKwmj8Fy`qN+T$a@Gp&kRCx^F#h@w}^XNz+cr%{M9C*2wng*&)PET?4{vp|SC zIK)cFeJZj_T*SeZdK^|{manXoLzx_&<<IVh*sj+>N@`p~G4<2wa z0Z*6Uux}CNmgP0MPI_-u-jm)P->dd8krj1TY^s#4b{Kk7L5YgVZ8Lz2Peo80nAm)+ zdn2F;4bgdwXEri=-a!Mjv->Cb{9f(B$_rXGh2R!Og zt6iZRzJfOc25Yym&f#VOCCdhcyyLxi*UOLVbKpeF^WZniMz{;oK$o@0{ZaN?-^=*I z4j32m@p!j`4?ego{@~wNIU)qv$7)=s?K}NVS_t|MIN*TQKKtyG%1e3Yz%Jz617oV& znLHgtxLh*6c{x2EOl+?c!&KKsa#tPpa^t;B$L8pt(`D!P#P^D?ah+Q7yJtV6>n`t% z$1YRlYexSPT9wD~{CYc=aO`VNu7_jeyE*LCcoPQ|fn!6lJa}zUHF=ctbIyZv{%3$b zp0)c%uBO6o?t&lAlRfL>;kV;32hHs7k2m;s~+oO;iPH#xY=Qvmh> zm}4e~0fR$EJgFiUd@u{hN#s1$;YtER@QV}9%a$<-@0=f_jGI2YGaxTB>R!(zbpQcC zDBq5U;PyA%G?#$9=}pg@e4ktoM@`w$khozm(FIR^{SJ?3gKoJHXHq|m_d|xs$ z<$iUtJ;2ejbJad4!9jqaI)vz`P4*0|b!oOcfMx4kC=jDAYXGPKv)GK*8@?cXi1>yW zj`pG7(3>pKO>DqBMaDbTZDwD&$m_bWMb6pfNgrJB!Au;%Acto;C-5fhsMTp43R;z> zCckRWY{xm!_cy>dy$0E(kJixu0>9EmJV&sxH@1-a5zOa%FcxzhaL6GOkh*@%I(hZC zgSV*PgJbZO6Az@Bi#s^f%Y`1!Tj#F_?h(lC=|)cnluuFaNG~$k zyWBJ2q&lK<_U}qVrqBNT#79=!P#(BWWqP6f9NCKVrKhh-(^4CA{c5qoI&#hvm&Xzs zU4Pup+&?H!c6lB)a4r`dq(o0ToGTrCb!sg*)%P?@)iPA_egLZSdX%x|YRe{0oD1Il zV%;40_c4U>R%H4ZT-#79US&^x9|T$M&G+*#_(S2ud9G*KdZpH*fy}QJrg*Pfg03nS z1Ktjl&y|~HvUuG#fTs^#&1JCTK|aQ&)tnc~ zjtVFFb9FQ4{BeaiSDiMHCqPLJQtx|bsX1Qiihu-nYR%wl!R5ETQ}oGnrj+B?!ag08 zgk6O{koTf4cf1>PhR%ymiFftco+H*yQqZnEQ{TexoO;300A~L_fo$xjpraf`psct! zi+0P6-AiT=zl*$tcg^{R4OhB3x0C1aa_g3l5cJV6)C^y|&mqWr0`xuf;SXP(h?Ts| zN@+0cwKsc4^(AxmnGI|C**gvndO=+4R-fqK)m}&S>3hAl#4}1$29mNs$Dvn(zrznd ze04|6r@SGO0=onJ5vXzKo$rJ!b|w=Td}VpGe}c)~VDCS2uY0v~mS^q2IxG`^Aa<7l z8RvuYO7*}&rt?zekolG#i0b*FOrMtMjshGnd#gw>SDk-z%E2_=cZbj4HOOctqbZ~? zyfr+OTfkhv;*7qam<(-Ql@=1I+xm$w}7lK@f>zrT2p(LI((E9bp zyUZ|}5~wGQI%?ZCf_m`3g6&DbQow-c+7Og})+~QbquE(Ua(mMdwF# zt#yLx^VwX{jiK7=6DH+IM`;2y%m!13svQq`KC*(^fm}CPhCZdkSe$FLJJC^Q^SIyN zZK0>Hhfm?O4F1uld>Y>g;@%1$^JdIdy*uohM>2+PmwGF0t<#J0PQeJoA7kpt85o85 zCh8>ci%vka^}(2P_G>4fygC8fwv0fSJL@%@^ZdF7itIVB$7Q9zBPeM(!DGLs0j&3o zmhJV#?~(C;#@~E*^R)K1Cvqt znLY(gu7??D3R*KA&*<*ylcQN;)oc3D-R}-WVI|(k8FX8%|Q&Zjq`7nm z@ZnY?|MV~aQnF4rfUojE_nqkQVp+^ovNPrMK-h@?nJ%jz>H(s;GPQYgZ3($>xcBVB z-bDZaAOJ~3K~ze}pC4`kbN>0~ug*UE?A2*+eQQ|}%q?2DN8fh;_Jp550sof~$)z&9+dBWs&?YP@Z8{8(CdrcWci(|b#4Sn}K)50?1XCG`aT zYgf9!mnIdLvwAgSSH4^CdgK1O=E-o9E)Y?NT*#6hdZR%=;WYs4KE=KH(1ZRHfT<6` zF<-$=Si`yF*}EXq_6Qi*L-4sH0_$zyT)AgD=i$Zhr8A+?Aq{VUs=nu0%EC-#6zQx6 zQuu%mgE{wb<9=Wa1eb&MFV{>0?-Qhwc24-_!SWpX|x*TQ=%5I`n?@xRiJ0TCIQbY|w=JT+#Si^q{$|%Maoo`BL_V}uv@I#Txc{ge(MNKcq@Rf$Vf79y6~gbTc2rjdYLV=cU105hxc}~Ub_R;(7y>_ zP)8+x!8;tf)r^ivl=g@3kpEebY1dFsY`D$sTxh>sjKv{84*k+r`JWw_qcJSVq2Jhi zx#>Huabx$thmLbs0cHwGW6a|$M@8cIjvYHz4?$+>5s!T2ibsqwBkaBKB>{2W%uT1h zGa%9d+mhgtJ);>X)!+EOGl8%9H|nOzHS~5axMhGs`4{&o3(onYT(}CCa{+k*$6<#a zx;nC+zx(lze|+^d=tk4W1Mwfls{QtCwAX~lH0l3Q zb4PlU>7~+>(U!GoyPb>7M`dMryOy>&)AJEO)fVR79r=ZxO?lhq+A;C(wNSp(7I#b< zQw?x3=codp=6Lzr9MeS5;-Dwxcvb*qd>PNa3mGGxamjfz%<^&ggl><+x*W=V3Wjwb z41?mTNe-dKs$&J2U4e9NOwQV^&$x0oASQGNU3-BJW&xN@_&k6Qhod=>oV0WPACGwB zo_`!x;_BlY)*;cMadjO2=$!z8`pgpNKI_v4Jwna=G3fC$6K4HB!9^ZFfPV$}5inFR z!PVW=TP_NUtdcr{Nsx2ECY_BmJ7yiJF#fR3QntxX!F#jE(CK(qey`1U4Ls7Ii)_%JVe6KUAlt`l^iBN4YTo?-`c6FY#MR@T@Psn#N1);S z>p5vCmIn3O0dl+sKy$Qj$TEn4UK6gvJbJ$^rl~YAV{Oa9Pc`fO5 z1-~+&vxK)jfHVS-nT(y*x!AJ=@GaFtmwWh#p5N+qXk3r7cB4QzspEe=8z*$Y=A$rUd=d7h!%n)5ETb6ppr#>6GnJ3jE3`XUWd6h z&3Tb7d>AxOz+Ab9A=7tb&i`Z36DB&NGT>I)h|fm0%9yHcZO=zA^ZnHL5Dm=@e!&5|bKH{99vtjrpP9<|xrLMKcx(`mbw;4Iz zRszaoCX?Au?xT1{J+5k_g75PSF{HRF`0y2U0^Wq|HHZJn8)lJyD0sgmye&Ybwz4+J zt=09>;nM#ESyE2eRb=X$Q?hc3qt|y0AU0=LR77;7z8Cs4vFA$1WJ{<3rlD(5ZT!>I-0FlAPAIMG1q3&RUZ5TM zhRilIP?!Nby%vFU3Bc-^a0W88{XJf2c}saP@_kubGC-K|pIN};ak9!GSbfa}8=r=5 zyy{i2TD|n8FI`=LBjK0f!~6s6HN_!n0)eHkJ1LtpYzeoHLMEpHY7C0Pw%#&GF9?rwG z16Cbi0HCT=TXw=SB_O$j39zT{>6}s@+HEoufT+(m$E$Qz=j-&xvsvdXT|B}v>q|

Hd4D`+jeB(Rk3;iE0;nH}xy1X!W_bd~n_6Cb)&1{(|J8xm(=F)rK%M~;4-$Mg3lekBdCc)*D|)BrZhA&9H=lXe1D&i&)6Uk>xKOb+>e8tvq^5;x~i5{Cde z6vW{sp|jA{3A%Hjp}d#0rIZ;Nlv=(jLk4UonO@;rJnMY=R-N1SSCHvd-0r3WY=iIL zum3shQ@}vwIlpt5|8M|_>&x(A8;X_ARqHv1POC0ZwiRG$Ky8_}Dtpfm^I4r1p}M76 z!%}7~Bi?C4u#zd%jop>rD0eafP;IScnI(&-(=616`MnM0DsQTtHv3S2Bc0FY3pC3p zJkU1n1{=H{K3t>`N3HRFuKeW!kTWr~`ySZvIhex0Imc!C31r9tTrLjbXIIGe-uJoB z>ZgDDr&l|$vXfb#wb-_X$qPTD(<*eklaA+_Z&H2J(*n6he z9<|}DF1K-|G4A;_2fg0bpvBvf0b`|mZI1Qa>Op(8eD43Z8|2IV0Z%>k)N&T^=#N=K zzH@!VtG%(Puh(AJjS(+0nPfchwq|_G-g8h8dg?Nt)7248t{Yizd8vM($ES=&FF$L)(&IcRi#s+7rsGoM5XavXB7#sn$9Dv<+aH4eV8lkEQS7XfW4FU*kg4M7|;>ueG@3fWNQT;4SX2rEDe@= zH->n{dRsf!T-w?iBC+rZ^P&zbi$R{ikDJBvGzSh7krod9a-X-$Ikbe|*THkK*PBix z-{4^(YwEBHD~&#VuLV+(NmD8dNM2S`C@){+9Jhi70#|O3dk!)v1^CrDnh6VkATDVx zm%~Hk4L1|!f*{TxYgwnzQIW6eH|-_MO7t=nMTMgiA;7yhm#`83kNQmCn>xi_@jMN`~N2fEix~t6wNacbLZnjRF<%ZAu zq0@E|03Pl1Dtx$6JLmRs;TG+;IoE2>+!kcVjvcF~Jmo2?K+f~yO5M-GuYD2m z>Pp0|Y^;WLUB&r;&>zkfyxr|@KUv-D084o@N0ako?sryRul{B)@{-GIXX?w^m&tW! zWZkokC3MC!J-u9NzdgEp04&N)W4U$eoQ9sw&*@E%PrSZf+<`wuo~>709eCzMTkr~p zDB#O0WP+SSftSLG@`$e&V^!R%U_{*fH2ydjiVm1VqQ8Wp-Ma(y9f0q^T`9=gzt$?darci)Fsfm126Stoj4JeJI2TY7CPfO2bJ}n+DRL-t$Na4mG-V# zFa-uB<7adRc+>?e?Ya8=#D4{E&40xizv@G-i)XkH=WvWL+yei(K#4XRKr=S^jgD0e z?-CH~x8HuNdti^aC;#M6mJ=KZ6#Op>xINqG0hJNZ*RnQvQ286r#QjX?R2KStT#t8D zKeFePh7Dax8m?{DpgHRBj6h^Yr}M>Sl7Y~8h6{9J5y&S$@rkkx%xKG(E8+jHk10L3 z!TG^lIO04~TUR;sbYc$7?5uuez^BKT5%B1Nxt@;o;>%J1*lTZgJ=2q*D{IpdJL^5; zI^=S9`^w7c(L1LnBOU0)mI?5i2qhe_fQQK1X~tqA;M&@_AOD&4;`RwVZ}$~-g7l>b zhWd9S0H71#JfDM=QTGAp<9sOH1|yzLhiXY{eV{vRDV2Hlz@4WXp#}`do?(AfM+}5N84O@&u6kz)9?0H~LMD-vVb*AZc%pFJ9K{I~5Sj z@uJ)hn$S+p)BGC%zTbgtUy0r@_ePtW1l@CT-_O^%Vw79naJcYJ(C^IgHoFm(fIa^t@rk|mQN>gpqC;+Y1 za*KlKm~3=fjfu?8Uz0!_|33*`z5sIKP%lsRU}-;8w_^z)OCZ1@UV^?yaHgXTe_Sn&@w3K-Ok`E^A{} zr?-E^1Ajl>rEIxkmpbwVCM+=DZ_9M1sR#}Sb88o722VQaq)E1O#JecZ0Z>m4u0wMm zdsL3LC6i}HQ|77;Tj=pA^AXOgo*y0AtG8{$&z`+z?2n66 z-3}(eF9JhXiEPNR&G(6{gbjyqPcshf5*YkCdP=Y3A`TcvvGP^!fgeaphSjsBz%w*J<*V)0LYVd*Ey>O@hYcY`2 z3OUroZ0Ld9G`7wi%4pe8@@UUmqc?`wQ-et^PF$7&d<6;<(8%ZNwl$ph^ek+AdI~bQ z=K;u4xd?1HEcSo@HaWoadWTxdT0gfS$ zD6iO+7mt$v5MDW)nR=X`8)WBlNC3=$*dz;4Y3^pflB`#>carr>0A^E+N@sw?vfV?S@An>nqq2wvA1?af zkSNdh<+dN(n{fBK{f8>qNRWQ^s`4qyXo@ManD#j0t*i{*=MdP%-0}hd_9Xy& z+;fpDBALmG#T;y#I$x#Z2lac|*tvc84educ{oX-aHoQck5wueHvN`5&cmV=Ei-EZQeJ zo^>d>pWk_~!&jnX$^}@Z<03SN?Oz9T`u4@D{O3I9Iprue?$<^TFrgy>0>O9f!K;(+ z0jn&qc`%uKrdReTxCNaV=x~2D3hqi1$GUCDb2HU>t-R@Qvh`5}Tk3H~~`F<^Dq&MzsgD05}R@r3bXSDZx zx$Afjj1A*j*tvBSm+~y0TLR$JHn+lF+SQ(nP`KXp^somyGnw~fl=+uAd&=aa<&=zH zxgb6BLO=u+ln`u)EKqyioFlIj99+nK%+Paw6#(DAz&Jhv&=*^^FfcF>GU#zQ^fBl$ zbC14#kp=Oik|qs~mIz(zh`HX=ECX}vI4TPxG;q|cR1-iA6s1VvT5%Y{53Mt0u3xP0 za~>SC3LmdWnvn+_?B@J01|ClOzafAx|EmH{0^p`Kmn##)O^7P;WV<4uB|OpBl$U&$ z84+e~-@-FZ@u5s#55RXefGp{cLHjcQ37?yx9h5HvF9BgMIAr|$Ub&XL2At}GHdD5m zIb#4QGD73H=NnhCb2`8t;1lQjl?|RnA6sWDaeSj5YE_1`C9>$mEHi@gNm6G?2GN)Owqn0Dq~mt{1&r3?1fz zvo}Dmxp{o}l){Iqzns&zFIMgHyw}G){_zF$#lCHg2J~z`7^<4ciqR9qHkyF89w4)<(SHy^#(%e^m!u=Dm7U zj;{YBoyy9~z@P)$j904ry-vgu`Ko?+y(3P*^fSV%{IJ?tF3T4O#WU|GVT2u z8ZVF3cdx|U7=oKO0v!Av=6vb7tpz~9sg|RY0B&xL-t%!V24?#h__(iKDaYz-#9FVt z)mtB!1Y&(wg2tq*Xx~&5*S{3dhS3Ya^da#%<=X@8<>c}EgE#L%w(J{R^;&y{eE01D zQC#86O=I^#fSH{1X!K_QH-d4?lvcS-3|Qn_R(KkKR(Ur=!#f0h%-((!fc1Z2>z((5 z{?FE4E}tW)Y1tN($&)IML$8?Sor`zQ2RLMQld_M4&FA>_-G09v(^Ux#N5I@2H*n_P z*8uc67c6wCfMW26vL{e}5i;TA3r~^Yo^f@#$A%3IdyFB&3dW+7Fv)T!;Bl?u^(oVX z=BTT_hb$%zyxK^ktp-c#l@C+v`%!Q3tAW4>wiP5!oLqpn%0KO>P4q-~u~z@B4x48o zqyDe4V}fTt0w8`G^qMQ~%V``n3mXeNsJAyj@ILzJqgT&-*0aj+uK%gC?FEjJUb|x- z1?p&@2k2fPaT$7DaX$-+N^`GWbAeLn8Uehy`ZNAzZ65JwqWiT#2Nv1;S~s)2`|rR1 zYL9okWAzoD;)1xRzOBSMT>I!pKe~GHi(gzag?GK{U01sz=IP%kn5(_Hd`5cYL4OV? zZUQx$@$I%uCvnsm`AZEUADOk$noY}1F_sFhYkG;)qXI@rj<8$^E?HKu#QH%)r zyH1yk-^Pmy?zFcZhEo4edhdAdmobm;`IlW*=6rF2bf8;0QcjTNrm1%T*n1()H2e*m zllUW8*bv8AO|pqmewLY%fRttW+{u>)<1@+PMHaw7m7@9$p~;0w@X3JXruLM52sxDf zaXim`?g$K+{VCZ6d@ig*Og!f6HUI*V0m|s;Wj8f5n>qLFe!CW6*+B1kpzCij1omGp zxuk$UZq=ej75u&)S7gJny=2FZ)e|w2`y4WCAVRW1oaf0^?jPXLKc2fC_{NQ%vpI63;E)YRc6FnI{YeHa%TUqg!d~1y z)`D+MZnTBJ5IYN7nhdQPIBRq51TcDrJ9xd}$P?S0*h=_`uywgf9x)UBkLYl{47&Xi zbZFj${{-UH({S)*-@aPUF#vrJdf)?Bce?YPn_tuVnomgTQ(&P!rU$^>4>evUyw`d? zNMv>O^r;s-G+^kv`utEwBW7fJQ~8^(U?5fw!td5a>IbVDB9U>2UdL5pTuNditw@2%X@9UvnbLizKJ}roZW7j~z z08zmlC#?TAcEJA|WHGowakjrXGa3wv&&K=+W`u6Y{q8i#gp-}i)=6*)Iw#J_4N0DF z47O+D=aS*#34jcmJLQ$jl2PIC=kdt=-He;Yf@eJ6Hip7T+ob?m-0tR9009I}kp=SN zvth>U+GNPK7UI{Mayx(pjof7Wr5LXGV>ma?ed4=igJL0wTVUJ=tFfO9u=ix_cXbqG z%WZi$l*z3!{sq}zX1PK}`tFEr-_`djP|@C0X&;n<|SlpWxue&66-*otLT@Q^0bQyK8(FgY zPNPBUX<3EpM_T4ye^>sLOErtvrfH~Osq{3viHx841+}Zf_potooAE(M6TX2uz6AYz z7CJNkilEE|XFOwjP40SVx^z(R*%LwjSFw8ciBEju>W$#bEn@m~CoXF~7w zx4xtImz3-EI2iIWGHB`Y!3fMpn&7#W~c8)s+)7ZUWP0m_orhP%a!fA00KJzWFCScl80hG-(Jj$(0Srh z0*Suk03;lLr70WEbbzYu*Z@QkOiQ)v;2N2hLbuiDWjCP){aRkVmJOei4h|!6?>-Li zaUR?)@FBRn1c9G_T=?-tuKWa0xNV*M9~se&tfldzu+i%GtW+!pQKwN9O3LDQEhdksVtGgpBa5GG0_yWN5H+YH*?r{zvvrVCUlsWf%qYYXhg zZx8%YX0OemBct|eJs#k)`c&_nze>+qeb?TrCkLl*u05k*?sah99=C0|0(x}*`R8xA zvXbowk9qbl7lK@V`Q>GmFE@B*22kl%nRy#st}Z)&KKSDD@A2OGr{(v`8oiV0LMA7b zjq)~==jgrz^(eR3-tE|;gU(FPTwg~zr}vifL~YNNY~)9rzp7)Cj9)WQbA(kxi*Ye` z!ytYEK;Nlwp4_zepP|&}VAv`$eM-#U2xf=CK< zmdDMh^X9NF<$71h^k?A2jsfW7s^plP$N*2!#}%stF7M^0xZmfed2rs(^}vU{FooeU zk9o}M;g5Jk85X=HrZsSHug{^^Pw>a{J_F1Zo-#1hRi!+}k9;FIWCn_zfRExG>I4BH zI}WWQQ{^}5@rjKnFq;Gl>S+ehqCBZ%;!tS^wfyqF)>Q$7gG?P3-T7kB)7(D$W=r`x9vhK*l#@tuFb6v>tRy%gAeiEm0-0@!bTJ2du zpMxrO-u_+roVCqCj|VCbARdHzASLQmx$C=eUFlu3ZcD04TRiXdE_p}WkkLEQP4iDm zr?yGoaUKOt8Ljc`NM@qe8wm`($M3XxP7nAN?G(U|d;IAifgj@~>-#Df!U6bkZ(0ud z?ui5lI~EyldveQokm+2;HwOrFvQ|FoyFD9q+A=<7dO5O@tlp6wWxC+J@cMf4Ry%jl znc1PsENhqBTV{tn8}ETXw`*@t&lj|P{B+2tYU2h73&;6+DDUrJF5inVH|8{ezfS`M zrpOb9@dN;ar(y-%6OirWsRbO~9sbpzvJv3$Qe?0^i>IK(g};&U+j?M&j0zazSgY)v zcC7}vVi=XCQG1jx0W6utQ)DEmP;irWiu!m$7VAOJ~3K~$kv z$SfL%O*5r#nUb{zl}A)zgT4t30YIf4!Bl@^U3Vi_v_yeV>_bTVz>T>Vb$j|pYe$^v{s=t zC~obM%udP5$1_#mCRtDg$XkX}bo}!O(r1vbusIIFmkpdNsBVj{@D5L2coc?sf8ps* zFMwYEGEgz{L2A1haGcnuwo5AY_ZpAtGYW9$%A33IW%q)m2gK~XXhH^1GM+^lQMSJ4 z_33Y=(Su~xUJZy|r^-ud%<8`hV%yE(2RS$Nw9`(TfM*>^VVRsJb0GlYA%`7ShKV^9 zM0u9liReJopT%0Gd2Q;OnNZi^tUW=G11#t1sQiphZD(dbt~+isz4m4Fy1bpoDsSgW z4|r|(xcZ{&ptm#QQ_pvL8`TEp-tl@zJSfk8`>3Oeie#W_B78VaE=qV8fB_eAycfZo zy_qs;AI_6X9laYC%;CPLA^Y)j0DiZ|kf0v!UKBGJSHFAx8K}zW>^(ObK92e%@Ri1^ z)RXTc8a5se@F?x_XS6(i=dd7y`s2XQ(-DY1V|zmJ*t(xUmh?&Z#NW1P5(4}^W|VlM z3Wt?HhI;=2faC)Rh!+5G#?UhXD0QIBNyGCT+I=(t-$T$_<>?bY1bt}AYK?6W5Bl-< z0Ff_5Z}+Xx8J45xF7rA5{%+p%nR-(8;-k!{OI448ZVul(_OXv${S2~0`(U3pT_6x_ z`4Zax7cY9z>d*iD&sXpNzz51k-laU0#SgQ2#V*2OSDifueCGVgM`1YqdI9FDu4Ovd z%aAwyskG0i{_O1~ou1mDtqgwHNZ29&*LG%(s%K-f#3i~&xxD}&n%Q+OQo0;^&&~)} zUb{T+f4}>ctnI@d{_v93S@Ng8a>?@{Yj5|GjE2i{uI}vq+&kKa?L3>cz4yLfAA#37 zo-S!)24-9iJ(@=KGmFpR-1}k<=-FqVz52Xm{`_68?!7Zc10DhWdg7Cw)ci$HCwjKK zq|I}D%j%p1eRFhf$JgwPZuQ#DdKdYT4pZi6S)!jy^rxqXBU#PS)_b={&n_p+9KQ(= z(g1;g^Im`g2JlnxITJ&7df-|KjCF|W+Q?Ati%iFT5wLy%!y|jwAwbRGwV_f9s#4th zuMH|e!U9*kH_2Wk3NXnCSe;E#*BZSwtXXe(+4{U^0wW8T2}=1}o&#SQ@b^R3?1~zQ zIM*xoh2s8x9QNb<$XnnOa}g&_x$y(5;5sj;=%awY=8(us%ZyEiTS-Wj+r;^p-nR}` z*n$Dg22Pnh)XtRJrgemh%qo4Y_Zrvqo?a6{Z#Z42N!l>61=RTs=sTwy{60D#@56td zIK$!fU1HBnlof5_%H2l;^l{@|p1->^kZ2ZT-GnWx=sEiAoh&=0{C3^mH1+HvYqQ&TyxY_9;AK|F5+AeVnauXRz9?t1xT86M>U^0M zVn*s+0DXUpj1=d5orUil5-eLEQ~_|N!al* z4s5C=)46`Q7htJ9CeA<0SoV~{vlT@s0b~-Ta$wUGn@+CM)p!?Wd3Gkr(gbkgA`i~{ z;?U|vn12+*SezHfpwD?i~FI|0w^2p0UEb1OjJUBL(s$rt^{4&lITV7U#CLfnc*g%X;)Zg8cJvWnQvsRtXbZ-Q1GAFIqdck3Iy;r8w(F^cBAgXN}Ju?bu zO99N4AN`8mBCoeGhA55z>7ai58gy)nImCwuVhX72U)Z-|uyf$Y>a zJE^)&`~NID-P{U>?{UFLucNWE;3VUBukFFNkt~a!5Sz{HBC{FiVOB5vvRkAEKdZWe;nk? z`FuP_xrs~URzRO+e3VaIq_P8L-4=Sm>?%a+tU)|4UM#*cj*djU>q;*g5 z;{cr7c^Ayx`^8`U#nr8m>5HBDHSjo%apV)9=OU0#VlL(9AqOt{_)6XPvb?h!vXgs7Zk5mt2P--=0s583sLP#j*mN6qHhXKm z-wGJphT>|A8BLYe2%;VkTQ;-O_wRWA0{E|g0^s{S4D)`uZmXm76xntj#da%XVxNR9 zTONsdeGI}5)UqCX=)B5Yul00PZ6yOTJ@6L(&~?n~bX(luQ{}VTYY+Tnfo?>fw^@T? z&o(l!p>^o@4L>7#lC{CFW#uZ(F4HX+XD868AFRHQ;BOzy={@3zBUXnVdT6ol^Ugc3 zEbeM?pz@yed;|JO@b`7tKfxbI57+_e$#)5#;+Y=*M%SIUTGkRB8|kIf<$PTNy7Zmi z_e|byZ-*L~jCd7j7dCWQ6{uzU6@k13F+}^zZ*$!>c&+#byo@Kz7Ex5HX zQ!)C7vjRY?;_wNTZ-65AokLdpAYf~2=;K(8&Pd^a>O~c$gqjarSNCI0H@*i0ZT3oX z{$AP^3E;G(Sf)xVO`I>1*o1ew&=h>+Z6vG3_#;9~Xbqt;!DM=*Su~QFcg(}*$(%wt zXNM2Dr$={8da8`pE7?fe@+%?9!z{h@2(4)Y&>DTq?A7J95Qr!7GKXo%M`$O4tMNzP zlZuyNW5nh`Ks(&3p^Xr*O&-1pz?&B8U^Tct|J4jgHSr!O50qQ(#Qm**8p0Jix+0j! z{>c7%*&p-}&pFKOYuLU(b8+xP)|U7+HvRtrmGk5o`B4GDlz0a}_9@NP(%y8>$tv*69 zUi?(6Xcmf|B;4ouS%EiorDvLMXF;baivEg7DJYd^ubm2hJ0zCf@ho?D;I8NT>m7?L zp6rR%&@x#Y%iBX^i|)Oj8-uu@&OsY>NXNtKB2_Q1b6VkQp&FIQV%gVSCGAou(SX!g z=xyr@84EX!I;rnEw86QBBRaTOUm)o|6wOgXuN4Vb5tH#~ru3GU)TCoVzxy3} z<(;W)lgeI%rC5N}P!WFjvSu+7M7=2rIjbrObKg1LUOgzClHwtIfPaQ15l@*SkPW}% zBI@DWd_G54f=sGISuXvG@BApb^Fwh>v(AKoRS;4z@rNwBan?otTz6;I zZ>rdn;#D)_uJY#>cftmRutTFkfm+TF?cvBcrMPL#FyeXnzLcXz+;#BYpE3)SfDdCQ zg=_T|kFs|XSfJP@l?>pq(5gtSG(G5;#pcU-o8P^|$K||*3q@k^oS4@kWG&3kC+HRH z?^mV*a40?7(`)ldWghQb*{RUQRN3Xgl&9v)LTyt$&77IPUuqizCGZ^*X?;F2gAwk4aj5Zdf?BRX4-MxN%--3 z&$G=^_D@Z?Zg}bQTQBt4DnUK(+!ob}P*9oHqGW}dgP%Q(A3yx0?UQJxa-l5?vh=%41>0=_r*b75s&3EPL__|`ND7hT;^k)AVkzRpaPg8k z3)x#;USu!rl*p-W-*^-9pJLw#JmCpbI~k)VklU9^<}ft?pFZrQ(0)^WjOO4Y%8hbW zH7#P_zzGu|d$8<9iJ~@gt_zA=IL!fucC=(U_CS=*xYTZAZvH19{U|(Umvb+o(Or7E zXB1u^9NwtDGkJW&>OV`i2pkW`R`6kPpyaW$bkMuRk1Gz2!_wl;%()M-2FkIF#}g#s z_3WX30eD#`gpc#(z#8J75{M%Bz~)CC#WceoQUfv27;?1_v0B;xYk;0u^w>l20w$q) z`iD<-D$PBLAR{><##b=^`4X`v6tG@LUlwdhmgav-bS6%9z8ES}F-AdExO!w05lIO> zy?z11GQCaN|Efr@;ug``5tq9UGCEDdGv;mF#k+*EK z=_2TmmQnH!YJ2U3rRbDGm7=bV*#VB?huc&W zRRCnXnObT*xzl}&8qt-CEN3{5@CE{yXyT8{5V&)=U5U^wdLWsiYw&LNj0wO~|uX;w=6AK9zeqacp zUSUWRG~z07wG(uXu!Qz*MEh235eXr7Ab&)y#8;BW3b{Jn!`Nxu2Utz|)gL)5zPgbcHG#tPuq-;Ep&m+#{AKLV}pT&w2IGy!jzWJk;&mU`N@ z{kAO$c+~(^`nLD#YAmrY3#rU!E?McJ0jbS5OLuW-s?jOvu~qo-^025&x$eDd(ETRV zmTlwOdB(nI*_9<^zLiQ~^HeD*HbkP5pW#OnaA%HMBWSRVz(j+YEZ=AQkABjMlD~dY z51AP@h{^_hrBN#ly*qJrX-PbdPkHE4O0ILU)sbOrmaRQ4v30@5VElL8j0`eBd?&xz za-Fw8Yb21eAM2>*psNmOCIjy1KtmLpva&m9w|4fV3#xKRWT2@TO-a4O#0?j!6U zH)4MZMQrt2%-@YWOCHFrNML6JsNv{rUC2oou~p$IdZ?KXLC)fNH3o9@O)e z_yW^efuXl~LthW+K`RJbNSZrA47~#Hko;xhd}Olktc|D8&-8Y}LYlOK;;8fG<$2=u zP?nkGiD3RU{E_bnd7)5n#z{=Hut|3D<%_O+E4HVjqx2KI0$I!ZWwHZr(8SWJ-okC} z75q+lYL8#2PeY%@b$t6&-^i(E?mw^MNlScxmPCo=K`$RLHDMEBZTGE7y(4lmJr) zZR2Uf%3bt-^NjfO+waO&^tcsK@iKpT(W2axBK@s>{P`oPW2t=RUrg%HpsEg;_tC`} za`x#Fa#gh%?>R#mR2=RY z_FByu)~RBFCxrcq*L-%ANQrpvu61qFW7F`6uFB)+AjXA0Sd2LhUP}9AQhEac!++siJ;L zF!^`8yor1lhVxPB!z?Ad!FSDH!s2W2=X|{tA)Lb?-OWYH zRjiv*hj1PnhDq!V!HqL+6fsbKxxUT|*j5Nfx~+=if_7B@VP)3PY+Hl#qljUb@u+#_ zA8~BR*A{zcmiiMZ2`!!b)15kDO`OTHcsSgk6Qn6G^;L58EP+Y!BHj6D^=0-;WgiRfwZ!>8=z4%_ zTO4ORSDX5EK*gQ}%_C}{CpRO0d515;oAaq>ODc6RBUaA&{boKP1D5yd2%E3*9RH`J)TXpiSjn$)IParB}B< zvSq*Yvc%=k{@_U5*_FBZ?-~42ctFi%9&@pRiG*`HkJ7*yj<3$MfuZUBja5;L&0HC- zZZNPl^lDc1^FF1`uom+NQ635X@mrI1I#-pIvvp#F2PX-E_1n+@473c}z0tqAzGm+o z2(#VxbcyH$Sz(cP6Jh$)h|AD7+fXvPfv{;>4A8xIu>;2DjgI_$(`sF zd(bi?|1fX%xV%GMBP>2w8tC@SdO*hKVP=v_d2n@6DH!igxedB}^u7GvFX`6eq+<1v znKF`loR~uce+Vpk&uNbAeCG;B;~Sx&%HWw3T7`96jY`1da(T+F_Sydl(p~N{ zV%Wt}_-X9u0~!D=6@CA>YM8_pv>{*g)O6ux8wdVBsJ{w{)@yb7T(s^t_W9wDKFWh}Y$LhJt%1Jt0;|)4-(9?`^qi|flL^&T_n8|o z2*Ak2lXJ^c$mpE-5Y*X0RsA9?z}SMjM!4i!F;Z#0PAuWE&DCG)Z7CUWFhL*5qnW{& zcM%rw6N+p!_J_xM&8I=PWvmBu-w&mrfVgzXj^iQjTc9WdC}n~s!xmN|$$|M2$Ezo@ zly}qhN8}HWSLA>Fsk3d&vVil(9{gT=dHG$%V!{95=s-C!8In0wQKx^Bvex_5RR%pS zZ|AYGn5d&bx6>qV{6^54m$KlL5<`0D{V_e%%h!+khaYUE3kr7> z65or4#x?#RCpj|xcT>dakw=Jno&1xb>4W19wKZFlOyP2qU@_9l^ng|=Z&_)9lcM3p zg$h|DXGx7_^1gRNo+NNVJ7KpT(Aw}uAgQn){#(w@vw@#NxaL~1V75EU9~wl3b}UjB>_$V%`4t1 zb_E2{1SrDXV3&gMKR!0c@nXbPPrjXCYNyrz29GOIC+2F=XB0sy1E116XBO=hFIQ5S zQzuU{ZS(Z{H@|fLBgF}~H`BH+Qvx&t!eRFN|LXqP71%C5*1fm(|GNM`(C_tMM7%r% zd8uZA3?jDtZ(L_3nn7=u@ao@I8+Xi*V>q)~_{~G+megK)#P`*iNZH1WHs*v2UTE;{ z#gF&2UT)Z$F;cVtZ2nLB_XJq^EAe0&viJn5DYgYp?@~5wIm>9+e5x7M_dEy@=*Z@n zNRwfCZFWHu8d2l;kcTB^eMU&dv>vjWQS@Cm>Yyy7Wb3sMM6-RuEB((+^}DL0L2B|#A)&0PB^&Pg3f1Q* z%O9#@`iQOm1JQifWn9YYQ#+q+{c3J}NS)BAP_k}ZtB_Tfk9UKF(cwJM1kD#=6Cmi% za^{ZfmWz0iTPLkzMDDeuTqgm-at6nYxQXeg+fu3a;n0ie-Y+QODauP}|g zTg3~U2)jSPrgN!6|1A!hD}l@0h^jTN`lWR9pITRnS7}w(1ns9&-%@N}{8|8S)>0oJ za-OWBtJLbluVyce7@qm%tgIlybJMcNo%2ZES1&9FJk{>!mfX(Of&v8CmISDgz=IE zn_~rEzFN*)ovNTJjmCGb4uk#P8ZBgWX5eJh_qa^V{^lHnqCSW^*xB>;gp2jV!!Tfc z&e<%XjQ8reD|M5m-D5}U5@y{7e8w!LcpNDMwhouDmzsUCu@=9#n$Eysm-}j_(0R9( zge+n5&1~NM1o_^GQ-A-=n&eUGq2&dNL$nW-Ynk!9vQu$OcRpU7zGUR8{I^I7gUs4R zc2UiRnoB1pCj$9C!Yv6k>EbgV_8xv%fP= z12ve%;l`Yb>2*`bqD&sYjUQS8{1Au>PK)Z$<_uDs;~fBRzYzu5-c2krDI z#TT)ci&Jux!2VbI;&n4lV zZx^<8G`vkUk93F)o2Mg=&k5bT2>#9CjJ4G)+5_K$^B1kS1=&XQ#ehC#4f+(}y>xg2 zhgTXS?N!!$Fga^$hDTYaly=1W21QcJ^0{TG3JR}{Agl*W3v6Y)1gBl#kiiOns}yi$ z43%?HBcLx9!BNpxoVgrRLy^>AlQ_?&q7Cp6XarLCv6KhQ^V(pdipN!JqKt(RtQzg) zuk0KNOZI7+^`ErRN8Sy;WFnZi+&PHK{k^!?s(5)kUui*>W=f@%!%in>#vUTj7I*2A zPC1S_i9=u<4Xmxad z4)ATmExhWYT}`{U@|A!4!sk6@u=$NY4RJYLSC#4Vr0_p{)af)gPb?j^E@XQ6=zXgEAi!vtf?8)TKAU&~L358L6^lCMMa2M^7OtZ(s+|LGkzH>x(Z?k0^_+l3b^G z3yO<2uI-%=!$a7sveEb+O!-Hr`={bOG)2Z6-P2!sFf%#Hi=Mx1x&&sq*v{Jvi#t@L zS0ff}S^z;E13bGQWQMGju40W)z*%5svHhjEG1&j$-{LiRN=k;zisbf%{4#%yK9trN<+o@n{H9-VNZKp)j7Ts{rAW1Vo`oaUgOD0e!i`g13d zO1b7cu)eSN+RbPs7bu-{E0N;b+Ep(Mz*@ zr6_$C$3Jg_co4&R?9gl6YA@xD7is==q&X2Davb%2|3d1N8L%3_-L9nej!ORBOI%vw z?K8BykUiDus9|Sjg7l)QpUO{s*l|C9?^|`3i~!0kx`-6oo87KpDolHEZyjeW;ArFk z&`9R;%4F_oe$i->$}xK^XDi4i&g=yw4))x}m!!h*R#RATnG3;A)nE90VOU?Hlz&H= zA+vHjtY@M{a`yXV-LUFyX}?z%sB9 zet)`1y|1JV#)QA(S;pY*dZ}8iDgt>G8qr#cIqQJ{l42u zIpC^AW{S4@ZLMrJKDK6=xk(?3xFr;Ie|;HV89SVtIi5%C^pO-oboT85wunw$Oj)rE z-HNW+3i&cguBLiaGBTWY=dsr#g44{wp%iB2&5Cg}F_2gZ6EQygA8Kg(l8_rE9GDdr zgMvi8XRcGHj#tg?a-9TD-kLP_iUk`aPxZ2%88-E;_P^_hOtlOjQ5_k_%*%jCP7+nE z(J3g4CW-nMKV_NeYi?UdemMqYy`Xvn9CeZKOOYFVc@Y`@;@X3F#Gdv@Gz8)JJUpM5+u-{$q9xS0Jl8ez@vhm|f zLrx$Er*^vW1Zl^!dP8Xi<@@D*?|I`Pq~2@TJ4CEG=w{BwuCJ<#WQY7%AccaOUxYrG zGa4#C9P-2GCm2iLE*i&vev8{l4^>fg9Z!=WKg6-mO?$&;e}mz!C3PA$s>;b@kjHCOxEx9f957J2P#u)SX{9+ z4l?$bu-6Hn+JUDfrU$QPvrc*-Cy6D(xmyZ9%%H0mnsrdGSG;9hoc!Ir-P1&m;p?`W zv8im+*4pbNaFG~zZf!T0I`Z1HZSuY-1sUf57Vu`x`|`+l2@h-gMs4)!s;U<1Rd{MP z^YwhPQpB>fP#(xj~nukC2V75FelO+3`VPd$kHO3h_ zq{I#!q{P;XLQsLqp>ur+YrZU@3v1n;ZmKVfxjd8e4;%`+Wli1V9=X$}D((v0-dx=` z)STI=4K4c0#&H`-ZSVWAGE7Bv+dQCNDWxlH*Xhlb8QFz!KqW)&9c}5yN|QA!wc^{b zc5(@i6Yby@cAM`wS(W`tl}gpb8pexV(}xD-!b=yi61%?lT$nHo^0PL5+4_n%yd2QP z_3voHgqRj0k&>g`G7h|5KTa#0Wl#yoQt(v0AI2ud!V%HTvs!^W0_}X6g4h8YA|o>e zTB)1w(=^i(2HZQ`m0?bcFapg*S__J@iZylel3~cO>sx7a0Tay(W zk5=d*GGGHr??8jVv0B?la+f8L>LVp)VVM{wXMA#<#(Ow6e*CA$aHYBCKq3qAtIp2_ zbpw5vxqcRL3h_LuPcc!Qxx(WCZB?*JZ-Pc6-`T$|)5Fc#Kq~1aY#6hIR>$s?&R~+h zc5vpID5Yk4cJy-Pn5KD-%th~V{K*`~XqL)fwSCP?nP;kcBV`8LZE2zDG6?s^$@Bt5 zb3|tvhJK9>TfUC)^%W!|0deunRY5BEHxtcuKNEaA-%pK}lf}!NAhcOeo@3u@D`c5+ zcy-3xecy<$zr92bp_r6rSxGnGM4Zq!6$^7QSQT146s_wK9xItsRV z(>V0la?gUI+StZ-;}+nS>z^xTpqsmkQ9~S|{+H}v_JzA*Xw%#6uB{vAzEls@mDug2 zY&zJu>hpGA-k>3dmiAj<#p`_*=60_D<}frvA@{(;{_;cW7;Zh>Z(6(2dLBCVd3A?|PyP`V#Noeiv8;ODarCtlW$6By0|0&}c;_7B@ zo2$BnPwRfRG4)%qaITKE+kwx>tj&F38EehdUwP-y!GB*Px!1+v0Mbl3psg=n4(9;f zX1iTGqr@av508VK0+DF~-*}T5;LehVu`|lj8s>#;{{<`XvmcxW%swvnzJW(HP-o+L zlUz0JGCP{g+jgnW2{%7f0_8T!rnHd+q#bj>P*`t(DpQpEivTC5%w15~VOHLLgK&hn zh*LxQrNH(Nt{5$<%E}EPG!JFxJzLulw?7degGZ#Yu$<^FFeDSKOt;M0nk@{@=9sdk zT4|mI@h{~6?6UI4+D|HbZ;J4RDl?sV=t)8-f@bYLp9Olv@*C3*_WXWtV0mAzwtlmiXN(jtj|dBJO)N8MTCD8Vt#k0!Vrsl7?X6Bk>PFJ_mr_&2}#L8 z*G;A-y2=H@*?kwUO97{Euutx`GD0ZP$yRK@ak41vQd6~|tTCH?}YacTe%s=xR36vdi(T02bdw=9HN%0uUx zeuIPb+el`(lYd8Hp6*C1!1qpi^Ee#=qWesm_U_{I-nc~wDH7-ACQkP@Q;2%?dCnad z=Q?stJYN`?@HIhoeO}Ap8lZt89<%|}tv1{+CZpp4IRS5tB;o@vrUM z1Ir381eg0kU!6#)iVE>jW;=PRx99SZpXc?J!p9SwJ#TD?JWh9wgh^=fjQI`V5%-|y zF2~#wDzyGjAt4JAL&{99y9}ek;FBIag!H&C_HCapyGpOGGTl1bDZ1~?MJj116>2Jz zfgm=NV^)dD?CSTAr5zB3T_!UsZpFyB7MR+*vVI4R>6B7bsWaG(ji|g(dD@I-I)2qv zxp#1pu=!3>e;r&GxcD_rUw~_Xh1%upag!>sd7o|vCp%jjKw&8h!5vk6LxU}2pjdpY z?=t>i)9+w*#K*tI`x7Hf^)G&{1vy|OGsm&k&Fa^6hVQPGd1X|*bVad?>Xo0WEd_>u}BnGf0=RWG$E>5AHKt$B>(37pvYA|?Mi9VYMs~CF`?V$5AqjFP7Q5hQ-5&tNfiyVj?loU{ zTK{&}lIBCij*eM3J{I7uwFozcp6LBI7)MGkz(){fUewmL?RR0P^8Ng&dxg?)MtmyN z^~+Z~PMefnIln^F7Sbu-NvZNR?z~;4A`b#xv6Jc_G&|9LIXIFhOWGgi7_A)2{iIce zrdK*P^Fj$l2o{S`ST_bgS@Tr2%5H5a_69x^NrFEtr%+pb(5!5oM-7~0C1=pe1J_^2 zvhe=UFzk|ch}+Atj?9hZYT1s^0Y(H!wo_GDeL((QSKIqSfWzNXt8<@lz}Q}vVE`UC zv0K+}uMdEIiRx4Yna8W(Y{qS&XC^ldG^N zFOb92W9&}Bdz|jBdjD&tWiwgA8kNWj=TQy*Pe;G*x%h862Ax?4Q}B9uSt!~m9Weji zm1%3*tuk;qb8}@70`r~O%%y3;hKI++QDPZ`!*>|_y_0X+>Kl=1Sx~LW&)1Q90~-oE znjgX=wVroYT;?Q+cDyK{zM-zmyGKf?PIb1qkFNukUIEc{RV?Nv-cHRr)*U+2(f~wU zxki&pR4s)@4@$4nN}8{V3FiWso$drAmEydBq!h2!CpUo!D>4N8}rB!27cOL{b zm24nOISM7>zvjoO`X6>{sd^knUn8xLbCk00fi0LH!CS|l-Lf=WG2ppJgv;$E0|F%> z*8$Qw=W97-109@s#^WE^fQ94RqBgZPP|)tBaoV8`n8Nv3AKS!r-jQ?q3s2|8A8HVwRZBAB288T~T#s`cJ(7c664PQP9MIVem_^2XfVQyy%{@*L*`uoc#+k^WVZj zoz4v~tKHddc}=A}f1Jm3+3fY`r4!-5?%zg2o}>o(9kPnAV@+DlmAR)bV5%D?C0!~j z(j83paSK9xUrq*e?xP*ywM&huCoMY0vPfHx9_XZ)q+`im5L6?-agGU%4D>0s6#vCT z*pdJsg&~}=r|LBSA_QJmb8#yv_~Oqcs8$tMAIJc*W`j6|LvYt$PDW6( zpwI40y%wJMc3F~QY8P89o-q!90Ko=VCtWN=$^^G(-?P&;)hZ3zH} z=AsntWXckOmwP(%3vE(@gL*9>GDnbWvU73HSCvx%dxF+>6ZVi-ormBtPZe@z4XB^d zV2=HB)nTv@=74=b@2q24TrgR!Qj4g{YKucLW`uZv5oTvwqMyaq_IA|&)rWm;o&9~9)w){ zKr%a*+5*|BCru~?NuZgzZA^fpY~>tsZH}WOmU}2FD&2m)@XppPSan{qWA}JaXkU>! zX@)VoJ)hD&#*93Wb+Z1KJkfpe-^?!PR(2oc_xW8*LTDcSqHBwJRlR^&idk=0#98_r zW6ABDql2Py-lK|$pWgiN9(13)(^O?Y9YvNFIG8>APLOI@(@P@o>|NrsBUe2muwNH~ zGycW&*LmJ-%h*eaX7+SgD=s6{rRdpA{4PIv9{5rzP{^NfAmA&zE@f}F1e(mBmt{(- z%ZG1sRlAhy2aPg$KM}+}Kc3U?fbC^jO;cAP-F4nl-8Y9QESbqT;3{)QlM^hV{;M8_ zeowfvy7YXg8vXHhDn708A?2u;2BfY3{62lYKe{DB<?f`icZI)`p zhT`3)!Rl&mqM^XB8MzWcH<3t_JTdHd5a}}<&Qa08Y%O3=KPB(;Q?CN*zrO!d`ZU&d zJY%me05iwy-j%Dgw0Aj?uv7#bZf(IznZZIeXq)B?Q`Co zesB=1{VA=>B}0c9_xjS1|ISAhf|PjO2-e*{Yt%;rRch!bovJ%_8Y*l^>U5LqU4D0C zV6K@(m_>v6=r@e01dHESk|Ya!$YIP|t@~{^lRiiScSCC0lkxzkB;tB)SbkxAm7?=w zPwn`r{{WTLF~_>Ea2ud1<|>*w!WT4atmf7{c=grhs;KqF(Jhm{RkR| z6HBNfu5~Ya59{_YgqQHnW0zT(PDMFGZHFgbbZ{J>g|6DkoU8}a8#C?mNIZC%9*&av z&g1@vr9|0g7jxk*vG7i3ymR z%VS==@|NkqcZ_9b&BJ_{j8wu@*yvgS+#kVT&_zx_@4^1ij~Ail_R@L(b#nMm^#`}Lrl)FMCg&xT)QUQ^2tpq~Vm<@C*X4Q+6H@%ziO*+Pkp;6_XqfiowI z8eW?=HT8lgbH56FwHd&Df+(`>X%fmDm}lmSL^RE=nocU6++`5ji?);?gM|~`1T*rk z4D`%oxw6fKJ)(O2OOc}c3619-MWmK`Pwx<47)1<_&)JEbOAcW`^F2p~f@{!m!a&B% z*}gV3f^7I(MCEy>~&PD{}5HZ7IvMB5EMP#}@pl)Iw?y2EG9?M>U02p_~F;y0SY#53J~e9yset zXAuPy%n9b`4K~1I$?x>3Mp9i&YDqjAf8Sy-=WZwtAb*5o1D^iynR=Mr9ooC;{kZ+2 zV0H?ca^Q^>2fNTv03tvlxZQ_sRfw;qsFO(XeAejh%Bk)_A?MI57ZdDGCGIsd_jJiv ztZdd)*$#++KTTvtuTk&y~H!m6kE@1^LK_ zgxZ9LaAXC{iyZ^x`mqh%ITdpiQQf&RncdN%DTlTk9XX$@30!vNrfx~Jl<+9=6*)r<$X27N5mW%lS6RUD2QF)_O zh7hNP9uBXs&<;Zmx|nzQx6bjdEUyEe*v==GsN#a3^!2Ib?Tz7Om%=vm22o25s4D~H z^&EcA!=igrcz<`sxi4Io&uwl4c}8-p#m`|^L58j8?LF{;eyfh%R*ESRri-0&N;egf z*TBVZKEj@xW5N|B9=Fg!b64T794`Z;=W@}~^)f50G5YP6=|k9>tExiA%N2(7Gq9+( z`ugeZ5iQ5Ngg-HD9g_m|a5IKF88-I)X@BQ|>D6V7 zEsgMu6Vw^VV?N%e`%Rxf4ZN5$=QlX~sLIHh#--5tc5wpF7N-#!51do)!ts;B%j;U?3A+xt5TgtJ`@3#=8?0aqYn@r|r& zNXw;j_9*^On0cg!3e%4ufJ^{0;*XG#g2w%PY8lOQlj(u0RherqbnbR^G+{oS-gN3r z2x&|5PH8n}XD-vrNLg(g7(rX8IulN!3$-BEaW*gY!8Oo>pxyWSW*0Y)>YztN<&&mH zKXg^|=G2R*sFZ){2&9mvH><`1EivWzYO6bd_MvuflP2A{fzowB$m(Yd$;kDoWEb^2rg9mXlEHFTk_%zdLwB`=ma9N0$!!;-hv(SzC&sEE_*T0BeLdGvMix3drKs zuNa4>IL%J+OvEIEh_7{9iUD6k&v>d^Hk?Rf36j3*u;+{Ll`NTBh^M}St1h93P!ZUU zEhsXrf;zi$SEm`I3cT2`YE{Bz6UDi@Etx7V zDOUkk^`==td4n15v3~Kt#$$Sur~Yt}ixby4MSxbaJ@y%HJQWG@TFLxEQJ)*!%xo0N5UJEqNj_L~~Ni zHK;QzTFV3^WNFt750Xkf+1#x#_Lj6soSJ(oxpJW8<(kBJXO|yw9e|6lFsZ0fc8b`4 zJC)E|>7ji%agutyj}bI}ZC`M;Tyb5d_8cD%h!2DT z$r?_pgIg`_#M@9*C30O&rz!KF-rn&m2R50KmMo)&O@m)VT++s4{JAh+-oA;-l)hpk zyDMDDwwXL$oSR(2>qCvrXW*r33xEZ;DD(IEm`PyyxgM~m@E=FN<ZHF#Jv7n5n5$xYzSmal>xq%ZDIVH)b$ zKJRHC^@mGMel>FhY-R3$plS1U04RJ|aYfO2u*AkMrMF?|kW`7ikn?utva&YIkYDVp zseVh;C+(pRta^uJRGad{;9|ilE+BUyib8b#@S|As8FDY~4_BBZ8N`q3KR)=bZg;Jw ztRV2M_1*T6@X_VUy}c@u?9SIo^Kj07PPJY6|7O5aQ0tzV0;L~=FfXS`aoKcezzZJZ z?5&<^f^c#Uc!7QJIOwPGmSR87|yoTnSDaVgpJdUb`d%X%zE*jpM|$U!@W@F>QyT^uMPs%R2XV`xqGm5eZmDOE z7SS);Sho@E6*o%MZYmH16+#0VJ~GqB<=t^P#gytpk*H`8)ud3x*dh;AktvMfBBhcQ zI~E@7Xi*SiSbnJx`~vmKpThh$9$Qr^Hf{IY{t+!W-O#tQg62PaLF^*ZrwGWfYkfir zgJl60jv6#h%vl1(Nh2Ck0TiLU>U``*I^jJUEDy5V_W?$1VK>uPv(y9aY9HSEPyhA` z%>r%clwrMus!D6};Vkc!YlL3=!<{Q~035@bdVyV!Uno!^yOBe31JWAP;^to;rWekR zv}n2lPXAc9%t+KQk1@s$~8Xrs0MvIJ@ug2muk zmlxBm-Hw;i+ri@Zfn2}^Jivce<;Y`G`J~0C72(BcRFueU1y~hguE*Z{E+Dc(ae$Ui z-7!kL?coSe*;@$*BxAPcD4OqFP(HkbIPR~e^IGqDRLU%IQnCsKk9p2OzlP*%m5{|- z&S>GCjt|v4hY#~7?^Ax6B3UBpI?QSk8iJ?ko#q9)kC&@sQR!8wpiHyg)U9hA{qX|M z+yYtIipoM@ZCK4Pt`C9Y@Y*#V?wbCD!99{@^+AB$glNV!!laSDWrsh7=fhG~pYQaX zH2q=!t32tHc_bqu?e@m)0X^N$qP#?^;2SF%>#nyTqxo9IcVeYMD3{*)ib<;v)%PjB z;NY|07X}pW`x&>{j&DQxs3i6n3IjaSo&;X*RfPOEaS*%>sGM21w26Bnu_gcSaZd<*MV|mDy4vF`P-*D zECDL6ZBp=*nAV!CR|95uCch=vDr=i8s}F?|Aq*#b9Q9oJJVE_v8X#5uaRg`1o^N1^ zm}fe$|1xbW>UD<`-(f+ISRk%xU+_I)XjRPWq*sQptHzD*6iSk@nY8?|4nMLmD%LH9SmZ@) z{wnE+PtJAuugiL@Hdl7NA9;2L59X&Ib5JnhH{=z0+HFrdL$^Khz?PAhZQVJ)Hb9>t zuJh!>NAf~U4tv!T*Knd{(=mAe)nR!tzjIl!s(v(qMuh zI5ii+IGO1fA+3{^3oFZKVF^DM14=QuelZ$JSwlf|StmKU5mtZ~{ivG!jN_)z+pL3r zkk-%h*UE}xCV&WbErhP#)Z*^lZAN<$I`f=EA4F?vvus!Or?2lX=(?XOOrM!hC^GrA z&;|H|RIhUdC1Pn86RhH%$RF&c&3O6@wEwfSD^Y;B4>yC~W4>{dr_L zk~3VLO-h~qH!d2KIyW%VWRa0Fh8q<3gNZU_&vQQ6*O=7{#!3s!j=M7Jwn-<(9^@A$X4ybP z#fJ*m^9^o^5H$OpKTZ>_73`c6zCK3ieHu|wn>;%|Mx()(sKT&zL9VvFpRjf! z(gN=w5dS*OvF6_aYYZ9RmKk%p$E;8IN~2e~eQ{VRqT4E@?0i-9b><6FGV?Ft&@!cf zCL#gU=9@!Gsy*J0#mtm!Ma%f3-~8-Ylkn#>aXBj|X@Wf^t!4^6mHN|5tM%|7N3v^t z{#=#n;0Yr3&}OqQb7_6kF_oq>39z^now!hDcysg_THM4A0ayBF+X#l5WS2GVXgIZ2e@XyFW^*v?gUvveJZ0J?&uH+46;wn4YX8Ub#kHnXAdx?fEeU*wQ6YlvD?^?>94UA;|$u5yyRNyfYYUm!f&%5$v_TBJ(yzc2Jy8!W8?M`TFkh z%AGgV{@CB5{Lmny8T*H4f)#)}1pPZW>aS6tUr8T;Db?|SqhS}VwOxH1$wZG&3qn>C z`4Do>^uVT4^D_6KV#v6693Z*Z^;K=12KhKE&!P47C`m^X+_tUKqh>Iu8rEuRHG!mN z6PoHzP9ASa@^O(}kI;N{c)*YA8>u~9PS{;gw_CB2;gk7vIHJyt&Y6nda4s(cSq+U| zH5@fqkOFd2**ulXaU{8!$7FrSBG|}JmzY)Q4j=u}%_g?{ws6#)xPMC2fZ(o2fmHmG z-b=z#k+T2=r$8>iNV0EArUo&rbaKK}Yl@}1?rup2 ze*p+M_s45>K)z_h!RS)QyW0%nntq@qNT^*H^DM12H>GTMrP;)iDCK zb9y%yvqn0%9bcKXL9e-===oZgS-iJYmLpzzS(!fed~weQyPeP3Nb%R-KI$m$0kK|C zP{Bakz9gIXm0aVNy=Mae{VOs*r{eQo9v#D@-cY9Q*>w%ffqN$)pfvU13{vqA3! zbOu_lv@OZ(WkxZ)Chaf6wTCBlqD=%pY~P;(?7bG5u5&QA?Q3Nd9d}%#^5a>h z)9cUP&w{$^bPt%R?sz$K@AQCK)_$)i)7c(>dwj|0RVVMf5B+y1t>vqY%sn@!D?Q!u z_C%do`?K~q?|Okv<(CDfjJ`}xJ=u-;zeG3O4l_Bc%v?@O>@3soIek(c7}4ndB=ZM7 z9%p*ilacC0j|Ul@nf|NJj>;P8ZqKJ>dO2tJBYWMB4|9Ib>C&8^==s^6?PUOQgNAP% zd1OhXG&IRau1%|kO6K4kU_@%M}v;rO0aa{yP?pMcS z$R3Rkhkx5D)5@`IK3ciOvI<&V1J&W5JTo_!udPtE0v+%%o5>;Fmtzj!Td;uRi%hNZ?{&)2=Hy3Xf_<7p{L=N~dEHf)l%fk07@yy!+_TB)n z$E|$M=Wupyd*+zj362Hz{dIT4F`{|gx9(N1e)a0OJKnMEiI>S^R_?BwW|yO0X2#*n zk@bRoyg%psdXmh7kUzWRnQ(NyK%UXLwA_rI?eer&{~W#FtroCdom`@4qqgo$eLE}P z|7@O*+LnPVrEh2W(zDs`wB0>gc9zDSeeXZ29U~vMv;JT^wC*fFw)@^LC-1e_$JFOjw=BU0pGvl!}C^ob}O@f945XtuJIgC?(@cboCkM| ztZI$&0$c_FY&29_GDo_R3Dh}?wM{xKJem7f+u~&uUJ#h#!*h#Y2hhhw4BVucr7$yp7`)OvxDVNuFZn@?O4ut;j`SjrkY(mz<^bcUy}YMoX1(8drdLkZmMBN* z&Uop3jAvAhnjTkL^%(~qo}I{e<8^qCeolomurmVkQJ&V5>4TT6vT#0~d%*?8mUrV` zp7k%&$)1ioe^oZ_uX_B7>uEfYj*-^o@>$Xe%jDzNdgVBcJ^OZb)67;+tK#6C(7UtE@ zXYl*I01@2e_eZhVgLD4Ms$v@g-2f$9QrXD(^)hKKdsyr4DR+T%}9kcLK6H9Lnak2{5$mTDH()ZZXG*{w4RafUfV=^lxeR zM=^x`4rcl=hw*f@Jvss<5H6{#KI6(q0LacjQ(EWKHp>29c$DYSzU9qtULAxz{kX`3 zJL)fSFe)o|X5j=z^5iok2NL(yv1Nf#d7Rakfz9ll9!QEZ{r}oEZOuznI{kY*>(`Y} zbNm>!Goz*HZ<1~A$;AVX>Ol{LW;}4&jR3O-`D7`G;F9ExmoHCit z(d064yU6r^3C}Zqav&V~+^Zv=?*XT|_PRd0ZMsfoyz1Fz4=857z~wn-r&)Vl$FjEc z?8(9MT>UP)-uqd7?k_yPc-yqDIX&p&)6RL6(>Wh%!x*Y$18|RW<2q5$oJj=xy-vIr40dj+?q6&n?a7FG|}A&uy5taL0#Utvz#d9OsmLT` z34oV#7(;Gt_&(utTp}oTg(FC&Y?<}toX~I8EnnCk-iyt^2gQC*-}=D&-@oGLcpP^| z@E3nQXWetm8jRQKA`5mFd@nXq^{^MTdro<&vsQrD3j#eo965QdUjfX-Kh(B)`To4p z81HBAD8G9Ao(sr5enfduN9MdUrC&;W2EazL_x6q2d(eLSrFx`%_PV@%T7CwSoIfLA ztoAhL<5Z?upm+Z2Z|AA&j_aAW%WdAly6S<`*waJjiTjh0{UKHThz>)xy z@?Zrf6EG#fq+E|@6tEHWaCi$r{^mS05I~4SzOE=-9r_!X3&_O+2O~>(7(ORrZrtQZ zHOnk+42=qhhgm3ZTjEh$4hnRi2e9)y0DFH8@bgt}MjR_~K@Sh2=ij3NSnmm-cYAsJ8ez5{^#*;tKw2|#*By zWo9#yBD-5wIfHk5V@T*I$oF_;MgIpDg%J32Ug-Do`Mf#5!L}|3oO)^l zeoF#W&k49wcA2;%$iRm?)eKm9{i8O!Q&W3)5Rf^>xR&vyr*j#2je3LjQMvAuJjloI zIi1gfxYyscY3&dSc%K7lS$Q4=v-Wuq$aEzO`g3h`(9>)0cH}$Kx6B53t)~;J7b=@2 zfI9>*Ng|QQ%YlI z6Y3MZuFMb4`Rd+%Eo-|n)ppLkoB7_6kG;mX>Z;x*WRqN*XIHQLoVM5^B(hb7!1^o~ zK5%p2(*f+b<;iP#gj3D##4|kIgIl|B%ac1|2<-p6O@dp zquYm9>%As;eHP!p&5RV@c`6Q|=iIhSKz}bA^*30pNty|6cd0|arCbH8G<4PxnTT4k z^3@lYXa=?oe@nJ?v>3&=q1njh3O~Nap=^98C${qg_`D6WdK2Wt^OnCQG;x(kVsMrh*2y`ox3P?Z^R1guxSdy41PGvb%N=@a5zoJ$7gOxvtF;|^B|-&W9T1!5nxvd*tn<~J$7UV!vLc2m%?soI-TPb-j4xwlLk9)NBN zIc=ytZK~%Y9$KAc&o`ElW2r)2X~nv8N3w6UCK{;b%i> zSXSm6T7HVHw)o#lSI918jtF8%oedAI^eFRdc3m@pD92%6p4Iy>=Zm3(Cm{oPsLwr) z%nyOq(*OXuFCO;=9Dt3si8?c6Z-CP>O@(BZum6i-`0q7q#jF#-4^P$L=Rpihe-j|} zQh*ZfKWM|29=Y!VTHkb_4GvbdAik?l`hTPObvEEm}Z%p?7GU>*A=~0 zXFNpDMQtjNO1rOL`HytxpU-GFy{N9T^1j{3o~8hm4ef-p=hV(KJNEYK`EJ=>Cd24@ zWV2>NEgCbR6t$7Xg~-=59%R3j#>g+TIMAcf?oR>lnM@M%D!9|7`70DN!63g-U`x41**pn8@4WNQ**WK&GduOvQ-_m0dG$?(^{PEv8xcP(-FaPQb*e1A9eW$_-yh~e zHTc5Lm{z2+^fJi&ER&PUtmOwSezFeT$3nH$$p5C;rT6hj7Ll%7w&D4TcvQdR@0MMt zt@eP@vOK81)#jA{UhMPnDvB|^=e01C><7M5*vT z{QU^(zY3t|jknxVHkBr@;|A0`frKAFTuEAX1$ccWg2h`gY*YUf@%{XNxsj z&qmMm>M5WP{BdCQZs_A$=;KS+kMJ|tgjyYR3f-o=?EvmrH&-Zch3}8mp<6C^;k?by zVG{U$0DWAz{I`ZhJ6Jy|YG-*1xN7VlH|XqB1TKTMIwrjo(N(DdCat|&hEB5bJM z`)Efz4`Yjq*Rpz+DZ4RsM|Adhn|gm^WF57!DQsX_nx^PM%S?G@stmQ#x7QWc)nv%ih?$9Zl_^r`E-~TiHP~4_{v^=q?kGr@pl+ zFA;CruD(=8e3)Fl47@vJb&TD94g#ij5*qNcwmogu-jwWTM01P2NUtj2o*b3|9lg3T zJ!zQIdOQs#)5vc4+>4JqvQ#(4j;)=D?g%KTKC|c4?^^9F^ar*7^K~!td{&>zzGZhk z|H}Bwx|=Ef(<|d?ih$LWm>BuLJ=gM8_17r2dHGJUrzq}EiLa5rEALxbmTvg3L%%L7 zry0E>h!yJ?W&9QZP0jG_iLBYXkTF{e@boRD+__zd?RWPW0K&}xCwBk<5>#-}$H4#x zhjEio1E6eEhHpnoo=a;bo5-MSbQ&)lYQ{BgzI@tel!67fn1~$ZEHgr*=|ti>T9` z>ho;-KE${kIggmrc3d1^>7rJqI+)L8H1+JcRewaYmu1Tadw!V7qX&wXd9G)7EuBnx zR%1!#)2)}e$ltRUkj&?%+8dwe_G8x}Q@r+&LuSw5p%X#hyD`@^&MD3MyJb&PY;!A} z_cl^0!9ksurE>vo4>}{Db&Q(L0b>~s0UnMl&rSeP{NuU4k1!*Idpr$-r+PeGiTFOi z1Xq3@#^JC!tU6-2mMZ~=j$Z#rtNji$V7Pw|+PNHH4#~f*^#Z)_kh5SCy$x$e-s^yTAc_L6zn0OFb-Mog z)VFPWCTq84S3Q|V{6!!~->Q|SC=T?V(K;eNGtk?TMPw(-fa1u8S{=CF%bt&PAAwBs z6HhZU>KVYzbm--o(Vy8)raPrg?JEN)nH^^O9rZ(vBtTZL_bnfHw7s70BDuBVM@w!I zPbx2cJ_1QCo-?B`9mD_tAOJ~3K~z7??2P>y_w^;<<091F^O;Re^_eV&XZp_Us}=L+ zOIa&WGJy`Alx3i*QIQ~@;WLGo=hX0|6SwD>>DdwBftfsR@4+M6m<6;|wVv4Z7!o@V zpyfe;m2w_#rBwwR{;us0nYjvLS;wzH>klx@d=~2dB8GUm#~^ty{&xT%;czoIV?GU_ z@At7Pbq#2IhRYZhM=_dwhH>segFH$Zk%j-ga8I=5>GIBL#Udl5tR6+1w}8h_U=H6u zVIJMZm`7)O@{O9P8OavpA`NAAGalR;x+75L=GHVG>Wv$8-&$8~^FH@u2>A#*5l(%O`w28q|9<`SL0k^CkUnysNKynfT7f%h*4o9j2D^w0r(F(3{RxMwxtl zy{hw!2BTZsj^fSGFVr}uw0m1s8cl9mCbP|m=gd|#_U(#MhV2kfTAzqtE#Hf|k+0}8 zkxcA4Z=*eay{&rLPJJ%o&C`*A9q+Fy=j<6zYvg+x)4bnBcH?RAF)S;qzUY5@dyn+% z?NRAsfBGci@pBJ7bhbSb6%pN$%|&s1ichO=Mt<*U@U(k5sqJ__E~|Qn!Vchtg02({ zV2b4(=ot+K%dq8WxE0SZ8NVN#^h`|t|2NDz`vL&ir2r>pFgyp6^U$tD#_B&XAMmXJ zUpxX%gHD#|8wFvsRfIE-s09>Vj(Wewd3`bzNxEK+;l~eQ;yve}ab>EX&sW+rIT^rH z(CdENd_oP*!*6+ZVIHO4ciBu|r>BcRmOziEjeHZb%RU5iOkqbKE=C}qEW?Y#RgGZyKXJ?TdA{k8OU+pae z0#kgZWxFbCYezfOo*j5OP35sCpNuw(lm7XhUr&{juiM*Nla@n!uRTl9TyA}g8dxp|KRRPTOfAO7vISH|dwc+h)Fv(gvwpUKA8 z6#M%it;r@=8?{|9;4d>wn)ytJ^xH32j7PBlF1~JuXa|M zjy!GpJ$okVv^73t_SUl%uTzz8q!VjLX^LdxuQBf4g}#YLf~w40I`Fod(UaL~6hpI^ zWo273@G_3%-LiqqzN0vnT~j$l_Np<>mx*-Ov!j-5)wX*6+LA#;hw>8j0a|9B@vB!Y zJ5>m^w|U$f&6Cse_1OU&)eK-Uj1>;&88>DDUERFR-#n-Hce#ZNe)A*;Zuer{7x$dI z9vLQP|2QnjIc8;{hp(%)>4z4L2j2}ci}WQp)!6_nTtUpNqAeO>`Mm)^Uk0%ACSO^@Eq`Tmm}BER+4*+my!G<(_0UtWBq^~S2a zw!nmyjo!ku=d7&1@3RQ{Tok~Shq)=V-x>-h# zSz8fZEuBaD%VZnLuqDe9ckD&F>NDcs=>}z?+rI*g`!#vDq z<48B2=3&m7br!|04S+jPZRLF+)bHl_`i5(5`v1|h+J-Oh>9P(v10%j3Efd|-y6v}b zC*yxgnX#L$On+(VV6f?`gGgSHOjO1myr|rK8{RIIUN4VGHa&S|G(??h2Kbh-oyaaC zyEQ(2`AiN`Y-`aP#TS)BCO7rb$WD~bOqL!1@|m*WF38+RcC2kga%%Aq#R0YJmJNC! z_;lSWvaJ*fL&J9|fgqghO0c0Emz;OV+e;VM-j{f4C z51+jOnIM9JoiT^(0DzNu_c*6PmA!z*(V5;3@c3nJ7>s#u1dy!r$-1E~>){I1R{(sx z3yV2+G@dkrCz-1(qvdJJIFpFtp3fw7Cd}3or=$UW(u6128|reGe-rqYQ^t!L_DmL4RDd!%U$q z*jNDNwXD}00X-LmY=btrxip9Pqc@z4{>}CJW5{Md3b`J0%rRw!?^duw4W=6Ki``e9 zdKr1gwle;|eNX*4@Xf&v-97D0J-ymSro#wmL~WU$Xg%7ov_PMyNjnv9gW3W6-w}ZD z^s2n4=pvGp^5NU?a*pI0-Orx!@>ANiWAnb{Ws-HuE!*qq*y~5->pL*DYwr_LEQr8F z^o;kbs6D;r>&R@$*O}Rc(ah0~pJ1xa4ve4mB{1?~mA%?(X1nTlD({TG2-HP1Own)T zE7^12{}nf=4M*{Y zJC7q2EceVvQ3vE^Yc^A8^iMie?I~k_-BAW zW`mvqAaXpjay8pDs!!S@Nj!<;yKts|VI~ouCxZnIZv)_aJN^hlb-~BTC`rGU!(6iN z%KU34d|z;op~!imGHH*pWj>7Aq5lHlBTzoOF5=)MRBnsn9oWtr<~7QafY*OGpYF8) zYk!IbEw2IiEBx0o!j z=PsK{kjU+Go(9(`*!qu zMuYmY+P&7VbSr&P`K->CpJ^x2qd($9JMtFoExPTVzIjJ{wRoM&*?7wir^dL+#w1i7Eb=`FNx|rDqvC^|Va!v8SKD*IuWm4fxF8+}lQ3 zJ`R(Pl#3z*SQM#b*Gt>3EHin}0l2sgVC^T!(s988vr1&fR*&uuaCR)_;tlkWv|7&s z1Ouqy=Ea{!=Xw>uieJM@V6qG9dUf5L`5?6WEE`64H2I9xXqeS9q=5%#!e1~Jxez_) z+kb#7odLXf+}SyGI~wkHXhWlA^=Lp3Wk}Fx!?Zj*_XvP&ZlL^OtSmhZVEa&9D`yW! zf2fndjGH&J%pK6pPlGddnGNL7Gl$MOWXv~faGNw*-u2T(bEIwQ|L5WSyzwNp3Ebl z&;quRoFae_#$D~-f)}c+E|aqX2_j((w4pmJj!28G)L}w|e?(fvG9J;C;9C zqBEtgmY$VP{cU zD8+RGe=zrG2mo_w54;V|%xds=1OUU^u)u;tjo$`ndjMd7*{%O$8XREbLS*mWjSg~W z)KOBFtWG3V_`)+c13+?X6M`ddHtavl9CAqWofzKav2v?|4Tp7@vhYybTg>yh?5Sn} zqwHj0?IU1WWoXxU*6y7E3724akQu&5Ar~%$dDLYvZHSlpDu5Yn*hFF0!z0$#f>&<7 z%uT6xM~00XWbX>z8EOcOxq8~NZa+aA1Y=zA@$C9nRyzk-PO`&n<7J@l5DeR%2q3cu z>L0B@mgiK4dn4%agp~h=&Yo~X@qwr|`%8mkLS_#G#GiZaxw8WgI%u~4{`)VS;j2M& z84zKD%HD7n{9Gj4dJ|Q;vf!5ih>W&KxvkDDs=o&a=3!`Tfj!_c#ptHgk?F$AqX$NM z0Jz1U%1gmViE|YcxA>XDtEVFZp3B%k%Pu@E5kJ~at4t)j*7KgO$fjDhsJhseF*E8L zl9=mh&GfPCb+tn!CwsZc{3B~$?V)9JSqzE%q!qI=dt26)mDkK4BfHeN*|N7OF=wj1 zSi9)I-JH818#5xvftNCmje&DTit`S>8fOHGtgfOcN9jnRxV|&M$*IV~G5dEnfZhcF ze*_vV$IYCt04TT`K#nVccdFaKcv=YWxEh#?InKkgT+DG7zWWb19^MBTECQh4!{7Gg zP3S80IzAQfMWArOL3lv`TuYIo?4me2IrtIe!4pTW0l4~g=d4}Q&cAY|F8(-=@c@9l zmjmqn5r8!}(Jp1EH~g`FW)yj>+wE0e+yr_({&oY{V|kWakNf4cmE^;dJh(dh7W{F+ zNU@7*8=k+&VfR9L9+9^@Hl8M^)xGaF)CqnYpR=hFHc#@(E3cegd(Abo!wx%aws!5> zg}JLypz(pyzOT6C+{=7$^*(6j{Bv5LffwLtbFE+3OX{sjBGFhcRseX{I%udYLDt8QOt_! z^Vd`^Eq*i}Do-t0M)9!~6Ej=O0B@%EEKarTMB}ahJzmvoLzf2N9FQ9f*bj}&H8hu- zWCVRiZxqZVGZ;E6E^<#d9__}}qy&DPm&STHlt@6p`Fi^Th;Y^ED5HdDd9uW903Uyj z6_XbNBt2NS9O3ge+_^WhUMFHc+xw91+s3bgB`Xn8jq7TZqu(YQlU3ubEopX;FOReP zApqZX`0IUWScGOf07(4;&mBathvD3Ja3~Rg_i1h(AJVBshFm@UZGh^JV*w10cQas_ z1&^pBFLYIK_zmcdd-M(Vp)w4zqRb{fzs@K8Pk=ujm9r&(JcxM+S-*Ab*3F)?-+l%7 z*(VBAUMC718eYHSF){eJhl~d$rp1!C(^^;{{Xrf7W&cK5nhFkm2rQM? zmWRpv2Jl>#uoS7mUJYv$@JI@P$!cV%I25}LfXWkYJ{bWG&+z5x5xXEew2CVs9eCqn zggpTuUIqZM4xOpr4AbVg@l+13KAj)uJ?DKP018iP44zjrfO%Epx(4}4M>onCn!Gb$ z2ypgw0IBmZ#Crqywk7|%or)U3qmbLt+?x=f?+?IlkyXvsQO{hW@iojB{2b;$a&JQp zrT?sM#%wF9y{@^^%raD7uG%hF8sCX6O0EIu{)fHyE&x8+iMiCyv(!vdc9XqRHyQn zb+)YzAmhE&!9~xsu4VT!klK@3)B!}gGWjSt@Uo0(n8M#OWiq{ZJ2IMj^+t91Yc24b zwWqp{I?Tu(TK+MWpNOW&zakpdCwjblnmi!v)vf(g%YLTFa*E!2^3Hr@3NPAzR9DXq zr|{tGZRw`vpK9+~&$4n_#uqal%i@lO0FKgS2(SXW;k~@R@$$L>#qw-2lv(c8AzJOc zM|FFk%LtX?+GC0c^D6Y$A1Md;|UqpBNNB@ zcQ$`7%Rz7f%yHoFy#P?m^fB|c8rRD4XlRSW;Xg$^S3^dBckjKktB^(Hd_I$vuipn4 zTS?7p+d%HzzJ+osdXWz^uMYr7a!8%!p6TYUlp%Bh$b<9X9_M3n&qWUHZ|NWM%{i=` z+VCszyA86@J3(JBe#uKltZV0}PVK>je*^YG$tu)q8o09OqYjmIYWWr*%G&bGw(9fk z*)!foHCUURBCw^`qB2o?cFpS`qM_yg8QAgdWqQim&-9~oE(5e$y3AzL^4XScmcGTk z{Q9=1>QDQ#o?k@rUPk8;z{vC-@uqxfeVGhY*AX4+A12>O2T^R$Hte}xTP;0Kv6+?) zsD4|%*pj8jEgvT${(7-**?6q-R=ISs!$x$BWpRhkb`6<30wI}~WhYY%?HO2#0AiB4 z8U>LR&R1A)&+)izZr02dr;h>%d;{6LTX^CI%5b}oOY16K&i~^cfZLK4{1Jq3K?oN? z5I_u>x!MYchne}}ytTqU{(Q!BB+n=lXh65pY9MAbyj?44If%_4jPzGz4=_M*%f%9B z00eOh70SUrmU+{8aJvC$9Sz{{7R=*g)|1&bW4JY|$U^N4cBh-*eABvvbcoZ}#?gyrZo2^?UpIz&irul$-M% z3sNSxEYPccMnTo+%I*!ibTnjv)9bNS-%4nhdvC9k%ls_jF9I^!UMuKko!=CmwVe(9 z?PZ?T5y?7wPW7w4*5gY%>8y=Nr~aDSv)0qou>z#5qgH#0bUg(awfOAGEb^INjGF=k zT7DkAn6!XVd5BFL0elk=+T9Vc>wE z?rMM*uKs2Ajz_LBYw~k|4}y@-b3SG(5hkUcF5bd^sl8}Y3C`LYToqI=reMlvL@w^LcP4%J($15*3W zKvzbS*OzvrEnT#1#n)+i=*h(EOL8zZjT0*Wi07z`2h(b&E&GY$P8L@p+i1nS$oC_DeS4XW_53D^Z}v=Nb6P&~ zeJ|6VOth@pgT_paMfUu7-MC~7477}bjR7;C(UYvrD3EES>iw4NVPOPd& z01Ls&*4%Fo;NU@I#JIwjbJX66g$ug@Ec^`5+{#s{G9=24iV2jM4ZIHklKahV?-qyX zJjFo?_!0ru(F$D0mxAD;?70Puwy{Y?!K@hmF2EeO&tieYnc&T6FZ=P;9o-4!Sm%-4 z^cui-H9**3VPVGJ0Bw6RW5;%D=J0mN?d!;x{spp05gb0ELI*ugoJ{zkYTD03|bj<_O&H?=#?oi&H+bdUXMS z)J-No0@z(qhR5gqoEgu$S#-~Iwv_uk!}md+#B$bIvk!dW0|of$CjvIwfkeU0cL-6? z(BK%A&w`@@iKwnt;Pm&D_6Q95K&!k*wh#eH4YZrWhLm>d^M2U>9((Ljd?KTp^kp&4N4L=)=_6~;+fxs4Wk9zV zbG=MkzB4sWnH*HsTPc&}x63+}Ib9y)d2oo<4Ln4PJBCc4tD_Kt=SIV$7JOGnkcp|1fH*-+Kyw`c;rp=p?fn29XV#M}$}ni9nP7)on!E{_ zFajl>65&?_>yYpuTvtc5C}D8^%Gc<(<7t>j=(OhL#_!DX-2y)T9vuaxO2=aS;vVM?a!C2laQesJkamEzC(z-U@p7);c>taqs{RC4 zt#Uh^lKHFI!9n)+VnMn?8(3YPAg_;+*tN^OE)dM%Hl#MgP#1S#zl=Q-Zn-_s(pRrm9$i}CapW}T{%8GUh7<&-G ze1X#?J-4D5N zU%v0vy$ne+Wx^~T2N(GaH*Y=$bID$WY#%pi=E)q?gXhoBUo1NGF9@|B()m)*Q`x#Yg@iZ@+ip4f8^V~y#oLc zcS3xKcu;$oYOhm#K=t9kkCjo`c)N{&c@_(N zJ*wm0GoH68;9PlE*+sUw3=NT;W!HRLnGAf}Q{|+7r25Zn%+sUo+V5dIm!hcJnU9>l za$A5v1u?_@`bJtB5`a@OSp-OP3mBY!WS~~Y4?VEBvrxaa4Cj~eWQXIpLKR@=E&vQW zmzIxk4&YY-m^cLdXr+x{gsXme9NX)W8T(`I+gFD#O^}6l2j+BZmvETZ@fIn_GMc^M zO*wJ1X@Xg1`?%oZYz*_=#!R1+Ddz`mjr;opoN>-0_cuHla^ON0X8J61#<_9ag!x)z z4Y?SGb0WDSnnUD%-W>rX7h4ca@6IeA{u2OlPGzafy+IEKSM^fpV&>MBDLkO9d(hHT z3QYh20=!8?K~xsAf7~!yKRglSPVh(I$4#L*qWCsRr25w~(KFsATIHk8#PgNa z?d8-0K~un8By+7_X;K+xx`={pq$hj6C+qCltesYU>bIHPBYVnZp0#InY>$}5Kb2P$ zH(BPOx_PX{kOj1?r+}RW83>p%kv#w!xj2I76W2myX%Ng?UX|#DQ=x25>vH=3T%RwKvk>Or{rvUu% z++b#D`QbY?=Nx_(0RCcRbsuqA!&dOwlI~Hqw%_E%7hNJ+t}tW3m@*PoZO2OZjR*)zs-tKO*7^L8BBkIFK#MYU_yxALNO zaJ!|)5vQNdkqV!%aD9sM*|P5zA8NCiJk`IW-w_y$VrC2UsNPyOpt@3-^kSFB0k5YP zu#IFL(U}3Lp1<~NFp5oCtczq2$!Ur`WzS{y{Qn;29d!6$)yV(=002ovPDHLkV1nuy B459!4 literal 0 HcmV?d00001 diff --git a/src/plugins/sense/public/sense.js b/src/plugins/sense/public/sense.js new file mode 100644 index 0000000000000..11315b1f9d21d --- /dev/null +++ b/src/plugins/sense/public/sense.js @@ -0,0 +1,11 @@ +define(function (require) { + + require('routes') + .when('/', { + template: '

sense

' + }) + .otherwise({ + redirectTo: '/' + }); + +}); diff --git a/src/server/KbnServer.js b/src/server/KbnServer.js index 7238bdf1f9f36..8ce0ae44ba804 100644 --- a/src/server/KbnServer.js +++ b/src/server/KbnServer.js @@ -21,7 +21,8 @@ function KbnServer(settings) { require('./http'), require('./ui'), require('./status'), - require('./plugins') + require('./plugins'), + require('./optimize') )); } diff --git a/src/server/optimize/appMain.js.tmpl b/src/server/optimize/appMain.js.tmpl new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/src/server/plugins/optimize/index.js b/src/server/optimize/index.js similarity index 98% rename from src/server/plugins/optimize/index.js rename to src/server/optimize/index.js index 3d55644815d4e..22e22452d8739 100644 --- a/src/server/plugins/optimize/index.js +++ b/src/server/optimize/index.js @@ -9,7 +9,7 @@ module.exports = function (kbnServer, server, config) { var Promise = require('bluebird'); var apps = kbnServer.uiExports.apps; - var uiDir = require('../../ui/lib/uiDir'); + var uiDir = require('../ui/assetsDir'); var glob = _.wrap(Promise.promisify(require('glob')), function (gb, dir) { return gb('**/*', { cwd: dir, diff --git a/src/server/optimize/mains/kibana.js b/src/server/optimize/mains/kibana.js new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/src/server/optimize/mains/sense.js b/src/server/optimize/mains/sense.js new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/src/server/ui/assetsDir.js b/src/server/ui/assetsDir.js new file mode 100644 index 0000000000000..d576178d288cc --- /dev/null +++ b/src/server/ui/assetsDir.js @@ -0,0 +1 @@ +module.exports = require('../utils/fromRoot')('src/ui'); diff --git a/src/server/ui/lib/findBowerComponents.js b/src/server/ui/lib/findBowerComponents.js deleted file mode 100644 index c227fccc5b0ec..0000000000000 --- a/src/server/ui/lib/findBowerComponents.js +++ /dev/null @@ -1,20 +0,0 @@ -var join = require('path').join; -var exists = require('fs').existsSync; -var relative = require('path').relative; - -module.exports = function (start, within) { - var dir = start; - var bowerPath = join(dir, 'bower_components'); - - while (!exists(bowerPath)) { - var prev = dir; - dir = join(dir, '..'); - bowerPath = join(dir, 'bower_components'); - - if (dir === prev || relative(within, dir).slice(0, 2) === '..') { - throw new Error('unable to find bower_components'); - } - } - - return bowerPath; -}; diff --git a/src/server/ui/lib/findModuleIds.js b/src/server/ui/lib/findModuleIds.js index 8fb6afe4d9c78..b9116f70a8fb7 100644 --- a/src/server/ui/lib/findModuleIds.js +++ b/src/server/ui/lib/findModuleIds.js @@ -4,14 +4,14 @@ var basename = require('path').basename; var readdir = require('fs').readdirSync; var stat = require('fs').statSync; var exists = require('fs').existsSync; -var uiDir = require('./uiDir'); +var assetsDir = require('../assetsDir'); function hidden(name) { return name[0] !== '.' && name[0] !== '_'; } function scan(type) { - var dir = join(uiDir, type); + var dir = join(assetsDir, type); return readdir(dir) .filter(hidden) diff --git a/src/server/ui/lib/uiDir.js b/src/server/ui/lib/uiDir.js deleted file mode 100644 index fb499ccc07ebb..0000000000000 --- a/src/server/ui/lib/uiDir.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../../utils/fromRoot')('src/ui'); diff --git a/src/server/ui/statics.js b/src/server/ui/statics.js index dcd46a6f21ea0..559bdfb73a3bd 100644 --- a/src/server/ui/statics.js +++ b/src/server/ui/statics.js @@ -1,28 +1,14 @@ module.exports = function (kbnServer, server, config) { var Boom = require('boom'); - var findBowerComponents = require('./lib/findBowerComponents'); - var uiDir = require('./lib/uiDir'); + var assetsDir = require('./assetsDir'); var join = require('path').join; var stat = require('fs').statSync; - // provide access to an app's public directories - server.exposeStaticDir('/app/{id}/{path*}', function pickDir(req) { - var id = req.params.id; - var app = server.getApps()[id]; - - if (!app) return Boom.notFound('Unkown app ' + id); - return app.publicDir || Boom.notFound(id + ' does not server public files'); - }); - - // expose the first bower_components directory found within kibana's rootDir starting - // in this directory and moving out - server.exposeStaticDir('/bower_components/{path*}', findBowerComponents(__dirname, kbnServer.rootDir)); - // expose our public files at the server root explicitly, rather than with a catch all route require('fs') - .readdirSync(uiDir) + .readdirSync(assetsDir) .forEach(function (name) { - var path = join(uiDir, name); + var path = join(assetsDir, name); if (stat(path).isDirectory()) { server.exposeStaticDir('/' + name + '/{path*}', path); diff --git a/src/server/ui/views/bootstrap.jade b/src/server/ui/views/bootstrap.jade index d9bda205dcdbd..b056ba7bd9437 100644 --- a/src/server/ui/views/bootstrap.jade +++ b/src/server/ui/views/bootstrap.jade @@ -1,4 +1,4 @@ -- var j = function (o) { return JSON.stringify(o, null, 2); } +- var j = function (o) { return JSON.stringify(o); } doctype html html(lang='en') @@ -21,44 +21,7 @@ html(lang='en') var showCacheMessage = location.href.indexOf('?embed') < 0 && location.href.indexOf('&embed') < 0; if (!showCacheMessage) document.getElementById('cache-message').style.display = 'none'; - script(src='/bower_components/requirejs/require.js#{cacheBust}') - script(src='/require.config.js#{cacheBust}') - script. - (function () { - var payload = !{ j(kibanaPayload) }; - var use = !{ j(app.getModules()) }; - require.config({ urlArgs: !{ j(cacheBust) } }); - - require(['modules', 'chrome'], function (modules, chrome) { - chrome.consumePayload(payload); - var kibana = modules.get('kibana', use.angular); - - kibana - .constant('kbnVersion', payload.version) - .constant('buildNum', payload.buildNumber) - .constant('kbnIndex', payload.kbnIndex) - .constant('esShardTimeout', payload.esShardTimeout) - .constant('esUrl', (function () { - var a = document.createElement('a'); - a.href = '/elasticsearch'; - return a.href; - }())) - .constant('commitSha', payload.buildSha) - .constant('cacheBust', payload.cacheBust) - .constant('minimumElasticsearchVersion', '2.0.0') - .constant('sessionId', Date.now()); - - // tell the modules util to add all discovered modules as a requirement in kibana - modules.link(kibana); - - // load our main module and bootstrap - require(['jquery'].concat(use.main, use.require), function ($) { - angular - .bootstrap(document, ['kibana']) - .invoke(function () { - $(document.body).children(':not(style-compile)').show(); - }); - }); - }); - - }()); + script( + src='/bundles/#{app.id}.js' + payload=j(kibanaPayload) + ) From 522a00ec5d7e3f43d03ae5b4bf135ebbf88791f2 Mon Sep 17 00:00:00 2001 From: Spencer Alger Date: Mon, 6 Jul 2015 20:49:41 -0700 Subject: [PATCH 022/137] building is mostly stable, less is improving, initial cached building added --- .gitignore | 3 +- .jscsrc | 1 + .jshintrc.node | 1 + bower.json | 11 +- entries/sense.js | 0 package.json | 25 +++- src/bin/kibana.bat | 1 - src/bin/kibana.sh | 2 +- src/dev_server/dev_statics_plugin/index.js | 79 ---------- src/dev_server/index.js | 97 ++++++++++-- .../lib/amd_wrapper.js | 0 .../{dev_statics_plugin => }/lib/istanbul.js | 0 .../lib/kibana_src_filter.js | 0 .../{dev_statics_plugin => }/package.json | 2 +- src/plugins/PLAN.md | 4 +- src/plugins/appSwitcher/index.js | 19 +++ src/plugins/appSwitcher/package.json | 4 + .../appSwitcher/public/appSwitcher.css | 35 +++++ .../appSwitcher/public}/appSwitcher.html | 0 src/plugins/appSwitcher/public/appSwitcher.js | 24 +++ .../appSwitcher/public}/appSwitcher.less | 3 +- src/plugins/elasticsearch/index.js | 2 +- src/plugins/kbn_vislib_vis_types/index.js | 2 +- .../kbn_vislib_vis_types/public/area.js | 2 +- .../controls/line_interpolation_option.js | 2 +- .../public/controls/point_series_options.js | 2 +- .../public/controls/vislib_basic_options.js | 2 +- .../kbn_vislib_vis_types/public/histogram.js | 2 +- .../kbn_vislib_vis_types/public/line.js | 2 +- .../kbn_vislib_vis_types/public/pie.js | 2 +- .../kbn_vislib_vis_types/public/tileMap.js | 2 +- src/plugins/kibana/index.js | 52 ++++++- .../dashboard/components/panel/panel.js | 2 +- src/plugins/kibana/public/dashboard/index.js | 14 +- .../kibana/public/dashboard/styles/main.less | 29 ++-- .../field_chooser/discover_field.js | 4 +- .../components/field_chooser/field_chooser.js | 2 +- .../public/discover/controllers/discover.js | 6 +- src/plugins/kibana/public/discover/index.js | 2 +- .../kibana/public/discover/styles/main.less | 6 +- .../kibana/public/doc/controllers/doc.js | 2 +- src/plugins/kibana/public/settings/index.js | 4 +- .../public/settings/sections/about/index.js | 2 +- .../sections/advanced/advanced_row.js | 2 +- .../settings/sections/advanced/index.js | 2 +- .../settings/sections/indices/_create.js | 2 +- .../public/settings/sections/indices/_edit.js | 2 +- .../sections/indices/_field_editor.js | 2 +- .../sections/indices/_index_header.js | 2 +- .../sections/indices/_indexed_fields.js | 8 +- .../sections/indices/_scripted_fields.js | 4 +- .../public/settings/sections/indices/index.js | 2 +- .../settings/sections/objects/_objects.js | 2 +- .../public/settings/sections/objects/_view.js | 2 +- .../kibana/public/settings/styles/main.less | 15 +- .../kibana/public/visualize/editor/agg.js | 4 +- .../kibana/public/visualize/editor/agg_add.js | 2 +- .../public/visualize/editor/agg_group.js | 2 +- .../public/visualize/editor/agg_params.js | 6 +- .../kibana/public/visualize/editor/editor.js | 10 +- .../kibana/public/visualize/editor/sidebar.js | 2 +- .../visualize/editor/styles/.editor.less | 58 +++---- .../public/visualize/editor/vis_options.js | 2 +- src/plugins/kibana/public/visualize/index.js | 2 +- .../kibana/public/visualize/styles/main.less | 20 +-- .../kibana/public/visualize/wizard/wizard.js | 4 +- src/plugins/markdown_vis/index.js | 4 +- .../markdown_vis/public/markdown_vis.js | 6 +- .../markdown_vis/public/markdown_vis.less | 9 +- src/plugins/metric_vis/index.js | 4 +- src/plugins/metric_vis/public/metric_vis.html | 2 +- src/plugins/metric_vis/public/metric_vis.js | 6 +- src/plugins/metric_vis/public/metric_vis.less | 16 +- .../public/metric_vis_controller.js | 2 +- src/plugins/sense/index.js | 2 +- src/plugins/table_vis/index.js | 4 +- src/plugins/table_vis/public/table_vis.js | 4 +- src/plugins/table_vis/public/table_vis.less | 20 ++- .../table_vis/public/table_vis_params.js | 2 +- src/plugins/vis_debug_spy/index.js | 4 +- .../vis_debug_spy/public/vis_debug_spy.js | 2 +- src/server/KbnServer.js | 7 +- src/server/config/config.js | 40 ++++- src/server/config/schema.js | 37 ++++- .../optimize/DirectoryNameAsDefaultFile.js | 41 +++++ src/server/optimize/Optimizer.js | 108 ++++++++++++++ src/server/optimize/OptmzAppEntry.js.tmpl | 20 +++ src/server/optimize/OptmzBundles.js | 141 ++++++++++++++++++ src/server/optimize/OptmzUiModules.js | 96 ++++++++++++ src/server/optimize/appMain.js.tmpl | 0 src/server/optimize/index.js | 133 ++++------------- src/server/optimize/mains/kibana.js | 0 src/server/optimize/mains/sense.js | 0 src/server/plugins/Plugin.js | 37 +++-- src/server/plugins/PluginApi.js | 1 + src/server/plugins/Plugins.js | 33 ++++ src/server/plugins/index.js | 32 ++-- src/server/plugins/load.js | 37 ++++- src/server/plugins/scan.js | 29 ++-- src/server/status/Status.js | 2 +- src/server/ui/UiApp.js | 61 ++++++++ src/server/ui/UiApps.js | 43 ++++++ src/server/ui/UiExports.js | 84 +++++++++++ src/server/ui/apps.js | 24 +-- src/server/ui/assets.js | 16 ++ src/server/ui/assetsDir.js | 1 - src/server/ui/autoload.js | 86 +++++++++++ src/server/ui/exports.js | 5 + src/server/ui/helpers.js | 3 +- src/server/ui/index.js | 2 + src/server/ui/lib/UiApp.js | 43 ------ src/server/ui/lib/UiExports.js | 74 --------- src/server/ui/lib/defaultModules.js | 66 -------- src/server/ui/lib/findBowerComponents.js | 20 +++ src/server/ui/lib/findModuleIds.js | 43 ------ src/server/ui/lib/scan.js | 50 +++++++ src/server/ui/statics.js | 23 +-- src/server/ui/views/bootstrap.jade | 22 +-- src/server/utils/fromRoot.js | 6 +- src/ui/appSwitcher/index.js | 26 ---- src/ui/{components => }/chrome/Tab.js | 0 .../{components => }/chrome/TabCollection.js | 2 +- src/ui/{components => }/chrome/chrome.html | 0 src/ui/{components => }/chrome/chrome.js | 42 ++++-- .../chrome/config/filter.html | 0 .../chrome/config/interval.html | 0 .../index.js => chrome/context.js} | 4 +- .../geo_json/_tooltip_formatter.js | 2 +- .../_hierarchical_tooltip_formatter.js | 2 +- .../point_series/_tooltip_formatter.js | 2 +- src/ui/components/agg_table/agg_table.js | 4 +- src/ui/components/agg_table/agg_table.less | 19 ++- .../components/agg_table/agg_table_group.js | 2 +- .../agg_types/buckets/date_histogram.js | 2 +- .../agg_types/buckets/date_range.js | 2 +- .../components/agg_types/buckets/filters.js | 2 +- .../components/agg_types/buckets/geo_hash.js | 2 +- .../components/agg_types/buckets/histogram.js | 6 +- .../components/agg_types/buckets/ip_range.js | 2 +- src/ui/components/agg_types/buckets/range.js | 2 +- .../agg_types/buckets/significant_terms.js | 2 +- src/ui/components/agg_types/buckets/terms.js | 4 +- .../agg_types/metrics/percentile_ranks.js | 2 +- .../agg_types/metrics/percentiles.js | 2 +- .../components/agg_types/param_types/field.js | 2 +- .../agg_types/param_types/raw_json.js | 2 +- .../components/agg_types/param_types/regex.js | 2 +- .../agg_types/param_types/string.js | 2 +- src/ui/components/clipboard/clipboard.js | 2 +- .../collapsible_sidebar.js | 2 +- .../doc_table/components/table_header.js | 2 +- .../doc_table/components/table_row.js | 8 +- src/ui/components/doc_table/doc_table.js | 4 +- src/ui/components/doc_table/doc_table.less | 6 +- src/ui/components/doc_viewer/doc_viewer.js | 4 +- src/ui/components/doc_viewer/doc_viewer.less | 4 +- .../components/field_editor/field_editor.js | 6 +- .../field_format_editor/numeral/numeral.js | 2 +- .../field_format_editor/pattern/pattern.js | 2 +- .../field_format_editor/samples/samples.js | 2 +- src/ui/components/filter_bar/filter_bar.js | 2 +- src/ui/components/filter_bar/filter_bar.less | 4 +- src/ui/components/notify/_errors.js | 44 +----- src/ui/components/notify/_notifier.js | 4 +- src/ui/components/notify/directives.js | 2 +- src/ui/components/notify/notify.js | 7 - src/ui/components/number_list/number_list.js | 2 +- .../paginated_table/paginated_table.js | 2 +- src/ui/components/stringify/types/Date.js | 2 +- src/ui/components/stringify/types/Source.js | 2 +- src/ui/components/stringify/types/String.js | 2 +- src/ui/components/stringify/types/Url.js | 2 +- src/ui/components/stringify/types/_Numeral.js | 2 +- .../components/style_compile/style_compile.js | 4 +- src/ui/components/timepicker/timepicker.js | 2 +- src/ui/components/tooltip/tooltip.js | 2 +- src/ui/components/typeahead/_items.js | 2 +- src/ui/components/typeahead/typeahead.js | 2 +- src/ui/components/typeahead/typeahead.less | 5 +- src/ui/components/vis/Schemas.js | 4 +- .../vislib/components/tooltip/tooltip.js | 2 +- src/ui/components/vislib/lib/legend.js | 4 +- src/ui/components/vislib/styles/_alerts.less | 10 +- src/ui/components/vislib/styles/_error.less | 2 +- src/ui/components/vislib/styles/_layout.less | 72 ++++----- src/ui/components/vislib/styles/_legend.less | 4 +- src/ui/components/vislib/styles/_tilemap.less | 4 +- src/ui/components/vislib/styles/_tooltip.less | 10 +- src/ui/components/vislib/styles/main.less | 17 +-- src/ui/components/vislib/vis.js | 2 +- .../visualizations/_point_series_chart.js | 2 +- .../vislib/visualizations/area_chart.js | 2 +- .../vislib/visualizations/column_chart.js | 2 +- .../vislib/visualizations/line_chart.js | 2 +- .../vislib/visualizations/pie_chart.js | 2 +- .../vislib/visualizations/tile_map.js | 2 +- .../visualize/spy/_req_resp_stats.js | 2 +- src/ui/components/visualize/spy/_table.js | 2 +- src/ui/components/visualize/spy/spy.js | 2 +- src/ui/components/visualize/visualize.js | 4 +- src/ui/components/visualize/visualize.less | 43 +++--- src/ui/directives/info.js | 2 +- src/ui/directives/paginate.js | 2 +- src/ui/directives/saved_object_finder.js | 2 +- src/ui/{ui-styles/theme => images}/elk.ico | Bin src/ui/meta-modules/elasticsearch.js | 4 + src/ui/require.config.js | 70 --------- src/ui/ui-styles/_bootstrap.less | 53 ------- src/ui/ui-styles/_callout.less | 37 ----- src/ui/ui-styles/_font_icons.less | 5 - src/ui/ui-styles/_glyphicons.less | 17 --- src/ui/ui-styles/{main.less => base.less} | 97 ++---------- src/ui/ui-styles/callout.less | 39 +++++ src/ui/ui-styles/config.less | 22 +++ ..._control_group.less => control_group.less} | 33 ++-- .../ui-styles/{_hintbox.less => hintbox.less} | 2 + src/ui/ui-styles/{_input.less => input.less} | 4 +- src/ui/ui-styles/list-group-menu.less | 19 +++ .../ui-styles/{_mixins.less => mixins.less} | 14 +- .../ui-styles/{_navbar.less => navbar.less} | 8 +- .../ui-styles/{_notify.less => notify.less} | 16 +- .../{_pagination.less => pagination.less} | 26 ++-- .../ui-styles/{_sidebar.less => sidebar.less} | 11 +- .../ui-styles/{_spinner.less => spinner.less} | 4 +- src/ui/ui-styles/{_table.less => table.less} | 2 + .../{theme/_theme.less => theme.less} | 7 +- src/ui/ui-styles/theme/bootstrap.less | 32 ++++ src/ui/ui-styles/theme/font-awesome.less | 9 ++ .../{_truncate.less => truncate.less} | 0 .../{theme/_variables.less => variables.less} | 7 +- .../for-theme.less} | 4 +- tasks/config/less.js | 29 ---- tasks/config/licenses.js | 1 + tasks/config/requirejs.js | 67 --------- tasks/devServer.js | 2 +- 235 files changed, 1848 insertions(+), 1440 deletions(-) delete mode 100644 entries/sense.js delete mode 100644 src/dev_server/dev_statics_plugin/index.js rename src/dev_server/{dev_statics_plugin => }/lib/amd_wrapper.js (100%) rename src/dev_server/{dev_statics_plugin => }/lib/istanbul.js (100%) rename src/dev_server/{dev_statics_plugin => }/lib/kibana_src_filter.js (100%) rename src/dev_server/{dev_statics_plugin => }/package.json (50%) create mode 100644 src/plugins/appSwitcher/index.js create mode 100644 src/plugins/appSwitcher/package.json create mode 100644 src/plugins/appSwitcher/public/appSwitcher.css rename src/{ui/appSwitcher => plugins/appSwitcher/public}/appSwitcher.html (100%) create mode 100644 src/plugins/appSwitcher/public/appSwitcher.js rename src/{ui/appSwitcher => plugins/appSwitcher/public}/appSwitcher.less (88%) create mode 100644 src/server/optimize/DirectoryNameAsDefaultFile.js create mode 100644 src/server/optimize/Optimizer.js create mode 100644 src/server/optimize/OptmzAppEntry.js.tmpl create mode 100644 src/server/optimize/OptmzBundles.js create mode 100644 src/server/optimize/OptmzUiModules.js delete mode 100644 src/server/optimize/appMain.js.tmpl delete mode 100644 src/server/optimize/mains/kibana.js delete mode 100644 src/server/optimize/mains/sense.js create mode 100644 src/server/plugins/Plugins.js create mode 100644 src/server/ui/UiApp.js create mode 100644 src/server/ui/UiApps.js create mode 100644 src/server/ui/UiExports.js create mode 100644 src/server/ui/assets.js delete mode 100644 src/server/ui/assetsDir.js create mode 100644 src/server/ui/autoload.js create mode 100644 src/server/ui/exports.js delete mode 100644 src/server/ui/lib/UiApp.js delete mode 100644 src/server/ui/lib/UiExports.js delete mode 100644 src/server/ui/lib/defaultModules.js create mode 100644 src/server/ui/lib/findBowerComponents.js delete mode 100644 src/server/ui/lib/findModuleIds.js create mode 100644 src/server/ui/lib/scan.js delete mode 100644 src/ui/appSwitcher/index.js rename src/ui/{components => }/chrome/Tab.js (100%) rename src/ui/{components => }/chrome/TabCollection.js (94%) rename src/ui/{components => }/chrome/chrome.html (100%) rename src/ui/{components => }/chrome/chrome.js (83%) rename src/ui/{components => }/chrome/config/filter.html (100%) rename src/ui/{components => }/chrome/config/interval.html (100%) rename src/ui/{components/chrome-context/index.js => chrome/context.js} (86%) rename src/ui/{ui-styles/theme => images}/elk.ico (100%) create mode 100644 src/ui/meta-modules/elasticsearch.js delete mode 100644 src/ui/require.config.js delete mode 100644 src/ui/ui-styles/_bootstrap.less delete mode 100644 src/ui/ui-styles/_callout.less delete mode 100644 src/ui/ui-styles/_font_icons.less delete mode 100644 src/ui/ui-styles/_glyphicons.less rename src/ui/ui-styles/{main.less => base.less} (79%) create mode 100644 src/ui/ui-styles/callout.less create mode 100644 src/ui/ui-styles/config.less rename src/ui/ui-styles/{_control_group.less => control_group.less} (81%) rename src/ui/ui-styles/{_hintbox.less => hintbox.less} (97%) rename src/ui/ui-styles/{_input.less => input.less} (77%) create mode 100644 src/ui/ui-styles/list-group-menu.less rename src/ui/ui-styles/{_mixins.less => mixins.less} (77%) rename src/ui/ui-styles/{_navbar.less => navbar.less} (94%) rename src/ui/ui-styles/{_notify.less => notify.less} (86%) rename src/ui/ui-styles/{_pagination.less => pagination.less} (66%) rename src/ui/ui-styles/{_sidebar.less => sidebar.less} (91%) rename src/ui/ui-styles/{_spinner.less => spinner.less} (96%) rename src/ui/ui-styles/{_table.less => table.less} (94%) rename src/ui/ui-styles/{theme/_theme.less => theme.less} (95%) create mode 100644 src/ui/ui-styles/theme/bootstrap.less create mode 100644 src/ui/ui-styles/theme/font-awesome.less rename src/ui/ui-styles/{_truncate.less => truncate.less} (100%) rename src/ui/ui-styles/{theme/_variables.less => variables.less} (99%) rename src/ui/ui-styles/{_variables.less => variables/for-theme.less} (82%) delete mode 100644 tasks/config/less.js delete mode 100644 tasks/config/requirejs.js diff --git a/.gitignore b/.gitignore index 4dfc3783e121a..01996a413da17 100644 --- a/.gitignore +++ b/.gitignore @@ -3,9 +3,8 @@ .node_binaries node_modules bower_components -**/*.css trash -build +bundles target .jruby .idea diff --git a/.jscsrc b/.jscsrc index 285ada95c3ede..bd9a486a2897f 100644 --- a/.jscsrc +++ b/.jscsrc @@ -1,4 +1,5 @@ { + "esprima": "./node_modules/babel-jscs", "maximumLineLength": { "value": 140, "allowComments": true diff --git a/.jshintrc.node b/.jshintrc.node index a77f81af35ec7..9e65c19cae4bd 100644 --- a/.jshintrc.node +++ b/.jshintrc.node @@ -1,6 +1,7 @@ { "extends": "./.jshintrc", "node": true, + "esnext": true, "globals": { "Promise": true, diff --git a/bower.json b/bower.json index 82a56fe97fcac..3557e58453b6c 100644 --- a/bower.json +++ b/bower.json @@ -20,30 +20,21 @@ "angular-route": "1.2.28", "angular-ui-ace": "0.2.3", "bluebird": "~2.9.27", - "bootstrap": "3.3.4", "d3": "3.5.5", "elasticsearch": "~5.0.0", "Faker": "1.1.0", "FileSaver": "babc6d9d8f", - "font-awesome": "4.3.0", "gridster": "0.5.6", "jquery": "2.1.4", "leaflet": "0.7.3", "Leaflet.heat": "Leaflet/Leaflet.heat#627ede7c11bbe43", - "lesshat": "3.0.2", "lodash": "3.9.3", "moment": "2.10.3", "moment-timezone": "0.4.0", "ng-clip": "0.2.6", - "require-css": "0.1.8", - "requirejs": "2.1.18", - "requirejs-text": "2.0.14", "marked": "0.3.3", "numeral": "1.5.3", "leaflet-draw": "0.2.4" }, - "devDependencies": {}, - "resolutions": { - "angular": "1.2.28" - } + "devDependencies": {} } diff --git a/entries/sense.js b/entries/sense.js deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/package.json b/package.json index 38600b6e264ca..9a800978914d3 100644 --- a/package.json +++ b/package.json @@ -40,16 +40,23 @@ }, "dependencies": { "ansicolors": "^0.3.2", + "autoprefixer-loader": "^2.0.0", + "babel-jscs": "^1.0.3", "bluebird": "^2.9.27", "body-parser": "^1.10.1", "boom": "^2.8.0", + "bootstrap": "^3.3.5", "bunyan": "^1.2.3", "commander": "^2.6.0", "compression": "^1.3.0", "cookie-parser": "^1.3.3", + "css-loader": "^0.15.1", "debug": "^2.1.1", "elasticsearch": "^5.0.0", + "exports-loader": "^0.6.2", "express": "^4.10.6", + "file-loader": "^0.8.4", + "font-awesome": "^4.3.0", "glob": "^4.3.2", "good": "^5.1.2", "good-console": "^4.1.0", @@ -57,19 +64,28 @@ "good-reporter": "^3.1.0", "hapi": "^8.6.1", "http-auth": "^2.2.5", + "imports-loader": "^0.6.4", "joi": "^6.4.3", "js-yaml": "^3.2.5", "json-stringify-safe": "^5.0.1", - "lodash": "^3.9.3", + "less": "^2.5.1", + "less-loader": "^2.2.0", + "loader-utils": "^0.2.10", + "lodash": "^3.10.0", "minimatch": "^2.0.8", + "mkdirp": "^0.5.1", "moment": "^2.10.3", "node-libs-browser": "spalger/node-libs-browser", "numeral": "^1.5.3", + "raw-loader": "^0.5.1", "request": "^2.40.0", "requirefrom": "^0.2.0", + "rimraf": "^2.4.1", "semver": "^4.3.6", "serve-favicon": "^2.2.0", + "style-loader": "^0.12.3", "through": "^2.3.6", + "url-loader": "^0.5.6", "webpack": "^1.10.0" }, "devDependencies": { @@ -84,8 +100,6 @@ "grunt-contrib-copy": "^0.8.0", "grunt-contrib-jade": "^0.14.0", "grunt-contrib-jshint": "^0.11", - "grunt-contrib-less": "^1.0.1", - "grunt-contrib-requirejs": "^0.4.4", "grunt-contrib-watch": "^0.6.1", "grunt-esvm": "^1.0.1", "grunt-jscs": "^1.8.0", @@ -112,14 +126,11 @@ "path-browserify": "0.0.0", "portscanner": "^1.0.0", "progress": "^1.1.8", - "requirejs": "^2.1.14", - "rjs-build-analysis": "0.0.3", "simple-git": "^1.3.0", "sinon": "^1.12.2", "tar": "^2.1.1" }, "engines": { - "node": "~0.10 || ~0.12", - "iojs": ">=1.5" + "node": ">=2" } } diff --git a/src/bin/kibana.bat b/src/bin/kibana.bat index 7181de9a35755..7f6d4a1261b58 100644 --- a/src/bin/kibana.bat +++ b/src/bin/kibana.bat @@ -7,7 +7,6 @@ for %%I in ("%SCRIPT_DIR%..") do set DIR=%%~dpfI set NODE=%DIR%\node\node.exe set SERVER=%DIR%\src\server\cli -set NODE_ENV="production" set CONFIG_PATH=%DIR%\config\kibana.yml TITLE Kibana Server @@version diff --git a/src/bin/kibana.sh b/src/bin/kibana.sh index da5516bb2014e..c5db3b5b8d828 100644 --- a/src/bin/kibana.sh +++ b/src/bin/kibana.sh @@ -17,5 +17,5 @@ DIR=$(dirname "${SCRIPT}")/.. NODE=${DIR}/node/bin/node SERVER=${DIR}/src/server/cli -CONFIG_PATH="${DIR}/config/kibana.yml" NODE_ENV="production" exec "${NODE}" ${SERVER} ${@} +CONFIG_PATH="${DIR}/config/kibana.yml" exec "${NODE}" ${SERVER} ${@} diff --git a/src/dev_server/dev_statics_plugin/index.js b/src/dev_server/dev_statics_plugin/index.js deleted file mode 100644 index cf44510142575..0000000000000 --- a/src/dev_server/dev_statics_plugin/index.js +++ /dev/null @@ -1,79 +0,0 @@ -module.exports = function (kibana) { - var path = require('path'); - var glob = require('glob'); - var join = path.join; - var rel = join.bind(null, __dirname); - - var ROOT = rel('../../../'); - var SRC = join(ROOT, 'src'); - var NODE_MODULES = join(ROOT, 'node_modules'); - var APP = join(SRC, 'kibana'); - var TEST = join(ROOT, 'test'); - var istanbul = require('./lib/istanbul'); - var amdWrapper = require('./lib/amd_wrapper'); - var kibanaSrcFilter = require('./lib/kibana_src_filter'); - - return new kibana.Plugin({ - require: ['marvel'], - init: function (server, options) { - server.ext('onPreHandler', istanbul({ root: SRC, displayRoot: SRC, filter: kibanaSrcFilter })); - server.ext('onPreHandler', istanbul({ root: APP, displayRoot: SRC, filter: kibanaSrcFilter })); - - server.route({ - path: '/test/{paths*}', - method: 'GET', - handler: { - directory: { - path: TEST - } - } - }); - - server.route({ - path: '/amd-wrap/{paths*}', - method: 'GET', - handler: amdWrapper({ root: ROOT }) - }); - - server.route({ - path: '/src/{paths*}', - method: 'GET', - handler: { - directory: { - path: SRC - } - } - }); - - server.route({ - path: '/node_modules/{paths*}', - method: 'GET', - handler: { - directory: { - path: NODE_MODULES - } - } - }); - - server.route({ - path: '/specs', - method: 'GET', - handler: function (request, reply) { - var unit = join(ROOT, '/test/unit/'); - glob(join(unit, 'specs/**/*.js'), function (er, files) { - var moduleIds = files - .filter(function (filename) { - return path.basename(filename).charAt(0) !== '_'; - }) - .map(function (filename) { - return path.relative(unit, filename).replace(/\\/g, '/').replace(/\.js$/, ''); - }); - - return reply(moduleIds); - }); - } - }); - } - }); - -}; diff --git a/src/dev_server/index.js b/src/dev_server/index.js index 88a0b7d1bf3f5..7da9436f3f554 100644 --- a/src/dev_server/index.js +++ b/src/dev_server/index.js @@ -1,24 +1,101 @@ var _ = require('lodash'); -var join = require('path').join; - +var resolve = require('path').resolve.bind(null, __dirname, '..', '..'); var KbnServer = require('../server/KbnServer'); +function kibanaPlugin(kibana) { + var path = require('path'); + var glob = require('glob'); + var join = path.join; + var rel = join.bind(null, __dirname); + + var ROOT = rel('../../../'); + var SRC = join(ROOT, 'src'); + var NODE_MODULES = join(ROOT, 'node_modules'); + var APP = join(SRC, 'kibana'); + var TEST = join(ROOT, 'test'); + var istanbul = require('./lib/istanbul'); + var amdWrapper = require('./lib/amd_wrapper'); + var kibanaSrcFilter = require('./lib/kibana_src_filter'); + + return new kibana.Plugin({ + init: function (server, options) { + server.ext('onPreHandler', istanbul({ root: SRC, displayRoot: SRC, filter: kibanaSrcFilter })); + server.ext('onPreHandler', istanbul({ root: APP, displayRoot: SRC, filter: kibanaSrcFilter })); + + server.route({ + path: '/test/{paths*}', + method: 'GET', + handler: { + directory: { + path: TEST + } + } + }); + + server.route({ + path: '/amd-wrap/{paths*}', + method: 'GET', + handler: amdWrapper({ root: ROOT }) + }); + + server.route({ + path: '/src/{paths*}', + method: 'GET', + handler: { + directory: { + path: SRC + } + } + }); + + server.route({ + path: '/node_modules/{paths*}', + method: 'GET', + handler: { + directory: { + path: NODE_MODULES + } + } + }); + + server.route({ + path: '/specs', + method: 'GET', + handler: function (request, reply) { + var unit = join(ROOT, '/test/unit/'); + glob(join(unit, 'specs/**/*.js'), function (er, files) { + var moduleIds = files + .filter(function (filename) { + return path.basename(filename).charAt(0) !== '_'; + }) + .map(function (filename) { + return path.relative(unit, filename).replace(/\\/g, '/').replace(/\.js$/, ''); + }); + + return reply(moduleIds); + }); + } + }); + } + }); +} + function run(port, quiet) { return (new KbnServer({ + 'env': 'development', + 'logging.quiet': quiet, 'kibana.server.port': port || 5601, - 'plugins.paths': [ - join(__dirname, 'dev_statics_plugin') - ], - 'plugins.scanDirs': [ - join(__dirname, '..', 'plugins') - ] + 'plugins.paths': [ __dirname ], + 'plugins.scanDirs': [ resolve('src/plugins') ], + 'optimize.bundleDir': resolve('bundles'), })) .listen(); } +module.exports = kibanaPlugin; +module.exports.run = run; + if (require.main === module) { run().done(); -} else { - module.exports = run; } diff --git a/src/dev_server/dev_statics_plugin/lib/amd_wrapper.js b/src/dev_server/lib/amd_wrapper.js similarity index 100% rename from src/dev_server/dev_statics_plugin/lib/amd_wrapper.js rename to src/dev_server/lib/amd_wrapper.js diff --git a/src/dev_server/dev_statics_plugin/lib/istanbul.js b/src/dev_server/lib/istanbul.js similarity index 100% rename from src/dev_server/dev_statics_plugin/lib/istanbul.js rename to src/dev_server/lib/istanbul.js diff --git a/src/dev_server/dev_statics_plugin/lib/kibana_src_filter.js b/src/dev_server/lib/kibana_src_filter.js similarity index 100% rename from src/dev_server/dev_statics_plugin/lib/kibana_src_filter.js rename to src/dev_server/lib/kibana_src_filter.js diff --git a/src/dev_server/dev_statics_plugin/package.json b/src/dev_server/package.json similarity index 50% rename from src/dev_server/dev_statics_plugin/package.json rename to src/dev_server/package.json index 2e6adfb8c3e9b..7b1f27a93d06a 100644 --- a/src/dev_server/dev_statics_plugin/package.json +++ b/src/dev_server/package.json @@ -1,4 +1,4 @@ { - "name": "dev_statics", + "name": "dev_server", "version": "1.0.0" } diff --git a/src/plugins/PLAN.md b/src/plugins/PLAN.md index f4649714d5993..3a9c4297a9444 100644 --- a/src/plugins/PLAN.md +++ b/src/plugins/PLAN.md @@ -68,7 +68,7 @@ module.exports = function (kibana) { // of modules that this plugin provides to other plugins. // For now this only describes the modules exported for // the front-end - exports: { + uiExports: { // an app is the highest level ui-component that a plugin // can export. apps get an icon on the app page and the option @@ -148,7 +148,7 @@ require('chrome') }) require('routes').when('/', { - view: requrie('text!plugins/my-kibana-plugin/home.awesome.html') + view: requrie('plugins/my-kibana-plugin/home.awesome.html') }) .otherwise({ redirect: '/' diff --git a/src/plugins/appSwitcher/index.js b/src/plugins/appSwitcher/index.js new file mode 100644 index 0000000000000..8cdb378ef282b --- /dev/null +++ b/src/plugins/appSwitcher/index.js @@ -0,0 +1,19 @@ +module.exports = function (kibana) { + return new kibana.Plugin({ + uiExports: { + app: { + id: 'switcher', + main: 'plugins/appSwitcher/appSwitcher', + hidden: true, + defaultModules: { + angular: [], + require: [ + 'chrome', + 'angular-bootstrap' + ] + .concat(kibana.autoload.styles) + } + } + } + }); +}; diff --git a/src/plugins/appSwitcher/package.json b/src/plugins/appSwitcher/package.json new file mode 100644 index 0000000000000..0483302d156de --- /dev/null +++ b/src/plugins/appSwitcher/package.json @@ -0,0 +1,4 @@ +{ + "name": "appSwitcher", + "version": "1.0.0" +} diff --git a/src/plugins/appSwitcher/public/appSwitcher.css b/src/plugins/appSwitcher/public/appSwitcher.css new file mode 100644 index 0000000000000..919aaa850bf06 --- /dev/null +++ b/src/plugins/appSwitcher/public/appSwitcher.css @@ -0,0 +1,35 @@ +.application { + background-color: #ecf0f1; +} +.app-links { + width: 700px; + margin: 25px auto; + text-align: justify; +} +.app-links .app-link { + display: inline-block; + background: white; + width: 200px; + margin: 0 30px 30px 0; +} +.app-links .app-link .app-icon { + display: block; + height: 200px; + background-size: cover; + background-position: center; +} +.app-links .app-link .app-info { + display: block; + padding: 15px; +} +.app-links .app-link .app-title { + margin: 0 0 10px; + color: #444444; +} +.app-links .app-link .app-description { + font-size: 1em; + color: #95a5a6; + text-align: left; + margin: 0; +} +/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi8vVXNlcnMvc3BlbmNlci9kZXYvZXMva2liYW5hL3NyYy91aS9hcHBTd2l0Y2hlci9hcHBTd2l0Y2hlci5sZXNzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBO0VBQ0UseUJBQUE7O0FBR0Y7RUFDRSxZQUFBO0VBQ0EsaUJBQUE7RUFDQSxtQkFBQTs7QUFIRixVQUtFO0VBQ0UscUJBQUE7RUFDQSxpQkFBQTtFQUNBLFlBQUE7RUFDQSxxQkFBQTs7QUFUSixVQUtFLFVBTUU7RUFDRSxjQUFBO0VBQ0EsYUFBQTtFQUNBLHNCQUFBO0VBQ0EsMkJBQUE7O0FBZk4sVUFLRSxVQWFFO0VBQ0UsY0FBQTtFQUNBLGFBQUE7O0FBcEJOLFVBS0UsVUFrQkU7RUFDRSxnQkFBQTtFQUNBLGNBQUE7O0FBekJOLFVBS0UsVUF1QkU7RUFDRSxjQUFBO0VBQ0EsY0FBQTtFQUNBLGdCQUFBO0VBQ0EsU0FBQSJ9 */ \ No newline at end of file diff --git a/src/ui/appSwitcher/appSwitcher.html b/src/plugins/appSwitcher/public/appSwitcher.html similarity index 100% rename from src/ui/appSwitcher/appSwitcher.html rename to src/plugins/appSwitcher/public/appSwitcher.html diff --git a/src/plugins/appSwitcher/public/appSwitcher.js b/src/plugins/appSwitcher/public/appSwitcher.js new file mode 100644 index 0000000000000..d2df3bb6eccf7 --- /dev/null +++ b/src/plugins/appSwitcher/public/appSwitcher.js @@ -0,0 +1,24 @@ +require('plugins/appSwitcher/appSwitcher.less'); + +require('chrome') +.setLogo('url(/images/kibana.png) left no-repeat', true) +.setTabs([ + { + id: '', + title: 'Apps' + } +]) +.setRootTemplate(require('plugins/appSwitcher/appSwitcher.html')) +.setRootController('switcher', function SwitcherController($http) { + var switcher = { + loading: true + }; + + $http.get('/api/apps') + .then(function (resp) { + switcher.loading = false; + switcher.apps = resp.data; + }); + + return switcher; +}); diff --git a/src/ui/appSwitcher/appSwitcher.less b/src/plugins/appSwitcher/public/appSwitcher.less similarity index 88% rename from src/ui/appSwitcher/appSwitcher.less rename to src/plugins/appSwitcher/public/appSwitcher.less index 48bf571574271..cead647548551 100644 --- a/src/ui/appSwitcher/appSwitcher.less +++ b/src/plugins/appSwitcher/public/appSwitcher.less @@ -1,5 +1,4 @@ -@import (reference) "lesshat"; -@import (reference) "ui-styles/theme/_variables"; +@import (reference) "~ui-styles/variables"; .application { background-color: @gray-lighter; diff --git a/src/plugins/elasticsearch/index.js b/src/plugins/elasticsearch/index.js index 8ab9538ac2669..fc54f9b164bbb 100644 --- a/src/plugins/elasticsearch/index.js +++ b/src/plugins/elasticsearch/index.js @@ -35,7 +35,7 @@ module.exports = function (kibana) { ); // Set up the health check service and start it. - healthCheck(this, server).start(); + // healthCheck(this, server).start(); } }); diff --git a/src/plugins/kbn_vislib_vis_types/index.js b/src/plugins/kbn_vislib_vis_types/index.js index 49f4eec55d9e5..a9c8a5c0c90f9 100644 --- a/src/plugins/kbn_vislib_vis_types/index.js +++ b/src/plugins/kbn_vislib_vis_types/index.js @@ -2,7 +2,7 @@ module.exports = function (kibana) { return new kibana.Plugin({ - exports: { + uiExports: { visTypes: [ 'plugins/kbn_vislib_vis_types/kbn_vislib_vis_types' ] diff --git a/src/plugins/kbn_vislib_vis_types/public/area.js b/src/plugins/kbn_vislib_vis_types/public/area.js index 63ecd29f32117..df54fc049a22b 100644 --- a/src/plugins/kbn_vislib_vis_types/public/area.js +++ b/src/plugins/kbn_vislib_vis_types/public/area.js @@ -28,7 +28,7 @@ define(function (require) { }, scales: ['linear', 'log', 'square root'], modes: ['stacked', 'overlap', 'percentage', 'wiggle', 'silhouette'], - editor: require('text!plugins/kbn_vislib_vis_types/editors/area.html') + editor: require('plugins/kbn_vislib_vis_types/editors/area.html') }, schemas: new Schemas([ { diff --git a/src/plugins/kbn_vislib_vis_types/public/controls/line_interpolation_option.js b/src/plugins/kbn_vislib_vis_types/public/controls/line_interpolation_option.js index e217f2ced5ead..0c1c53afac041 100644 --- a/src/plugins/kbn_vislib_vis_types/public/controls/line_interpolation_option.js +++ b/src/plugins/kbn_vislib_vis_types/public/controls/line_interpolation_option.js @@ -6,7 +6,7 @@ define(function (require) { module.directive('lineInterpolationOption', function ($parse, $compile) { return { restrict: 'E', - template: require('text!plugins/kbn_vislib_vis_types/controls/line_interpolation_option.html'), + template: require('plugins/kbn_vislib_vis_types/controls/line_interpolation_option.html'), replace: true }; }); diff --git a/src/plugins/kbn_vislib_vis_types/public/controls/point_series_options.js b/src/plugins/kbn_vislib_vis_types/public/controls/point_series_options.js index bd5a2dab59b29..7de83fe5cf11d 100644 --- a/src/plugins/kbn_vislib_vis_types/public/controls/point_series_options.js +++ b/src/plugins/kbn_vislib_vis_types/public/controls/point_series_options.js @@ -7,7 +7,7 @@ define(function (require) { module.directive('pointSeriesOptions', function ($parse, $compile) { return { restrict: 'E', - template: require('text!plugins/kbn_vislib_vis_types/controls/point_series_options.html'), + template: require('plugins/kbn_vislib_vis_types/controls/point_series_options.html'), replace: true }; }); diff --git a/src/plugins/kbn_vislib_vis_types/public/controls/vislib_basic_options.js b/src/plugins/kbn_vislib_vis_types/public/controls/vislib_basic_options.js index 70a97ca857a51..aac31611c3781 100644 --- a/src/plugins/kbn_vislib_vis_types/public/controls/vislib_basic_options.js +++ b/src/plugins/kbn_vislib_vis_types/public/controls/vislib_basic_options.js @@ -6,7 +6,7 @@ define(function (require) { module.directive('vislibBasicOptions', function ($parse, $compile) { return { restrict: 'E', - template: require('text!plugins/kbn_vislib_vis_types/controls/vislib_basic_options.html'), + template: require('plugins/kbn_vislib_vis_types/controls/vislib_basic_options.html'), replace: true }; }); diff --git a/src/plugins/kbn_vislib_vis_types/public/histogram.js b/src/plugins/kbn_vislib_vis_types/public/histogram.js index e81c1bd498a7d..658f580a5560b 100644 --- a/src/plugins/kbn_vislib_vis_types/public/histogram.js +++ b/src/plugins/kbn_vislib_vis_types/public/histogram.js @@ -24,7 +24,7 @@ define(function (require) { }, scales: ['linear', 'log', 'square root'], modes: ['stacked', 'percentage', 'grouped'], - editor: require('text!plugins/kbn_vislib_vis_types/editors/histogram.html') + editor: require('plugins/kbn_vislib_vis_types/editors/histogram.html') }, schemas: new Schemas([ { diff --git a/src/plugins/kbn_vislib_vis_types/public/line.js b/src/plugins/kbn_vislib_vis_types/public/line.js index 73981a90074f6..55b383bb6557c 100644 --- a/src/plugins/kbn_vislib_vis_types/public/line.js +++ b/src/plugins/kbn_vislib_vis_types/public/line.js @@ -27,7 +27,7 @@ define(function (require) { yAxis: {} }, scales: ['linear', 'log', 'square root'], - editor: require('text!plugins/kbn_vislib_vis_types/editors/line.html') + editor: require('plugins/kbn_vislib_vis_types/editors/line.html') }, schemas: new Schemas([ { diff --git a/src/plugins/kbn_vislib_vis_types/public/pie.js b/src/plugins/kbn_vislib_vis_types/public/pie.js index ebbc741246b90..7572f4bcf2058 100644 --- a/src/plugins/kbn_vislib_vis_types/public/pie.js +++ b/src/plugins/kbn_vislib_vis_types/public/pie.js @@ -16,7 +16,7 @@ define(function (require) { addLegend: true, isDonut: false }, - editor: require('text!plugins/kbn_vislib_vis_types/editors/pie.html') + editor: require('plugins/kbn_vislib_vis_types/editors/pie.html') }, responseConverter: false, hierarchicalData: true, diff --git a/src/plugins/kbn_vislib_vis_types/public/tileMap.js b/src/plugins/kbn_vislib_vis_types/public/tileMap.js index 8e502680b289d..3c32aaf64f0a3 100644 --- a/src/plugins/kbn_vislib_vis_types/public/tileMap.js +++ b/src/plugins/kbn_vislib_vis_types/public/tileMap.js @@ -25,7 +25,7 @@ define(function (require) { }, mapTypes: ['Scaled Circle Markers', 'Shaded Circle Markers', 'Shaded Geohash Grid', 'Heatmap'], canDesaturate: !!supports.cssFilters, - editor: require('text!plugins/kbn_vislib_vis_types/editors/tile_map.html') + editor: require('plugins/kbn_vislib_vis_types/editors/tile_map.html') }, listeners: { rectangle: function (event) { diff --git a/src/plugins/kibana/index.js b/src/plugins/kibana/index.js index df8f98a0a2ced..c60f2ee95e8db 100644 --- a/src/plugins/kibana/index.js +++ b/src/plugins/kibana/index.js @@ -1,7 +1,9 @@ module.exports = function (kibana) { + var jq = ['$=jquery']; + var ng = jq.concat('angular'); return new kibana.Plugin({ - exports: { + uiExports: { app: { title: 'Kibana', description: 'the kibana you know and love', @@ -11,6 +13,54 @@ module.exports = function (kibana) { 'visTypes', 'spyModes' ] + }, + + modules: { + 'chrome$': 'chrome/chrome', + 'lodash': 'utils/lodash-mixins/index', + 'errors': 'components/errors', + 'modules': 'components/modules', + 'routes': 'components/routes/index', + + // bower_components + 'angular': ['bower_components/angular/angular', jq, 'window.angular'], + + // angular deps + 'angular-bindonce': ['bower_components/angular-bindonce/bindonce', ng], + 'angular-bootstrap': ['bower_components/angular-bootstrap/ui-bootstrap-tpls', ng], + 'angular-elastic': ['bower_components/angular-elastic/elastic', ng], + 'angular-route': ['bower_components/angular-route/angular-route', ng], + 'ng-clip': ['bower_components/ng-clip/src/ngClip', ng.concat('zeroclipboard')], + 'elasticsearch': ['meta-modules/elasticsearch'], + 'elasticsearch-src': { + path: 'bower_components/elasticsearch/elasticsearch.angular.min', + parse: false + }, + + // ace editor + 'ace': { + path: 'bower_components/ace-builds/src-noconflict/ace', + parse: false, + exports: 'ace' + }, + 'angular-ui-ace': ['bower_components/angular-ui-ace/ui-ace', ng.concat('ace', 'aceJson=ace-json')], + 'ace-json': ['bower_components/ace-builds/src-noconflict/mode-json', 'ace'], + 'd3': ['bower_components/d3/d3'], + 'faker': ['bower_components/Faker/faker'], + 'file_saver': ['bower_components/FileSaver/FileSaver', null, 'saveAs'], + 'gridster': ['bower_components/gridster/dist/jquery.gridster', 'jquery,gs=gridster-styles'], + 'gridster-styles': ['bower_components/gridster/dist/jquery.gridster.css'], + 'jquery': ['bower_components/jquery/dist/jquery'], + 'leaflet': ['bower_components/leaflet/dist/leaflet', 'ls=leaflet-styles'], + 'leaflet-styles': ['bower_components/leaflet-draw/dist/leaflet.draw.css'], + 'leaflet-heat': ['bower_components/Leaflet.heat/dist/leaflet-heat', 'leaflet'], + 'leaflet-draw': ['bower_components/leaflet-draw/dist/leaflet.draw', 'leaflet,lds=leaflet-draw-styles'], + 'leaflet-draw-styles': ['bower_components/leaflet/dist/leaflet.css'], + 'lodash_src': ['bower_components/lodash/lodash'], + 'moment': ['bower_components/moment/moment'], + 'zeroclipboard': ['bower_components/zeroclipboard/dist/ZeroClipboard'], + 'marked': ['bower_components/marked/lib/marked'], + 'numeral': ['bower_components/numeral/numeral'] } } }); diff --git a/src/plugins/kibana/public/dashboard/components/panel/panel.js b/src/plugins/kibana/public/dashboard/components/panel/panel.js index d1227d9016dfc..962db03b91713 100644 --- a/src/plugins/kibana/public/dashboard/components/panel/panel.js +++ b/src/plugins/kibana/public/dashboard/components/panel/panel.js @@ -24,7 +24,7 @@ define(function (require) { return { restrict: 'E', - template: require('text!plugins/kibana/dashboard/components/panel/panel.html'), + template: require('plugins/kibana/dashboard/components/panel/panel.html'), requires: '^dashboardGrid', link: function ($scope, $el) { // using $scope inheritance, panels are available in AppState diff --git a/src/plugins/kibana/public/dashboard/index.js b/src/plugins/kibana/public/dashboard/index.js index fea40b0d04821..2f7525918c4ba 100644 --- a/src/plugins/kibana/public/dashboard/index.js +++ b/src/plugins/kibana/public/dashboard/index.js @@ -14,7 +14,7 @@ define(function (require) { require('plugins/kibana/dashboard/directives/grid'); require('plugins/kibana/dashboard/components/panel/panel'); require('plugins/kibana/dashboard/services/saved_dashboards'); - require('css!plugins/kibana/dashboard/styles/main.css'); + require('plugins/kibana/dashboard/styles/main.less'); var app = require('modules').get('app/dashboard', [ 'elasticsearch', @@ -27,7 +27,7 @@ define(function (require) { require('routes') .when('/dashboard', { - template: require('text!plugins/kibana/dashboard/index.html'), + template: require('plugins/kibana/dashboard/index.html'), resolve: { dash: function (savedDashboards) { return savedDashboards.get(); @@ -35,7 +35,7 @@ define(function (require) { } }) .when('/dashboard/:id', { - template: require('text!plugins/kibana/dashboard/index.html'), + template: require('plugins/kibana/dashboard/index.html'), resolve: { dash: function (savedDashboards, Notifier, $route, $location, courier) { return savedDashboards.get($route.current.params.id) @@ -83,10 +83,10 @@ define(function (require) { var $state = $scope.state = new AppState(stateDefaults); $scope.configTemplate = new ConfigTemplate({ - save: require('text!plugins/kibana/dashboard/partials/save_dashboard.html'), - load: require('text!plugins/kibana/dashboard/partials/load_dashboard.html'), - share: require('text!plugins/kibana/dashboard/partials/share.html'), - pickVis: require('text!plugins/kibana/dashboard/partials/pick_visualization.html') + save: require('plugins/kibana/dashboard/partials/save_dashboard.html'), + load: require('plugins/kibana/dashboard/partials/load_dashboard.html'), + share: require('plugins/kibana/dashboard/partials/share.html'), + pickVis: require('plugins/kibana/dashboard/partials/pick_visualization.html') }); $scope.refresh = _.bindKey(courier, 'fetch'); diff --git a/src/plugins/kibana/public/dashboard/styles/main.less b/src/plugins/kibana/public/dashboard/styles/main.less index ec2c98efe4ccc..9158418921a64 100644 --- a/src/plugins/kibana/public/dashboard/styles/main.less +++ b/src/plugins/kibana/public/dashboard/styles/main.less @@ -1,8 +1,5 @@ -@import (reference) "ui-styles/_bootstrap.less"; -@import (reference) "ui-styles/theme/_theme.less"; -@import (reference) "ui-styles/_mixins.less"; -@import (reference) "lesshat.less"; - +@import (reference) "~ui-styles/variables"; +@import (reference) "~ui-styles/mixins"; @dashboard-background: @gray-lighter; .tab-dashboard { @@ -56,24 +53,24 @@ dashboard-grid { height: 100%; // flex layout allows us to define the visualize element as "fill available space" - .display(flex); - .flex-direction(column); - .justify-content(flex-start); + display: flex; + flex-direction: column; + justify-content: flex-start; .panel-heading { - .flex(0 0 auto); + flex: 0 0 auto; white-space: nowrap; display: flex; div.btn-group { white-space: nowrap; - .flex(0 0 auto); + flex: 0 0 auto; } .panel-title { font-size: inherit; .ellipsis(); - .flex(1 1 0); + flex: 1 1 0; } a { @@ -90,10 +87,10 @@ dashboard-grid { .load-error { text-align: center; font-size: 1em; - .display(flex); - .flex(1 0 auto); - .justify-content(center); - .flex-direction(column); + display: flex; + flex: 1 0 auto; + justify-content: center; + flex-direction: column; .fa-exclamation-triangle { font-size: 2em; @@ -103,7 +100,7 @@ dashboard-grid { .panel-content { display: flex; - .flex(1, 1, 100%); + flex: 1 1 100%; height: auto; } } diff --git a/src/plugins/kibana/public/discover/components/field_chooser/discover_field.js b/src/plugins/kibana/public/discover/components/field_chooser/discover_field.js index 0e58ed9f04c7a..3f9b36bbb804a 100644 --- a/src/plugins/kibana/public/discover/components/field_chooser/discover_field.js +++ b/src/plugins/kibana/public/discover/components/field_chooser/discover_field.js @@ -1,7 +1,7 @@ define(function (require) { var $ = require('jquery'); var app = require('modules').get('apps/discover'); - var html = require('text!plugins/kibana/discover/components/field_chooser/discover_field.html'); + var html = require('plugins/kibana/discover/components/field_chooser/discover_field.html'); var _ = require('lodash'); require('directives/css_truncate'); @@ -17,7 +17,7 @@ define(function (require) { var detailsElem; var detailScope = $scope.$new(); - var detailsHtml = require('text!plugins/kibana/discover/components/field_chooser/lib/detail_views/string.html'); + var detailsHtml = require('plugins/kibana/discover/components/field_chooser/lib/detail_views/string.html'); var init = function () { if ($scope.field.details) { diff --git a/src/plugins/kibana/public/discover/components/field_chooser/field_chooser.js b/src/plugins/kibana/public/discover/components/field_chooser/field_chooser.js index 4232ffc0983a1..3cd4e1603e1c9 100644 --- a/src/plugins/kibana/public/discover/components/field_chooser/field_chooser.js +++ b/src/plugins/kibana/public/discover/components/field_chooser/field_chooser.js @@ -23,7 +23,7 @@ define(function (require) { indexPatternList: '=', updateFilterInQuery: '=filter' }, - template: require('text!plugins/kibana/discover/components/field_chooser/field_chooser.html'), + template: require('plugins/kibana/discover/components/field_chooser/field_chooser.html'), link: function ($scope) { $scope.setIndexPattern = function (id) { $scope.state.index = id; diff --git a/src/plugins/kibana/public/discover/controllers/discover.js b/src/plugins/kibana/public/discover/controllers/discover.js index 8bd71f48c28c2..0d6267477439d 100644 --- a/src/plugins/kibana/public/discover/controllers/discover.js +++ b/src/plugins/kibana/public/discover/controllers/discover.js @@ -30,7 +30,7 @@ define(function (require) { require('routes') .when('/discover/:id?', { - template: require('text!plugins/kibana/discover/index.html'), + template: require('plugins/kibana/discover/index.html'), reloadOnSearch: false, resolve: { ip: function (Promise, courier, config, $location) { @@ -90,8 +90,8 @@ define(function (require) { // config panel templates $scope.configTemplate = new ConfigTemplate({ - load: require('text!plugins/kibana/discover/partials/load_search.html'), - save: require('text!plugins/kibana/discover/partials/save_search.html') + load: require('plugins/kibana/discover/partials/load_search.html'), + save: require('plugins/kibana/discover/partials/save_search.html') }); $scope.timefilter = timefilter; diff --git a/src/plugins/kibana/public/discover/index.js b/src/plugins/kibana/public/discover/index.js index c661469f45af6..f08c43cb091f4 100644 --- a/src/plugins/kibana/public/discover/index.js +++ b/src/plugins/kibana/public/discover/index.js @@ -4,5 +4,5 @@ define(function (require, module, exports) { require('components/collapsible_sidebar/collapsible_sidebar'); require('plugins/kibana/discover/components/field_chooser/field_chooser'); require('plugins/kibana/discover/controllers/discover'); - require('css!plugins/kibana/discover/styles/main.css'); + require('plugins/kibana/discover/styles/main.less'); }); diff --git a/src/plugins/kibana/public/discover/styles/main.less b/src/plugins/kibana/public/discover/styles/main.less index 53368589c6278..80fc6073ed985 100644 --- a/src/plugins/kibana/public/discover/styles/main.less +++ b/src/plugins/kibana/public/discover/styles/main.less @@ -1,6 +1,4 @@ -@import (reference) "ui-styles/_bootstrap.less"; -@import (reference) "ui-styles/theme/_theme.less"; -@import (reference) "ui-styles/_variables.less"; +@import (reference) "~ui-styles/variables"; .tab-discover { overflow-x: hidden; @@ -256,7 +254,7 @@ disc-field-chooser { &-interval { a { - text-decoration: underline;; + text-decoration: underline; } select { diff --git a/src/plugins/kibana/public/doc/controllers/doc.js b/src/plugins/kibana/public/doc/controllers/doc.js index 71d0eec68fc26..d8d7726d4c508 100644 --- a/src/plugins/kibana/public/doc/controllers/doc.js +++ b/src/plugins/kibana/public/doc/controllers/doc.js @@ -13,7 +13,7 @@ define(function (require) { 'kibana/index_patterns' ]); - var html = require('text!plugins/kibana/doc/index.html'); + var html = require('plugins/kibana/doc/index.html'); var resolveIndexPattern = { indexPattern: function (courier, savedSearches, $route) { diff --git a/src/plugins/kibana/public/settings/index.js b/src/plugins/kibana/public/settings/index.js index 9b717d736e63b..bc81b42526290 100644 --- a/src/plugins/kibana/public/settings/index.js +++ b/src/plugins/kibana/public/settings/index.js @@ -1,7 +1,7 @@ define(function (require, module, exports) { var _ = require('lodash'); - require('css!plugins/kibana/settings/styles/main.css'); + require('plugins/kibana/settings/styles/main.less'); require('filters/start_from'); require('routes') @@ -13,7 +13,7 @@ define(function (require, module, exports) { .directive('kbnSettingsApp', function (Private, $route, timefilter) { return { restrict: 'E', - template: require('text!plugins/kibana/settings/app.html'), + template: require('plugins/kibana/settings/app.html'), transclude: true, scope: { sectionName: '@section' diff --git a/src/plugins/kibana/public/settings/sections/about/index.js b/src/plugins/kibana/public/settings/sections/about/index.js index c12c1f753c716..505d068c14074 100644 --- a/src/plugins/kibana/public/settings/sections/about/index.js +++ b/src/plugins/kibana/public/settings/sections/about/index.js @@ -3,7 +3,7 @@ define(function (require) { require('routes') .when('/settings/about', { - template: require('text!plugins/kibana/settings/sections/about/index.html') + template: require('plugins/kibana/settings/sections/about/index.html') }); require('modules').get('apps/settings') diff --git a/src/plugins/kibana/public/settings/sections/advanced/advanced_row.js b/src/plugins/kibana/public/settings/sections/advanced/advanced_row.js index d8a7da1137fb6..e62c88d6c0186 100644 --- a/src/plugins/kibana/public/settings/sections/advanced/advanced_row.js +++ b/src/plugins/kibana/public/settings/sections/advanced/advanced_row.js @@ -7,7 +7,7 @@ define(function (require) { return { restrict: 'A', replace: true, - template: require('text!plugins/kibana/settings/sections/advanced/advanced_row.html'), + template: require('plugins/kibana/settings/sections/advanced/advanced_row.html'), scope: { conf: '=advancedRow', configs: '=' diff --git a/src/plugins/kibana/public/settings/sections/advanced/index.js b/src/plugins/kibana/public/settings/sections/advanced/index.js index 5506db53dc674..299f61ea76093 100644 --- a/src/plugins/kibana/public/settings/sections/advanced/index.js +++ b/src/plugins/kibana/public/settings/sections/advanced/index.js @@ -7,7 +7,7 @@ define(function (require) { require('routes') .when('/settings/advanced', { - template: require('text!plugins/kibana/settings/sections/advanced/index.html') + template: require('plugins/kibana/settings/sections/advanced/index.html') }); require('modules').get('apps/settings') diff --git a/src/plugins/kibana/public/settings/sections/indices/_create.js b/src/plugins/kibana/public/settings/sections/indices/_create.js index 9abab26a477f5..1dc03b83b311f 100644 --- a/src/plugins/kibana/public/settings/sections/indices/_create.js +++ b/src/plugins/kibana/public/settings/sections/indices/_create.js @@ -8,7 +8,7 @@ define(function (require) { require('routes') .when('/settings/indices/', { - template: require('text!plugins/kibana/settings/sections/indices/_create.html') + template: require('plugins/kibana/settings/sections/indices/_create.html') }); require('modules').get('apps/settings') diff --git a/src/plugins/kibana/public/settings/sections/indices/_edit.js b/src/plugins/kibana/public/settings/sections/indices/_edit.js index f2251110c130d..b0d7917dfae0a 100644 --- a/src/plugins/kibana/public/settings/sections/indices/_edit.js +++ b/src/plugins/kibana/public/settings/sections/indices/_edit.js @@ -6,7 +6,7 @@ define(function (require) { require('routes') .when('/settings/indices/:indexPatternId', { - template: require('text!plugins/kibana/settings/sections/indices/_edit.html'), + template: require('plugins/kibana/settings/sections/indices/_edit.html'), resolve: { indexPattern: function ($route, courier) { return courier.indexPatterns.get($route.current.params.indexPatternId) diff --git a/src/plugins/kibana/public/settings/sections/indices/_field_editor.js b/src/plugins/kibana/public/settings/sections/indices/_field_editor.js index 5c4835ea4ed15..aab9f3dea3d25 100644 --- a/src/plugins/kibana/public/settings/sections/indices/_field_editor.js +++ b/src/plugins/kibana/public/settings/sections/indices/_field_editor.js @@ -6,7 +6,7 @@ define(function (require) { .when('/settings/indices/:indexPatternId/field/:fieldName', { mode: 'edit' }) .when('/settings/indices/:indexPatternId/create-field/', { mode: 'create' }) .defaults(/settings\/indices\/[^\/]+\/(field|create-field)(\/|$)/, { - template: require('text!plugins/kibana/settings/sections/indices/_field_editor.html'), + template: require('plugins/kibana/settings/sections/indices/_field_editor.html'), resolve: { indexPattern: function ($route, courier) { return courier.indexPatterns.get($route.current.params.indexPatternId) diff --git a/src/plugins/kibana/public/settings/sections/indices/_index_header.js b/src/plugins/kibana/public/settings/sections/indices/_index_header.js index 6405ffef8bb21..4caf8947585cf 100644 --- a/src/plugins/kibana/public/settings/sections/indices/_index_header.js +++ b/src/plugins/kibana/public/settings/sections/indices/_index_header.js @@ -4,7 +4,7 @@ define(function (require) { .directive('kbnSettingsIndexHeader', function (config) { return { restrict: 'E', - template: require('text!plugins/kibana/settings/sections/indices/_index_header.html'), + template: require('plugins/kibana/settings/sections/indices/_index_header.html'), scope: { indexPattern: '=', setDefault: '&', diff --git a/src/plugins/kibana/public/settings/sections/indices/_indexed_fields.js b/src/plugins/kibana/public/settings/sections/indices/_indexed_fields.js index 1622eb7af43b2..ac24b5b4eff91 100644 --- a/src/plugins/kibana/public/settings/sections/indices/_indexed_fields.js +++ b/src/plugins/kibana/public/settings/sections/indices/_indexed_fields.js @@ -6,13 +6,13 @@ define(function (require) { .directive('indexedFields', function () { var yesTemplate = ''; var noTemplate = ''; - var nameHtml = require('text!plugins/kibana/settings/sections/indices/_field_name.html'); - var typeHtml = require('text!plugins/kibana/settings/sections/indices/_field_type.html'); - var controlsHtml = require('text!plugins/kibana/settings/sections/indices/_field_controls.html'); + var nameHtml = require('plugins/kibana/settings/sections/indices/_field_name.html'); + var typeHtml = require('plugins/kibana/settings/sections/indices/_field_type.html'); + var controlsHtml = require('plugins/kibana/settings/sections/indices/_field_controls.html'); return { restrict: 'E', - template: require('text!plugins/kibana/settings/sections/indices/_indexed_fields.html'), + template: require('plugins/kibana/settings/sections/indices/_indexed_fields.html'), scope: true, link: function ($scope) { var rowScopes = []; // track row scopes, so they can be destroyed as needed diff --git a/src/plugins/kibana/public/settings/sections/indices/_scripted_fields.js b/src/plugins/kibana/public/settings/sections/indices/_scripted_fields.js index 1c4f3185351cf..d3a8226653b6d 100644 --- a/src/plugins/kibana/public/settings/sections/indices/_scripted_fields.js +++ b/src/plugins/kibana/public/settings/sections/indices/_scripted_fields.js @@ -5,13 +5,13 @@ define(function (require) { require('modules').get('apps/settings') .directive('scriptedFields', function (kbnUrl, Notifier) { var rowScopes = []; // track row scopes, so they can be destroyed as needed - var controlsHtml = require('text!plugins/kibana/settings/sections/indices/_field_controls.html'); + var controlsHtml = require('plugins/kibana/settings/sections/indices/_field_controls.html'); var notify = new Notifier(); return { restrict: 'E', - template: require('text!plugins/kibana/settings/sections/indices/_scripted_fields.html'), + template: require('plugins/kibana/settings/sections/indices/_scripted_fields.html'), scope: true, link: function ($scope) { var dateScripts = require('plugins/kibana/settings/sections/indices/_date_scripts'); diff --git a/src/plugins/kibana/public/settings/sections/indices/index.js b/src/plugins/kibana/public/settings/sections/indices/index.js index 6190773afb6e0..4e4c6266dd631 100644 --- a/src/plugins/kibana/public/settings/sections/indices/index.js +++ b/src/plugins/kibana/public/settings/sections/indices/index.js @@ -21,7 +21,7 @@ define(function (require) { return { restrict: 'E', transclude: true, - template: require('text!plugins/kibana/settings/sections/indices/index.html'), + template: require('plugins/kibana/settings/sections/indices/index.html'), link: function ($scope) { $scope.edittingId = $route.current.params.indexPatternId; config.$bind($scope, 'defaultIndex'); diff --git a/src/plugins/kibana/public/settings/sections/objects/_objects.js b/src/plugins/kibana/public/settings/sections/objects/_objects.js index 48b0cd45b8949..7d9444e73c1b9 100644 --- a/src/plugins/kibana/public/settings/sections/objects/_objects.js +++ b/src/plugins/kibana/public/settings/sections/objects/_objects.js @@ -3,7 +3,7 @@ define(function (require) { var angular = require('angular'); var saveAs = require('file_saver'); var registry = require('plugins/kibana/settings/saved_object_registry'); - var objectIndexHTML = require('text!plugins/kibana/settings/sections/objects/_objects.html'); + var objectIndexHTML = require('plugins/kibana/settings/sections/objects/_objects.html'); require('directives/file_upload'); diff --git a/src/plugins/kibana/public/settings/sections/objects/_view.js b/src/plugins/kibana/public/settings/sections/objects/_view.js index 01e00a2446813..27999892822ad 100644 --- a/src/plugins/kibana/public/settings/sections/objects/_view.js +++ b/src/plugins/kibana/public/settings/sections/objects/_view.js @@ -3,7 +3,7 @@ define(function (require) { var angular = require('angular'); var rison = require('utils/rison'); var registry = require('plugins/kibana/settings/saved_object_registry'); - var objectViewHTML = require('text!plugins/kibana/settings/sections/objects/_view.html'); + var objectViewHTML = require('plugins/kibana/settings/sections/objects/_view.html'); require('routes') .when('/settings/objects/:service/:id', { diff --git a/src/plugins/kibana/public/settings/styles/main.less b/src/plugins/kibana/public/settings/styles/main.less index 77538d6b5a7a1..970ad76bb0f1b 100644 --- a/src/plugins/kibana/public/settings/styles/main.less +++ b/src/plugins/kibana/public/settings/styles/main.less @@ -1,8 +1,5 @@ -@import (reference) "lesshat.less"; -@import (reference) "ui-styles/_bootstrap.less"; -@import (reference) "ui-styles/theme/_theme.less"; -@import (reference) "ui-styles/_variables.less"; -@import (reference) "ui-styles/_mixins.less"; +@import (reference) "~ui-styles/theme"; +@import (reference) "~ui-styles/variables"; kibana-settings-app, kbn-settings-indices, @@ -144,15 +141,15 @@ kbn-settings-objects-view { } .index-pattern-name { - .display(flex); - .align-items(center); + display: flex; + align-items: center; .title { - .flex(1, 1, auto); + flex: 1 1 auto; } .controls { - .flex(4, 0, auto); + flex: 4 0 auto; } } } diff --git a/src/plugins/kibana/public/visualize/editor/agg.js b/src/plugins/kibana/public/visualize/editor/agg.js index aa5b2136ce467..d190e99bcd3b1 100644 --- a/src/plugins/kibana/public/visualize/editor/agg.js +++ b/src/plugins/kibana/public/visualize/editor/agg.js @@ -8,7 +8,7 @@ define(function (require) { var _ = require('lodash'); var $ = require('jquery'); var aggTypes = Private(require('components/agg_types/index')); - var advancedToggleHtml = require('text!plugins/kibana/visualize/editor/advanced_toggle.html'); + var advancedToggleHtml = require('plugins/kibana/visualize/editor/advanced_toggle.html'); var notify = new Notifier({ location: 'visAggGroup' @@ -16,7 +16,7 @@ define(function (require) { return { restrict: 'A', - template: require('text!plugins/kibana/visualize/editor/agg.html'), + template: require('plugins/kibana/visualize/editor/agg.html'), require: 'form', link: function ($scope, $el, attrs, kbnForm) { $scope.$bind('outputAgg', 'outputVis.aggs.byId[agg.id]', $scope); diff --git a/src/plugins/kibana/public/visualize/editor/agg_add.js b/src/plugins/kibana/public/visualize/editor/agg_add.js index 39c8e82f2807b..c8fda3ba28099 100644 --- a/src/plugins/kibana/public/visualize/editor/agg_add.js +++ b/src/plugins/kibana/public/visualize/editor/agg_add.js @@ -6,7 +6,7 @@ define(function (require) { return { restrict: 'E', - template: require('text!plugins/kibana/visualize/editor/agg_add.html'), + template: require('plugins/kibana/visualize/editor/agg_add.html'), controllerAs: 'add', controller: function ($scope) { var self = this; diff --git a/src/plugins/kibana/public/visualize/editor/agg_group.js b/src/plugins/kibana/public/visualize/editor/agg_group.js index f3f402ecf03f5..7610d2d1dcae1 100644 --- a/src/plugins/kibana/public/visualize/editor/agg_group.js +++ b/src/plugins/kibana/public/visualize/editor/agg_group.js @@ -8,7 +8,7 @@ define(function (require) { return { restrict: 'E', - template: require('text!plugins/kibana/visualize/editor/agg_group.html'), + template: require('plugins/kibana/visualize/editor/agg_group.html'), scope: true, link: function ($scope, $el, attr) { $scope.groupName = attr.groupName; diff --git a/src/plugins/kibana/public/visualize/editor/agg_params.js b/src/plugins/kibana/public/visualize/editor/agg_params.js index e0fa853f082e7..1ec811d0f93a4 100644 --- a/src/plugins/kibana/public/visualize/editor/agg_params.js +++ b/src/plugins/kibana/public/visualize/editor/agg_params.js @@ -7,8 +7,8 @@ define(function (require) { var _ = require('lodash'); var $ = require('jquery'); var aggTypes = Private(require('components/agg_types/index')); - var aggSelectHtml = require('text!plugins/kibana/visualize/editor/agg_select.html'); - var advancedToggleHtml = require('text!plugins/kibana/visualize/editor/advanced_toggle.html'); + var aggSelectHtml = require('plugins/kibana/visualize/editor/agg_select.html'); + var advancedToggleHtml = require('plugins/kibana/visualize/editor/advanced_toggle.html'); require('filters/match_any'); require('plugins/kibana/visualize/editor/agg_param'); @@ -18,7 +18,7 @@ define(function (require) { return { restrict: 'E', - template: require('text!plugins/kibana/visualize/editor/agg_params.html'), + template: require('plugins/kibana/visualize/editor/agg_params.html'), scope: true, link: function ($scope, $el, attr) { $scope.$bind('agg', attr.agg); diff --git a/src/plugins/kibana/public/visualize/editor/editor.js b/src/plugins/kibana/public/visualize/editor/editor.js index 9cf246b9736f8..ea1ea308d38a2 100644 --- a/src/plugins/kibana/public/visualize/editor/editor.js +++ b/src/plugins/kibana/public/visualize/editor/editor.js @@ -9,7 +9,7 @@ define(function (require) { require('routes') .when('/visualize/create', { - template: require('text!plugins/kibana/visualize/editor/editor.html'), + template: require('plugins/kibana/visualize/editor/editor.html'), resolve: { savedVis: function (savedVisualizations, courier, $route, Private) { var visTypes = Private(require('registry/vis_types')); @@ -26,7 +26,7 @@ define(function (require) { } }) .when('/visualize/edit/:id', { - template: require('text!plugins/kibana/visualize/editor/editor.html'), + template: require('plugins/kibana/visualize/editor/editor.html'), resolve: { savedVis: function (savedVisualizations, courier, $route) { return savedVisualizations.get($route.current.params.id) @@ -74,9 +74,9 @@ define(function (require) { // config panel templates var configTemplate = new ConfigTemplate({ - save: require('text!plugins/kibana/visualize/editor/panels/save.html'), - load: require('text!plugins/kibana/visualize/editor/panels/load.html'), - share: require('text!plugins/kibana/visualize/editor/panels/share.html'), + save: require('plugins/kibana/visualize/editor/panels/save.html'), + load: require('plugins/kibana/visualize/editor/panels/load.html'), + share: require('plugins/kibana/visualize/editor/panels/share.html'), }); if (savedVis.id) { diff --git a/src/plugins/kibana/public/visualize/editor/sidebar.js b/src/plugins/kibana/public/visualize/editor/sidebar.js index bd8813807536d..03d9f06b1f6c3 100644 --- a/src/plugins/kibana/public/visualize/editor/sidebar.js +++ b/src/plugins/kibana/public/visualize/editor/sidebar.js @@ -9,7 +9,7 @@ define(function (require) { return { restrict: 'E', - template: require('text!plugins/kibana/visualize/editor/sidebar.html'), + template: require('plugins/kibana/visualize/editor/sidebar.html'), scope: true, controllerAs: 'sidebar', controller: function ($scope) { diff --git a/src/plugins/kibana/public/visualize/editor/styles/.editor.less b/src/plugins/kibana/public/visualize/editor/styles/.editor.less index d0e0eabf3f8c8..1b5210da31553 100644 --- a/src/plugins/kibana/public/visualize/editor/styles/.editor.less +++ b/src/plugins/kibana/public/visualize/editor/styles/.editor.less @@ -46,7 +46,7 @@ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; - .user-select(none); + user-select: none; } a { @@ -60,7 +60,7 @@ // overrides for tablet and desktop @media (min-width: @screen-md-min) { - .flex-direction(row); + flex-direction: row; } } @@ -71,7 +71,7 @@ // overrided for tablet and desktop @media (min-width: @screen-md-min) { - .flex-basis(@vis-editor-sidebar-basis); + flex-basis: @vis-editor-sidebar-basis; min-width: @vis-editor-sidebar-min-width; max-width: @vis-editor-sidebar-min-width; // margin-bottom: (@input-height-base * 2) - 3; @@ -104,7 +104,7 @@ } > .vis-edit-sidebar-buttons { - .flex(0, 0, auto) + flex: 0 0 auto; } label { @@ -133,7 +133,7 @@ } label { - .flex(2 0 0); + flex: 2 0 0; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; @@ -153,8 +153,8 @@ } nesting-indicator { - .display(flex); - .flex(0 0 auto); + display: flex; + flex: 0 0 auto; > span { width: @vis-editor-nesting-width; @@ -169,7 +169,7 @@ // wraps the .vis-editor-agg and nesting-indicator ^^ &-wrapper { - .display(flex); + display: flex; } &-group { @@ -178,23 +178,23 @@ } &-header { - .display(flex); - .align-items(center); - .flex(1, 0, auto); + display: flex; + align-items: center; + flex: 1 0 auto; margin-bottom: @vis-editor-agg-editor-spacing; &-toggle { - .flex(0, 0, auto); + flex: 0 0 auto; margin-right: @vis-editor-agg-editor-spacing; } &-subagg-icon { - .flex(0, 1, auto); + flex: 0 1 auto; padding-right: @padding-base-vertical; } &-title { - .flex(1, 1, auto); + flex: 1 1 auto; .ellipsis(); font-weight: bold; } @@ -210,7 +210,7 @@ } &-controls { - .flex(0, 0, auto); + flex: 0 0 auto; } } @@ -248,10 +248,10 @@ } &-form-row { - .display(flex); + display: flex; > * { - .flex(1, 1, auto); + flex: 1 1 auto; margin-right: @vis-editor-agg-editor-spacing; &:last-child { @@ -260,18 +260,18 @@ } > .btn { - .align-self(center); + align-self: center; } } &-form-value { - .align-self(center); + align-self: center; margin: 0 0 0 @vis-editor-agg-editor-spacing; font-size: 1.2em; } &-wide-btn { - .border-radius(0); + border-radius: 0; border-top: 2px solid @gray-lighter; &-add { @@ -319,20 +319,20 @@ } &-canvas { - .flex(1, 0, @screen-md-min - @vis-editor-sidebar-basis); - .display(flex); - .flex-direction(column); + flex: 1 0 (@screen-md-min - @vis-editor-sidebar-basis); + display: flex; + flex-direction: column; overflow: auto; &.embedded { - .flex-shrink(1); - .flex-basis(100%); + flex-shrink: 1; + flex-basis: 100%; } // overrided for tablet and desktop @media (min-width: @screen-md-min) { - .flex-shrink(1); - .flex-basis(100%); + flex-shrink: 1; + flex-basis: 100%; } &-title { @@ -342,11 +342,11 @@ visualize { .flex-parent(); - .flex(1, 1, 100%); + flex: 1 1 100%; } .visualize-chart { - .flex(1, 1, 100%); + flex: 1 1 100%; position: relative; } } diff --git a/src/plugins/kibana/public/visualize/editor/vis_options.js b/src/plugins/kibana/public/visualize/editor/vis_options.js index ecd73a380a2fb..c86375cb89a37 100644 --- a/src/plugins/kibana/public/visualize/editor/vis_options.js +++ b/src/plugins/kibana/public/visualize/editor/vis_options.js @@ -7,7 +7,7 @@ define(function (require) { .directive('visEditorVisOptions', function (Private, $timeout, $compile) { return { restrict: 'E', - template: require('text!plugins/kibana/visualize/editor/vis_options.html'), + template: require('plugins/kibana/visualize/editor/vis_options.html'), scope: { vis: '=', }, diff --git a/src/plugins/kibana/public/visualize/index.js b/src/plugins/kibana/public/visualize/index.js index 06c2de132888d..313b49eb10c04 100644 --- a/src/plugins/kibana/public/visualize/index.js +++ b/src/plugins/kibana/public/visualize/index.js @@ -1,5 +1,5 @@ define(function (require) { - require('css!plugins/kibana/visualize/styles/main.css'); + require('plugins/kibana/visualize/styles/main.less'); require('plugins/kibana/visualize/editor/editor'); require('plugins/kibana/visualize/wizard/wizard'); diff --git a/src/plugins/kibana/public/visualize/styles/main.less b/src/plugins/kibana/public/visualize/styles/main.less index 9cc527a02cc4e..7dfb3751cfd63 100644 --- a/src/plugins/kibana/public/visualize/styles/main.less +++ b/src/plugins/kibana/public/visualize/styles/main.less @@ -1,4 +1,6 @@ -@import (reference) "ui-styles/main.less"; +@import (reference) "~ui-styles/variables"; +@import (reference) "~bootstrap/less/list-group"; +@import (reference) "~ui-styles/list-group-menu"; .vis-wizard { h1 { @@ -12,30 +14,30 @@ // overrided for tablet and desktop @media (min-width: @screen-md-min) { - .display(flex); - .align-items(flex-start); + display: flex; + align-items: flex-start; } &-heading { - .flex(0 0 200px); - .display(flex); - .align-items(center); + flex: 0 0 200px; + display: flex; + align-items: center; font-size: 1.2em; .fa { - .flex(0 0 auto); + flex: 0 0 auto; margin-right: @padding-base-horizontal; font-size: 1.5em; text-align: center; } h4 { - .flex(1 0 auto); + flex: 1 0 auto; } } &-description { - .flex(1 1 auto); + flex: 1 1 auto; color: @brand-primary; } } diff --git a/src/plugins/kibana/public/visualize/wizard/wizard.js b/src/plugins/kibana/public/visualize/wizard/wizard.js index cf2b71a0bd752..5d6af62b1d3d4 100644 --- a/src/plugins/kibana/public/visualize/wizard/wizard.js +++ b/src/plugins/kibana/public/visualize/wizard/wizard.js @@ -16,7 +16,7 @@ define(function (require) { /** Wizard Step 1 /********/ routes.when('/visualize/step/1', { - template: templateStep(1, require('text!plugins/kibana/visualize/wizard/step_1.html')) + template: templateStep(1, require('plugins/kibana/visualize/wizard/step_1.html')) }); module.controller('VisualizeWizardStep1', function ($scope, $route, $location, timefilter, Private) { @@ -33,7 +33,7 @@ define(function (require) { /** Wizard Step 2 /********/ routes.when('/visualize/step/2', { - template: templateStep(2, require('text!plugins/kibana/visualize/wizard/step_2.html')), + template: templateStep(2, require('plugins/kibana/visualize/wizard/step_2.html')), resolve: { indexPatternIds: function (courier) { return courier.indexPatterns.getIds(); diff --git a/src/plugins/markdown_vis/index.js b/src/plugins/markdown_vis/index.js index 7d8d7f836f755..85c44ec5b2b40 100644 --- a/src/plugins/markdown_vis/index.js +++ b/src/plugins/markdown_vis/index.js @@ -2,9 +2,9 @@ module.exports = function (kibana) { return new kibana.Plugin({ - exports: { + uiExports: { visTypes: [ - 'plugins/markdown_vis/index' + 'plugins/markdown_vis/markdown_vis' ] } diff --git a/src/plugins/markdown_vis/public/markdown_vis.js b/src/plugins/markdown_vis/public/markdown_vis.js index 97d18ecc22da9..ee4765e052778 100644 --- a/src/plugins/markdown_vis/public/markdown_vis.js +++ b/src/plugins/markdown_vis/public/markdown_vis.js @@ -1,6 +1,6 @@ define(function (require) { // we need to load the css ourselves - require('css!plugins/markdown_vis/markdown_vis.css'); + require('plugins/markdown_vis/markdown_vis.less'); // we also need to load the controller and used by the template require('plugins/markdown_vis/markdown_vis_controller'); @@ -18,9 +18,9 @@ define(function (require) { title: 'Markdown widget', icon: 'fa-code', description: 'Useful for displaying explanations or instructions for dashboards.', - template: require('text!plugins/markdown_vis/markdown_vis.html'), + template: require('plugins/markdown_vis/markdown_vis.html'), params: { - editor: require('text!plugins/markdown_vis/markdown_vis_params.html') + editor: require('plugins/markdown_vis/markdown_vis_params.html') }, requiresSearch: false }); diff --git a/src/plugins/markdown_vis/public/markdown_vis.less b/src/plugins/markdown_vis/public/markdown_vis.less index e0013f15a7621..35084781591e1 100644 --- a/src/plugins/markdown_vis/public/markdown_vis.less +++ b/src/plugins/markdown_vis/public/markdown_vis.less @@ -1,5 +1,4 @@ -@import (reference) "ui-styles/_mixins.less"; -@import (reference) "lesshat.less"; +@import (reference) "~ui-styles/mixins.less"; .markdown-vis { padding: 1em; @@ -12,15 +11,15 @@ .visualization-options { .flex-parent(); - .flex(1, 1, auto); + flex: 1 1 auto; } .markdown-vis-options { .flex-parent(); - .flex(1, 1, auto); + flex: 1 1 auto; textarea { - .flex(1, 1, auto); + flex: 1 1 auto; resize: none; } diff --git a/src/plugins/metric_vis/index.js b/src/plugins/metric_vis/index.js index 85b03da700ddb..129211697e149 100644 --- a/src/plugins/metric_vis/index.js +++ b/src/plugins/metric_vis/index.js @@ -2,9 +2,9 @@ module.exports = function (kibana) { return new kibana.Plugin({ - exports: { + uiExports: { visTypes: [ - 'plugins/metric_vis/index' + 'plugins/metric_vis/metric_vis' ] } diff --git a/src/plugins/metric_vis/public/metric_vis.html b/src/plugins/metric_vis/public/metric_vis.html index cb8e88d2c5feb..ef30d0404d8c1 100644 --- a/src/plugins/metric_vis/public/metric_vis.html +++ b/src/plugins/metric_vis/public/metric_vis.html @@ -3,4 +3,4 @@
{{metric.value}}
{{metric.label}}
- \ No newline at end of file + diff --git a/src/plugins/metric_vis/public/metric_vis.js b/src/plugins/metric_vis/public/metric_vis.js index 2e304635ab896..c3906cf54b378 100644 --- a/src/plugins/metric_vis/public/metric_vis.js +++ b/src/plugins/metric_vis/public/metric_vis.js @@ -1,6 +1,6 @@ define(function (require) { // we need to load the css ourselves - require('css!plugins/metric_vis/metric_vis.css'); + require('plugins/metric_vis/metric_vis.less'); // we also need to load the controller and used by the template require('plugins/metric_vis/metric_vis_controller'); @@ -20,12 +20,12 @@ define(function (require) { description: 'One big number for all of your one big number needs. Perfect for show ' + 'a count of hits, or the exact average a numeric field.', icon: 'fa-calculator', - template: require('text!plugins/metric_vis/metric_vis.html'), + template: require('plugins/metric_vis/metric_vis.html'), params: { defaults: { fontSize: 60 }, - editor: require('text!plugins/metric_vis/metric_vis_params.html') + editor: require('plugins/metric_vis/metric_vis_params.html') }, schemas: new Schemas([ { diff --git a/src/plugins/metric_vis/public/metric_vis.less b/src/plugins/metric_vis/public/metric_vis.less index de252e5b451dd..791d081d23405 100644 --- a/src/plugins/metric_vis/public/metric_vis.less +++ b/src/plugins/metric_vis/public/metric_vis.less @@ -1,14 +1,13 @@ -@import (reference) "ui-styles/_mixins.less"; -@import (reference) "lesshat.less"; +@import (reference) "~ui-styles/mixins.less"; .metric-vis { width: 100%; - .display(flex); - .flex-direction(row); - .flex-wrap(wrap); - .justify-content(space-around); - .align-items(center); - .align-content(space-around); + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-around; + align-items: center; + align-content: space-around; .metric-value { font-weight: bold; @@ -18,6 +17,5 @@ .metric-container { text-align: center; padding: 1em; - .flex(); } } diff --git a/src/plugins/metric_vis/public/metric_vis_controller.js b/src/plugins/metric_vis/public/metric_vis_controller.js index 6f764dcb0a268..179f6e02f6607 100644 --- a/src/plugins/metric_vis/public/metric_vis_controller.js +++ b/src/plugins/metric_vis/public/metric_vis_controller.js @@ -27,4 +27,4 @@ define(function (require) { } }); }); -}); \ No newline at end of file +}); diff --git a/src/plugins/sense/index.js b/src/plugins/sense/index.js index 748eb81e895ec..1f4e4e9d43112 100644 --- a/src/plugins/sense/index.js +++ b/src/plugins/sense/index.js @@ -1,6 +1,6 @@ module.exports = function (kibana) { return new kibana.Plugin({ - exports: { + uiExports: { app: { title: 'Sense', description: 'like cURL, but for elasticsearch and helpfull', diff --git a/src/plugins/table_vis/index.js b/src/plugins/table_vis/index.js index 0f7696602514b..438e8cee479cf 100644 --- a/src/plugins/table_vis/index.js +++ b/src/plugins/table_vis/index.js @@ -1,9 +1,9 @@ module.exports = function (kibana) { return new kibana.Plugin({ - exports: { + uiExports: { visTypes: [ - 'plugins/table_vis/index' + 'plugins/table_vis/table_vis' ] } }); diff --git a/src/plugins/table_vis/public/table_vis.js b/src/plugins/table_vis/public/table_vis.js index c8f061134510a..273c0d7277ef3 100644 --- a/src/plugins/table_vis/public/table_vis.js +++ b/src/plugins/table_vis/public/table_vis.js @@ -1,6 +1,6 @@ define(function (require) { // we need to load the css ourselves - require('css!plugins/table_vis/table_vis.css'); + require('plugins/table_vis/table_vis.less'); // we also need to load the controller and used by the template require('plugins/table_vis/table_vis_controller'); @@ -31,7 +31,7 @@ define(function (require) { icon: 'fa-table', description: 'The data table provides a detailed breakdown, in tabular format, of the results of a composed ' + 'aggregation. Tip, a data table is available from many other charts by clicking grey bar at the bottom of the chart.', - template: require('text!plugins/table_vis/table_vis.html'), + template: require('plugins/table_vis/table_vis.html'), params: { defaults: { perPage: 10, diff --git a/src/plugins/table_vis/public/table_vis.less b/src/plugins/table_vis/public/table_vis.less index ac46b81a1cc87..c8effbca2028d 100644 --- a/src/plugins/table_vis/public/table_vis.less +++ b/src/plugins/table_vis/public/table_vis.less @@ -1,15 +1,13 @@ -@import (reference) "lesshat.less"; - .table-vis { - .display(flex); - .flex-direction(column); - .flex(1 0 100%); + display: flex; + flex-direction: column; + flex: 1 0 100%; &-error { - .display(flex); - .flex-direction(column); - .justify-content(center); - .flex(1 0 100%); + display: flex; + flex-direction: column; + justify-content: center; + flex: 1 0 100%; text-align: center; } @@ -20,11 +18,11 @@ } .pagination-other-pages { - .justify-content(flex-end); + justify-content: flex-end; } .pagination-size { display: none; } } -} \ No newline at end of file +} diff --git a/src/plugins/table_vis/public/table_vis_params.js b/src/plugins/table_vis/public/table_vis_params.js index d8f564682e16a..475ddbe1de12c 100644 --- a/src/plugins/table_vis/public/table_vis_params.js +++ b/src/plugins/table_vis/public/table_vis_params.js @@ -5,7 +5,7 @@ define(function (require) { .directive('tableVisParams', function () { return { restrict: 'E', - template: require('text!plugins/table_vis/table_vis_params.html'), + template: require('plugins/table_vis/table_vis_params.html'), link: function ($scope) { $scope.$watchMulti([ 'vis.params.showPartialRows', diff --git a/src/plugins/vis_debug_spy/index.js b/src/plugins/vis_debug_spy/index.js index e118df482ba1e..ba89ac51638a9 100644 --- a/src/plugins/vis_debug_spy/index.js +++ b/src/plugins/vis_debug_spy/index.js @@ -1,8 +1,8 @@ module.exports = function (kibana) { return new kibana.Plugin({ - exports: { + uiExports: { spyModes: [ - 'plugins/vis_debug_spy/index' + 'plugins/vis_debug_spy/vis_debug_spy' ] } }); diff --git a/src/plugins/vis_debug_spy/public/vis_debug_spy.js b/src/plugins/vis_debug_spy/public/vis_debug_spy.js index 20d5860da4b5b..d5d3ef4acf555 100644 --- a/src/plugins/vis_debug_spy/public/vis_debug_spy.js +++ b/src/plugins/vis_debug_spy/public/vis_debug_spy.js @@ -8,7 +8,7 @@ define(function (require) { return { name: 'debug', display: 'Debug', - template: require('text!plugins/vis_debug_spy/vis_debug.html'), + template: require('plugins/vis_debug_spy/vis_debug_spy.html'), order: 5, link: function ($scope, $el) { $scope.$watch('vis.getState() | json', function (json) { diff --git a/src/server/KbnServer.js b/src/server/KbnServer.js index 8ce0ae44ba804..7a456d4a98314 100644 --- a/src/server/KbnServer.js +++ b/src/server/KbnServer.js @@ -15,13 +15,14 @@ function KbnServer(settings) { this.server = new Hapi.Server(); + // mixin server modules this.ready = _.constant(this.mixin( require('./config'), require('./logging'), require('./http'), - require('./ui'), - require('./status'), - require('./plugins'), + require('./ui'), // sets this.uiExports + require('./status'), // sets this.status + require('./plugins'), // sets this.plugins require('./optimize') )); } diff --git a/src/server/config/config.js b/src/server/config/config.js index cab358cbb69d3..154b0e6fcb295 100644 --- a/src/server/config/config.js +++ b/src/server/config/config.js @@ -6,7 +6,9 @@ var override = require('./override'); function Config(schema, defaults) { this.schema = schema || Joi.object({}).default(); this.config = {}; - this.set(defaults || {}); + this.set(defaults); + + console.log(this.get('env')); } Config.prototype.extendSchema = function (key, schema) { @@ -19,24 +21,48 @@ Config.prototype.extendSchema = function (key, schema) { }; Config.prototype.reset = function (obj) { - var results = Joi.validate(obj, this.schema); - if (results.error) { - throw results.error; - } - this.config = results.value; + this._commit(obj); }; Config.prototype.set = function (key, value) { + // clone and modify the config var config = _.cloneDeep(this.config); if (_.isPlainObject(key)) { config = override(config, key); } else { _.set(config, key, value); } - var results = Joi.validate(config, this.schema); + + // attempt to validate the config value + this._commit(config); +}; + +Config.prototype._commit = function (newConfig) { + // resolve the current environment + var env = newConfig.env; + delete newConfig.env; + if (_.isObject(env)) env = env.name; + if (!env) env = process.env.NODE_ENV || 'production'; + + // pass the environment as context so that it can be refed in config + var context = { + env: env, + prod: env === 'production', + dev: env === 'development', + }; + + if (!context.dev && !context.prod) { + throw new TypeError(`Unexpected environment "${env}", expected one of "development" or "production"`); + } + + var results = Joi.validate(newConfig, this.schema, { + context: context + }); + if (results.error) { throw results.error; } + this.config = results.value; }; diff --git a/src/server/config/schema.js b/src/server/config/schema.js index 848a171a2e001..26cc6aadb8ba6 100644 --- a/src/server/config/schema.js +++ b/src/server/config/schema.js @@ -2,9 +2,30 @@ var Joi = require('joi'); var fs = require('fs'); var path = require('path'); var package = require('../utils/closestPackageJson').getSync(); -var prod = process.env.NODE_ENV === 'production'; +var fromRoot = require('../utils/fromRoot'); + +var env = (function () { + switch (process.env.NODE_ENV) { + case 'production': + case 'prod': + case undefined: + return 'production'; + case 'development': + case 'dev': + return 'development'; + default: + throw new TypeError(`Unexpected NODE_ENV "${process.env.NODE_ENV}", expected production or development.`); + } +}()); +var dev = env === 'development'; +var prod = env === 'production'; module.exports = Joi.object({ + env: Joi.object({ + name: Joi.string().default(Joi.ref('$env')), + dev: Joi.boolean().default(Joi.ref('$dev')), + prod: Joi.boolean().default(Joi.ref('$prod')) + }).default(), kibana: Joi.object({ package: Joi.any().default(package), @@ -56,11 +77,17 @@ module.exports = Joi.object({ }).default() }).default(), - plugins: { + plugins: Joi.object({ paths: Joi.array().items(Joi.string()).default([]), - scanDirs: Joi.array().items(Joi.string()).default([]), - optimize: Joi.boolean().default(prod) - } + scanDirs: Joi.array().items(Joi.string()).default([]) + }), + + optimize: Joi.object({ + bundleDir: Joi.string().default(fromRoot('src/server/optimize/bundles')), + viewCaching: Joi.boolean().default(Joi.ref('$prod')), + watch: Joi.boolean().default(Joi.ref('$dev')), + sourceMaps: Joi.boolean().default(Joi.ref('$dev')) + }) }).default(); diff --git a/src/server/optimize/DirectoryNameAsDefaultFile.js b/src/server/optimize/DirectoryNameAsDefaultFile.js new file mode 100644 index 0000000000000..fa3e1d5b8ff8e --- /dev/null +++ b/src/server/optimize/DirectoryNameAsDefaultFile.js @@ -0,0 +1,41 @@ +/***** + * Modified clone of https://github.com/webpack/enhanced-resolve/blob/3b88905ad3cb6392f48f7bc57d351891774fd93b/lib/DirectoryDefaultFilePlugin.js + ***** + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +var _ = require('lodash'); +var basename = require('path').basename; + +function DirectoryDefaultFilePlugin(files) {} +module.exports = DirectoryDefaultFilePlugin; + +DirectoryDefaultFilePlugin.prototype.apply = function (resolver) { + resolver.plugin('directory', function (request, done) { + handle(request).then(function (result) { + done(null, result); + }, done); + }); + + var handle = _.memoize(function (req) { + return new Promise(function (resolve, reject) { + var directory = resolver.join(req.path, req.request); + resolver.fileSystem.stat(directory, function (err, stat) { + if (err || !stat) return resolve(); + if (!stat.isDirectory()) return resolve(); + + resolver.doResolve('file', { + path: req.path, + query: req.query, + request: resolver.join(directory, basename(directory)) + }, function (err, result) { + return resolve(result || undefined); + }); + }); + }); + }, function (req) { + return `${req.path}!${req.request}!${req.query}`; + }); +}; diff --git a/src/server/optimize/Optimizer.js b/src/server/optimize/Optimizer.js new file mode 100644 index 0000000000000..3e41a1aede3d8 --- /dev/null +++ b/src/server/optimize/Optimizer.js @@ -0,0 +1,108 @@ +'use strict'; + +var EventEmitter = require('events').EventEmitter; +var inherits = require('util').inherits; +var _ = require('lodash'); +var join = require('path').join; +var write = require('fs').writeFileSync; +var webpack = require('webpack'); + +var assets = require('../ui/assets'); +var fromRoot = require('../utils/fromRoot'); +var OptmzBundles = require('./OptmzBundles'); +var OptmzUiModules = require('./OptmzUiModules'); +var DirectoryNameAsDefaultFile = require('./DirectoryNameAsDefaultFile'); + +class Optimizer extends EventEmitter { + constructor(opts) { + super(); + + this.watch = opts.watch || false; + this.sourceMaps = opts.sourceMaps || false; + this.modules = new OptmzUiModules(opts.plugins); + this.bundles = new OptmzBundles(opts.bundleDir, opts.apps); + } + + init() { + return this.bundles.init(this.watch).then(_.bindKey(this, 'startCompiler')); + } + + startCompiler() { + var self = this; + var modules = self.modules; + var bundles = self.bundles; + + var compiler = webpack({ + entry: bundles.getEntriesToCompile(), + + devtool: this.sourceMaps ? 'inline-source-map' : false, + + output: { + path: this.bundles.dir, + publicPath: '/bundles/', + filename: '[name].js' + }, + + plugins: [ + new webpack.NoErrorsPlugin(), + new webpack.optimize.DedupePlugin(), + new webpack.optimize.OccurenceOrderPlugin(), + new webpack.ResolverPlugin([ + new DirectoryNameAsDefaultFile() + ]) + ], + + module: { + noParse: modules.noParse, + loaders: modules.loaders + }, + + resolve: { + extensions: ['', '.js', '.less'], + packageMains: [], + modulesDirectories: [ fromRoot('node_modules'), assets.root ], + root: fromRoot(), + alias: modules.aliases + } + }); + + compiler.plugin('watch-run', function (compiler, cb) { + self.emit('watch-run'); + cb(); + }); + + compiler.plugin('done', function (stats) { + var errCount = _.size(stats.compilation.errors); + + if (errCount) { + console.log(stats.toString({ colors: true })); + self.emit('error', new Error('Failed to compile bundle')); + return; + } + + self.emit('done'); + }); + + compiler.plugin('failed', onFail); + function onFail(err) { + self.emit('error', err); + } + + process.nextTick(function () { + if (self.watch) { + compiler.watch({ + aggregateTimeout: 300 + }, _.noop); + } else { + self.emit('build-start'); + compiler.run(function (err) { + err && onFail(err); + }); + } + }); + + return compiler; + } +} + +module.exports = Optimizer; diff --git a/src/server/optimize/OptmzAppEntry.js.tmpl b/src/server/optimize/OptmzAppEntry.js.tmpl new file mode 100644 index 0000000000000..14321e548ccde --- /dev/null +++ b/src/server/optimize/OptmzAppEntry.js.tmpl @@ -0,0 +1,20 @@ +/** + * Optimized application entry file + * + * This is programatically created and updated, do not modify + * + * built using: Kibana <%= kbnVersion %> + * includes code from: +<% + deps.sort().forEach(function (plugin) { + print(` * - ${plugin}\n`); + }) +%> * + */ + +require('chrome'); +<% +modules.require.forEach(function (id) { + if (id !== 'chrome') print(`require('${id}');\n`); +}); +%>require('chrome').bootstrap(<%= JSON.stringify(modules.angular) %>); diff --git a/src/server/optimize/OptmzBundles.js b/src/server/optimize/OptmzBundles.js new file mode 100644 index 0000000000000..50a69bb622ebb --- /dev/null +++ b/src/server/optimize/OptmzBundles.js @@ -0,0 +1,141 @@ +'use strict'; + +let _ = require('lodash'); +let join = require('path').join; +let resolve = require('bluebird').resolve; +let promify = require('bluebird').promisify; +let rimraf = promify(require('rimraf')); +let mkdirp = promify(require('mkdirp')); + +let stat = promify(require('fs').stat); +let read = promify(require('fs').readFile); +let write = promify(require('fs').writeFile); +let unlink = promify(require('fs').unlink); +let readdir = promify(require('fs').readdir); +let readSync = require('fs').readFileSync; + +let appEntryTmpl = _.template(readSync(join(__dirname, 'OptmzAppEntry.js.tmpl'))); +let kbnVersion = require('../utils/closestPackageJson').getSync().version; + +class OptmzBundles { + constructor(dir, apps) { + this.dir = dir; + if (!_.isString(this.dir)) { + throw new TypeError('Optimizer requires a working directory'); + } + + this.entries = _.map(apps, function (app) { + let entry = { + id: app.id, + app: app, + modules: app.getModules(), + deps: app.relatedPlugins(), + path: join(dir, app.id + '.entry.js'), + bundlePath: join(dir, app.id + '.js') + }; + + entry.content = appEntryTmpl(_.defaults({ kbnVersion: kbnVersion }, entry)); + + return entry; + }); + + _.bindAll(this, [ + 'init', + 'cleanBundles', + 'ensureBundleDir', + 'syncBundleDir', + 'syncBundle', + 'clean', + 'dirContents', + 'getUnkownBundleFiles', + 'getEntriesToCompile' + ]); + } + + init(fresh) { + return resolve() + .then(fresh && this.cleanBundles) + .then(this.ensureBundleDir) + .then(this.syncBundleDir); + } + + cleanBundles() { + return rimraf(this.dir); + } + + ensureBundleDir() { + return mkdirp(this.dir); + } + + syncBundleDir() { + let ensure = this.entries.map(this.syncBundle); + let collectGarbage = this.getUnkownBundleFiles().then(this.clean); + return resolve(ensure.concat(collectGarbage)).all().then(_.noop); + } + + syncBundle(entry) { + let clean = this.clean; + + return resolve([ + read(entry.path), + stat(entry.bundlePath) + ]) + .settle() + .spread(function (readEntry, statBundle) { + if (readEntry.isFulfilled() && statBundle.isFulfilled()) { + entry.exists = (readEntry.value() !== entry.content); + } else { + entry.exists = false; + } + + if (entry.exists) return; + + return clean([entry.path, entry.bundlePath]) + .then(function () { + return write(entry.path, entry.content, { encoding: 'utf8' }); + }); + }); + } + + // unlinks files, swallows missing file errors + clean(paths) { + return resolve( + _.flatten([paths]).map(function (path) { + return rimraf(path); + }) + ) + .settle() + .then(_.noop); + } + + dirContents() { + let dir = this.dir; + + return readdir(dir).map(function (name) { + // skip '.', '..', and dot-prefixed files + if (name.charAt(0) === '.') return false; + return join(dir, name); + }) + .then(_.compact); + } + + getUnkownBundleFiles() { + let entriesByPath = _.indexBy(this.entries, 'path'); + let entriesByBundlePath = _.indexBy(this.entries, 'bundlePath'); + + return this.dirContents() + .map(function (path) { + return entriesByPath[path] || entriesByBundlePath[path]; + }) + .then(_.compact) + .then(this.clean); + } + + getEntriesToCompile() { + return _.transform(this.entries, function (map, entry) { + if (!entry.exists) map[entry.id] = entry.path; + }, {}); + } +} + +module.exports = OptmzBundles; diff --git a/src/server/optimize/OptmzUiModules.js b/src/server/optimize/OptmzUiModules.js new file mode 100644 index 0000000000000..70fac53e9db7f --- /dev/null +++ b/src/server/optimize/OptmzUiModules.js @@ -0,0 +1,96 @@ +var _ = require('lodash'); +var join = require('path').join; + +var assets = require('../ui/assets'); +var asRegExp = _.flow( + _.escapeRegExp, + function (path) { + return path + '(?:\\.js)?$'; + }, + RegExp +); + +function OptmzUiExports(plugins) { + // regular expressions which will prevent webpack from parsing the file + var noParse = this.noParse = []; + + // webpack aliases, like require paths, mapping a prefix to a directory + var aliases = this.aliases = {}; + + // webpack loaders map loader configuration to regexps + var loaders = this.loaders = [ + { test: /\.less$/, loader: 'style!css!less' }, + { test: /\.css$/, loader: 'style!css' }, + { test: /\.html$/, loader: 'raw' }, + { + test: /\.(woff|woff2|png)(\?v=[0-9]\.[0-9]\.[0-9])?$/, + loader: 'url-loader?limit=10000&minetype=application/font-woff' + }, + { test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: 'file-loader' }, + ]; + + var claimedModuleIds = {}; + _.each(plugins, function (plugin) { + var exports = plugin.uiExportSpecs; + + // add an alias for this plugins public directory + if (plugin.publicDir) { + aliases[`plugins/${plugin.id}`] = plugin.publicDir; + } + + // consume the plugin's "modules" exports + _.forOwn(exports.modules, function (spec, id) { + if (claimedModuleIds[id]) { + throw new TypeError(`Plugin ${plugin.id} attempted to override export "${id}" from ${claimedModuleIds[id]}`); + } else { + claimedModuleIds[id] = plugin.id; + } + + // configurable via spec + var path; + var parse = true; + var imports = null; + var exports = null; + + // basic style, just a path + if (_.isString(spec)) path = spec; + + if (_.isArray(spec)) { + path = spec[0]; + imports = spec[1]; + exports = spec[2]; + } + + if (_.isPlainObject(spec)) { + path = spec.path; + parse = _.get(spec, 'parse', parse); + imports = _.get(spec, 'imports', imports); + exports = _.get(spec, 'exports', exports); + } + + if (!path) { + throw new TypeError('Invalid spec definition, unable to identify path'); + } + + aliases[id] = path; + + var loader = []; + if (imports) { + loader.push(`imports?${imports}`); + } + + if (exports) loader.push(`exports?${exports}`); + if (loader.length) loaders.push({ test: asRegExp(path), loader: loader.join('!') }); + + if (!parse) noParse.push(asRegExp(path)); + }); + + // consume the plugin's "loaders" exports + _.each(exports.loaders, function (loader) { + loaders.push(loader); + }); + + }); +} + +module.exports = OptmzUiExports; diff --git a/src/server/optimize/appMain.js.tmpl b/src/server/optimize/appMain.js.tmpl deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/src/server/optimize/index.js b/src/server/optimize/index.js index 22e22452d8739..419a105bd7370 100644 --- a/src/server/optimize/index.js +++ b/src/server/optimize/index.js @@ -1,112 +1,39 @@ module.exports = function (kbnServer, server, config) { var _ = require('lodash'); - var extname = require('path').extname; - var basename = require('path').basename; - var dirname = require('path').dirname; - var relative = require('path').relative; + var resolve = require('path').resolve; var join = require('path').join; - var webpack = require('webpack'); - var Promise = require('bluebird'); - - var apps = kbnServer.uiExports.apps; - var uiDir = require('../ui/assetsDir'); - var glob = _.wrap(Promise.promisify(require('glob')), function (gb, dir) { - return gb('**/*', { - cwd: dir, - silent: true, - strict: true, - nodir: true, - follow: false - }); - }); + var Optimizer = require('./Optimizer'); + var bundleDir = resolve(config.get('optimize.bundleDir')); var status = kbnServer.status.create('optimize'); - status.yellow('Optimizing and caching browser bundles'); - // don't return promise !! - // use status api - _(server.plugins) - .pluck('plugin') - .filter('publicDir') - .map(function (plugin) { - return glob(plugin.publicDir).then(function (matches) { - return { - id: plugin.id, - dir: plugin.publicDir, - files: matches - }; - }); + server.exposeStaticDir('/bundles/{path*}', bundleDir); + + return (new Optimizer({ + watch: config.get('optimize.watch'), + sourceMaps: config.get('optimize.sourceMaps'), + bundleDir: bundleDir, + apps: [].concat( + kbnServer.uiExports.apps, + kbnServer.uiExports.apps.hidden + ), + plugins: kbnServer.plugins + })) + .on('build-start', function () { + status.yellow('Optimizing and caching application source files'); }) - .concat([ - glob(uiDir).then(function (files) { - return { - id: 'ui', - dir: uiDir, - files: files - }; - }) - ]) - .thru(Promise.all) - .value() - .reduce(function (aliases, match) { - match.files.forEach(function (file) { - var path = join(match.dir, file); - var ext = extname(file); - var name = basename(file, ext === '.js' ? ext : ''); - var folders = dirname(file); // switch to / for moduleids/urls - var base = match.id === 'ui' ? '' : 'plugins/' + match.id; - - // filter out less files - if (ext === '.less') return; - - // prevent './module' style paths - if (folders === '.') folders = ''; - - var alias = _.compact([base, folders, name]).join('/').replace(/\\/g, '/'); - aliases[alias + '$'] = path; - }); - - return aliases; - }, {}) - .then(function (aliases) { - var compiler = webpack({ - entry: _.mapValues(apps, 'main'), - - output: { - path: join(__dirname, '..', 'bundles'), - filename: '[name].bundle.js' - }, - - plugins: [ - new webpack.NoErrorsPlugin(), - - new webpack.DefinePlugin({ - 'process.env': { - BROWSER: JSON.stringify(true), - NODE_ENV: JSON.stringify('development') - } - }), - - new webpack.optimize.DedupePlugin(), - new webpack.optimize.OccurenceOrderPlugin() - ], - - resolve: { - extensions: ['.js'], - packageMains: [], - modulesDirectories: [], - root: [], - aliases: aliases - } - }); - - return Promise.fromNode(compiler.run.bind(compiler)); + .on('watch-run', _.before(2, function () { + status.yellow('Optimizing and watching application source files'); + })) + .on('watch-run', _.after(2, function () { + status.yellow('Source file change detected, reoptimizing source files'); + })) + .on('done', function () { + status.green('Optimization complete'); + }) + .on('error', function (err) { + server.log(['fatal'], err); + status.red('Optimization failure! ' + err.message); }) - .then( - function () { status.green('Optimization complete'); }, - function (err) { - status.red('Optimization failure! ' + err.message); - server.log(['fatal'], err); - } - ); + .init(); }; diff --git a/src/server/optimize/mains/kibana.js b/src/server/optimize/mains/kibana.js deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/src/server/optimize/mains/sense.js b/src/server/optimize/mains/sense.js deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/src/server/plugins/Plugin.js b/src/server/plugins/Plugin.js index 2446dd09d1a10..433ad091d7bf1 100644 --- a/src/server/plugins/Plugin.js +++ b/src/server/plugins/Plugin.js @@ -4,27 +4,24 @@ var Joi = require('joi'); var Promise = require('bluebird'); var join = require('path').join; -function Plugin(kibana, path, package, opts) { - this._kibana = kibana; +function Plugin(kbnServer, path, package, opts) { + this.kbnServer = kbnServer; this.package = package; this.path = path; this.id = opts.id || package.name; + this.uiExportSpecs = opts.uiExports || {}; + this.requiredIds = opts.require || []; this.version = opts.version || package.version; this.publicDir = _.get(opts, 'publicDir', join(path, 'public')); this.externalInit = opts.init || _.noop; this.getConfig = opts.config || _.noop; - - kibana.uiExports.add(this, opts.exports); - - var readyCb; - var readyPromise = Promise.fromNode(function (cb) { readyCb = cb; }); - this.ready = _.constant(readyPromise); + this.init = _.once(this.init); } -Plugin.scoped = function (kibana, path, package) { +Plugin.scoped = function (kbnServer, path, package) { function ScopedPlugin(opts) { - ScopedPlugin.super_.call(this, kibana, path, package, opts || {}); + ScopedPlugin.super_.call(this, kbnServer, path, package, opts || {}); } inherits(ScopedPlugin, Plugin); return ScopedPlugin; @@ -32,12 +29,17 @@ Plugin.scoped = function (kibana, path, package) { Plugin.prototype.init = function () { var self = this; + var id = self.id; var version = self.version; - var server = this._kibana.server; - var status = this._kibana.status; + var server = self.kbnServer.server; + var status = self.kbnServer.status; var config = server.config(); + server.log(['plugin', 'init', 'debug'], { + message: 'initializing plugin <%= plugin.id %>', + plugin: self + }); return Promise.try(function () { return self.getConfig(Joi); @@ -48,10 +50,13 @@ Plugin.prototype.init = function () { .then(function () { return status.decoratePlugin(self); }) + .then(function () { + return self.kbnServer.uiExports.consumePlugin(self); + }) .then(function () { var register = function (server, options, next) { - server.expose('plugin', self); + Promise.try(self.externalInit, [server, options], self).nodeify(next); }; @@ -68,10 +73,14 @@ Plugin.prototype.init = function () { .then(function () { // Only change the plugin status to green if the // intial status has not been updated - if (self.status.state === undefined) { + if (self.status.state === 'uninitialized') { self.status.green('Ready'); } }); }; +Plugin.prototype.toString = function () { + return `${this.id}@${this.version}`; +}; + module.exports = Plugin; diff --git a/src/server/plugins/PluginApi.js b/src/server/plugins/PluginApi.js index a76bbab9b4813..cf5fb7b9ff639 100644 --- a/src/server/plugins/PluginApi.js +++ b/src/server/plugins/PluginApi.js @@ -5,6 +5,7 @@ var join = require('path').join; function PluginApi(kibana, pluginPath) { this.rootDir = kibana.rootDir; this.package = require(join(pluginPath, 'package.json')); + this.autoload = require('../ui/autoload'); this.Plugin = Plugin.scoped(kibana, pluginPath, this.package); } diff --git a/src/server/plugins/Plugins.js b/src/server/plugins/Plugins.js new file mode 100644 index 0000000000000..4c4558781644a --- /dev/null +++ b/src/server/plugins/Plugins.js @@ -0,0 +1,33 @@ +'use strict'; + +let _ = require('lodash'); +let inspect = require('util').inspect; +let PluginApi = require('./PluginApi'); + +module.exports = class Plugins extends Array { + + constructor(kbnServer) { + super(); + this.kbnServer = kbnServer; + } + + load(path) { + var self = this; + var api = new PluginApi(this.kbnServer, path); + + [].concat(require(path)(api) || []) + .forEach(function (out) { + if (out instanceof api.Plugin) { + self._byId = null; + self.push(out); + } else { + throw new TypeError('unexpected plugin export ' + inspect(out)); + } + }); + } + + get byId() { + return this._byId || (this._byId = _.indexBy(this, 'id')); + } + +}; diff --git a/src/server/plugins/index.js b/src/server/plugins/index.js index 747ae50b96ea6..8ae13f292947a 100644 --- a/src/server/plugins/index.js +++ b/src/server/plugins/index.js @@ -4,28 +4,14 @@ module.exports = function (kbnServer, server, config) { var Boom = require('boom'); var join = require('path').join; - var scan = require('./scan'); - var load = require('./load'); - - var scanDirs = [].concat(config.get('plugins.scanDirs')); - var absolutePaths = [].concat(config.get('plugins.paths')); - - return Promise.try(scan, [server, scanDirs]) - .then(function (foundPaths) { - return load(kbnServer, _.union(foundPaths, absolutePaths)); - }) - .then(function () { - - if (config.get('plugins.optimize')) { - kbnServer.mixin(require('./optimize')); - server.exposeStaticDir('/plugins/{path*}', join(__dirname, 'bundles')); - } else { - server.exposeStaticDir('/plugins/{id}/{path*}', function (req) { - var id = req.params.id; - var plugin = _.get(server.plugins, [id, 'plugin']); - return (plugin && plugin.publicDir) ? plugin.publicDir : Boom.notFound(); - }); - } - + server.exposeStaticDir('/plugins/{id}/{path*}', function (req) { + var id = req.params.id; + var plugin = kbnServer.plugins.byId[id]; + return (plugin && plugin.publicDir) ? plugin.publicDir : Boom.notFound(); }); + + return kbnServer.mixin( + require('./scan'), + require('./load') + ); }; diff --git a/src/server/plugins/load.js b/src/server/plugins/load.js index ab3a08477564b..c1ca53f70559f 100644 --- a/src/server/plugins/load.js +++ b/src/server/plugins/load.js @@ -1,8 +1,35 @@ -var Promise = require('bluebird'); -var PluginApi = require('./PluginApi'); +module.exports = function (kbnServer, server, config) { + var _ = require('lodash'); + var resolve = require('bluebird').resolve; + var inspect = require('util').inspect; -module.exports = function (kbnServer, pluginPaths) { - return Promise.map(pluginPaths, function (pluginPath) { - return require(pluginPath)(new PluginApi(kbnServer, pluginPath)).init(); + var Plugins = require('./Plugins'); + var plugins = kbnServer.plugins = new Plugins(kbnServer); + var path = []; + + return resolve(kbnServer.pluginPaths) + .map(function (path) { + return plugins.load(path); + }) + .then(function () { + var others = _.indexBy(plugins, 'id'); + + return Promise.all(plugins.map(function recurse(plugin) { + if (_.includes(path, plugin.id)) { + throw new Error(`circular dependencies found: "${path.concat(plugin.id).join(' -> ')}"`); + } + + path.push(plugin.id); + + var preInits = _.map(plugin.requiredIds, function (id) { + if (!others[id]) throw new Error(`Unmet requirement "${id}" for plugin "${plugin.id}"`); + return recurse(others[id]); + }); + var promise = Promise.all(preInits).then(_.bindKey(plugin, 'init')); + + path.pop(); + + return promise; + })); }); }; diff --git a/src/server/plugins/scan.js b/src/server/plugins/scan.js index 73f432d5948fb..8e65460ffdfb6 100644 --- a/src/server/plugins/scan.js +++ b/src/server/plugins/scan.js @@ -1,11 +1,14 @@ -var _ = require('lodash'); -var Promise = require('bluebird'); -var readdir = Promise.promisify(require('fs').readdir); -var stat = Promise.promisify(require('fs').stat); -var join = require('path').join; +module.exports = function (kbnServer, server, config) { + var _ = require('lodash'); + var Promise = require('bluebird'); + var readdir = Promise.promisify(require('fs').readdir); + var stat = Promise.promisify(require('fs').stat); + var join = require('path').join; -module.exports = function (server, includeDirs) { - return Promise.map(includeDirs, function (dir) { + var scanDirs = [].concat(config.get('plugins.scanDirs')); + var absolutePaths = [].concat(config.get('plugins.paths')); + + return Promise.map(scanDirs, function (dir) { server.log('plugin-scan', 'Scanning ' + dir + ' for plugins'); return readdir(dir).map(function (file) { @@ -18,8 +21,13 @@ module.exports = function (server, includeDirs) { }); }); }) - .then(_.flatten) - .then(_.compact) + .then(function (dirs) { + return _(dirs) + .flatten() + .compact() + .union(absolutePaths) + .value(); + }) .filter(function (dir) { try { require(dir); @@ -29,5 +37,8 @@ module.exports = function (server, includeDirs) { server.log('plugin-scan', 'Skipping non-plugin directory at ' + dir); return false; } + }) + .then(function (pluginPaths) { + kbnServer.pluginPaths = pluginPaths; }); }; diff --git a/src/server/status/Status.js b/src/server/status/Status.js index 74d8b04fdda8c..6d77aba3f4670 100644 --- a/src/server/status/Status.js +++ b/src/server/status/Status.js @@ -6,7 +6,7 @@ function Status(name, server) { Status.super_.call(this); this.name = name; - this.state = undefined; + this.state = 'uninitialized'; this.message = 'uninitialized'; this.on('change', function (current, previous) { diff --git a/src/server/ui/UiApp.js b/src/server/ui/UiApp.js new file mode 100644 index 0000000000000..f03866f178a0e --- /dev/null +++ b/src/server/ui/UiApp.js @@ -0,0 +1,61 @@ +'use strict'; + +var _ = require('lodash'); +var join = require('path').join; +var defAutoload = require('./autoload'); + +class UiApp { + constructor(uiExports, plugin, spec) { + this.uiExports = uiExports; + this.plugin = plugin || null; + this.spec = spec || {}; + + this.id = this.spec.id || _.get(this, 'plugin.id'); + if (!this.id) { + throw new Error('Every app must specify it\'s id'); + } + + this.main = this.spec.main; + this.title = this.spec.title; + this.description = this.spec.description; + this.icon = this.spec.icon; + this.hidden = this.spec.hidden; + this.autoloadOverrides = this.spec.autoload; + this.getModules = _.once(this.getModules); + } + + autoload(type) { + return _.get(this.autoloadOverrides, type, defAutoload[type]) || []; + } + + getModules() { + return { + // there current isn't any way to extend the default angular modules + angular: this.autoload('angular'), + require: _([ + this.autoload('require'), + this.uiExports.find(_.get(this, 'spec.uses', [])), + ]) + .flatten() + .sort() + .uniq(true) + .push(this.main) + .value() + }; + } + + relatedPlugins() { + var pluginsById = _.indexBy(this.uiExports.kbnServer.plugins, 'id'); + return _.transform(this.getModules().require, function (plugins, id) { + var matches = id.match(/^plugins\/([^\/]+)(?:\/|$)/); + if (!matches) return; + plugins.push(pluginsById[matches[1]]); + }, []); + } + + toJSON() { + return _.pick(this, ['id', 'title', 'description', 'icon', 'main']); + } +} + +module.exports = UiApp; diff --git a/src/server/ui/UiApps.js b/src/server/ui/UiApps.js new file mode 100644 index 0000000000000..1edf4396b79c6 --- /dev/null +++ b/src/server/ui/UiApps.js @@ -0,0 +1,43 @@ +'use strict'; + +let _ = require('lodash'); +let UiApp = require('./UiApp'); + +module.exports = class UiApps extends Array { + + constructor(uiExports, parent) { + super(); + + this.uiExports = uiExports; + + if (!parent) { + this.claimedIds = []; + this.hidden = new UiApps(uiExports, this); + } else { + this.claimedIds = parent.claimedIds; + } + + } + + new(plugin, spec) { + if (this.hidden && spec.hidden) { + return this.hidden.new(plugin, spec); + } + + let app = new UiApp(this.uiExports, plugin, spec); + + if (_.includes(this.claimedIds, app.id)) { + throw new Error('Unable to create two apps with the id ' + app.id + '.'); + } else { + this.claimedIds.push(app.id); + } + + this._byId = null; + this.push(app); + } + + get byId() { + return this._byId || (this._byId = _.indexBy(this, 'id')); + } + +}; diff --git a/src/server/ui/UiExports.js b/src/server/ui/UiExports.js new file mode 100644 index 0000000000000..db68a5b7e2d79 --- /dev/null +++ b/src/server/ui/UiExports.js @@ -0,0 +1,84 @@ +'use strict'; + +var _ = require('lodash'); +var minimatch = require('minimatch'); + +var UiApps = require('./UiApps'); + +class UiExports { + constructor(kbnServer) { + this.kbnServer = kbnServer; + this.apps = new UiApps(this); + this.appCount = 0; + this.aliases = {}; + this.exportConsumer = _.memoize(this.exportConsumer); + } + + consumePlugin(plugin) { + var self = this; + var types = _.keys(plugin.uiExportSpecs); + + if (!types) return false; + + var unkown = _.reject(types, self.exportConsumer, self); + if (unkown.length) { + throw new Error('unknown export types ' + unkown.join(', ') + ' in plugin ' + plugin.id); + } + + types.forEach(function (type) { + self.exportConsumer(type)(plugin, plugin.uiExportSpecs[type]); + }); + } + + exportConsumer(type) { + var self = this; + switch (type) { + case 'app': + return function (plugin, spec) { + self.apps.new(plugin, spec); + }; + + case 'visTypes': + case 'fieldFormats': + case 'spyModes': + return function (plugin, spec) { + self.aliases[type] = _.union(self.aliases[type] || [], spec); + }; + + case 'modules': + case 'loaders': + return function (plugin, spec) { + plugin.uiExportSpecs[type] = spec; + }; + + case 'aliases': + return function (plugin, specs) { + _.forOwn(specs, function (spec, adhocType) { + self.aliases[adhocType] = _.union(self.aliases[adhocType] || [], spec); + }); + }; + } + } + + find(patterns) { + var aliases = this.aliases; + var names = _.keys(aliases); + var matcher = _.partialRight(minimatch.filter, { matchBase: true }); + + return _.chain(patterns) + .map(function (pattern) { + var matches = names.filter(matcher(pattern)); + if (!matches.length) { + throw new Error('Unable to find uiExports for pattern ' + pattern); + } + return matches; + }) + .flattenDeep() + .reduce(function (found, name) { + return found.concat(aliases[name]); + }, []) + .value(); + } +} + +module.exports = UiExports; diff --git a/src/server/ui/apps.js b/src/server/ui/apps.js index d965f4481cc02..7dcd176d395d0 100644 --- a/src/server/ui/apps.js +++ b/src/server/ui/apps.js @@ -1,28 +1,16 @@ module.exports = function (kbnServer, server, config) { var _ = require('lodash'); var Boom = require('boom'); - - var UiExports = require('./lib/UiExports'); - var UiApp = require('./lib/UiApp'); - - // export manager - var uiExports = kbnServer.uiExports = new UiExports(); - var switcherApp = new UiApp(uiExports, null, { - id: 'appSwitcher', - title: 'Apps', - main: 'appSwitcher/index', - defaultModules: { - angular: [], - require: ['chrome'] - } - }); + var uiExports = kbnServer.uiExports; + var apps = uiExports.apps; + var hiddenApps = uiExports.apps.hidden; // serve the app switcher server.route({ path: '/apps', method: 'GET', handler: function (req, reply) { - return reply.renderApp(switcherApp); + return reply.renderApp(hiddenApps.byId.switcher); } }); @@ -31,7 +19,7 @@ module.exports = function (kbnServer, server, config) { path: '/api/apps', method: 'GET', handler: function (req, reply) { - return reply(_.values(uiExports.apps)); + return reply(apps); } }); @@ -40,7 +28,7 @@ module.exports = function (kbnServer, server, config) { method: 'GET', handler: function (req, reply) { var id = req.params.id; - var app = uiExports.apps[id]; + var app = apps.byId[id]; if (!app) return reply(Boom.notFound('Unkown app ' + id)); return reply.renderApp(app); diff --git a/src/server/ui/assets.js b/src/server/ui/assets.js new file mode 100644 index 0000000000000..98933cf1016c1 --- /dev/null +++ b/src/server/ui/assets.js @@ -0,0 +1,16 @@ +var fromRoot = require('../utils/fromRoot'); +var readdir = require('fs').readdirSync; +var stat = require('fs').statSync; +var join = require('path').join; + +exports.root = fromRoot('src/ui'); +exports.files = {}; +exports.dirs = {}; + +readdir(exports.root).forEach(function (name) { + if (name.charAt(0) === '.') return; + + var path = join(exports.root, name); + var isDir = stat(path).isDirectory(); + exports[isDir ? 'dirs' : 'files'][name] = path; +}); diff --git a/src/server/ui/assetsDir.js b/src/server/ui/assetsDir.js deleted file mode 100644 index d576178d288cc..0000000000000 --- a/src/server/ui/assetsDir.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../utils/fromRoot')('src/ui'); diff --git a/src/server/ui/autoload.js b/src/server/ui/autoload.js new file mode 100644 index 0000000000000..14160db5b20c8 --- /dev/null +++ b/src/server/ui/autoload.js @@ -0,0 +1,86 @@ +var _ = require('lodash'); +var scan = require('./lib/scan'); + +exports.reload = function () { + // default bower_components + exports.bower = [ + 'angular-bindonce', + 'elasticsearch' + ]; + + exports.directives = scan('directives'); + exports.filters = scan('filters'); + + var excludeStyles = [ + 'ui-styles/mixins.less', + 'ui-styles/variables.less', + 'ui-styles/theme.less' + ]; + + exports.styles = scan('ui-styles', true).filter(function (file) { + var i = excludeStyles.indexOf(file); + if (i > -1) { + excludeStyles.splice(i, 1); + return false; + } + + return true; + }); + + if (excludeStyles.length) { + throw new Error(`Styles which were supposed to be excluded from autoload not found! ${excludeStyles}`); + } + + exports.uiComponents = [ + 'chrome', + 'chrome/context', + 'components/bind', + 'components/bound_to_config_obj', + 'components/config/config', + 'components/courier/courier', + 'components/debounce', + 'components/doc_title/doc_title', + 'components/elastic_textarea', + 'components/es', + 'components/events', + 'components/fancy_forms/fancy_forms', + 'components/filter_bar/filter_bar', + 'components/filter_manager/filter_manager', + 'components/index_patterns/index_patterns', + 'components/listen', + 'components/notify/notify', + 'components/persisted_log/persisted_log', + 'components/private', + 'components/promises', + 'components/state_management/app_state', + 'components/state_management/global_state', + 'components/storage/storage', + 'components/stringify/register', + 'components/style_compile/style_compile', + 'components/timefilter/timefilter', + 'components/timepicker/timepicker', + 'components/tooltip/tooltip', + 'components/typeahead/typeahead', + 'components/ui-bootstrap/index', + 'components/url/url', + 'components/validateDateInterval', + 'components/validate_query/validate_query', + 'components/watch_multi' + ]; + + // default angular modules to depend on + exports.angular = [ + 'elasticsearch', + 'pasvaz.bindonce' + ]; + + exports.require = _.flatten([ + exports.bower, + exports.directives, + exports.filters, + exports.styles, + exports.uiComponents + ]); +}; + +exports.reload(); diff --git a/src/server/ui/exports.js b/src/server/ui/exports.js new file mode 100644 index 0000000000000..8884f08482ed0 --- /dev/null +++ b/src/server/ui/exports.js @@ -0,0 +1,5 @@ +module.exports = function (kbnServer) { + var UiExports = require('./UiExports'); + + kbnServer.uiExports = new UiExports(kbnServer); +}; diff --git a/src/server/ui/helpers.js b/src/server/ui/helpers.js index 6804cefe18c62..2c39d079ad9a1 100644 --- a/src/server/ui/helpers.js +++ b/src/server/ui/helpers.js @@ -4,7 +4,8 @@ module.exports = function (kbnServer, server, config) { server.decorate('reply', 'renderApp', function (app) { var payload = { app: app, - appCount: kbnServer.uiExports.appCount, + angularModules: app.getModules().angular, + appCount: kbnServer.uiExports.apps.length, version: kbnServer.version, buildSha: _.get(kbnServer, 'build.sha', '@@buildSha'), buildNumber: _.get(kbnServer, 'build.number', '@@buildNum'), diff --git a/src/server/ui/index.js b/src/server/ui/index.js index 0498b7aaa5f0d..89423fb77bfea 100644 --- a/src/server/ui/index.js +++ b/src/server/ui/index.js @@ -5,12 +5,14 @@ module.exports = function (kbnServer, server, config) { // setup jade for templates server.views({ path: join(__dirname, 'views'), + isCached: config.get('optimize.viewCaching'), engines: { jade: require('jade') } }); return kbnServer.mixin( + require('./exports'), require('./helpers'), require('./statics'), require('./apps') diff --git a/src/server/ui/lib/UiApp.js b/src/server/ui/lib/UiApp.js deleted file mode 100644 index 959f43fafb6b6..0000000000000 --- a/src/server/ui/lib/UiApp.js +++ /dev/null @@ -1,43 +0,0 @@ -var _ = require('lodash'); -var join = require('path').join; -var defaultModules = require('./defaultModules'); - -function UiApp(uiExports, plugin, spec) { - this.uiExports = uiExports; - this.plugin = plugin || null; - this.spec = spec || {}; - - this.id = this.spec.id || _.get(this, 'plugin.id'); - if (!this.id) { - throw new Error('Every app must specify it\'s id'); - } - - this.main = this.spec.main; - this.title = this.spec.title; - this.description = this.spec.description; - this.icon = this.spec.icon; - this.getModules = _.once(this.getModules); - - this.defaultModules = this.spec.defaultModules; - if (!this.defaultModules) { - this.defaultModules = defaultModules(); - } -} - -UiApp.prototype.getModules = function () { - return { - main: [this.main], - // there current isn't any way to extend the default angular modules - angular: this.defaultModules.angular || [], - require: _.union( - this.defaultModules.require || [], - this.uiExports.find(_.get(this, 'spec.uses', [])) - ) - }; -}; - -UiApp.prototype.toJSON = function () { - return _.pick(this, ['id', 'title', 'description', 'icon', 'main']); -}; - -module.exports = UiApp; diff --git a/src/server/ui/lib/UiExports.js b/src/server/ui/lib/UiExports.js deleted file mode 100644 index 76fb4c46dc51c..0000000000000 --- a/src/server/ui/lib/UiExports.js +++ /dev/null @@ -1,74 +0,0 @@ -var _ = require('lodash'); -var minimatch = require('minimatch'); - -var UiApp = require('./UiApp'); - -function UiExports() { - this.apps = {}; - this.appCount = 0; - this.aliases = {}; - this.exportConsumer = _.memoize(this.exportConsumer); -} - -UiExports.prototype.add = function (plugin, exports) { - var self = this; - var unkown = _(exports).keys().reject(self.exportConsumer, self).value(); - if (unkown.length) { - throw new Error('unknown export types ' + unkown.join(', ') + ' in plugin ' + plugin.id); - } - - _.forOwn(exports, function (spec, type) { - self.exportConsumer(type)(plugin, spec); - }); -}; - -UiExports.prototype.exportConsumer = function (type) { - var self = this; - switch (type) { - case 'app': - return function (plugin, spec) { - var app = new UiApp(self, plugin, spec); - - if (self.apps[app.id]) { - throw new Error('Unable to create two apps with the id ' + app.id + '.'); - } - - self.apps[app.id] = app; - self.appCount += 1; - }; - case 'visTypes': - case 'fieldFormats': - case 'spyModes': - return function (plugin, spec) { - self.aliases[type] = _.union(spec, self.aliases[type] || []); - }; - case 'aliases': - return function (plugin, specs) { - _.forOwn(specs, function (spec, adhocType) { - self.aliases[adhocType] = _.union(spec, self.aliases[adhocType] || []); - }); - }; - } -}; - -UiExports.prototype.find = function (patterns) { - var aliases = this.aliases; - var names = _.keys(aliases); - var matcher = _.partialRight(minimatch.filter, { matchBase: true }); - - return _.chain(patterns) - .map(function (pattern) { - var matches = names.filter(matcher(pattern)); - if (!matches.length) { - throw new Error('Unable to find uiExports for pattern ' + pattern); - } - return matches; - }) - .flattenDeep() - .reduce(function (found, name) { - return found.concat(aliases[name]); - }, []) - .value(); -}; - -module.exports = UiExports; diff --git a/src/server/ui/lib/defaultModules.js b/src/server/ui/lib/defaultModules.js deleted file mode 100644 index 22eb78e751927..0000000000000 --- a/src/server/ui/lib/defaultModules.js +++ /dev/null @@ -1,66 +0,0 @@ -var _ = require('lodash'); -var findModuleIds = require('./findModuleIds'); - -module.exports = function () { - return { - - // default angular modules to depend on - angular: [ - 'elasticsearch', - 'pasvaz.bindonce' - ], - - // default require modules to load - require: _([ - // default bower_components - [ - 'angular-bindonce', - 'elasticsearch' - ], - - // all directives and filters, which are auto-loaded - _.values(findModuleIds()), - - // default components - [ - 'chrome', - 'components/bind', - 'components/bound_to_config_obj', - 'components/config/config', - 'components/courier/courier', - 'components/chrome-context/index', - 'components/debounce', - 'components/doc_title/doc_title', - 'components/elastic_textarea', - 'components/es', - 'components/events', - 'components/fancy_forms/fancy_forms', - 'components/filter_bar/filter_bar', - 'components/filter_manager/filter_manager', - 'components/index_patterns/index_patterns', - 'components/listen', - 'components/notify/notify', - 'components/persisted_log/persisted_log', - 'components/private', - 'components/promises', - 'components/state_management/app_state', - 'components/state_management/global_state', - 'components/storage/storage', - 'components/stringify/register', - 'components/style_compile/style_compile', - 'components/timefilter/timefilter', - 'components/timepicker/timepicker', - 'components/tooltip/tooltip', - 'components/typeahead/typeahead', - 'components/ui-bootstrap/index', - 'components/url/url', - 'components/validateDateInterval', - 'components/validate_query/validate_query', - 'components/watch_multi' - ] - ]) - .flattenDeep() - .uniq() - .value() - }; -}; diff --git a/src/server/ui/lib/findBowerComponents.js b/src/server/ui/lib/findBowerComponents.js new file mode 100644 index 0000000000000..c227fccc5b0ec --- /dev/null +++ b/src/server/ui/lib/findBowerComponents.js @@ -0,0 +1,20 @@ +var join = require('path').join; +var exists = require('fs').existsSync; +var relative = require('path').relative; + +module.exports = function (start, within) { + var dir = start; + var bowerPath = join(dir, 'bower_components'); + + while (!exists(bowerPath)) { + var prev = dir; + dir = join(dir, '..'); + bowerPath = join(dir, 'bower_components'); + + if (dir === prev || relative(within, dir).slice(0, 2) === '..') { + throw new Error('unable to find bower_components'); + } + } + + return bowerPath; +}; diff --git a/src/server/ui/lib/findModuleIds.js b/src/server/ui/lib/findModuleIds.js deleted file mode 100644 index b9116f70a8fb7..0000000000000 --- a/src/server/ui/lib/findModuleIds.js +++ /dev/null @@ -1,43 +0,0 @@ -var _ = require('lodash'); -var join = require('path').join; -var basename = require('path').basename; -var readdir = require('fs').readdirSync; -var stat = require('fs').statSync; -var exists = require('fs').existsSync; -var assetsDir = require('../assetsDir'); - -function hidden(name) { - return name[0] !== '.' && name[0] !== '_'; -} - -function scan(type) { - var dir = join(assetsDir, type); - - return readdir(dir) - .filter(hidden) - .map(function (filename) { - var path = join(dir, filename); - var name = basename(filename, '.js'); - - if (!stat(path).isDirectory()) { - return type + '/' + name; - } - - if (exists(join(path, 'index.js'))) { - return type + '/' + name + '/index'; - } - - if (exists(join(path, name + '.js'))) { - return type + '/' + name + '/' + name; - } - - throw new Error('unable to find index of module ' + type + '/' + name); - }); -} - -module.exports = function () { - return { - directives: scan('directives'), - filters: scan('filters') - }; -}; diff --git a/src/server/ui/lib/scan.js b/src/server/ui/lib/scan.js new file mode 100644 index 0000000000000..a42dfb8cdef96 --- /dev/null +++ b/src/server/ui/lib/scan.js @@ -0,0 +1,50 @@ +var _ = require('lodash'); +var join = require('path').join; +var basename = require('path').basename; +var readdir = require('fs').readdirSync; +var stat = require('fs').statSync; +var exists = require('fs').existsSync; +var assetsDir = require('../assets').root; + +function hidden(name) { + return name[0] === '.' || name[0] === '_'; +} + +function scan(type, ignoreDirs) { + var dir = join(assetsDir, type); + + return _(readdir(dir)) + .reject(hidden) + .map(function (filename) { + var path = join(dir, filename); + var name = basename(filename, '.js'); + + if (!stat(path).isDirectory()) { + return `${type}/${name}`; + } + + if (ignoreDirs) { + return null; + } + + var options = [ + 'index.js', + name + '.js', + 'index.less', + name + '.less' + ]; + + while (options.length) { + var index = options.shift(); + if (exists(join(path, index))) { + return `${type}/${name}/${index}`; + } + } + + throw new Error(`unable to find index of module ${type}/${name}`); + }) + .compact() + .value(); +} + +module.exports = scan; diff --git a/src/server/ui/statics.js b/src/server/ui/statics.js index 559bdfb73a3bd..020afdba5245d 100644 --- a/src/server/ui/statics.js +++ b/src/server/ui/statics.js @@ -1,20 +1,13 @@ module.exports = function (kbnServer, server, config) { - var Boom = require('boom'); - var assetsDir = require('./assetsDir'); - var join = require('path').join; - var stat = require('fs').statSync; + var _ = require('lodash'); + var assets = require('./assets'); - // expose our public files at the server root explicitly, rather than with a catch all route - require('fs') - .readdirSync(assetsDir) - .forEach(function (name) { - var path = join(assetsDir, name); + _.forOwn(assets.files, function (path, name) { + server.exposeStaticFile('/' + name, path); + }); - if (stat(path).isDirectory()) { - server.exposeStaticDir('/' + name + '/{path*}', path); - } - else { - server.exposeStaticFile('/' + name, path); - } + _.forOwn(assets.dirs, function (dir, name) { + server.exposeStaticDir('/' + name + '/{path*}', dir); }); + }; diff --git a/src/server/ui/views/bootstrap.jade b/src/server/ui/views/bootstrap.jade index b056ba7bd9437..bdb6e02f50bc7 100644 --- a/src/server/ui/views/bootstrap.jade +++ b/src/server/ui/views/bootstrap.jade @@ -6,22 +6,8 @@ html(lang='en') meta(charset='utf-8') meta(http-equiv='X-UA-Compatible', content='IE=edge,chrome=1') meta(name='viewport', content='width=device-width') - link(rel='shortcut icon', href='/ui-styles/theme/elk.ico') - title - link(rel='stylesheet', href='/ui-styles/main.css#{cacheBust}') + link(rel='shortcut icon', href='/images/elk.ico') + title Kibana body(kbn-chrome) - .col-md-offset-4.col-md-4.page-header.initial-load - center - img(width='128', alt='Loading Kibana', src='/images/initial_load.gif') - h1 - strong Kibana - small#cache-message - | is loading. Give me a moment here. I'm loading a whole bunch of code. Don't worry, all this good stuff will be cached up for next time! - script. - var showCacheMessage = location.href.indexOf('?embed') < 0 && location.href.indexOf('&embed') < 0; - if (!showCacheMessage) document.getElementById('cache-message').style.display = 'none'; - - script( - src='/bundles/#{app.id}.js' - payload=j(kibanaPayload) - ) + script window.__KBN__ = !{j(kibanaPayload)}; + script(src='/bundles/#{app.id}.js') diff --git a/src/server/utils/fromRoot.js b/src/server/utils/fromRoot.js index 1d0527d782422..25f3a3db43119 100644 --- a/src/server/utils/fromRoot.js +++ b/src/server/utils/fromRoot.js @@ -1,7 +1,7 @@ +var _ = require('lodash'); var dirname = require('path').dirname; var join = require('path').join; +var normalize = require('path').normalize; var root = dirname(require('./closestPackageJson').findSync()); -module.exports = function (dir) { - return join(root, dir); -}; +module.exports = _.flow(_.partial(join, root), normalize); diff --git a/src/ui/appSwitcher/index.js b/src/ui/appSwitcher/index.js deleted file mode 100644 index 2798e7822ce8b..0000000000000 --- a/src/ui/appSwitcher/index.js +++ /dev/null @@ -1,26 +0,0 @@ -define(function (require) { - require('css!appSwitcher/appSwitcher.css'); - - require('chrome') - .setLogo('url(/images/kibana.png) left no-repeat', true) - .setTabs([ - { - id: '', - title: 'Apps' - } - ]) - .setRootTemplate(require('text!appSwitcher/appSwitcher.html')) - .setRootController('switcher', function SwitcherController($http) { - var switcher = { - loading: true - }; - - $http.get('/api/apps') - .then(function (resp) { - switcher.loading = false; - switcher.apps = resp.data; - }); - - return switcher; - }); -}); diff --git a/src/ui/components/chrome/Tab.js b/src/ui/chrome/Tab.js similarity index 100% rename from src/ui/components/chrome/Tab.js rename to src/ui/chrome/Tab.js diff --git a/src/ui/components/chrome/TabCollection.js b/src/ui/chrome/TabCollection.js similarity index 94% rename from src/ui/components/chrome/TabCollection.js rename to src/ui/chrome/TabCollection.js index 791a8cdfbb2d0..73cfb9e3c318d 100644 --- a/src/ui/components/chrome/TabCollection.js +++ b/src/ui/chrome/TabCollection.js @@ -1,5 +1,5 @@ define(function (require) { - var Tab = require('components/chrome/Tab'); + var Tab = require('chrome/Tab'); function TabCollection() { var _ = require('lodash'); diff --git a/src/ui/components/chrome/chrome.html b/src/ui/chrome/chrome.html similarity index 100% rename from src/ui/components/chrome/chrome.html rename to src/ui/chrome/chrome.html diff --git a/src/ui/components/chrome/chrome.js b/src/ui/chrome/chrome.js similarity index 83% rename from src/ui/components/chrome/chrome.js rename to src/ui/chrome/chrome.js index 5dde9c728fd49..d4b937064e428 100644 --- a/src/ui/components/chrome/chrome.js +++ b/src/ui/chrome/chrome.js @@ -1,17 +1,20 @@ define(function (require) { var _ = require('lodash'); var $ = require('jquery'); + var angular = require('angular'); + var modules = require('modules'); require('components/timefilter/timefilter'); require('components/private'); require('components/promises'); - var TabCollection = require('components/chrome/TabCollection'); + var TabCollection = require('chrome/TabCollection'); var tabs = new TabCollection(); var rootController = null; var rootTemplate = null; - var payload = null; + var payload = window.__KBN__; + window.__KBN__ = null; var chrome = { navBackground: '#222222', @@ -19,11 +22,6 @@ define(function (require) { smallLogo: null }; - chrome.consumePayload = function (_payload) { - payload = _payload; - chrome.setPayload = null; - }; - /** * Set what tabs should be shown in the header. * @@ -170,13 +168,36 @@ define(function (require) { return tab ? tab.id : def; }; + chrome.bootstrap = function (angularModules) { + var kibana = modules.get('kibana', angularModules); + + kibana + .constant('kbnVersion', payload.version) + .constant('buildNum', payload.buildNumber) + .constant('kbnIndex', payload.kbnIndex) + .constant('esShardTimeout', payload.esShardTimeout) + .constant('esUrl', (function () { + var a = document.createElement('a'); + a.href = '/elasticsearch'; + return a.href; + }())) + .constant('commitSha', payload.buildSha) + .constant('cacheBust', payload.cacheBust) + .constant('minimumElasticsearchVersion', '2.0.0') + .constant('sessionId', Date.now()); + + modules.link(kibana); + angular.bootstrap(document, ['kibana']); + $(document.body).children(':not(style-compile)').show(); + }; + // build a kbn-chrome directive that will bind our service to the dom require('modules') .get('kibana') .directive('kbnChrome', function ($rootScope) { return { compile: function ($el) { - var $content = $(require('text!components/chrome/chrome.html')); + var $content = $(require('chrome/chrome.html')); var $app = $content.find('.application'); if (rootController) { @@ -194,7 +215,7 @@ define(function (require) { $app.html(rootTemplate); } - $el.html($content); + $el.append($content); }, controllerAs: 'chrome', controller: function ($scope, $rootScope, $location, $http) { @@ -217,9 +238,6 @@ define(function (require) { return chrome; } }; - }) - .directive('kbnChromeTimepicker', function () { - }); return chrome; diff --git a/src/ui/components/chrome/config/filter.html b/src/ui/chrome/config/filter.html similarity index 100% rename from src/ui/components/chrome/config/filter.html rename to src/ui/chrome/config/filter.html diff --git a/src/ui/components/chrome/config/interval.html b/src/ui/chrome/config/interval.html similarity index 100% rename from src/ui/components/chrome/config/interval.html rename to src/ui/chrome/config/interval.html diff --git a/src/ui/components/chrome-context/index.js b/src/ui/chrome/context.js similarity index 86% rename from src/ui/components/chrome-context/index.js rename to src/ui/chrome/context.js index 73b2a498f0bc5..56a856f7f7647 100644 --- a/src/ui/components/chrome-context/index.js +++ b/src/ui/chrome/context.js @@ -21,8 +21,8 @@ define(function (require) { // chrome is responsible for timepicker ui and state transfer... $scope.timefilter = timefilter; $scope.pickerTemplate = new ConfigTemplate({ - filter: require('text!components/chrome/config/filter.html'), - interval: require('text!components/chrome/config/interval.html') + filter: require('chrome/config/filter.html'), + interval: require('chrome/config/interval.html') }); $scope.toggleRefresh = function () { diff --git a/src/ui/components/agg_response/geo_json/_tooltip_formatter.js b/src/ui/components/agg_response/geo_json/_tooltip_formatter.js index 65cc855357547..d2109a6ba06e0 100644 --- a/src/ui/components/agg_response/geo_json/_tooltip_formatter.js +++ b/src/ui/components/agg_response/geo_json/_tooltip_formatter.js @@ -5,7 +5,7 @@ define(function (require) { var fieldFormats = Private(require('registry/field_formats')); var $tooltipScope = $rootScope.$new(); - var $el = $('
').html(require('text!components/agg_response/geo_json/_tooltip.html')); + var $el = $('
').html(require('components/agg_response/geo_json/_tooltip.html')); $compile($el)($tooltipScope); return function tooltipFormatter(feature) { diff --git a/src/ui/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js b/src/ui/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js index b61c3a84f2092..c61e28837e631 100644 --- a/src/ui/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js +++ b/src/ui/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js @@ -2,7 +2,7 @@ define(function (require) { return function HierarchicalTooltipFormaterProvider($rootScope, $compile, $sce) { var _ = require('lodash'); var $ = require('jquery'); - var $tooltip = $(require('text!components/agg_response/hierarchical/_tooltip.html')); + var $tooltip = $(require('components/agg_response/hierarchical/_tooltip.html')); var collectBranch = require('components/agg_response/hierarchical/_collect_branch'); var $tooltipScope = $rootScope.$new(); var numeral = require('numeral'); diff --git a/src/ui/components/agg_response/point_series/_tooltip_formatter.js b/src/ui/components/agg_response/point_series/_tooltip_formatter.js index 9a9a023cc9ad1..d82c69926514f 100644 --- a/src/ui/components/agg_response/point_series/_tooltip_formatter.js +++ b/src/ui/components/agg_response/point_series/_tooltip_formatter.js @@ -3,7 +3,7 @@ define(function (require) { var $ = require('jquery'); var $tooltipScope = $rootScope.$new(); - var $tooltip = $(require('text!components/agg_response/point_series/_tooltip.html')); + var $tooltip = $(require('components/agg_response/point_series/_tooltip.html')); $compile($tooltip)($tooltipScope); return function tooltipFormatter(event) { diff --git a/src/ui/components/agg_table/agg_table.js b/src/ui/components/agg_table/agg_table.js index 3259640c47243..f8362bc32d03a 100644 --- a/src/ui/components/agg_table/agg_table.js +++ b/src/ui/components/agg_table/agg_table.js @@ -1,7 +1,7 @@ define(function (require) { require('components/paginated_table/paginated_table'); require('components/compile_recursive_directive'); - require('css!components/agg_table/agg_table.css'); + require('components/agg_table/agg_table.less'); require('modules') .get('kibana') @@ -10,7 +10,7 @@ define(function (require) { return { restrict: 'E', - template: require('text!components/agg_table/agg_table.html'), + template: require('components/agg_table/agg_table.html'), scope: { table: '=', perPage: '=?' diff --git a/src/ui/components/agg_table/agg_table.less b/src/ui/components/agg_table/agg_table.less index acebbef1c8983..49306553cda70 100644 --- a/src/ui/components/agg_table/agg_table.less +++ b/src/ui/components/agg_table/agg_table.less @@ -1,5 +1,4 @@ -@import (reference) "lesshat.less"; -@import (reference) "ui-styles/theme/_variables.less"; +@import (reference) "~ui-styles/variables"; kbn-agg-table, kbn-agg-table-group { @@ -7,12 +6,12 @@ kbn-agg-table-group { } .agg-table { - .display(flex); - .flex(1, 1, auto); - .flex-direction(column); + display: flex; + flex: 1 1 auto; + flex-direction: column; &-paginated-table { - .flex(1, 1, auto); + flex: 1 1 auto; overflow: auto; th i.fa-sort { @@ -21,13 +20,13 @@ kbn-agg-table-group { } &-controls { - .flex(0, 0, auto); - .display(flex); - .align-items(center); + flex: 0 0 auto; + display: flex; + align-items: center; margin: 10px 5px; > paginate-controls { - .flex(1, 0, auto); + flex: 1 0 auto; margin: 0; padding: 0; } diff --git a/src/ui/components/agg_table/agg_table_group.js b/src/ui/components/agg_table/agg_table_group.js index 0de361ab51c8e..58f93cd4f7096 100644 --- a/src/ui/components/agg_table/agg_table_group.js +++ b/src/ui/components/agg_table/agg_table_group.js @@ -7,7 +7,7 @@ define(function (require) { .directive('kbnAggTableGroup', function (compileRecursiveDirective) { return { restrict: 'E', - template: require('text!components/agg_table/agg_table_group.html'), + template: require('components/agg_table/agg_table_group.html'), scope: { group: '=', perPage: '=?' diff --git a/src/ui/components/agg_types/buckets/date_histogram.js b/src/ui/components/agg_types/buckets/date_histogram.js index 33f0ea8c7b822..1c959dbf798fd 100644 --- a/src/ui/components/agg_types/buckets/date_histogram.js +++ b/src/ui/components/agg_types/buckets/date_histogram.js @@ -82,7 +82,7 @@ define(function (require) { }, default: 'auto', options: intervalOptions, - editor: require('text!components/agg_types/controls/interval.html'), + editor: require('components/agg_types/controls/interval.html'), onRequest: function (agg) { setBounds(agg, true); }, diff --git a/src/ui/components/agg_types/buckets/date_range.js b/src/ui/components/agg_types/buckets/date_range.js index e45024c9bf8ef..491a298dcda3f 100644 --- a/src/ui/components/agg_types/buckets/date_range.js +++ b/src/ui/components/agg_types/buckets/date_range.js @@ -40,7 +40,7 @@ define(function (require) { from: 'now-1w/w', to: 'now' }], - editor: require('text!components/agg_types/controls/date_ranges.html') + editor: require('components/agg_types/controls/date_ranges.html') }] }); }; diff --git a/src/ui/components/agg_types/buckets/filters.js b/src/ui/components/agg_types/buckets/filters.js index 5066233309c43..bc85fbaa8d031 100644 --- a/src/ui/components/agg_types/buckets/filters.js +++ b/src/ui/components/agg_types/buckets/filters.js @@ -14,7 +14,7 @@ define(function (require) { params: [ { name: 'filters', - editor: require('text!components/agg_types/controls/filters.html'), + editor: require('components/agg_types/controls/filters.html'), default: [ {input: {}, label: ''} ], write: function (aggConfig, output) { var inFilters = aggConfig.params.filters; diff --git a/src/ui/components/agg_types/buckets/geo_hash.js b/src/ui/components/agg_types/buckets/geo_hash.js index 6f1179a211104..d94658c6a80bc 100644 --- a/src/ui/components/agg_types/buckets/geo_hash.js +++ b/src/ui/components/agg_types/buckets/geo_hash.js @@ -45,7 +45,7 @@ define(function (require) { { name: 'precision', default: defaultPrecision, - editor: require('text!components/agg_types/controls/precision.html'), + editor: require('components/agg_types/controls/precision.html'), controller: function ($scope) { $scope.$watchMulti([ 'agg.params.autoPrecision', diff --git a/src/ui/components/agg_types/buckets/histogram.js b/src/ui/components/agg_types/buckets/histogram.js index ccdf664c5ab68..99335ce38d132 100644 --- a/src/ui/components/agg_types/buckets/histogram.js +++ b/src/ui/components/agg_types/buckets/histogram.js @@ -23,7 +23,7 @@ define(function (require) { { name: 'interval', - editor: require('text!components/agg_types/controls/interval.html'), + editor: require('components/agg_types/controls/interval.html'), write: function (aggConfig, output) { output.params.interval = parseInt(aggConfig.params.interval, 10); } @@ -32,7 +32,7 @@ define(function (require) { { name: 'min_doc_count', default: null, - editor: require('text!components/agg_types/controls/min_doc_count.html'), + editor: require('components/agg_types/controls/min_doc_count.html'), write: function (aggConfig, output) { if (aggConfig.params.min_doc_count) { output.params.min_doc_count = 0; @@ -43,7 +43,7 @@ define(function (require) { { name: 'extended_bounds', default: {}, - editor: require('text!components/agg_types/controls/extended_bounds.html'), + editor: require('components/agg_types/controls/extended_bounds.html'), write: function (aggConfig, output) { var val = aggConfig.params.extended_bounds; diff --git a/src/ui/components/agg_types/buckets/ip_range.js b/src/ui/components/agg_types/buckets/ip_range.js index 80d4f5491d6a4..4dc2f69d6c218 100644 --- a/src/ui/components/agg_types/buckets/ip_range.js +++ b/src/ui/components/agg_types/buckets/ip_range.js @@ -34,7 +34,7 @@ define(function (require) { {mask: '128.0.0.0/2'} ] }, - editor: require('text!components/agg_types/controls/ip_ranges.html'), + editor: require('components/agg_types/controls/ip_ranges.html'), write: function (aggConfig, output) { var ipRangeType = aggConfig.params.ipRangeType; output.params.ranges = aggConfig.params.ranges[ipRangeType]; diff --git a/src/ui/components/agg_types/buckets/range.js b/src/ui/components/agg_types/buckets/range.js index a6433716602e4..0d29797165dc5 100644 --- a/src/ui/components/agg_types/buckets/range.js +++ b/src/ui/components/agg_types/buckets/range.js @@ -24,7 +24,7 @@ define(function (require) { { from: 0, to: 1000 }, { from: 1000, to: 2000 } ], - editor: require('text!components/agg_types/controls/ranges.html'), + editor: require('components/agg_types/controls/ranges.html'), write: function (aggConfig, output) { output.params.ranges = aggConfig.params.ranges; output.params.keyed = true; diff --git a/src/ui/components/agg_types/buckets/significant_terms.js b/src/ui/components/agg_types/buckets/significant_terms.js index 57233333ebfd3..75f55d78a84df 100644 --- a/src/ui/components/agg_types/buckets/significant_terms.js +++ b/src/ui/components/agg_types/buckets/significant_terms.js @@ -18,7 +18,7 @@ define(function (require) { }, { name: 'size', - editor: require('text!components/agg_types/controls/order_and_size.html'), + editor: require('components/agg_types/controls/order_and_size.html'), }, { name: 'exclude', diff --git a/src/ui/components/agg_types/buckets/terms.js b/src/ui/components/agg_types/buckets/terms.js index 237a0ddd6ab42..18ff7edfa1bcb 100644 --- a/src/ui/components/agg_types/buckets/terms.js +++ b/src/ui/components/agg_types/buckets/terms.js @@ -57,7 +57,7 @@ define(function (require) { name: 'orderAgg', type: AggConfig, default: null, - editor: require('text!components/agg_types/controls/order_agg.html'), + editor: require('components/agg_types/controls/order_agg.html'), serialize: function (orderAgg) { return orderAgg.toJSON(); }, @@ -160,7 +160,7 @@ define(function (require) { name: 'order', type: 'optioned', default: 'desc', - editor: require('text!components/agg_types/controls/order_and_size.html'), + editor: require('components/agg_types/controls/order_and_size.html'), options: [ { display: 'Descending', val: 'desc' }, { display: 'Ascending', val: 'asc' } diff --git a/src/ui/components/agg_types/metrics/percentile_ranks.js b/src/ui/components/agg_types/metrics/percentile_ranks.js index eec723c5713e4..9e51c70c00472 100644 --- a/src/ui/components/agg_types/metrics/percentile_ranks.js +++ b/src/ui/components/agg_types/metrics/percentile_ranks.js @@ -6,7 +6,7 @@ define(function (require) { var getResponseAggConfig = Private(require('components/agg_types/metrics/_get_response_agg_config')); var fieldFormats = Private(require('registry/field_formats')); - var valuesEditor = require('text!components/agg_types/controls/percentile_ranks.html'); + var valuesEditor = require('components/agg_types/controls/percentile_ranks.html'); // required by the values editor require('components/number_list/number_list'); diff --git a/src/ui/components/agg_types/metrics/percentiles.js b/src/ui/components/agg_types/metrics/percentiles.js index a79352ae21a49..a88aac039b3d9 100644 --- a/src/ui/components/agg_types/metrics/percentiles.js +++ b/src/ui/components/agg_types/metrics/percentiles.js @@ -7,7 +7,7 @@ define(function (require) { var ordinalSuffix = require('utils/ordinal_suffix'); var fieldFormats = Private(require('registry/field_formats')); - var percentsEditor = require('text!components/agg_types/controls/percentiles.html'); + var percentsEditor = require('components/agg_types/controls/percentiles.html'); // required by the percentiles editor require('components/number_list/number_list'); diff --git a/src/ui/components/agg_types/param_types/field.js b/src/ui/components/agg_types/param_types/field.js index 0bca4bd87d6ac..6c315b6682c27 100644 --- a/src/ui/components/agg_types/param_types/field.js +++ b/src/ui/components/agg_types/param_types/field.js @@ -2,7 +2,7 @@ define(function (require) { return function FieldAggParamFactory(Private) { var _ = require('lodash'); - var editorHtml = require('text!components/agg_types/controls/field.html'); + var editorHtml = require('components/agg_types/controls/field.html'); var BaseAggParam = Private(require('components/agg_types/param_types/base')); var SavedObjectNotFound = require('errors').SavedObjectNotFound; diff --git a/src/ui/components/agg_types/param_types/raw_json.js b/src/ui/components/agg_types/param_types/raw_json.js index 003a17d0eccb4..c322e73a86a9d 100644 --- a/src/ui/components/agg_types/param_types/raw_json.js +++ b/src/ui/components/agg_types/param_types/raw_json.js @@ -3,7 +3,7 @@ define(function (require) { var _ = require('lodash'); var BaseAggParam = Private(require('components/agg_types/param_types/base')); - var editorHtml = require('text!components/agg_types/controls/raw_json.html'); + var editorHtml = require('components/agg_types/controls/raw_json.html'); _.class(RawJSONAggParam).inherits(BaseAggParam); function RawJSONAggParam(config) { diff --git a/src/ui/components/agg_types/param_types/regex.js b/src/ui/components/agg_types/param_types/regex.js index fa9c5d8b97578..f78f47361aabb 100644 --- a/src/ui/components/agg_types/param_types/regex.js +++ b/src/ui/components/agg_types/param_types/regex.js @@ -3,7 +3,7 @@ define(function (require) { var _ = require('lodash'); var BaseAggParam = Private(require('components/agg_types/param_types/base')); - var editorHtml = require('text!components/agg_types/controls/regular_expression.html'); + var editorHtml = require('components/agg_types/controls/regular_expression.html'); _.class(RegexAggParam).inherits(BaseAggParam); function RegexAggParam(config) { diff --git a/src/ui/components/agg_types/param_types/string.js b/src/ui/components/agg_types/param_types/string.js index d4d129645fd84..1e870d84074a9 100644 --- a/src/ui/components/agg_types/param_types/string.js +++ b/src/ui/components/agg_types/param_types/string.js @@ -2,7 +2,7 @@ define(function (require) { return function FieldAggParamFactory(Private) { var _ = require('lodash'); - var editorHtml = require('text!components/agg_types/controls/string.html'); + var editorHtml = require('components/agg_types/controls/string.html'); var BaseAggParam = Private(require('components/agg_types/param_types/base')); _.class(ScriptAggParam).inherits(BaseAggParam); diff --git a/src/ui/components/clipboard/clipboard.js b/src/ui/components/clipboard/clipboard.js index b394f10e62ae2..87c9f17452708 100644 --- a/src/ui/components/clipboard/clipboard.js +++ b/src/ui/components/clipboard/clipboard.js @@ -4,7 +4,7 @@ define(function (require) { require('ng-clip'); var $ = require('jquery'); - var html = require('text!components/clipboard/clipboard.html'); + var html = require('components/clipboard/clipboard.html'); var module = require('modules').get('kibana', ['ngClipboard']); module diff --git a/src/ui/components/collapsible_sidebar/collapsible_sidebar.js b/src/ui/components/collapsible_sidebar/collapsible_sidebar.js index 48b9a830e979a..7ef31774a259a 100644 --- a/src/ui/components/collapsible_sidebar/collapsible_sidebar.js +++ b/src/ui/components/collapsible_sidebar/collapsible_sidebar.js @@ -1,5 +1,5 @@ define(function (require) { - require('css!components/collapsible_sidebar/collapsible_sidebar.css'); + require('components/collapsible_sidebar/collapsible_sidebar.less'); var _ = require('lodash'); var $ = require('jquery'); diff --git a/src/ui/components/doc_table/components/table_header.js b/src/ui/components/doc_table/components/table_header.js index 6141b34f8daed..20d509845ffc8 100644 --- a/src/ui/components/doc_table/components/table_header.js +++ b/src/ui/components/doc_table/components/table_header.js @@ -5,7 +5,7 @@ define(function (require) { require('filters/short_dots'); module.directive('kbnTableHeader', function (shortDotsFilter) { - var headerHtml = require('text!components/doc_table/components/table_header.html'); + var headerHtml = require('components/doc_table/components/table_header.html'); return { restrict: 'A', scope: { diff --git a/src/ui/components/doc_table/components/table_row.js b/src/ui/components/doc_table/components/table_row.js index 15952844b0038..890a3f164c045 100644 --- a/src/ui/components/doc_table/components/table_row.js +++ b/src/ui/components/doc_table/components/table_row.js @@ -24,10 +24,10 @@ define(function (require) { */ module.directive('kbnTableRow', function ($compile) { var noWhiteSpace = require('utils/no_white_space'); - var openRowHtml = require('text!components/doc_table/components/table_row/open.html'); - var detailsHtml = require('text!components/doc_table/components/table_row/details.html'); - var cellTemplate = _.template(noWhiteSpace(require('text!components/doc_table/components/table_row/cell.html'))); - var truncateByHeightTemplate = _.template(noWhiteSpace(require('text!partials/truncate_by_height.html'))); + var openRowHtml = require('components/doc_table/components/table_row/open.html'); + var detailsHtml = require('components/doc_table/components/table_row/details.html'); + var cellTemplate = _.template(noWhiteSpace(require('components/doc_table/components/table_row/cell.html'))); + var truncateByHeightTemplate = _.template(noWhiteSpace(require('partials/truncate_by_height.html'))); return { restrict: 'A', diff --git a/src/ui/components/doc_table/doc_table.js b/src/ui/components/doc_table/doc_table.js index a5d7fc038deac..ee6ab0a26a7ba 100644 --- a/src/ui/components/doc_table/doc_table.js +++ b/src/ui/components/doc_table/doc_table.js @@ -1,10 +1,10 @@ define(function (require) { var _ = require('lodash'); - var html = require('text!components/doc_table/doc_table.html'); + var html = require('components/doc_table/doc_table.html'); var getSort = require('components/doc_table/lib/get_sort'); - require('css!components/doc_table/doc_table.css'); + require('components/doc_table/doc_table.less'); require('directives/truncated'); require('directives/infinite_scroll'); require('components/doc_table/components/table_header'); diff --git a/src/ui/components/doc_table/doc_table.less b/src/ui/components/doc_table/doc_table.less index 47b6c9554dfe4..6ae980a7fa3ac 100644 --- a/src/ui/components/doc_table/doc_table.less +++ b/src/ui/components/doc_table/doc_table.less @@ -1,11 +1,9 @@ -@import (reference) "ui-styles/_bootstrap.less"; -@import (reference) "ui-styles/theme/_theme.less"; -@import (reference) "lesshat.less"; +@import (reference) "~ui-styles/variables"; doc-table { overflow: auto; margin: 5px; - .flex(1, 1, 100%); + flex: 1 1 100%; .discover-table-datafield { white-space: pre; diff --git a/src/ui/components/doc_viewer/doc_viewer.js b/src/ui/components/doc_viewer/doc_viewer.js index f06837f45f145..7364c7282dd16 100644 --- a/src/ui/components/doc_viewer/doc_viewer.js +++ b/src/ui/components/doc_viewer/doc_viewer.js @@ -3,8 +3,8 @@ define(function (require) { var angular = require('angular'); require('angular-ui-ace'); - var html = require('text!components/doc_viewer/doc_viewer.html'); - require('css!components/doc_viewer/doc_viewer.css'); + var html = require('components/doc_viewer/doc_viewer.html'); + require('components/doc_viewer/doc_viewer.less'); require('modules').get('kibana') .directive('docViewer', function (config, Private) { diff --git a/src/ui/components/doc_viewer/doc_viewer.less b/src/ui/components/doc_viewer/doc_viewer.less index b776758f7cc55..b74887470dc94 100644 --- a/src/ui/components/doc_viewer/doc_viewer.less +++ b/src/ui/components/doc_viewer/doc_viewer.less @@ -1,6 +1,4 @@ -@import (reference) "ui-styles/_bootstrap.less"; -@import (reference) "ui-styles/theme/_theme.less"; -@import (reference) "lesshat.less"; +@import (reference) "~ui-styles/variables"; doc-viewer .doc-viewer { diff --git a/src/ui/components/field_editor/field_editor.js b/src/ui/components/field_editor/field_editor.js index a470b110753e3..515b9a6cc80a5 100644 --- a/src/ui/components/field_editor/field_editor.js +++ b/src/ui/components/field_editor/field_editor.js @@ -8,12 +8,12 @@ define(function (require) { var _ = require('lodash'); var fieldFormats = Private(require('registry/field_formats')); var Field = Private(require('components/index_patterns/_field')); - var scriptingInfo = $sce.trustAsHtml(require('text!components/field_editor/scripting_info.html')); - var scriptingWarning = $sce.trustAsHtml(require('text!components/field_editor/scripting_warning.html')); + var scriptingInfo = $sce.trustAsHtml(require('components/field_editor/scripting_info.html')); + var scriptingWarning = $sce.trustAsHtml(require('components/field_editor/scripting_warning.html')); return { restrict: 'E', - template: require('text!components/field_editor/field_editor.html'), + template: require('components/field_editor/field_editor.html'), scope: { getIndexPattern: '&indexPattern', getField: '&field' diff --git a/src/ui/components/field_format_editor/numeral/numeral.js b/src/ui/components/field_format_editor/numeral/numeral.js index 23cf21acc1ebc..b0c40bbd71cc7 100644 --- a/src/ui/components/field_format_editor/numeral/numeral.js +++ b/src/ui/components/field_format_editor/numeral/numeral.js @@ -6,7 +6,7 @@ define(function (require) { .directive('fieldEditorNumeral', function () { return { restrict: 'E', - template: require('text!components/field_format_editor/numeral/numeral.html') + template: require('components/field_format_editor/numeral/numeral.html') }; }); }); diff --git a/src/ui/components/field_format_editor/pattern/pattern.js b/src/ui/components/field_format_editor/pattern/pattern.js index a30aedb37c1fb..01194fa882c5c 100644 --- a/src/ui/components/field_format_editor/pattern/pattern.js +++ b/src/ui/components/field_format_editor/pattern/pattern.js @@ -6,7 +6,7 @@ define(function (require) { .directive('fieldFormatEditorPattern', function () { return { restrict: 'E', - template: require('text!components/field_format_editor/pattern/pattern.html'), + template: require('components/field_format_editor/pattern/pattern.html'), require: ['ngModel', '^fieldEditor'], scope: true, link: function ($scope, $el, attrs, cntrls) { diff --git a/src/ui/components/field_format_editor/samples/samples.js b/src/ui/components/field_format_editor/samples/samples.js index cdc2227423c25..4560fce3dbfc4 100644 --- a/src/ui/components/field_format_editor/samples/samples.js +++ b/src/ui/components/field_format_editor/samples/samples.js @@ -6,7 +6,7 @@ define(function (require) { .directive('fieldFormatEditorSamples', function ($sce, Promise) { return { restrict: 'E', - template: require('text!components/field_format_editor/samples/samples.html'), + template: require('components/field_format_editor/samples/samples.html'), require: ['?^ngModel', '^fieldEditor'], scope: true, link: function ($scope, $el, attrs, cntrls) { diff --git a/src/ui/components/filter_bar/filter_bar.js b/src/ui/components/filter_bar/filter_bar.js index 42ecd2dac8b86..db1eaf4717d2a 100644 --- a/src/ui/components/filter_bar/filter_bar.js +++ b/src/ui/components/filter_bar/filter_bar.js @@ -1,7 +1,7 @@ define(function (require) { var _ = require('lodash'); var module = require('modules').get('kibana'); - var template = require('text!components/filter_bar/filter_bar.html'); + var template = require('components/filter_bar/filter_bar.html'); var moment = require('moment'); module.directive('filterBar', function (Private, Promise, getAppState) { diff --git a/src/ui/components/filter_bar/filter_bar.less b/src/ui/components/filter_bar/filter_bar.less index a83c075d51e56..e4e27d314d910 100644 --- a/src/ui/components/filter_bar/filter_bar.less +++ b/src/ui/components/filter_bar/filter_bar.less @@ -1,6 +1,4 @@ -@import (reference) "ui-styles/_bootstrap.less"; -@import (reference) "ui-styles/theme/_theme.less"; -@import (reference) "lesshat.less"; +@import (reference) "~ui-styles/variables"; filter-bar .confirm { padding: 8px 10px 4px; diff --git a/src/ui/components/notify/_errors.js b/src/ui/components/notify/_errors.js index 995b55ae51eb0..f5d9ded164fca 100644 --- a/src/ui/components/notify/_errors.js +++ b/src/ui/components/notify/_errors.js @@ -25,47 +25,5 @@ define(function (require) { } errors.KibanaError = KibanaError; - /** - * Map of error text for different error types - * @type {Object} - */ - var requireTypeText = { - timeout: 'a network timeout', - nodefine: 'an invalid module definition', - scripterror: 'a generic script error' - }; - - /** - * ScriptLoadFailure error class for handling requirejs load failures - * @param {String} [msg] - - */ - errors.ScriptLoadFailure = function ScriptLoadFailure(err) { - var explain = requireTypeText[err.requireType] || err.requireType || 'an unknown error'; - - this.stack = err.stack; - var modules = err.requireModules; - if (_.isArray(modules) && modules.length > 0) { - modules = modules.map(JSON.stringify); - - if (modules.length > 1) { - modules = modules.slice(0, -1).join(', ') + ' and ' + modules.slice(-1)[0]; - } else { - modules = modules[0]; - } - - modules += ' modules'; - } - - if (!modules || !modules.length) { - modules = 'unknown modules'; - } - - - KibanaError.call(this, - 'Unable to load ' + modules + ' because of ' + explain + '.', - errors.ScriptLoadFailure); - }; - _.class(errors.ScriptLoadFailure).inherits(KibanaError); - return errors; -}); \ No newline at end of file +}); diff --git a/src/ui/components/notify/_notifier.js b/src/ui/components/notify/_notifier.js index e8c7ed00658ad..64a612d920a99 100644 --- a/src/ui/components/notify/_notifier.js +++ b/src/ui/components/notify/_notifier.js @@ -8,7 +8,7 @@ define(function (require) { var clearTO = clearTimeout; var consoleGroups = ('group' in window.console) && ('groupCollapsed' in window.console) && ('groupEnd' in window.console); - var fatalSplashScreen = require('text!components/notify/partials/fatal_splash_screen.html'); + var fatalSplashScreen = require('components/notify/partials/fatal_splash_screen.html'); var log = _.noop; if (typeof KIBANA_DIST === 'undefined') { @@ -25,7 +25,7 @@ define(function (require) { return function (vars) { return (compiled || (compiled = _.template(tmpl)))(vars); }; - }(require('text!components/notify/partials/fatal.html'))); + }(require('components/notify/partials/fatal.html'))); function now() { if (window.performance && window.performance.now) { diff --git a/src/ui/components/notify/directives.js b/src/ui/components/notify/directives.js index 4c9d9a59d0d65..bad69eeb9791f 100644 --- a/src/ui/components/notify/directives.js +++ b/src/ui/components/notify/directives.js @@ -9,7 +9,7 @@ define(function (require) { list: '=list' }, replace: true, - template: require('text!components/notify/partials/toaster.html') + template: require('components/notify/partials/toaster.html') }; }); }); diff --git a/src/ui/components/notify/notify.js b/src/ui/components/notify/notify.js index 201adf7bcafbf..bf5ab4ba68ff7 100644 --- a/src/ui/components/notify/notify.js +++ b/src/ui/components/notify/notify.js @@ -35,13 +35,6 @@ define(function (require) { // }; // }); - /** - * Global Require.js exception handler - */ - window.requirejs.onError = function (err) { - rootNotifier.fatal(new errors.ScriptLoadFailure(err)); - }; - window.onerror = function (err, url, line) { rootNotifier.fatal(new Error(err + ' (' + url + ':' + line + ')')); return true; diff --git a/src/ui/components/number_list/number_list.js b/src/ui/components/number_list/number_list.js index e9d779926fb05..9ab8eefead018 100644 --- a/src/ui/components/number_list/number_list.js +++ b/src/ui/components/number_list/number_list.js @@ -8,7 +8,7 @@ define(function (require) { .directive('kbnNumberList', function () { return { restrict: 'E', - template: require('text!components/number_list/number_list.html'), + template: require('components/number_list/number_list.html'), controllerAs: 'numberListCntr', require: 'ngModel', controller: function ($scope, $attrs, $parse) { diff --git a/src/ui/components/paginated_table/paginated_table.js b/src/ui/components/paginated_table/paginated_table.js index c6705e791574b..e52c820149678 100644 --- a/src/ui/components/paginated_table/paginated_table.js +++ b/src/ui/components/paginated_table/paginated_table.js @@ -7,7 +7,7 @@ define(function (require) { return { restrict: 'E', - template: require('text!components/paginated_table/paginated_table.html'), + template: require('components/paginated_table/paginated_table.html'), transclude: true, scope: { rows: '=', diff --git a/src/ui/components/stringify/types/Date.js b/src/ui/components/stringify/types/Date.js index 63e219a6b24d0..f7a55b52a3bad 100644 --- a/src/ui/components/stringify/types/Date.js +++ b/src/ui/components/stringify/types/Date.js @@ -21,7 +21,7 @@ define(function (require) { }); DateTime.editor = { - template: require('text!components/stringify/editors/date.html'), + template: require('components/stringify/editors/date.html'), controllerAs: 'cntrl', controller: function ($interval, $scope) { var self = this; diff --git a/src/ui/components/stringify/types/Source.js b/src/ui/components/stringify/types/Source.js index 3fd38fb9f0c43..e16e99b80c59c 100644 --- a/src/ui/components/stringify/types/Source.js +++ b/src/ui/components/stringify/types/Source.js @@ -3,7 +3,7 @@ define(function (require) { var _ = require('lodash'); var FieldFormat = Private(require('components/index_patterns/_field_format/FieldFormat')); var noWhiteSpace = require('utils/no_white_space'); - var template = _.template(noWhiteSpace(require('text!components/stringify/types/_source.html'))); + var template = _.template(noWhiteSpace(require('components/stringify/types/_source.html'))); var angular = require('angular'); _.class(Source).inherits(FieldFormat); diff --git a/src/ui/components/stringify/types/String.js b/src/ui/components/stringify/types/String.js index c547ba7e15bdc..e1221561a79ab 100644 --- a/src/ui/components/stringify/types/String.js +++ b/src/ui/components/stringify/types/String.js @@ -30,7 +30,7 @@ define(function (require) { transform: false }; - _String.editor = require('text!components/stringify/editors/string.html'); + _String.editor = require('components/stringify/editors/string.html'); _String.transformOpts = [ { id: false, name: '- none -' }, diff --git a/src/ui/components/stringify/types/Url.js b/src/ui/components/stringify/types/Url.js index 2ef788142948d..44fa903f157c2 100644 --- a/src/ui/components/stringify/types/Url.js +++ b/src/ui/components/stringify/types/Url.js @@ -25,7 +25,7 @@ define(function (require) { ]; Url.editor = { - template: require('text!components/stringify/editors/url.html'), + template: require('components/stringify/editors/url.html'), controllerAs: 'url', controller: function ($scope) { var iconPattern = 'components/stringify/icons/{{value}}.png'; diff --git a/src/ui/components/stringify/types/_Numeral.js b/src/ui/components/stringify/types/_Numeral.js index 30579b4d1352c..295f8c3d50df5 100644 --- a/src/ui/components/stringify/types/_Numeral.js +++ b/src/ui/components/stringify/types/_Numeral.js @@ -37,7 +37,7 @@ define(function (require) { }); Class.editor = { - template: opts.editorTemplate || require('text!components/field_format_editor/numeral/numeral.html'), + template: opts.editorTemplate || require('components/field_format_editor/numeral/numeral.html'), controllerAs: 'cntrl', controller: opts.controller || function () { this.sampleInputs = opts.sampleInputs; diff --git a/src/ui/components/style_compile/style_compile.js b/src/ui/components/style_compile/style_compile.js index 5ce60aca5acc1..64f3dc0d5f522 100644 --- a/src/ui/components/style_compile/style_compile.js +++ b/src/ui/components/style_compile/style_compile.js @@ -7,7 +7,7 @@ define(function (require) { .get('kibana') .run(function ($rootScope, $compile, config) { var truncateGradientHeight = 15; - var template = _.template(require('text!components/style_compile/style_compile.css.tmpl')); + var template = _.template(require('raw!components/style_compile/style_compile.css.tmpl')); var locals = {}; $rootScope.$on('$destroy', function () { @@ -29,4 +29,4 @@ define(function (require) { $style.html(template(locals)); }); }); -}); \ No newline at end of file +}); diff --git a/src/ui/components/timepicker/timepicker.js b/src/ui/components/timepicker/timepicker.js index cb7552f6075b1..bfb70cce5f90b 100644 --- a/src/ui/components/timepicker/timepicker.js +++ b/src/ui/components/timepicker/timepicker.js @@ -1,5 +1,5 @@ define(function (require) { - var html = require('text!components/timepicker/timepicker.html'); + var html = require('components/timepicker/timepicker.html'); var module = require('modules').get('components/timepicker'); var _ = require('lodash'); var datemath = require('utils/datemath'); diff --git a/src/ui/components/tooltip/tooltip.js b/src/ui/components/tooltip/tooltip.js index c4c4ef1ef45a1..ba0669f04980b 100644 --- a/src/ui/components/tooltip/tooltip.js +++ b/src/ui/components/tooltip/tooltip.js @@ -1,5 +1,5 @@ define(function (require) { - var html = require('text!components/tooltip/tooltip.html'); + var html = require('components/tooltip/tooltip.html'); require('components/ui-bootstrap/index') .config(function ($tooltipProvider) { diff --git a/src/ui/components/typeahead/_items.js b/src/ui/components/typeahead/_items.js index 5e59094ba7bcc..0e6dcfeb2520f 100644 --- a/src/ui/components/typeahead/_items.js +++ b/src/ui/components/typeahead/_items.js @@ -1,7 +1,7 @@ define(function (require) { var _ = require('lodash'); var typeahead = require('modules').get('kibana/typeahead'); - var listTemplate = require('text!components/typeahead/partials/typeahead-items.html'); + var listTemplate = require('components/typeahead/partials/typeahead-items.html'); require('components/notify/directives'); diff --git a/src/ui/components/typeahead/typeahead.js b/src/ui/components/typeahead/typeahead.js index 76468df545ed9..d15a2be7098da 100644 --- a/src/ui/components/typeahead/typeahead.js +++ b/src/ui/components/typeahead/typeahead.js @@ -2,7 +2,7 @@ define(function (require) { var _ = require('lodash'); var typeahead = require('modules').get('kibana/typeahead'); - require('css!components/typeahead/typeahead.css'); + require('components/typeahead/typeahead.less'); require('components/typeahead/_input'); require('components/typeahead/_items'); diff --git a/src/ui/components/typeahead/typeahead.less b/src/ui/components/typeahead/typeahead.less index eff76e35b3801..1769412e5f4e7 100644 --- a/src/ui/components/typeahead/typeahead.less +++ b/src/ui/components/typeahead/typeahead.less @@ -1,6 +1,5 @@ -@import (reference) "ui-styles/_bootstrap.less"; -@import (reference) "ui-styles/theme/_theme.less"; -@import (reference) "ui-styles/_variables.less"; +@import (reference) "~ui-styles/variables"; +@import (reference) "~ui-styles/mixins"; .typeahead { position: relative; diff --git a/src/ui/components/vis/Schemas.js b/src/ui/components/vis/Schemas.js index e8ad857d725ec..e189b21cb0fef 100644 --- a/src/ui/components/vis/Schemas.js +++ b/src/ui/components/vis/Schemas.js @@ -18,9 +18,9 @@ define(function (require) { default: true } ]; - schema.editor = require('text!plugins/kbn_vislib_vis_types/controls/rows_or_columns.html'); + schema.editor = require('plugins/kbn_vislib_vis_types/controls/rows_or_columns.html'); } else if (schema.name === 'radius') { - schema.editor = require('text!plugins/kbn_vislib_vis_types/controls/radius_ratio_option.html'); + schema.editor = require('plugins/kbn_vislib_vis_types/controls/radius_ratio_option.html'); } _.defaults(schema, { diff --git a/src/ui/components/vislib/components/tooltip/tooltip.js b/src/ui/components/vislib/components/tooltip/tooltip.js index b683b9e2bd5a9..d984a6edc9baa 100644 --- a/src/ui/components/vislib/components/tooltip/tooltip.js +++ b/src/ui/components/vislib/components/tooltip/tooltip.js @@ -6,7 +6,7 @@ define(function (require) { var allContents = []; - require('css!components/vislib/styles/main'); + require('components/vislib/styles/main.less'); /** * Add tooltip and listeners to visualization elements diff --git a/src/ui/components/vislib/lib/legend.js b/src/ui/components/vislib/lib/legend.js index 8e374e3aef02b..67350230e39b7 100644 --- a/src/ui/components/vislib/lib/legend.js +++ b/src/ui/components/vislib/lib/legend.js @@ -1,10 +1,10 @@ define(function (require) { return function LegendFactory(d3) { var _ = require('lodash'); - var legendHeaderTemplate = _.template(require('text!components/vislib/partials/legend_header.html')); + var legendHeaderTemplate = _.template(require('components/vislib/partials/legend_header.html')); var dataLabel = require('components/vislib/lib/_data_label'); - require('css!components/vislib/styles/main'); + require('components/vislib/styles/main.less'); /** * Appends legend to the visualization diff --git a/src/ui/components/vislib/styles/_alerts.less b/src/ui/components/vislib/styles/_alerts.less index be177499b406e..c11a263cc9f12 100644 --- a/src/ui/components/vislib/styles/_alerts.less +++ b/src/ui/components/vislib/styles/_alerts.less @@ -21,7 +21,7 @@ color: white; border-radius: @alert-border-radius; border: 1px solid white; - .display(flex); + display: flex; &-success { .alert-variant(fade(@alert-success-bg, 75%); @alert-success-border; @alert-success-text); @@ -40,13 +40,13 @@ &-icon { margin: 0; padding: 0 10px; - .flex(0, 0, auto); - .align-self(center); + flex: 0 0 auto; + align-self: center; } &-text { - .flex(1, 1, auto); + flex: 1 1 auto; margin: 0; padding: 0; } -} \ No newline at end of file +} diff --git a/src/ui/components/vislib/styles/_error.less b/src/ui/components/vislib/styles/_error.less index abc7227d1acd0..cac25a20142eb 100644 --- a/src/ui/components/vislib/styles/_error.less +++ b/src/ui/components/vislib/styles/_error.less @@ -1,5 +1,5 @@ .error { - .flex(1 1 100%); + flex: 1 1 100%; text-align: center; p { diff --git a/src/ui/components/vislib/styles/_layout.less b/src/ui/components/vislib/styles/_layout.less index 7e428891964e9..383f7d4705ea8 100644 --- a/src/ui/components/vislib/styles/_layout.less +++ b/src/ui/components/vislib/styles/_layout.less @@ -1,14 +1,14 @@ .visualize-chart { - .display(flex); - .flex(1 1 100%); + display: flex; + flex: 1 1 100%; min-height: 0; min-width: 0; } .vis-wrapper { - .display(flex); - .flex(1 1 100%); - .flex-direction(row); + display: flex; + flex: 1 1 100%; + flex-direction: row; // margin: 10px 0 0 6px; min-height: 0; min-width: 0; @@ -17,16 +17,16 @@ /* YAxis logic */ .y-axis-col-wrapper { - .display(flex); - .flex-direction(column); + display: flex; + flex-direction: column; min-height: 0; min-width: 0; } .y-axis-col { - .display(flex); - .flex-direction(row); - .flex(1 0 36px); + display: flex; + flex-direction: row; + flex: 1 0 36px; min-height: 0; min-width: 0; } @@ -36,14 +36,14 @@ } .y-axis-div-wrapper { - .display(flex); - .flex-direction(column); + display: flex; + flex-direction: column; min-height: 20px; min-width: 0; } .y-axis-div { - .flex(1 1 25px); + flex: 1 1 25px; min-width: 14px; min-height: 14px; } @@ -54,8 +54,8 @@ } .y-axis-chart-title { - .display(flex); - .flex-direction(column); + display: flex; + flex-direction: column; min-height: 14px; min-width: 0; width: 14px; @@ -68,7 +68,7 @@ } .chart-title { - .flex(1 1 100%); + flex: 1 1 100%; min-height: 14px; min-width: 14px; } @@ -79,17 +79,17 @@ } .vis-col-wrapper { - .display(flex); - .flex(1 0 20px); - .flex-direction(column); + display: flex; + flex: 1 0 20px; + flex-direction: column; min-height: 0; min-width: 0; margin-right: 8px; } .chart-wrapper { - .display(flex); - .flex(1 0 20px); + display: flex; + flex: 1 0 20px; overflow: visible; margin: 0; min-height: 0; @@ -97,23 +97,23 @@ } .chart-wrapper-column { - .display(flex); - .flex(1 0 20px); - .flex-direction(row); + display: flex; + flex: 1 0 20px; + flex-direction: row; min-height: 0; min-width: 0; } .chart-wrapper-row { - .display(flex); - .flex-direction(column); - .flex(1 1 100%); + display: flex; + flex-direction: column; + flex: 1 1 100%; min-height: 0; min-width: 0; } .chart { - .flex(1 1 100%); + flex: 1 1 100%; min-height: 0; min-width: 0; @@ -125,35 +125,35 @@ } .chart-row { - .flex(1 1 auto); + flex: 1 1 auto; min-height: 0; min-width: 0; } .chart-column { - .flex(1 1 auto); + flex: 1 1 auto; min-height: 0; min-width: 0; } .x-axis-wrapper { - .display(flex); - .flex-direction(column); + display: flex; + flex-direction: column; min-height: 45px; min-width: 0; overflow: visible; } .x-axis-div-wrapper { - .display(flex); - .flex-direction(row); + display: flex; + flex-direction: row; min-height: 20px; min-width: 0; } .x-axis-chart-title { - .display(flex); - .flex-direction(row); + display: flex; + flex-direction: row; min-height: 15px; max-height: 15px; min-width: 20px; diff --git a/src/ui/components/vislib/styles/_legend.less b/src/ui/components/vislib/styles/_legend.less index 686472270215e..af136a381b04f 100644 --- a/src/ui/components/vislib/styles/_legend.less +++ b/src/ui/components/vislib/styles/_legend.less @@ -1,3 +1,5 @@ +@import "~ui-styles/mixins"; + .legend-col-wrapper { .flex-parent(0, 0, auto); z-index: 10; @@ -24,7 +26,7 @@ } .legend-ul { - .flex(1, 1, 1px); + flex: 1 1 1px; overflow-x: hidden; overflow-y: auto; diff --git a/src/ui/components/vislib/styles/_tilemap.less b/src/ui/components/vislib/styles/_tilemap.less index 9b9424aa8f540..dc3b6c79095dc 100644 --- a/src/ui/components/vislib/styles/_tilemap.less +++ b/src/ui/components/vislib/styles/_tilemap.less @@ -152,9 +152,9 @@ /* filter to desaturate mapquest tiles */ img.leaflet-tile { - .filter(brightness(1.03) grayscale(0.83) contrast(1.07)); + filter: brightness(1.03) grayscale(0.83) contrast(1.07); } img.leaflet-tile.filters-off { - .filter(none); + filter: none; } diff --git a/src/ui/components/vislib/styles/_tooltip.less b/src/ui/components/vislib/styles/_tooltip.less index 9050a66a8073e..8afe372b0bb19 100644 --- a/src/ui/components/vislib/styles/_tooltip.less +++ b/src/ui/components/vislib/styles/_tooltip.less @@ -53,20 +53,20 @@ .vis-tooltip-header { margin: 0 0 @tooltip-space 0; padding: @tooltip-space-tight @tooltip-space; - .display(flex); - .align-items(center); + display: flex; + align-items: center; &:last-child { margin-bottom: 0; } &-icon { - .flex(0, 0, auto); + flex: 0 0 auto; padding-right: @tooltip-space; } &-text { - .flex(1, 1, 200px); + flex: 1 1 200px; } + * { @@ -79,4 +79,4 @@ position: fixed; top: -500px; left: -500px; -} \ No newline at end of file +} diff --git a/src/ui/components/vislib/styles/main.less b/src/ui/components/vislib/styles/main.less index 3b388121c04e9..4283a91cafd37 100644 --- a/src/ui/components/vislib/styles/main.less +++ b/src/ui/components/vislib/styles/main.less @@ -1,10 +1,9 @@ -@import (reference) "ui-styles/main.less"; -@import (reference) "lesshat.less"; +@import (reference) "~ui-styles/variables"; -@import "_error"; -@import "_layout"; -@import "_legend"; -@import "_svg"; -@import "_tooltip"; -@import "_tilemap"; -@import "_alerts"; +@import "./_error"; +@import "./_layout"; +@import "./_legend"; +@import "./_svg"; +@import "./_tooltip"; +@import "./_tilemap"; +@import "./_alerts"; diff --git a/src/ui/components/vislib/vis.js b/src/ui/components/vislib/vis.js index 009afbfd7a316..9af4fc503d630 100644 --- a/src/ui/components/vislib/vis.js +++ b/src/ui/components/vislib/vis.js @@ -7,7 +7,7 @@ define(function (require) { var handlerTypes = Private(require('components/vislib/lib/handler/handler_types')); var chartTypes = Private(require('components/vislib/visualizations/vis_types')); var errors = require('errors'); - require('css!components/vislib/styles/main.css'); + require('components/vislib/styles/main.less'); /** * Creates the visualizations. diff --git a/src/ui/components/vislib/visualizations/_point_series_chart.js b/src/ui/components/vislib/visualizations/_point_series_chart.js index b5e8f8474697b..78eb0edf4a8bc 100644 --- a/src/ui/components/vislib/visualizations/_point_series_chart.js +++ b/src/ui/components/vislib/visualizations/_point_series_chart.js @@ -4,7 +4,7 @@ define(function (require) { var Chart = Private(require('components/vislib/visualizations/_chart')); var Tooltip = Private(require('components/vislib/components/tooltip/tooltip')); - var touchdownTmpl = _.template(require('text!components/vislib/partials/touchdown.tmpl.html')); + var touchdownTmpl = _.template(require('components/vislib/partials/touchdown.tmpl.html')); _.class(PointSeriesChart).inherits(Chart); function PointSeriesChart(handler, chartEl, chartData) { diff --git a/src/ui/components/vislib/visualizations/area_chart.js b/src/ui/components/vislib/visualizations/area_chart.js index f41e9fc71c582..9195e88205274 100644 --- a/src/ui/components/vislib/visualizations/area_chart.js +++ b/src/ui/components/vislib/visualizations/area_chart.js @@ -6,7 +6,7 @@ define(function (require) { var PointSeriesChart = Private(require('components/vislib/visualizations/_point_series_chart')); var TimeMarker = Private(require('components/vislib/visualizations/time_marker')); var errors = require('errors'); - require('css!components/vislib/styles/main'); + require('components/vislib/styles/main.less'); /** * Area chart visualization diff --git a/src/ui/components/vislib/visualizations/column_chart.js b/src/ui/components/vislib/visualizations/column_chart.js index 59a71fb605ebf..35b7d5ac8ad63 100644 --- a/src/ui/components/vislib/visualizations/column_chart.js +++ b/src/ui/components/vislib/visualizations/column_chart.js @@ -9,7 +9,7 @@ define(function (require) { var PointSeriesChart = Private(require('components/vislib/visualizations/_point_series_chart')); var TimeMarker = Private(require('components/vislib/visualizations/time_marker')); var errors = require('errors'); - require('css!components/vislib/styles/main'); + require('components/vislib/styles/main.less'); /** * Vertical Bar Chart Visualization: renders vertical and/or stacked bars diff --git a/src/ui/components/vislib/visualizations/line_chart.js b/src/ui/components/vislib/visualizations/line_chart.js index e3320c47f8f4d..fd8798463c91b 100644 --- a/src/ui/components/vislib/visualizations/line_chart.js +++ b/src/ui/components/vislib/visualizations/line_chart.js @@ -6,7 +6,7 @@ define(function (require) { var PointSeriesChart = Private(require('components/vislib/visualizations/_point_series_chart')); var TimeMarker = Private(require('components/vislib/visualizations/time_marker')); - require('css!components/vislib/styles/main'); + require('components/vislib/styles/main.less'); /** * Line Chart Visualization diff --git a/src/ui/components/vislib/visualizations/pie_chart.js b/src/ui/components/vislib/visualizations/pie_chart.js index ce4ff70672dc6..56d2712a76623 100644 --- a/src/ui/components/vislib/visualizations/pie_chart.js +++ b/src/ui/components/vislib/visualizations/pie_chart.js @@ -5,7 +5,7 @@ define(function (require) { var Chart = Private(require('components/vislib/visualizations/_chart')); var errors = require('errors'); - require('css!components/vislib/styles/main'); + require('components/vislib/styles/main.less'); /** * Pie Chart Visualization diff --git a/src/ui/components/vislib/visualizations/tile_map.js b/src/ui/components/vislib/visualizations/tile_map.js index 34b13baa79c02..173b959125549 100644 --- a/src/ui/components/vislib/visualizations/tile_map.js +++ b/src/ui/components/vislib/visualizations/tile_map.js @@ -5,7 +5,7 @@ define(function (require) { var L = require('leaflet'); require('leaflet-heat'); require('leaflet-draw'); - require('css!components/vislib/styles/main'); + require('components/vislib/styles/main.less'); var Chart = Private(require('components/vislib/visualizations/_chart')); var defaultMapZoom = 2; diff --git a/src/ui/components/visualize/spy/_req_resp_stats.js b/src/ui/components/visualize/spy/_req_resp_stats.js index 27ab6c994e2f5..da27582a59cc8 100644 --- a/src/ui/components/visualize/spy/_req_resp_stats.js +++ b/src/ui/components/visualize/spy/_req_resp_stats.js @@ -1,6 +1,6 @@ define(function (require) { var _ = require('lodash'); - var reqRespStatsHTML = require('text!components/visualize/spy/_req_resp_stats.html'); + var reqRespStatsHTML = require('components/visualize/spy/_req_resp_stats.html'); var linkReqRespStats = function ($scope, config) { $scope.$bind('req', 'searchSource.history[searchSource.history.length - 1]'); diff --git a/src/ui/components/visualize/spy/_table.js b/src/ui/components/visualize/spy/_table.js index 601ec7afaf23d..33a9b08b266ee 100644 --- a/src/ui/components/visualize/spy/_table.js +++ b/src/ui/components/visualize/spy/_table.js @@ -12,7 +12,7 @@ define(function (require) { name: 'table', display: 'Table', order: 1, - template: require('text!components/visualize/spy/_table.html'), + template: require('components/visualize/spy/_table.html'), link: function tableLinkFn($scope, $el) { $rootScope.$watchMulti.call($scope, [ 'vis', diff --git a/src/ui/components/visualize/spy/spy.js b/src/ui/components/visualize/spy/spy.js index f8f9375b507f8..76e3bc0db7604 100644 --- a/src/ui/components/visualize/spy/spy.js +++ b/src/ui/components/visualize/spy/spy.js @@ -13,7 +13,7 @@ define(function (require) { return { restrict: 'E', - template: require('text!components/visualize/spy/_spy.html'), + template: require('components/visualize/spy/_spy.html'), link: function ($scope, $el) { var $container = $el.find('.visualize-spy-container'); var fullPageSpy = false; diff --git a/src/ui/components/visualize/visualize.js b/src/ui/components/visualize/visualize.js index 187d017879da2..54b5e40016426 100644 --- a/src/ui/components/visualize/visualize.js +++ b/src/ui/components/visualize/visualize.js @@ -4,7 +4,7 @@ define(function (require) { .directive('visualize', function (Notifier, SavedVis, indexPatterns, Private) { require('components/visualize/spy/spy'); - require('css!components/visualize/visualize.css'); + require('components/visualize/visualize.less'); var $ = require('jquery'); var _ = require('lodash'); var visTypes = Private(require('registry/vis_types')); @@ -21,7 +21,7 @@ define(function (require) { esResp: '=?', searchSource: '=?' }, - template: require('text!components/visualize/visualize.html'), + template: require('components/visualize/visualize.html'), link: function ($scope, $el, attr) { var chart; // set in "vis" watcher var minVisChartHeight = 180; diff --git a/src/ui/components/visualize/visualize.less b/src/ui/components/visualize/visualize.less index 20d4147e84e13..65e2767752d59 100644 --- a/src/ui/components/visualize/visualize.less +++ b/src/ui/components/visualize/visualize.less @@ -1,11 +1,8 @@ -@import (reference) "ui-styles/_bootstrap.less"; -@import (reference) "ui-styles/theme/_theme.less"; -@import (reference) "ui-styles/_variables.less"; -@import (reference) "lesshat.less"; +@import (reference) "~ui-styles/variables"; visualize { - .display(flex); - .flex-direction(column); + display: flex; + flex-direction: column; height: 100%; width: 100%; overflow: auto; @@ -16,7 +13,7 @@ visualize { } .visualize-chart { - .flex(1 1 auto); + flex: 1 1 auto; overflow: auto; &.spy-visible { @@ -43,12 +40,12 @@ visualize { } .visualize-error { - .display(flex); - .align-items(center); - .justify-content(center); - .top { .align-self(flext-start); } + display: flex; + align-items: center; + justify-content: center; + .top { align-self: flext-start; } .item { } - .bottom { .align-self(flext-end); } + .bottom { align-self: flext-end; } } @@ -58,11 +55,11 @@ ul.visualizations .media-body { visualize-spy { // this element should flex - .flex(0, 0, auto); + flex: 0 0 auto; // it's children should also flex vertically - .flex-direction(column); - .display(flex); + flex-direction: column; + display: flex; overflow: auto; @@ -71,12 +68,12 @@ visualize-spy { } &.only { - .flex(1, 1, auto); + flex: 1 1 auto; padding-top: 0px; } .visualize-show-spy { - .flex(0, 0, auto); + flex: 0 0 auto; border-top: 1px solid #ecf0f1; margin-bottom: 3px; @@ -109,10 +106,10 @@ visualize-spy { } .visualize-spy-container { - .flex(1, 1, auto); + flex: 1 1 auto; - .display(flex); - .flex-direction(column); + display: flex; + flex-direction: column; height: 482px; overflow-y: auto; @@ -122,12 +119,12 @@ visualize-spy { } header + * { - .flex(1, 1, auto); + flex: 1 1 auto; overflow: auto; } > .alert { - .flex(0, 0, auto); + flex: 0 0 auto; } tr > td { @@ -140,7 +137,7 @@ visualize-spy { } .visualize-spy-nav { - .flex(0, 0, auto); + flex: 0 0 auto; a.btn { margin: @padding-small-vertical @padding-small-vertical; diff --git a/src/ui/directives/info.js b/src/ui/directives/info.js index 7ce9e2213a373..a3fab5b8d3ebf 100644 --- a/src/ui/directives/info.js +++ b/src/ui/directives/info.js @@ -1,5 +1,5 @@ define(function (require) { - var html = require('text!partials/info.html'); + var html = require('partials/info.html'); require('modules') .get('kibana') diff --git a/src/ui/directives/paginate.js b/src/ui/directives/paginate.js index 86fc408f51486..49abd303a1fd9 100644 --- a/src/ui/directives/paginate.js +++ b/src/ui/directives/paginate.js @@ -190,7 +190,7 @@ define(function (require) { // this directive is automatically added by paginate if not found within it's $el return { restrict: 'E', - template: require('text!partials/paginate_controls.html') + template: require('partials/paginate_controls.html') }; }); diff --git a/src/ui/directives/saved_object_finder.js b/src/ui/directives/saved_object_finder.js index 46fb52e957b0d..a431a67781d2e 100644 --- a/src/ui/directives/saved_object_finder.js +++ b/src/ui/directives/saved_object_finder.js @@ -31,7 +31,7 @@ define(function (require) { // optional on-choose attr, sets the userOnChoose in our scope userOnChoose: '=?onChoose' }, - template: require('text!partials/saved_object_finder.html'), + template: require('partials/saved_object_finder.html'), link: function ($scope, $el) { // the text input element var $input = $el.find('input[ng-model=filter]'); diff --git a/src/ui/ui-styles/theme/elk.ico b/src/ui/images/elk.ico similarity index 100% rename from src/ui/ui-styles/theme/elk.ico rename to src/ui/images/elk.ico diff --git a/src/ui/meta-modules/elasticsearch.js b/src/ui/meta-modules/elasticsearch.js new file mode 100644 index 0000000000000..7eee5d7c21674 --- /dev/null +++ b/src/ui/meta-modules/elasticsearch.js @@ -0,0 +1,4 @@ +define(function () { + require('angular'); + return require('elasticsearch-src'); +}); diff --git a/src/ui/require.config.js b/src/ui/require.config.js deleted file mode 100644 index a8d97a549f2c1..0000000000000 --- a/src/ui/require.config.js +++ /dev/null @@ -1,70 +0,0 @@ -require.config({ - baseUrl: '/', - paths: { - // common modules, shortcut for clarity - lodash: 'utils/lodash-mixins/index', - errors: 'components/errors', - chrome: 'components/chrome/chrome', - modules: 'components/modules', - routes: 'components/routes/index', - - // bower_components - 'angular-bindonce': 'bower_components/angular-bindonce/bindonce', - 'angular-bootstrap': 'bower_components/angular-bootstrap/ui-bootstrap-tpls', - 'angular-elastic': 'bower_components/angular-elastic/elastic', - 'angular-route': 'bower_components/angular-route/angular-route', - 'angular-ui-ace': 'bower_components/angular-ui-ace/ui-ace', - ace: 'bower_components/ace-builds/src-noconflict/ace', - 'ace-json': 'bower_components/ace-builds/src-noconflict/mode-json', - angular: 'bower_components/angular/angular', - async: 'bower_components/async/lib/async', - bower_components: 'bower_components', - css: 'bower_components/require-css/css', - d3: 'bower_components/d3/d3', - elasticsearch: 'bower_components/elasticsearch/elasticsearch.angular', - faker: 'bower_components/Faker/faker', - file_saver: 'bower_components/FileSaver/FileSaver', - gridster: 'bower_components/gridster/dist/jquery.gridster', - 'leaflet-heat': 'bower_components/Leaflet.heat/dist/leaflet-heat', - jquery: 'bower_components/jquery/dist/jquery', - leaflet: 'bower_components/leaflet/dist/leaflet', - 'leaflet-draw': 'bower_components/leaflet-draw/dist/leaflet.draw', - lodash_src: 'bower_components/lodash/lodash', - moment: 'bower_components/moment/moment', - 'ng-clip': 'bower_components/ng-clip/src/ngClip', - text: 'bower_components/requirejs-text/text', - zeroclipboard: 'bower_components/zeroclipboard/dist/ZeroClipboard', - marked: 'bower_components/marked/lib/marked', - numeral: 'bower_components/numeral/numeral' - }, - shim: { - angular: { - deps: ['jquery'], - exports: 'angular' - }, - gridster: ['jquery', 'css!bower_components/gridster/dist/jquery.gridster.css'], - 'angular-route': ['angular'], - 'elasticsearch': ['angular'], - 'angular-bootstrap': ['angular'], - 'angular-bindonce': ['angular'], - 'ace-json': ['ace'], - 'angular-ui-ace': ['angular', 'ace', 'ace-json'], - 'ng-clip': ['angular', 'zeroclipboard'], - 'leaflet-heat': { - deps: ['leaflet'] - }, - file_saver: { - exports: 'saveAs' - }, - 'leaflet-draw': { - deps: ['leaflet', 'css!bower_components/leaflet-draw/dist/leaflet.draw.css'] - }, - leaflet: { - deps: ['css!bower_components/leaflet/dist/leaflet.css'] - }, - marked: { - exports: 'marked' - } - }, - waitSeconds: 60 -}); diff --git a/src/ui/ui-styles/_bootstrap.less b/src/ui/ui-styles/_bootstrap.less deleted file mode 100644 index 93fc2ce58b803..0000000000000 --- a/src/ui/ui-styles/_bootstrap.less +++ /dev/null @@ -1,53 +0,0 @@ -@bs-less-dir: "../bower_components/bootstrap/less"; - -// Core variables and mixins -@import "theme/_variables.less"; - -// Mixins -@import "@{bs-less-dir}/mixins.less"; - -// Reset -@import "@{bs-less-dir}/normalize.less"; -@import "@{bs-less-dir}/print.less"; - -// Core CSS -@import "@{bs-less-dir}/scaffolding.less"; -@import "@{bs-less-dir}/type.less"; -@import "@{bs-less-dir}/code.less"; -@import "@{bs-less-dir}/grid.less"; -@import "@{bs-less-dir}/tables.less"; -@import "@{bs-less-dir}/forms.less"; -@import "@{bs-less-dir}/buttons.less"; - -// Components -@import "@{bs-less-dir}/component-animations.less"; -// @import "@{bs-less-dir}/glyphicons.less"; -@import "@{bs-less-dir}/dropdowns.less"; -@import "@{bs-less-dir}/button-groups.less"; -@import "@{bs-less-dir}/input-groups.less"; -@import "@{bs-less-dir}/navs.less"; -@import "@{bs-less-dir}/navbar.less"; -@import "@{bs-less-dir}/breadcrumbs.less"; -@import "@{bs-less-dir}/pagination.less"; -@import "@{bs-less-dir}/pager.less"; -@import "@{bs-less-dir}/labels.less"; -@import "@{bs-less-dir}/badges.less"; -@import "@{bs-less-dir}/jumbotron.less"; -@import "@{bs-less-dir}/thumbnails.less"; -@import "@{bs-less-dir}/alerts.less"; -@import "@{bs-less-dir}/progress-bars.less"; -@import "@{bs-less-dir}/media.less"; -@import "@{bs-less-dir}/list-group.less"; -@import "@{bs-less-dir}/panels.less"; -@import "@{bs-less-dir}/wells.less"; -@import "@{bs-less-dir}/close.less"; - -// Components w/ JavaScript -@import "@{bs-less-dir}/modals.less"; -@import "@{bs-less-dir}/tooltip.less"; -@import "@{bs-less-dir}/popovers.less"; -@import "@{bs-less-dir}/carousel.less"; - -// Utility classes -@import "@{bs-less-dir}/utilities.less"; -@import "@{bs-less-dir}/responsive-utilities.less"; diff --git a/src/ui/ui-styles/_callout.less b/src/ui/ui-styles/_callout.less deleted file mode 100644 index bd8546f2c29b1..0000000000000 --- a/src/ui/ui-styles/_callout.less +++ /dev/null @@ -1,37 +0,0 @@ -.bs-callout(@color, @bgcolor: lighten(@color, 35%)) { - display: block; - margin: 20px 0; - padding: 15px 30px 15px 15px; - border-left: 5px solid @color; - background-color: @bgcolor; - h1, h2, h3, h4, h5, h6 { - margin-top: 0; - color: @color; - } - p:last-child { - margin-bottom: 0; - } - code, .highlight { - background-color: #fff; - } -} - -.bs-callout-primary { - .bs-callout(@brand-primary, lighten(@brand-primary, 45%)); -} - -.bs-callout-danger { - .bs-callout(@brand-danger); -} - -.bs-callout-warning { - .bs-callout(@brand-warning, lighten(@brand-warning, 30%)); -} - -.bs-callout-info { - .bs-callout(@brand-info); -} - -.bs-callout-success { - .bs-callout(@brand-success); -} \ No newline at end of file diff --git a/src/ui/ui-styles/_font_icons.less b/src/ui/ui-styles/_font_icons.less deleted file mode 100644 index bacde66ac39ca..0000000000000 --- a/src/ui/ui-styles/_font_icons.less +++ /dev/null @@ -1,5 +0,0 @@ -// shims for font-awesome - -// new file icon -.@{fa-css-prefix}-file-new-o:before { content: @fa-var-file-o; } -.@{fa-css-prefix}-file-new-o:after { content: @fa-var-plus; position: relative; margin-left: -1.0em; font-size: 0.5em; } diff --git a/src/ui/ui-styles/_glyphicons.less b/src/ui/ui-styles/_glyphicons.less deleted file mode 100644 index 4fe08e1b41102..0000000000000 --- a/src/ui/ui-styles/_glyphicons.less +++ /dev/null @@ -1,17 +0,0 @@ -// == Fontawesome fills for glyphicons in bootstrap components -.glyphicon { - display: inline-block; - font-family: FontAwesome; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.glyphicon-chevron-left:before { - content: "\f060"; -} -.glyphicon-chevron-right:before { - content: "\f061"; -} \ No newline at end of file diff --git a/src/ui/ui-styles/main.less b/src/ui/ui-styles/base.less similarity index 79% rename from src/ui/ui-styles/main.less rename to src/ui/ui-styles/base.less index ee0a91945db1b..83b7b80d44de8 100644 --- a/src/ui/ui-styles/main.less +++ b/src/ui/ui-styles/base.less @@ -1,37 +1,7 @@ -@import "font-awesome/less/font-awesome.less"; -@import (reference) "lesshat/build/lesshat.less"; - // generic mixins -@import (reference) "./_mixins.less"; - -// Import variable files -@import "./_variables.less"; - -// custom bootstrap build -@import "./_bootstrap.less"; - -// bootstrap modifications -@import "./theme/_theme.less"; - -// call outs -@import "./_callout.less"; - -// font icons -@import "./_font_icons.less"; - -// FontAwesome fills for glyphicons in bootstrap components -@import "./_glyphicons.less"; - -@import "./_spinner.less"; -@import "./_pagination.less"; - -// custom control style -@import "./_input.less"; -@import "./_navbar.less"; -@import "./_sidebar.less"; -@import "./_truncate.less"; -@import "./_control_group.less"; -@import "./_hintbox.less"; +@import (reference) "./mixins"; +@import (reference) "./variables"; +@import (reference) "~bootstrap/less/bootstrap"; html, body { @@ -58,6 +28,7 @@ button { .smallest { font-size: 0.7em !important; } + // Colors available for font awesome icons, these might not look good with normal text .text-color-primary { color: @brand-primary; @@ -88,10 +59,6 @@ code { word-wrap: break-word; } -// alias for alert types - allows class="fa fa-{{alertType}}" -.fa-success:before { content: @fa-var-check; } -.fa-danger:before { content: @fa-var-exclamation-circle; } - ul.navbar-inline li { display: inline; } @@ -131,8 +98,8 @@ ul.navbar-inline li { } .checkbox label { - .display(flex); - .align-items(center); + display: flex; + align-items: center; padding-left: 0; input[type="checkbox"] { @@ -166,28 +133,6 @@ notifications { cursor: pointer; } -//== Config -.config { - .navbar; - .navbar-default; - .navbar-static-top; - border-bottom: 1px solid darken(@body-bg, 10%); - - .config-close { - width: 100%; - background-color: @well-bg; - border-radius: 0; - @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075); - .box-shadow(@shadow); - text-align: center; - } - - .container-fluid { - padding: 10px 10px; - background-color: @body-bg; - } -} - .app-container { > * { position: relative; @@ -204,13 +149,10 @@ notifications { } } -@import "./_table.less"; -@import "./_notify.less"; - //== Nav tweaks .nav-condensed > li > a { - padding-top: 2px; - padding-bottom: 2px; + padding-top: 2px; + padding-bottom: 2px; } .navbar > .container-fluid { @@ -223,23 +165,6 @@ notifications { } } -.list-group-menu { - - .list-group-menu-item { - &.active { - font-weight: bold; - background-color: @well-bg; - } - &:hover { - background-color: @well-bg; - } - li { - list-style: none; - color: @link-color; - } - } -} - .navbtn { .button-variant(@navbar-default-color; @navbar-default-bg; @navbar-default-border); } @@ -358,8 +283,8 @@ saved-object-finder { &-options { .flex-parent(); - .flex-direction(row); - .justify-content(flex-end); + flex-direction: row; + justify-content: flex-end; } } @@ -423,7 +348,7 @@ saved-object-finder { //== clicking disabled buttons should not cause the whole page to get selected button[disabled] { - .user-select(none); + user-select: none; } //== override the disabled cursor that doesn't work everywhere diff --git a/src/ui/ui-styles/callout.less b/src/ui/ui-styles/callout.less new file mode 100644 index 0000000000000..fc2906e97f190 --- /dev/null +++ b/src/ui/ui-styles/callout.less @@ -0,0 +1,39 @@ +@import "~ui-styles/variables"; + +.bs-callout(@color, @bgcolor: lighten(@color, 35%)) { + display: block; + margin: 20px 0; + padding: 15px 30px 15px 15px; + border-left: 5px solid @color; + background-color: @bgcolor; + h1, h2, h3, h4, h5, h6 { + margin-top: 0; + color: @color; + } + p:last-child { + margin-bottom: 0; + } + code, .highlight { + background-color: #fff; + } +} + +.bs-callout-primary { + .bs-callout(@brand-primary, lighten(@brand-primary, 45%)); +} + +.bs-callout-danger { + .bs-callout(@brand-danger); +} + +.bs-callout-warning { + .bs-callout(@brand-warning, lighten(@brand-warning, 30%)); +} + +.bs-callout-info { + .bs-callout(@brand-info); +} + +.bs-callout-success { + .bs-callout(@brand-success); +} diff --git a/src/ui/ui-styles/config.less b/src/ui/ui-styles/config.less new file mode 100644 index 0000000000000..a787fa235fa63 --- /dev/null +++ b/src/ui/ui-styles/config.less @@ -0,0 +1,22 @@ +@import "~ui-styles/theme"; + +.config { + .navbar; + .navbar-default(); + .navbar-static-top; + border-bottom: 1px solid darken(@body-bg, 10%); + + .config-close { + width: 100%; + background-color: @well-bg; + border-radius: 0; + @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075); + .box-shadow(@shadow); + text-align: center; + } + + .container-fluid { + padding: 10px 10px; + background-color: @body-bg; + } +} diff --git a/src/ui/ui-styles/_control_group.less b/src/ui/ui-styles/control_group.less similarity index 81% rename from src/ui/ui-styles/_control_group.less rename to src/ui/ui-styles/control_group.less index aafef1bf31b33..f4e8b51e30d62 100644 --- a/src/ui/ui-styles/_control_group.less +++ b/src/ui/ui-styles/control_group.less @@ -1,9 +1,12 @@ +@import "~ui-styles/variables"; +@import "~ui-styles/mixins"; + .control-group { - .display(flex); - .flex(0, 0, auto); - .flex-direction(row); - .flex-wrap(wrap); - .align-items(stretch); + display: flex; + flex: 0, 0, auto; + flex-direction: row; + flex-wrap: wrap; + align-items: stretch; padding: @padding-base-vertical @padding-base-horizontal; @@ -13,7 +16,7 @@ > * { padding-right: @padding-base-horizontal; - .flex(0, 0, auto); + flex: 0, 0, auto; &:last-child { padding-right: 0; @@ -22,7 +25,7 @@ // the element should take up an even share of available space > .fill { - .flex(1, 1, 1%); + flex: 1, 1, 1%; } button { @@ -60,10 +63,10 @@ .button-group, .inline-form .input-group { margin-bottom: 0px; - .display(flex); + display: flex; > * { - .border-radius(0); + border-radius: 0; } > :first-child { @@ -77,24 +80,24 @@ .inline-form { .flex-parent(); - .display(flex); + display: flex; > .typeahead { .flex-parent(); > .input-group { - .display(flex); - .flex(1, 0, auto); + display: flex; + flex: 1, 0, auto; > * { float: none; height: auto; width: auto; - .flex(0 0 auto); + flex: 0 0 auto; } input[type="text"] { - .flex(1 1 100%); + flex: 1 1 100%; } } } @@ -102,5 +105,5 @@ } .nav-controls .column { - .flex-direction(column); + flex-direction: column; } diff --git a/src/ui/ui-styles/_hintbox.less b/src/ui/ui-styles/hintbox.less similarity index 97% rename from src/ui/ui-styles/_hintbox.less rename to src/ui/ui-styles/hintbox.less index ae40fccc44ea7..cc0a782e4c31b 100644 --- a/src/ui/ui-styles/_hintbox.less +++ b/src/ui/ui-styles/hintbox.less @@ -1,3 +1,5 @@ +@import "~ui-styles/variables"; + @hintbox-background-color: @gray-lighter; @hintbox-spacing-vertical: 10px; @hintbox-spacing-horizontal: 12px; diff --git a/src/ui/ui-styles/_input.less b/src/ui/ui-styles/input.less similarity index 77% rename from src/ui/ui-styles/_input.less rename to src/ui/ui-styles/input.less index a92ebfda5d6e2..04bf7a080d519 100644 --- a/src/ui/ui-styles/_input.less +++ b/src/ui/ui-styles/input.less @@ -1,7 +1,9 @@ +@import "~ui-styles/variables"; + i.input-error { position: absolute; margin-left: -25px; color: @brand-danger; margin-top: 10px; z-index: 5; -} \ No newline at end of file +} diff --git a/src/ui/ui-styles/list-group-menu.less b/src/ui/ui-styles/list-group-menu.less new file mode 100644 index 0000000000000..3aa4574c3ef4c --- /dev/null +++ b/src/ui/ui-styles/list-group-menu.less @@ -0,0 +1,19 @@ +@import "~ui-styles/theme"; + +.list-group-menu { + .list-group-menu-item { + &.active { + font-weight: bold; + background-color: @well-bg; + } + + &:hover { + background-color: @well-bg; + } + + li { + list-style: none; + color: @link-color; + } + } +} diff --git a/src/ui/ui-styles/_mixins.less b/src/ui/ui-styles/mixins.less similarity index 77% rename from src/ui/ui-styles/_mixins.less rename to src/ui/ui-styles/mixins.less index 34bbeea7af33f..dfa8db152a9c1 100644 --- a/src/ui/ui-styles/_mixins.less +++ b/src/ui/ui-styles/mixins.less @@ -1,10 +1,13 @@ +@import "~ui-styles/variables"; +@import (reference) "~bootstrap/less/mixins"; + .flex-parent(@grow: 1, @shrink: 1, @basis: auto) { - .flex(@grow, @shrink, @basis); - .display(flex); - .flex-direction(column); + flex: @grow, @shrink, @basis; + display: flex; + flex-direction: column; > * { - .flex-shrink(0); + flex-shrink: 0; } } @@ -15,7 +18,6 @@ } .nav-active-arrow (@color: @body-bg) { - @media (max-width: @screen-sm-min) { &:before { display: none !important; @@ -35,4 +37,4 @@ width: 0; height: 0; } -} \ No newline at end of file +} diff --git a/src/ui/ui-styles/_navbar.less b/src/ui/ui-styles/navbar.less similarity index 94% rename from src/ui/ui-styles/_navbar.less rename to src/ui/ui-styles/navbar.less index cba09fc3d86ca..16f8651adb4b4 100644 --- a/src/ui/ui-styles/_navbar.less +++ b/src/ui/ui-styles/navbar.less @@ -1,5 +1,7 @@ +@import "./control_group"; + navbar { - .control-group; + .control-group(); max-height: @navbar-collapse-max-height; margin-bottom: @navbar-margin-bottom; @@ -22,7 +24,7 @@ navbar { // the "brand" that is displayed, usually on the left of the navbar > .name { - .align-self(center); + align-self: center; font-size: @font-size-large; .ellipsis(); @@ -76,7 +78,7 @@ navbar { // tablets/phones @media (max-width: @screen-md-min) { > .fill { - .flex(1, 1, @screen-md); + flex: 1, 1, @screen-md; } } diff --git a/src/ui/ui-styles/_notify.less b/src/ui/ui-styles/notify.less similarity index 86% rename from src/ui/ui-styles/_notify.less rename to src/ui/ui-styles/notify.less index 47243f0b1dbb2..6dea1621fba2d 100644 --- a/src/ui/ui-styles/_notify.less +++ b/src/ui/ui-styles/notify.less @@ -1,3 +1,5 @@ +@import "~ui-styles/mixins"; + .toaster-container { visibility: visible; width: 100%; @@ -16,18 +18,18 @@ } .toast { - .display(flex); - .align-items(center); + display: flex; + align-items: center; > * { - .flex(0 0 auto); + flex: 0 0 auto; &:not(:last-child) { margin-right: 4px; } } &-message { - .flex(1 1 auto); + flex: 1 1 auto; .ellipsis(); line-height: normal; } @@ -46,10 +48,10 @@ } &-controls { - .display(flex); + display: flex; button { - .flex(0 0 auto); + flex: 0 0 auto; border: 0; border-radius: 0; padding: 10px 15px; @@ -70,4 +72,4 @@ .alert-danger .badge { background: darken(@alert-danger-bg, 25%); } -} \ No newline at end of file +} diff --git a/src/ui/ui-styles/_pagination.less b/src/ui/ui-styles/pagination.less similarity index 66% rename from src/ui/ui-styles/_pagination.less rename to src/ui/ui-styles/pagination.less index 22440da942dbe..080b427a1ef31 100644 --- a/src/ui/ui-styles/_pagination.less +++ b/src/ui/ui-styles/pagination.less @@ -1,29 +1,31 @@ +@import "~ui-styles/variables"; + paginate { display: block; paginate-controls { - .display(flex); - .align-items(center); + display: flex; + align-items: center; padding: 5px 5px 10px; text-align: center; .pagination-other-pages { - .flex(1, 0, auto); - .display(flex); - .justify-content(center); + flex: 1, 0, auto; + display: flex; + justify-content: center; &-list { - .flex(0, 0, auto); - .display(flex); - .justify-content(center); + flex: 0, 0, auto; + display: flex; + justify-content: center; padding: 0; margin: 0; list-style: none; > li { - .flex(0, 0, auto); - .user-select(none); + flex: 0, 0, auto; + user-select: none; a { text-decoration: none; @@ -43,11 +45,11 @@ paginate { } .pagination-size { - .flex(0, 0, auto); + flex: 0, 0, auto; input[type=number] { width: 3em; } } } -} \ No newline at end of file +} diff --git a/src/ui/ui-styles/_sidebar.less b/src/ui/ui-styles/sidebar.less similarity index 91% rename from src/ui/ui-styles/_sidebar.less rename to src/ui/ui-styles/sidebar.less index c7972cbac006f..ee42e7737794f 100644 --- a/src/ui/ui-styles/_sidebar.less +++ b/src/ui/ui-styles/sidebar.less @@ -1,3 +1,6 @@ +@import (reference) "~ui-styles/variables"; +@import (reference) "~ui-styles/mixins"; + .sidebar-container { padding-left: 0px !important; padding-right: 0px !important; @@ -100,7 +103,7 @@ } &.default { - .btn-default(); + .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border); } } @@ -122,11 +125,11 @@ font-weight: bold; padding: 5px 10px; color: @sidebar-active-color; - .display(flex); - .justify-content(space-between); + display: flex; + justify-content: space-between; > * { - .flex; + flex: 0 1 auto; } } diff --git a/src/ui/ui-styles/_spinner.less b/src/ui/ui-styles/spinner.less similarity index 96% rename from src/ui/ui-styles/_spinner.less rename to src/ui/ui-styles/spinner.less index 1ababd2b76de9..98b09001e5259 100644 --- a/src/ui/ui-styles/_spinner.less +++ b/src/ui/ui-styles/spinner.less @@ -1,3 +1,5 @@ +@import "~ui-styles/variables"; + .spinner { margin: 0px auto 0; white-space: nowrap; @@ -50,4 +52,4 @@ transform: scale(1.0); -webkit-transform: scale(1.0); } -} \ No newline at end of file +} diff --git a/src/ui/ui-styles/_table.less b/src/ui/ui-styles/table.less similarity index 94% rename from src/ui/ui-styles/_table.less rename to src/ui/ui-styles/table.less index 5dfea79362dc5..62854cc66a46c 100644 --- a/src/ui/ui-styles/_table.less +++ b/src/ui/ui-styles/table.less @@ -1,3 +1,5 @@ +@import "~ui-styles/variables"; + kbn-table, .kbn-table, tbody[kbn-rows] { // sub tables should not have a leading border .table .table { diff --git a/src/ui/ui-styles/theme/_theme.less b/src/ui/ui-styles/theme.less similarity index 95% rename from src/ui/ui-styles/theme/_theme.less rename to src/ui/ui-styles/theme.less index a3f3f1a68702e..be86de90266fe 100644 --- a/src/ui/ui-styles/theme/_theme.less +++ b/src/ui/ui-styles/theme.less @@ -4,7 +4,10 @@ //@import url("//fonts.googleapis.com/css?family=Lato:400,700,400italic"); -@import (reference) "../_mixins.less"; +@import (reference) "~ui-styles/theme/bootstrap.less"; +@import (reference) "~ui-styles/theme/font-awesome.less"; +@import (reference) "~ui-styles/mixins"; +@import (reference) "~ui-styles/variables"; // Navbar ===================================================================== @@ -75,7 +78,7 @@ cursor: default; font-size: 1.8em; background-color: @navbar-inverse-brand-bg; - .user-select(none); + user-select: none; } &-nav { diff --git a/src/ui/ui-styles/theme/bootstrap.less b/src/ui/ui-styles/theme/bootstrap.less new file mode 100644 index 0000000000000..cce07ecb4a040 --- /dev/null +++ b/src/ui/ui-styles/theme/bootstrap.less @@ -0,0 +1,32 @@ +@import "~bootstrap/less/mixins.less"; +@import "~bootstrap/less/normalize.less"; +@import "~bootstrap/less/print.less"; +@import "~bootstrap/less/scaffolding.less"; +@import "~bootstrap/less/type.less"; +@import "~bootstrap/less/code.less"; +@import "~bootstrap/less/grid.less"; +@import "~bootstrap/less/tables.less"; +@import "~bootstrap/less/forms.less"; +@import "~bootstrap/less/buttons.less"; +@import "~bootstrap/less/component-animations.less"; +@import "~bootstrap/less/dropdowns.less"; +@import "~bootstrap/less/button-groups.less"; +@import "~bootstrap/less/input-groups.less"; +@import "~bootstrap/less/navs.less"; +@import "~bootstrap/less/navbar.less"; +@import "~bootstrap/less/breadcrumbs.less"; +@import "~bootstrap/less/pagination.less"; +@import "~bootstrap/less/pager.less"; +@import "~bootstrap/less/labels.less"; +@import "~bootstrap/less/badges.less"; +@import "~bootstrap/less/jumbotron.less"; +@import "~bootstrap/less/thumbnails.less"; +@import "~bootstrap/less/alerts.less"; +@import "~bootstrap/less/progress-bars.less"; +@import "~bootstrap/less/media.less"; +@import "~bootstrap/less/list-group.less"; +@import "~bootstrap/less/panels.less"; +@import "~bootstrap/less/wells.less"; +@import "~bootstrap/less/close.less"; +@import "~bootstrap/less/utilities.less"; +@import "~bootstrap/less/responsive-utilities.less"; diff --git a/src/ui/ui-styles/theme/font-awesome.less b/src/ui/ui-styles/theme/font-awesome.less new file mode 100644 index 0000000000000..cc62487d3be80 --- /dev/null +++ b/src/ui/ui-styles/theme/font-awesome.less @@ -0,0 +1,9 @@ +@import "~font-awesome/less/font-awesome"; + +// new file icon +.@{fa-css-prefix}-file-new-o:before { content: @fa-var-file-o; } +.@{fa-css-prefix}-file-new-o:after { content: @fa-var-plus; position: relative; margin-left: -1.0em; font-size: 0.5em; } + +// alias for alert types - allows class="fa fa-{{alertType}}" +.fa-success:before { content: @fa-var-check; } +.fa-danger:before { content: @fa-var-exclamation-circle; } diff --git a/src/ui/ui-styles/_truncate.less b/src/ui/ui-styles/truncate.less similarity index 100% rename from src/ui/ui-styles/_truncate.less rename to src/ui/ui-styles/truncate.less diff --git a/src/ui/ui-styles/theme/_variables.less b/src/ui/ui-styles/variables.less similarity index 99% rename from src/ui/ui-styles/theme/_variables.less rename to src/ui/ui-styles/variables.less index ab995077beeef..df0179afca7b0 100644 --- a/src/ui/ui-styles/theme/_variables.less +++ b/src/ui/ui-styles/variables.less @@ -1,8 +1,5 @@ -@import "../_variables.less"; - -// Flatly 3.1.1 -// Variables -// -------------------------------------------------- +@import "~bootstrap/less/variables.less"; +@import "~ui-styles/variables/for-theme.less"; //== Colors diff --git a/src/ui/ui-styles/_variables.less b/src/ui/ui-styles/variables/for-theme.less similarity index 82% rename from src/ui/ui-styles/_variables.less rename to src/ui/ui-styles/variables/for-theme.less index ea45a10130019..33bb76e8ab2da 100644 --- a/src/ui/ui-styles/_variables.less +++ b/src/ui/ui-styles/variables/for-theme.less @@ -1,7 +1,4 @@ -@fa-font-path: "../bower_components/font-awesome/fonts"; @font-size-smaller: ceil((@font-size-base * 0.75)); - -//** input boxes get a slick border thanks to flatly, this controls it's size @input-border-width: 2px; @sidebar-color: @text-color; @@ -20,3 +17,4 @@ @action-add: desaturate(@btn-success-bg, 30%); @action-remove: desaturate(@btn-danger-bg, 30%); + diff --git a/tasks/config/less.js b/tasks/config/less.js deleted file mode 100644 index e2f02a5460f00..0000000000000 --- a/tasks/config/less.js +++ /dev/null @@ -1,29 +0,0 @@ -module.exports = { - options: { - sourceMapBasepath: '<%= src %>/kibana', - sourceMapRootpath: '/', - sourceMapFileInline: true, - ieCompat: false, - paths: [ - 'bower_components/lesshat/build/', - 'bower_components', - 'src/ui' - ] - }, - dev: { - src: '<%= lessFiles %>', - expand: true, - ext: '.css', - options: { - sourceMap: true - } - }, - build: { - src: '<%= lessFiles %>', - expand: true, - ext: '.css', - options: { - sourceMap: false - } - } -}; diff --git a/tasks/config/licenses.js b/tasks/config/licenses.js index 66939cc045b6a..1ae3ce8827f00 100644 --- a/tasks/config/licenses.js +++ b/tasks/config/licenses.js @@ -12,6 +12,7 @@ module.exports = function (grunt) { 'BSD-like', 'BSD-2-Clause', 'BSD-3-Clause', + 'CC-BY', 'Apache', 'Apache*', 'Apache v2', diff --git a/tasks/config/requirejs.js b/tasks/config/requirejs.js deleted file mode 100644 index 9c10dbb74466c..0000000000000 --- a/tasks/config/requirejs.js +++ /dev/null @@ -1,67 +0,0 @@ -module.exports = function (grunt) { - var config = { - build: { - options: { - appDir: '<%= build %>/src', - dir: '<%= build %>/kibana/public', - mainConfigFile: '<%= build %>/src/require.config.js', - modules: [ - { - name: 'kibana', - excludeShallow: [ - '../config', - 'text!config' - ], - include: [] - } - ], - - optimize: 'none', - optimizeCss: 'none', - optimizeAllPluginResources: false, - - removeCombined: true, - findNestedDependencies: true, - normalizeDirDefines: 'all', - inlineText: true, - skipPragmas: true, - - done: function (done, output) { - var analysis = require('rjs-build-analysis'); - var tree = analysis.parse(output); - var duplicates = analysis.duplicates(tree); - - if (duplicates.length > 0) { - grunt.log.subhead('Duplicates found in requirejs build:'); - grunt.log.warn(duplicates); - return done(new Error('r.js built duplicate modules, please check the excludes option.')); - } else { - var relative = []; - var bundles = tree.bundles || []; - bundles.forEach(function (bundle) { - bundle.children.forEach(function (child) { - if (child.match(/\.\//)) relative.push(child + ' is relative to ' + bundle.parent); - }); - }); - - if (relative.length) { - grunt.log.subhead('Relative modules found in requirejs build:'); - grunt.log.warn(relative); - return done(new Error('r.js build contains relative modules, duplicates probably exist')); - } - } - - done(); - } - } - } - }; - - // include bundled plugins in the build - var main = config.build.options.modules[0]; - grunt.bundled_plugin_module_ids.forEach(function (moduleId) { - main.include.push(moduleId); - }); - - return config; -}; diff --git a/tasks/devServer.js b/tasks/devServer.js index c7f4653aabf2c..b4ad3dabfa320 100644 --- a/tasks/devServer.js +++ b/tasks/devServer.js @@ -5,7 +5,7 @@ module.exports = function (grunt) { var quiet = !(grunt.option('debug') || grunt.option('verbose')); var port = grunt.option('port'); - require('../src/dev_server')(port, quiet) + require('../src/dev_server').run(port, quiet) .then(function (server) { grunt.log.ok('Server started: ' + server.info.uri); if (keepalive) { From c95e315f46d348eccb22d33de9a405c1fb40e552 Mon Sep 17 00:00:00 2001 From: Spencer Alger Date: Tue, 7 Jul 2015 14:40:58 -0700 Subject: [PATCH 023/137] add tags to logging, use classes --- package.json | 6 +- src/server/config/config.js | 2 - src/server/config/schema.js | 42 ++--- src/server/logging/LogFormat.js | 133 ++++++++++++++ src/server/logging/LogFormatJson.js | 15 ++ src/server/logging/LogFormatString.js | 36 ++++ src/server/logging/LogReporter.js | 35 ++++ .../logging/good_reporters/_event_to_json.js | 133 -------------- src/server/logging/good_reporters/console.js | 58 ------- src/server/logging/good_reporters/file.js | 0 src/server/logging/index.js | 42 ++--- src/server/optimize/OptmzUiModules.js | 4 +- src/server/optimize/index.js | 2 +- src/server/plugins/Plugin.js | 164 ++++++++++-------- src/server/plugins/PluginApi.js | 18 +- src/server/status/Status.js | 4 +- 16 files changed, 354 insertions(+), 340 deletions(-) create mode 100644 src/server/logging/LogFormat.js create mode 100644 src/server/logging/LogFormatJson.js create mode 100644 src/server/logging/LogFormatString.js create mode 100644 src/server/logging/LogReporter.js delete mode 100644 src/server/logging/good_reporters/_event_to_json.js delete mode 100644 src/server/logging/good_reporters/console.js delete mode 100644 src/server/logging/good_reporters/file.js diff --git a/package.json b/package.json index 9a800978914d3..5ae4d076cf872 100644 --- a/package.json +++ b/package.json @@ -58,10 +58,8 @@ "file-loader": "^0.8.4", "font-awesome": "^4.3.0", "glob": "^4.3.2", - "good": "^5.1.2", - "good-console": "^4.1.0", - "good-file": "^4.0.2", - "good-reporter": "^3.1.0", + "good": "^6.2.0", + "good-squeeze": "^2.1.0", "hapi": "^8.6.1", "http-auth": "^2.2.5", "imports-loader": "^0.6.4", diff --git a/src/server/config/config.js b/src/server/config/config.js index 154b0e6fcb295..bc20ab4cea38c 100644 --- a/src/server/config/config.js +++ b/src/server/config/config.js @@ -7,8 +7,6 @@ function Config(schema, defaults) { this.schema = schema || Joi.object({}).default(); this.config = {}; this.set(defaults); - - console.log(this.get('env')); } Config.prototype.extendSchema = function (key, schema) { diff --git a/src/server/config/schema.js b/src/server/config/schema.js index 26cc6aadb8ba6..b45d922534741 100644 --- a/src/server/config/schema.js +++ b/src/server/config/schema.js @@ -4,22 +4,6 @@ var path = require('path'); var package = require('../utils/closestPackageJson').getSync(); var fromRoot = require('../utils/fromRoot'); -var env = (function () { - switch (process.env.NODE_ENV) { - case 'production': - case 'prod': - case undefined: - return 'production'; - case 'development': - case 'dev': - return 'development'; - default: - throw new TypeError(`Unexpected NODE_ENV "${process.env.NODE_ENV}", expected production or development.`); - } -}()); -var dev = env === 'development'; -var prod = env === 'production'; - module.exports = Joi.object({ env: Joi.object({ name: Joi.string().default(Joi.ref('$env')), @@ -67,14 +51,24 @@ module.exports = Joi.object({ logging: Joi.object({ quiet: Joi.boolean().default(false), - file: Joi.string(), - console: Joi.object({ - ops: Joi.any(), - log: Joi.any().default('*'), - response: Joi.any().default('*'), - error: Joi.any().default('*'), - json: Joi.boolean().default(false), - }).default() + + // not nested under a kbnLogger key so that we can ref "quiet" + kbnLogger: Joi.boolean().default(true), + kbnLoggerConfig: Joi.object({ + dest: Joi.string().default('stdout'), + json: Joi.boolean().default(Joi.ref('$prod')) + }).default(), + kbnLoggerEvents: Joi.when('quiet', { + is: true, + then: Joi.object({ + error: Joi.string().default('*') + }).default(), + otherwise: Joi.object({ + log: Joi.string().default('*'), + response: Joi.string().default('*'), + error: Joi.string().default('*') + }).default() + }) }).default(), plugins: Joi.object({ diff --git a/src/server/logging/LogFormat.js b/src/server/logging/LogFormat.js new file mode 100644 index 0000000000000..b16c46c8956e9 --- /dev/null +++ b/src/server/logging/LogFormat.js @@ -0,0 +1,133 @@ +'use strict'; + +let Stream = require('stream'); +let moment = require('moment'); +let _ = require('lodash'); +let numeral = require('numeral'); +let ansicolors = require('ansicolors'); +let stringify = require('json-stringify-safe'); +let querystring = require('querystring'); +let inspect = require('util').inspect; + +function serializeError(err) { + return { + message: err.message, + name: err.name, + stack: err.stack, + code: err.code, + signal: err.signal + }; +} + +let levelColor = function (code) { + if (code < 299) return ansicolors.green(code); + if (code < 399) return ansicolors.yellow(code); + if (code < 499) return ansicolors.magenta(code); + return ansicolors.red(code); +}; + +module.exports = class TransformObjStream extends Stream.Transform { + constructor() { + super({ + readableObjectMode: false, + writableObjectMode: true + }); + } + + _transform(event, enc, next) { + var data = this.readEvent(event); + this.push(this.format(data) + '\n'); + next(); + } + + readEvent(event) { + var data = { + type: event.event, + '@timestamp': moment.utc(event.timestamp).format(), + tags: [].concat(event.tags || []), + pid: event.pid + }; + + if (data.type === 'response') { + _.defaults(data, _.pick(event, [ + 'method', + 'statusCode' + ])); + + data.req = { + url: event.path, + method: event.method, + headers: event.headers, + remoteAddress: event.source.remoteAddress, + userAgent: event.source.remoteAddress, + referer: event.source.referer + }; + + var contentLength = 0; + if (typeof event.responsePayload === 'object') { + contentLength = stringify(event.responsePayload).length; + } else { + contentLength = event.responsePayload.toString().length; + } + + data.res = { + statusCode: event.statusCode, + responseTime: event.responseTime, + contentLength: contentLength + }; + + var query = querystring.stringify(event.query); + if (query) data.req.url += '?' + query; + + + data.message = data.req.method.toUpperCase() + ' '; + data.message += data.req.url; + data.message += ' '; + data.message += levelColor(data.res.statusCode); + data.message += ' '; + data.message += ansicolors.brightBlack(data.res.responseTime + 'ms'); + data.message += ansicolors.brightBlack(' - ' + numeral(contentLength).format('0.0b')); + } + else if (data.type === 'ops') { + _.defaults(data, _.pick(event, [ + 'pid', + 'os', + 'proc', + 'load' + ])); + data.message = ansicolors.brightBlack('memory: '); + data.message += numeral(data.proc.mem.heapUsed).format('0.0b'); + data.message += ' '; + data.message += ansicolors.brightBlack('uptime: '); + data.message += numeral(data.proc.uptime).format('00:00:00'); + data.message += ' '; + data.message += ansicolors.brightBlack('load: ['); + data.message += data.os.load.map(function (val) { + return numeral(val).format('0.00'); + }).join(' '); + data.message += ansicolors.brightBlack(']'); + data.message += ' '; + data.message += ansicolors.brightBlack('delay: '); + data.message += numeral(data.proc.delay).format('0.000'); + } + else if (data.type === 'error') { + data.level = 'error'; + data.message = event.error.message; + data.error = serializeError(event.error); + data.url = event.url; + } + else if (event.data instanceof Error) { + data.level = _.contains(event.tags, 'fatal') ? 'fatal' : 'error'; + data.message = event.data.message; + data.error = serializeError(event.data); + } + else if (_.isPlainObject(event.data) && event.data.message) { + _.assign(data, event.data); + data.message = _.template(event.data.message)(event.data); + } + else { + data.message = _.isString(event.data) ? event.data : inspect(event.data); + } + return data; + } +}; diff --git a/src/server/logging/LogFormatJson.js b/src/server/logging/LogFormatJson.js new file mode 100644 index 0000000000000..2bc7a3d598749 --- /dev/null +++ b/src/server/logging/LogFormatJson.js @@ -0,0 +1,15 @@ +'use strict'; + +let LogFormat = require('./LogFormat'); +let stringify = require('json-stringify-safe'); + +let stripColors = function (string) { + return string.replace(/\u001b[^m]+m/g, ''); +}; + +module.exports = class KbnLoggerJsonFormat extends LogFormat { + format(data) { + data.message = stripColors(data.message); + return stringify(data); + } +}; diff --git a/src/server/logging/LogFormatString.js b/src/server/logging/LogFormatString.js new file mode 100644 index 0000000000000..d501e85535a52 --- /dev/null +++ b/src/server/logging/LogFormatString.js @@ -0,0 +1,36 @@ +'use strict'; + +let _ = require('lodash'); +let ansicolors = require('ansicolors'); +let moment = require('moment'); + +let LogFormat = require('./LogFormat'); + +let typeColors = { + log: 'blue', + req: 'green', + res: 'green', + ops: 'cyan', + err: 'red', + info: 'blue', + error: 'red', + fatal: 'magenta' +}; + +let color = _.memoize(function (name) { + return ansicolors[typeColors[name]] || _.identity; +}); + +module.exports = class KbnLoggerJsonFormat extends LogFormat { + format(data) { + let type = color(data.type)(_.padLeft(data.type, 6)); + let time = color('time')(moment(data.timestamp).format()); + let msg = data.error ? color('error')(data.error.stack) : color('message')(data.message); + + let tags = data.tags.reduce(function (s, t) { + return s + `[${ color(t)(t) }]`; + }, ''); + + return `${type}: [ ${time} ] ${tags} ${msg}`; + } +}; diff --git a/src/server/logging/LogReporter.js b/src/server/logging/LogReporter.js new file mode 100644 index 0000000000000..0ee276e7da501 --- /dev/null +++ b/src/server/logging/LogReporter.js @@ -0,0 +1,35 @@ +'use strict'; + +let _ = require('lodash'); +let Squeeze = require('good-squeeze').Squeeze; +let writeStr = require('fs').createWriteStream; + +let LogFormatJson = require('./LogFormatJson'); +let LogFormatString = require('./LogFormatString'); + +module.exports = class KbnLogger { + constructor(events, config) { + this.squeeze = new Squeeze(events); + this.format = config.json ? new LogFormatJson() : new LogFormatString(); + + if (config.dest === 'stdout') { + this.dest = process.stdout; + } else { + this.dest = writeStr(config.dest, { + mode: 'a', + encoding: 'utf8' + }); + } + } + + init(readstream, emitter, callback) { + readstream + .pipe(this.squeeze) + .pipe(this.format) + .pipe(this.dest); + + emitter.on('stop', _.noop); + + callback(); + } +}; diff --git a/src/server/logging/good_reporters/_event_to_json.js b/src/server/logging/good_reporters/_event_to_json.js deleted file mode 100644 index 6047f479a6072..0000000000000 --- a/src/server/logging/good_reporters/_event_to_json.js +++ /dev/null @@ -1,133 +0,0 @@ -var moment = require('moment'); -var _ = require('lodash'); -var env = process.env.NODE_ENV || 'development'; -var numeral = require('numeral'); -var ansicolors = require('ansicolors'); -var stringify = require('json-stringify-safe'); -var querystring = require('querystring'); -var format = require('util').format; -var inspect = require('util').inspect; - -function serializeError(err) { - return { - message: err.message, - name: err.name, - stack: err.stack, - code: err.code, - signal: err.signal - }; -} - - -var levelColor = function (code) { - if (code < 299) { - return ansicolors.green(code); - } - if (code < 399) { - return ansicolors.yellow(code); - } - if (code < 499) { - return ansicolors.magenta(code); - } - return ansicolors.red(code); -}; - -function lookup(name) { - switch (name) { - case 'error': - return 'error'; - default: - return 'info'; - } -} - -module.exports = function (name, event) { - var data = { - '@timestamp': moment.utc(event.timestamp).format(), - level: lookup(event), - node_env: env, - tags: event.tags, - pid: event.pid - }; - if (name === 'response') { - _.defaults(data, _.pick(event, [ - 'method', - 'statusCode' - ])); - - data.req = { - url: event.path, - method: event.method, - headers: event.headers, - remoteAddress: event.source.remoteAddress, - userAgent: event.source.remoteAddress, - referer: event.source.referer - }; - - var contentLength = 0; - if (typeof event.responsePayload === 'object') { - contentLength = stringify(event.responsePayload).length; - } else { - contentLength = event.responsePayload.toString().length; - } - - data.res = { - statusCode: event.statusCode, - responseTime: event.responseTime, - contentLength: contentLength - }; - - var query = querystring.stringify(event.query); - if (query) data.req.url += '?' + query; - - - data.message = data.req.method.toUpperCase() + ' '; - data.message += data.req.url; - data.message += ' '; - data.message += levelColor(data.res.statusCode); - data.message += ' '; - data.message += ansicolors.brightBlack(data.res.responseTime + 'ms'); - data.message += ansicolors.brightBlack(' - ' + numeral(contentLength).format('0.0b')); - } - else if (name === 'ops') { - _.defaults(data, _.pick(event, [ - 'pid', - 'os', - 'proc', - 'load' - ])); - data.message = ansicolors.brightBlack('memory: '); - data.message += numeral(data.proc.mem.heapUsed).format('0.0b'); - data.message += ' '; - data.message += ansicolors.brightBlack('uptime: '); - data.message += numeral(data.proc.uptime).format('00:00:00'); - data.message += ' '; - data.message += ansicolors.brightBlack('load: ['); - data.message += data.os.load.map(function (val) { - return numeral(val).format('0.00'); - }).join(' '); - data.message += ansicolors.brightBlack(']'); - data.message += ' '; - data.message += ansicolors.brightBlack('delay: '); - data.message += numeral(data.proc.delay).format('0.000'); - } - else if (name === 'error') { - data.level = 'error'; - data.message = event.error.message; - data.error = serializeError(event.error); - data.url = event.url; - } - else if (event.data instanceof Error) { - data.level = _.contains(event.tags, 'fatal') ? 'fatal' : 'error'; - data.message = event.data.message; - data.error = serializeError(event.data); - } - else if (_.isPlainObject(event.data) && event.data.message) { - _.assign(data, event.data); - data.message = _.template(event.data.message)(event.data); - } - else { - data.message = _.isString(event.data) ? event.data : inspect(event.data); - } - return data; -}; diff --git a/src/server/logging/good_reporters/console.js b/src/server/logging/good_reporters/console.js deleted file mode 100644 index cb0c3572d7ca3..0000000000000 --- a/src/server/logging/good_reporters/console.js +++ /dev/null @@ -1,58 +0,0 @@ -var ansicolors = require('ansicolors'); -var eventToJson = require('./_event_to_json'); -var GoodReporter = require('good-reporter'); -var util = require('util'); -var moment = require('moment'); -var stringify = require('json-stringify-safe'); -var querystring = require('querystring'); -var numeral = require('numeral'); - -var colors = { - log: 'blue', - req: 'green', - res: 'green', - ops: 'cyan', - err: 'red', - info: 'blue', - error: 'red', - fatal: 'magenta' -}; - -function stripColors(string) { - return string.replace(/\u001b[^m]+m/g, ''); -} - -var Console = module.exports = function (events, options) { - this._json = options.json; - GoodReporter.call(this, events); -}; -util.inherits(Console, GoodReporter); - -Console.prototype.stop = function () { }; - -Console.prototype._report = function (name, data) { - data = eventToJson(name, data); - var nameCrayon = ansicolors[colors[name.substr(0, 3)]]; - var typeCrayon = ansicolors[colors[data.level]]; - var output; - if (this._json) { - data.message = stripColors(data.message); - output = stringify(data); - } else { - output = nameCrayon(name.substr(0, 3)); - output += ': '; - output += typeCrayon(data.level.toUpperCase()); - output += ' '; - output += '[ '; - output += ansicolors.brightBlack(moment(data.timestamp).format()); - output += ' ] '; - - if (data.error) { - output += ansicolors.red(data.error.stack); - } else { - output += data.message; - } - - } - console.log(output); -}; diff --git a/src/server/logging/good_reporters/file.js b/src/server/logging/good_reporters/file.js deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/src/server/logging/index.js b/src/server/logging/index.js index 2932f7f5d049b..13afe6540e5c1 100644 --- a/src/server/logging/index.js +++ b/src/server/logging/index.js @@ -1,37 +1,21 @@ -var Promise = require('bluebird'); -var good = require('good'); -var path = require('path'); -var join = path.join; -var Console = require('./good_reporters/console'); +var fromNode = require('bluebird').fromNode; +module.exports = function (kbnServer, server, config) { + if (!config.get('logging.kbnLogger')) return; -module.exports = function (kbnServer) { - var server = kbnServer.server; - - return new Promise(function (resolve, reject) { - var reporters = []; - var config = server.config(); - - // If we are not quite then add the console logger - var filters = {}; - if (!config.get('logging.quiet')) { - if (config.get('logging.console.ops') != null) filters.ops = config.get('logging.console.ops'); - if (config.get('logging.console.log') != null) filters.log = config.get('logging.console.log'); - if (config.get('logging.console.response') != null) filters.response = config.get('logging.console.response'); - if (config.get('logging.console.error') != null) filters.error = config.get('logging.console.error'); - } - reporters.push({ reporter: Console, args: [filters, { json: config.get('logging.console.json') } ] }); + return fromNode(function (cb) { server.register({ - register: good, + register: require('good'), options: { opsInterval: 5000, - logRequestHeaders: true, - logResponsePayload: true, - reporters: reporters + reporters: [ + { + reporter: require('./LogReporter'), + config: config.get('logging.kbnLoggerConfig'), + events: config.get('logging.kbnLoggerEvents'), + } + ] } - }, function (err) { - if (err) return reject(err); - resolve(server); - }); + }, cb); }); }; diff --git a/src/server/optimize/OptmzUiModules.js b/src/server/optimize/OptmzUiModules.js index 70fac53e9db7f..9e92ae34a3581 100644 --- a/src/server/optimize/OptmzUiModules.js +++ b/src/server/optimize/OptmzUiModules.js @@ -19,8 +19,8 @@ function OptmzUiExports(plugins) { // webpack loaders map loader configuration to regexps var loaders = this.loaders = [ - { test: /\.less$/, loader: 'style!css!less' }, - { test: /\.css$/, loader: 'style!css' }, + { test: /\.less$/, loader: 'style/url!file!less' }, + { test: /\.css$/, loader: 'style/url!file' }, { test: /\.html$/, loader: 'raw' }, { test: /\.(woff|woff2|png)(\?v=[0-9]\.[0-9]\.[0-9])?$/, diff --git a/src/server/optimize/index.js b/src/server/optimize/index.js index 419a105bd7370..ca028803f6ead 100644 --- a/src/server/optimize/index.js +++ b/src/server/optimize/index.js @@ -32,7 +32,7 @@ module.exports = function (kbnServer, server, config) { status.green('Optimization complete'); }) .on('error', function (err) { - server.log(['fatal'], err); + server.log('fatal', err); status.red('Optimization failure! ' + err.message); }) .init(); diff --git a/src/server/plugins/Plugin.js b/src/server/plugins/Plugin.js index 433ad091d7bf1..6bbd587355e64 100644 --- a/src/server/plugins/Plugin.js +++ b/src/server/plugins/Plugin.js @@ -1,86 +1,96 @@ -var _ = require('lodash'); -var inherits = require('util').inherits; -var Joi = require('joi'); -var Promise = require('bluebird'); -var join = require('path').join; - -function Plugin(kbnServer, path, package, opts) { - this.kbnServer = kbnServer; - this.package = package; - this.path = path; - - this.id = opts.id || package.name; - this.uiExportSpecs = opts.uiExports || {}; - this.requiredIds = opts.require || []; - this.version = opts.version || package.version; - this.publicDir = _.get(opts, 'publicDir', join(path, 'public')); - this.externalInit = opts.init || _.noop; - this.getConfig = opts.config || _.noop; - this.init = _.once(this.init); -} - -Plugin.scoped = function (kbnServer, path, package) { - function ScopedPlugin(opts) { - ScopedPlugin.super_.call(this, kbnServer, path, package, opts || {}); +'use strict'; + +let _ = require('lodash'); +let inherits = require('util').inherits; +let Joi = require('joi'); +let Promise = require('bluebird'); +let join = require('path').join; + +module.exports = class Plugin { + constructor(kbnServer, path, pkg, opts) { + this.kbnServer = kbnServer; + this.pkg = pkg; + this.path = path; + + this.id = opts.id || pkg.name; + this.uiExportSpecs = opts.uiExports || {}; + this.requiredIds = opts.require || []; + this.version = opts.version || pkg.version; + this.publicDir = _.get(opts, 'publicDir', join(path, 'public')); + this.externalInit = opts.init || _.noop; + this.getConfig = opts.config || _.noop; + this.init = _.once(this.init); } - inherits(ScopedPlugin, Plugin); - return ScopedPlugin; -}; -Plugin.prototype.init = function () { - var self = this; - - var id = self.id; - var version = self.version; - var server = self.kbnServer.server; - var status = self.kbnServer.status; - - var config = server.config(); - server.log(['plugin', 'init', 'debug'], { - message: 'initializing plugin <%= plugin.id %>', - plugin: self - }); - - return Promise.try(function () { - return self.getConfig(Joi); - }) - .then(function (schema) { - if (schema) config.extendSchema(id, schema); - }) - .then(function () { - return status.decoratePlugin(self); - }) - .then(function () { - return self.kbnServer.uiExports.consumePlugin(self); - }) - .then(function () { - - var register = function (server, options, next) { - - Promise.try(self.externalInit, [server, options], self).nodeify(next); + static scoped(kbnServer, path, pkg) { + return class ScopedPlugin extends Plugin { + constructor(opts) { + super(kbnServer, path, pkg, opts || {}); + } }; + } - register.attributes = { name: id, version: version }; + init() { + let self = this; - return Promise.fromNode(function (cb) { - server.register({ - register: register, - options: config.has(id) ? config.get(id) : null - }, cb); + let id = self.id; + let version = self.version; + let server = self.kbnServer.server; + let status = self.kbnServer.status; + + let basetags = ['plugin', id]; + let log = function (tags, data, timestamp) { + + }; + + let config = server.config(); + server.log(['plugin', 'debug', 'init'], { + message: 'Initializing plugin', + plugin: self }); - }) - .then(function () { - // Only change the plugin status to green if the - // intial status has not been updated - if (self.status.state === 'uninitialized') { - self.status.green('Ready'); - } - }); -}; + return Promise.try(function () { + return self.getConfig(Joi); + }) + .then(function (schema) { + if (schema) config.extendSchema(id, schema); + }) + .then(function () { + return status.decoratePlugin(self); + }) + .then(function () { + return self.kbnServer.uiExports.consumePlugin(self); + }) + .then(function () { -Plugin.prototype.toString = function () { - return `${this.id}@${this.version}`; -}; + let register = function (server, options, next) { + Promise.try(self.externalInit, [server, options], self).nodeify(next); + }; + + register.attributes = { name: id, version: version }; + + return Promise.fromNode(function (cb) { + server.register({ + register: register, + options: config.has(id) ? config.get(id) : null + }, cb); + }); + + }) + .then(function () { + // Only change the plugin status to green if the + // intial status has not been updated + if (self.status.state === 'uninitialized') { + self.status.green('Ready'); + } + }); + } + + toJSON() { + return this.pkg; + } -module.exports = Plugin; + toString() { + return `${this.id}@${this.version}`; + } +}; diff --git a/src/server/plugins/PluginApi.js b/src/server/plugins/PluginApi.js index cf5fb7b9ff639..5086b9279694b 100644 --- a/src/server/plugins/PluginApi.js +++ b/src/server/plugins/PluginApi.js @@ -1,12 +1,14 @@ +'use strict'; + var Plugin = require('./Plugin'); var basename = require('path').basename; var join = require('path').join; -function PluginApi(kibana, pluginPath) { - this.rootDir = kibana.rootDir; - this.package = require(join(pluginPath, 'package.json')); - this.autoload = require('../ui/autoload'); - this.Plugin = Plugin.scoped(kibana, pluginPath, this.package); -} - -module.exports = PluginApi; +module.exports = class PluginApi { + constructor(kibana, pluginPath) { + this.rootDir = kibana.rootDir; + this.package = require(join(pluginPath, 'package.json')); + this.autoload = require('../ui/autoload'); + this.Plugin = Plugin.scoped(kibana, pluginPath, this.package); + } +}; diff --git a/src/server/status/Status.js b/src/server/status/Status.js index 6d77aba3f4670..45c07f420eb32 100644 --- a/src/server/status/Status.js +++ b/src/server/status/Status.js @@ -10,8 +10,8 @@ function Status(name, server) { this.message = 'uninitialized'; this.on('change', function (current, previous) { - server.log(['status'], { - message: '[ <%= name %> ] Change status from <%= prev %> to <%= cur %> - <%= curMsg %>', + server.log(['plugin', name, 'status'], { + message: 'Change status from <%= prev %> to <%= cur %> - <%= curMsg %>', name: name, prev: previous.state, cur: current.state, From f621a42368f9d072db930cb889e39b852bdbd939 Mon Sep 17 00:00:00 2001 From: Spencer Alger Date: Tue, 7 Jul 2015 19:32:48 -0700 Subject: [PATCH 024/137] fix styles, time to begin finding bugs --- kibana.js.map | 1 + package.json | 2 + sense.js.map | 1 + .../index.js => devServer/devServer.js} | 22 ---------- .../lib/amd_wrapper.js | 0 src/{dev_server => devServer}/lib/istanbul.js | 0 .../lib/kibana_src_filter.js | 0 src/devServer/package.json | 5 +++ src/dev_server/package.json | 4 -- src/plugins/kibana/index.js | 5 ++- src/plugins/kibana/public/settings/index.js | 7 +++- src/server/KbnServer.js | 2 +- src/server/cli/index.js | 3 +- src/server/config/schema.js | 40 ++++++++++--------- src/server/logging/LogFormat.js | 5 ++- src/server/logging/LogFormatString.js | 16 +++++--- src/server/logging/index.js | 31 +++++++++++--- src/server/optimize/Optimizer.js | 30 ++++++++++---- src/server/optimize/OptmzBundles.js | 4 +- src/server/optimize/OptmzUiModules.js | 14 ++----- src/server/optimize/index.js | 7 +++- src/server/pid/index.js | 6 +-- src/server/plugins/Plugin.js | 9 +---- src/server/plugins/scan.js | 7 ++-- src/server/status/Status.js | 4 +- src/server/status/index.js | 1 - src/server/ui/views/bootstrap.jade | 1 + src/ui/chrome/chrome.html | 2 +- .../courier/data_source/search_source.js | 10 +---- src/ui/ui-styles/control_group.less | 8 ++-- src/ui/ui-styles/mixins.less | 2 +- src/ui/ui-styles/navbar.less | 2 +- src/ui/ui-styles/pagination.less | 8 ++-- src/ui/ui-styles/theme.less | 5 ++- switcher.js.map | 1 + tasks/dev.js | 15 +++++++ tasks/devServer.js | 19 --------- 37 files changed, 161 insertions(+), 138 deletions(-) create mode 100644 kibana.js.map create mode 100644 sense.js.map rename src/{dev_server/index.js => devServer/devServer.js} (85%) rename src/{dev_server => devServer}/lib/amd_wrapper.js (100%) rename src/{dev_server => devServer}/lib/istanbul.js (100%) rename src/{dev_server => devServer}/lib/kibana_src_filter.js (100%) create mode 100644 src/devServer/package.json delete mode 100644 src/dev_server/package.json create mode 100644 switcher.js.map delete mode 100644 tasks/devServer.js diff --git a/kibana.js.map b/kibana.js.map new file mode 100644 index 0000000000000..8994af6587f39 --- /dev/null +++ b/kibana.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack/bootstrap d26167e4f671993c83a6","./bundles/kibana.entry.js","./src/ui/utils/lodash-mixins/index.js","./bower_components/moment/moment.js","./src/ui/components/modules.js","./bower_components/angular/angular.js","./bower_components/jquery/dist/jquery.js","./~/style-loader/addStyleUrl.js","./src/ui/components/errors.js","./src/ui/components/courier/fetch/_req_status.js","./src/ui/registry/field_formats.js","./src/ui/components/courier/_request_queue.js","./src/ui/components/index_patterns/_field_format/FieldFormat.js","./src/ui/components/indexed_array/index.js","./src/ui/utils/datemath.js","./src/ui/components/events.js","./src/ui/utils/rison.js","./src/ui/components/routes/index.js","./src/ui/components/courier/fetch/fetch.js","./src/ui/components/bound_to_config_obj.js","./src/ui/components/courier/data_source/doc_source.js","./src/ui/components/courier/fetch/strategy/search.js","./src/ui/components/notify/notify.js","./src/ui/filters/short_dots.js","./src/ui/components/courier/_error_handlers.js","./src/ui/components/courier/data_source/search_source.js","./src/ui/components/courier/fetch/request/request.js","./src/ui/components/courier/fetch/strategy/doc.js","./src/ui/components/field_format_editor/pattern/pattern.js","./src/ui/components/filter_bar/lib/compareFilters.js","./src/ui/components/filter_bar/lib/mapAndFlattenFilters.js","./src/ui/components/filter_bar/query_filter.js","./src/ui/components/index_patterns/_intervals.js","./src/ui/components/notify/directives.js","./src/ui/components/promises.js","./src/ui/components/stringify/types/_Numeral.js","./src/ui/utils/config_template.js","./src/ui/utils/diff_time_picker_vals.js","./src/ui/utils/query_string.js","./src/ui/chrome/chrome.js","./src/ui/components/courier/data_source/_root_search_source.js","./src/ui/components/index_patterns/index_patterns.js","./src/ui/components/vis/Schemas.js","./src/ui/components/agg_types/buckets/_bucket_agg_type.js","./src/ui/components/agg_types/metrics/_metric_agg_type.js","./src/ui/components/courier/data_source/_decorate_query.js","./src/ui/components/private.js","./src/ui/components/timefilter/timefilter.js","./src/ui/components/vis/AggConfigResult.js","./src/ui/directives/inequality.js","./src/ui/registry/vis_types.js","./bower_components/moment/locale/af.js","./bower_components/moment/locale/ar-ma.js","./bower_components/moment/locale/ar-sa.js","./bower_components/moment/locale/ar-tn.js","./bower_components/moment/locale/ar.js","./bower_components/moment/locale/az.js","./bower_components/moment/locale/be.js","./bower_components/moment/locale/bg.js","./bower_components/moment/locale/bn.js","./bower_components/moment/locale/bo.js","./bower_components/moment/locale/br.js","./bower_components/moment/locale/bs.js","./bower_components/moment/locale/ca.js","./bower_components/moment/locale/cs.js","./bower_components/moment/locale/cv.js","./bower_components/moment/locale/cy.js","./bower_components/moment/locale/da.js","./bower_components/moment/locale/de-at.js","./bower_components/moment/locale/de.js","./bower_components/moment/locale/el.js","./bower_components/moment/locale/en-au.js","./bower_components/moment/locale/en-ca.js","./bower_components/moment/locale/en-gb.js","./bower_components/moment/locale/eo.js","./bower_components/moment/locale/es.js","./bower_components/moment/locale/et.js","./bower_components/moment/locale/eu.js","./bower_components/moment/locale/fa.js","./bower_components/moment/locale/fi.js","./bower_components/moment/locale/fo.js","./bower_components/moment/locale/fr-ca.js","./bower_components/moment/locale/fr.js","./bower_components/moment/locale/fy.js","./bower_components/moment/locale/gl.js","./bower_components/moment/locale/he.js","./bower_components/moment/locale/hi.js","./bower_components/moment/locale/hr.js","./bower_components/moment/locale/hu.js","./bower_components/moment/locale/hy-am.js","./bower_components/moment/locale/id.js","./bower_components/moment/locale/is.js","./bower_components/moment/locale/it.js","./bower_components/moment/locale/ja.js","./bower_components/moment/locale/jv.js","./bower_components/moment/locale/ka.js","./bower_components/moment/locale/km.js","./bower_components/moment/locale/ko.js","./bower_components/moment/locale/lb.js","./bower_components/moment/locale/lt.js","./bower_components/moment/locale/lv.js","./bower_components/moment/locale/me.js","./bower_components/moment/locale/mk.js","./bower_components/moment/locale/ml.js","./bower_components/moment/locale/mr.js","./bower_components/moment/locale/ms-my.js","./bower_components/moment/locale/my.js","./bower_components/moment/locale/nb.js","./bower_components/moment/locale/ne.js","./bower_components/moment/locale/nl.js","./bower_components/moment/locale/nn.js","./bower_components/moment/locale/pl.js","./bower_components/moment/locale/pt-br.js","./bower_components/moment/locale/pt.js","./bower_components/moment/locale/ro.js","./bower_components/moment/locale/ru.js","./bower_components/moment/locale/si.js","./bower_components/moment/locale/sk.js","./bower_components/moment/locale/sl.js","./bower_components/moment/locale/sq.js","./bower_components/moment/locale/sr-cyrl.js","./bower_components/moment/locale/sr.js","./bower_components/moment/locale/sv.js","./bower_components/moment/locale/ta.js","./bower_components/moment/locale/th.js","./bower_components/moment/locale/tl-ph.js","./bower_components/moment/locale/tr.js","./bower_components/moment/locale/tzm-latn.js","./bower_components/moment/locale/tzm.js","./bower_components/moment/locale/uk.js","./bower_components/moment/locale/uz.js","./bower_components/moment/locale/vi.js","./bower_components/moment/locale/zh-cn.js","./bower_components/moment/locale/zh-tw.js","./src/ui/components/field_format_editor/numeral/numeral.html","webpack:///./src/ui/components/vislib/styles/main.less?758f","(webpack)/buildin/module.js","./src/ui/components/config/_vals.js","./src/ui/components/courier/courier.js","./src/ui/components/courier/data_source/_abstract.js","./src/ui/components/courier/fetch/_call_response_handlers.js","./src/ui/components/courier/fetch/_is_request.js","./src/ui/components/courier/fetch/_notifier.js","./src/ui/components/courier/fetch/request/search.js","./src/ui/components/courier/looper/_looper.js","./src/ui/components/debounce.js","./src/ui/components/doc_title/doc_title.js","./src/ui/components/es.js","./src/ui/components/field_format_editor/samples/samples.js","./src/ui/components/filter_bar/lib/dedupFilters.js","./src/ui/components/filter_bar/lib/uniqFilters.js","./src/ui/components/index_patterns/_get_ids.js","./src/ui/components/index_patterns/_mapper.js","./src/ui/components/index_patterns/_pattern_to_wildcard.js","./src/ui/components/state_management/global_state.js","./src/ui/components/state_management/state.js","./src/ui/components/timepicker/quick_ranges.js","./src/ui/components/timepicker/time_units.js","./src/ui/components/ui-bootstrap/index.js","./src/ui/directives/input_datetime.js","./src/ui/directives/input_focus.js","./src/ui/filters/rison.js","./src/ui/filters/uriescape.js","./src/ui/meta-modules/elasticsearch.js","./src/ui/utils/ipv4_address.js","./src/ui/utils/mapping_setup.js","./src/ui/components/config/defaults.js","./src/ui/components/filter_bar/filter_bar_click_handler.js","./src/ui/components/filter_manager/filter_manager.js","./src/ui/components/highlight/highlight_tags.js","./src/ui/components/index_patterns/_field.js","./src/ui/components/url/url.js","./src/ui/components/validateDateInterval.js","./src/ui/directives/css_truncate.js","./src/ui/directives/field_name.js","./src/ui/registry/_registry.js","./bower_components/numeral/numeral.js","./src/plugins/kibana/public/settings/saved_object_registry.js","./src/ui/components/agg_types/param_types/base.js","./src/ui/components/config/config.js","./src/ui/components/elastic_textarea.js","./src/ui/components/highlight/highlight.js","./src/ui/components/index_patterns/_cast_mapping_type.js","./src/ui/components/index_patterns/_field_list.js","./src/ui/components/notify/_notifier.js","./src/ui/components/state_management/app_state.js","./src/ui/components/timepicker/timepicker.js","./src/ui/components/typeahead/typeahead.js","./src/ui/components/validate_query/validate_query.js","./src/ui/components/vis/AggConfig.js","./src/ui/directives/auto_select_if_only_one.js","./src/ui/directives/config.js","./src/ui/directives/confirm_click.js","./src/ui/directives/file_upload.js","./src/ui/directives/infinite_scroll.js","./src/ui/directives/input_whole_number.js","./src/ui/directives/saved_object_finder.js","./src/ui/directives/truncated.js","./src/ui/directives/validate_cidr_mask.js","./src/ui/directives/validate_date_math.js","./src/ui/directives/validate_index_name.js","./src/ui/directives/validate_ip.js","./src/ui/directives/validate_json.js","./src/ui/filters/_prop_filter.js","./src/ui/filters/field_type.js","./src/ui/filters/label.js","./src/ui/filters/match_any.js","./src/ui/filters/moment.js","./src/ui/filters/start_from.js","./src/ui/filters/trust_as_html.js","./src/ui/filters/unique.js","./src/ui/utils/SimpleEmitter.js","./src/ui/utils/cidr_mask.js","./src/ui/utils/no_white_space.js","./src/ui/utils/parse_interval.js","./bower_components/elasticsearch/elasticsearch.angular.min.js","./bower_components/lodash/lodash.js","./bower_components/moment/locale ^\\.\\/.*$","./src/ui/components/typeahead/typeahead.less","./src/ui/ui-styles/base.less","./src/ui/ui-styles/callout.less","./src/ui/ui-styles/config.less","./src/ui/ui-styles/control_group.less","./src/ui/ui-styles/hintbox.less","./src/ui/ui-styles/input.less","./src/ui/ui-styles/list-group-menu.less","./src/ui/ui-styles/navbar.less","./src/ui/ui-styles/notify.less","./src/ui/ui-styles/pagination.less","./src/ui/ui-styles/sidebar.less","./src/ui/ui-styles/spinner.less","./src/ui/ui-styles/table.less","./src/ui/ui-styles/truncate.less","./bower_components/angular-bindonce/bindonce.js","./bower_components/angular-bootstrap/ui-bootstrap-tpls.js","./src/ui/chrome/chrome.html","./src/ui/chrome/config/filter.html","./src/ui/chrome/config/interval.html","./src/ui/components/field_format_editor/pattern/pattern.html","./src/ui/components/field_format_editor/samples/samples.html","./src/ui/components/filter_bar/filter_bar.html","./src/ui/components/notify/partials/fatal.html","./src/ui/components/notify/partials/fatal_splash_screen.html","./src/ui/components/notify/partials/toaster.html","./src/ui/components/stringify/editors/date.html","./src/ui/components/stringify/editors/string.html","./src/ui/components/stringify/editors/url.html","./src/ui/components/stringify/types/_source.html","./src/ui/components/style_compile/style_compile.css.tmpl","./src/ui/components/timepicker/timepicker.html","./src/ui/components/tooltip/tooltip.html","./src/ui/components/typeahead/partials/typeahead-items.html","./src/ui/partials/info.html","./src/ui/partials/paginate_controls.html","./src/ui/partials/saved_object_finder.html","webpack:///./src/ui/components/typeahead/typeahead.less?c45e","webpack:///./src/ui/ui-styles/base.less?bd2f","webpack:///./src/ui/ui-styles/callout.less?ebaa","webpack:///./src/ui/ui-styles/config.less?7fcd","webpack:///./src/ui/ui-styles/control_group.less?3adf","webpack:///./src/ui/ui-styles/hintbox.less?b6b7","webpack:///./src/ui/ui-styles/input.less?f983","webpack:///./src/ui/ui-styles/list-group-menu.less?d498","webpack:///./src/ui/ui-styles/navbar.less?553d","webpack:///./src/ui/ui-styles/notify.less?0e95","webpack:///./src/ui/ui-styles/pagination.less?ef00","webpack:///./src/ui/ui-styles/sidebar.less?5ad3","webpack:///./src/ui/ui-styles/spinner.less?668a","webpack:///./src/ui/ui-styles/table.less?cf42","webpack:///./src/ui/ui-styles/truncate.less?2e83","./src/ui/chrome/Tab.js","./src/ui/chrome/TabCollection.js","./src/ui/chrome/context.js","./src/ui/components/bind.js","./src/ui/components/config/_delayed_updater.js","./src/ui/components/courier/_redirect_when_missing.js","./src/ui/components/courier/data_source/_doc_send_to_es.js","./src/ui/components/courier/data_source/_normalize_sort_request.js","./src/ui/components/courier/fetch/_call_client.js","./src/ui/components/courier/fetch/_continue_incomplete.js","./src/ui/components/courier/fetch/_fetch_these.js","./src/ui/components/courier/fetch/_for_each_strategy.js","./src/ui/components/courier/fetch/_merge_duplicate_requests.js","./src/ui/components/courier/fetch/request/_error_handler.js","./src/ui/components/courier/fetch/request/_segmented_handle.js","./src/ui/components/courier/fetch/request/doc.js","./src/ui/components/courier/fetch/request/segmented.js","./src/ui/components/courier/looper/doc.js","./src/ui/components/courier/looper/search.js","./src/ui/components/courier/saved_object/saved_object.js","./src/ui/components/fancy_forms/fancy_forms.js","./src/ui/components/fancy_forms/kbn_form.js","./src/ui/components/fancy_forms/kbn_model.js","./src/ui/components/field_format_editor/numeral/numeral.js","./src/ui/components/filter_bar/filter_bar.js","./src/ui/components/filter_bar/lib/changeTimeFilter.js","./src/ui/components/filter_bar/lib/extractTimeFilter.js","./src/ui/components/filter_bar/lib/filterAppliedAndUnwrap.js","./src/ui/components/filter_bar/lib/filterOutTimeBasedFilter.js","./src/ui/components/filter_bar/lib/generateMappingChain.js","./src/ui/components/filter_bar/lib/mapDefault.js","./src/ui/components/filter_bar/lib/mapExists.js","./src/ui/components/filter_bar/lib/mapFilter.js","./src/ui/components/filter_bar/lib/mapFlattenAndWrapFilters.js","./src/ui/components/filter_bar/lib/mapGeoBoundingBox.js","./src/ui/components/filter_bar/lib/mapMissing.js","./src/ui/components/filter_bar/lib/mapQueryString.js","./src/ui/components/filter_bar/lib/mapRange.js","./src/ui/components/filter_bar/lib/mapScript.js","./src/ui/components/filter_bar/lib/mapTerms.js","./src/ui/components/filter_bar/lib/onlyDisabled.js","./src/ui/components/filter_bar/lib/onlyStateChanged.js","./src/ui/components/filter_manager/lib/range.js","./src/ui/components/index_patterns/_field_format/contentTypes.js","./src/ui/components/index_patterns/_field_types.js","./src/ui/components/index_patterns/_flatten_hit.js","./src/ui/components/index_patterns/_format_hit.js","./src/ui/components/index_patterns/_get_computed_fields.js","./src/ui/components/index_patterns/_index_pattern.js","./src/ui/components/index_patterns/_local_cache.js","./src/ui/components/index_patterns/_map_field.js","./src/ui/components/index_patterns/_pattern_cache.js","./src/ui/components/index_patterns/_transform_mapping_into_fields.js","./src/ui/components/indexed_array/_inflector.js","./src/ui/components/indexed_array/_path_getter.js","./src/ui/components/listen.js","./src/ui/components/notify/_errors.js","./src/ui/components/persisted_log/persisted_log.js","./src/ui/components/storage/storage.js","./src/ui/components/stringify/register.js","./src/ui/components/stringify/types/Bytes.js","./src/ui/components/stringify/types/Date.js","./src/ui/components/stringify/types/Ip.js","./src/ui/components/stringify/types/Number.js","./src/ui/components/stringify/types/Percent.js","./src/ui/components/stringify/types/Source.js","./src/ui/components/stringify/types/String.js","./src/ui/components/stringify/types/Url.js","./src/ui/components/style_compile/style_compile.js","./src/ui/components/timefilter/lib/diff_interval.js","./src/ui/components/timefilter/lib/diff_time.js","./src/ui/components/timepicker/refresh_intervals.js","./src/ui/components/tooltip/tooltip.js","./src/ui/components/typeahead/_input.js","./src/ui/components/typeahead/_items.js","./src/ui/components/validate_query/lib/from_user.js","./src/ui/components/validate_query/lib/to_user.js","./src/ui/components/vislib/lib/data.js","./src/ui/components/vislib_vis_type/VislibVisType.js","./src/ui/components/watch_multi.js","./src/ui/directives/click_focus.js","./src/ui/directives/info.js","./src/ui/directives/paginate.js","./src/ui/directives/pretty_duration.js","./src/ui/directives/rows.js","./src/ui/directives/spinner.js","./src/ui/filters/commaList.js","./src/ui/utils/BaseObject.js","./src/ui/utils/diff_object.js","./src/ui/utils/lodash-mixins/collection.js","./src/ui/utils/lodash-mixins/function.js","./src/ui/utils/lodash-mixins/lang.js","./src/ui/utils/lodash-mixins/object.js","./src/ui/utils/lodash-mixins/oop.js","./src/ui/utils/lodash-mixins/string.js","./src/ui/utils/obj_define.js","./src/ui/utils/slugify_id.js","./src/ui/components/agg_response/tabify/tabify.js","./src/ui/components/agg_types/index.js","./src/ui/components/vislib/components/tooltip/tooltip.js","./src/ui/components/vislib/lib/_error_handler.js","./src/ui/registry/spy_modes.js","./src/ui/utils/brush_event.js","./bower_components/FileSaver/FileSaver.js","./bower_components/angular-route/angular-route.js","./bower_components/leaflet/dist/leaflet.js","./src/ui/components/agg_response/hierarchical/_extract_buckets.js","./src/ui/components/agg_table/agg_table.js","./src/ui/components/agg_types/_agg_type.js","./src/ui/components/agg_types/metrics/_get_response_agg_config.js","./src/ui/components/clipboard/clipboard.js","./src/ui/components/paginated_table/paginated_table.js","./src/ui/components/routes/_setup.js","./src/ui/components/routes/_work_queue.js","./src/ui/components/routes/_wrap_route_with_prep.js","./src/ui/components/template_vis_type/TemplateVisType.js","./src/ui/components/vislib/lib/handler/handler.js","./src/ui/components/vislib/lib/layout/types/column_layout.js","./src/ui/components/vislib/visualizations/_chart.js","./src/ui/components/vislib/visualizations/_point_series_chart.js","./src/ui/components/vislib/visualizations/time_marker.js","./src/ui/components/visualize/visualize.js","./bower_components/d3/d3.js","./bower_components/zeroclipboard/dist/ZeroClipboard.js","./bower_components/ace-builds/src-noconflict/ace.js","./bower_components/angular-ui-ace/ui-ace.js","./src/plugins/kibana/public/dashboard/index.html","./src/plugins/kibana/public/settings/sections/indices/_field_controls.html","./src/plugins/kibana/public/visualize/editor/advanced_toggle.html","./src/plugins/kibana/public/visualize/editor/editor.html","./src/ui/components/agg_types/controls/interval.html","./src/ui/components/agg_types/controls/order_and_size.html","(webpack)/buildin/amd-options.js","./src/plugins/kibana/public/discover/saved_searches/saved_searches.js","./src/plugins/kibana/public/settings/sections/indices/_index_header.js","./src/plugins/kibana/public/settings/sections/indices/_refresh_kibana_index.js","./src/plugins/kibana/public/visualize/editor/agg_add.js","./src/plugins/kibana/public/visualize/saved_visualizations/saved_visualizations.js","./src/ui/components/agg_response/geo_json/geo_json.js","./src/ui/components/agg_response/point_series/point_series.js","./src/ui/components/agg_response/tabify/_table.js","./src/ui/components/agg_types/_agg_params.js","./src/ui/components/agg_types/buckets/_interval_options.js","./src/ui/components/agg_types/buckets/create_filter/terms.js","./src/ui/components/compile_recursive_directive.js","./src/ui/components/doc_table/doc_table.js","./src/ui/components/doc_table/lib/get_sort.js","./src/ui/components/doc_viewer/doc_viewer.js","./src/ui/components/number_list/number_list.js","./src/ui/components/vis/Renderbot.js","./src/ui/components/vis/VisType.js","./src/ui/components/vis/vis.js","./src/ui/components/vislib/components/color/color_palette.js","./src/ui/components/vislib/components/zero_injection/inject_zeros.js","./src/ui/components/vislib/components/zero_injection/ordered_x_keys.js","./src/ui/components/vislib/lib/_data_label.js","./src/ui/components/vislib/lib/chart_title.js","./src/ui/components/vislib/lib/legend.js","./src/ui/utils/date_range.js","./bower_components/marked/lib/marked.js","./bower_components/gridster/dist/jquery.gridster.css","./bower_components/leaflet-draw/dist/leaflet.draw.css","./bower_components/leaflet/dist/leaflet.css","./src/plugins/kibana/public/dashboard/styles/main.less","./src/plugins/kibana/public/discover/styles/main.less","./src/plugins/kibana/public/settings/styles/main.less","./src/plugins/kibana/public/visualize/styles/main.less","./src/plugins/markdown_vis/public/markdown_vis.less","./src/plugins/metric_vis/public/metric_vis.less","./src/plugins/table_vis/public/table_vis.less","./src/ui/components/agg_table/agg_table.less","./src/ui/components/collapsible_sidebar/collapsible_sidebar.less","./src/ui/components/doc_table/doc_table.less","./src/ui/components/doc_viewer/doc_viewer.less","./src/ui/components/vislib/styles/main.less","./src/ui/components/visualize/visualize.less","./bower_components/angular-elastic/elastic.js","./bower_components/ng-clip/src/ngClip.js","./bower_components/ace-builds/src-noconflict/mode-json.js","./bower_components/gridster/dist/jquery.gridster.js","./bower_components/Leaflet.heat/dist/leaflet-heat.js","./bower_components/leaflet-draw/dist/leaflet.draw.js","./src/plugins/kbn_vislib_vis_types/public/controls/line_interpolation_option.html","./src/plugins/kbn_vislib_vis_types/public/controls/point_series_options.html","./src/plugins/kbn_vislib_vis_types/public/controls/radius_ratio_option.html","./src/plugins/kbn_vislib_vis_types/public/controls/rows_or_columns.html","./src/plugins/kbn_vislib_vis_types/public/controls/vislib_basic_options.html","./src/plugins/kbn_vislib_vis_types/public/editors/area.html","./src/plugins/kbn_vislib_vis_types/public/editors/histogram.html","./src/plugins/kbn_vislib_vis_types/public/editors/line.html","./src/plugins/kbn_vislib_vis_types/public/editors/pie.html","./src/plugins/kbn_vislib_vis_types/public/editors/tile_map.html","./src/plugins/kibana/public/dashboard/components/panel/panel.html","./src/plugins/kibana/public/dashboard/partials/load_dashboard.html","./src/plugins/kibana/public/dashboard/partials/pick_visualization.html","./src/plugins/kibana/public/dashboard/partials/save_dashboard.html","./src/plugins/kibana/public/dashboard/partials/share.html","./src/plugins/kibana/public/discover/components/field_chooser/discover_field.html","./src/plugins/kibana/public/discover/components/field_chooser/field_chooser.html","./src/plugins/kibana/public/discover/components/field_chooser/lib/detail_views/string.html","./src/plugins/kibana/public/discover/index.html","./src/plugins/kibana/public/discover/partials/load_search.html","./src/plugins/kibana/public/discover/partials/save_search.html","./src/plugins/kibana/public/doc/index.html","./src/plugins/kibana/public/settings/app.html","./src/plugins/kibana/public/settings/sections/about/index.html","./src/plugins/kibana/public/settings/sections/advanced/advanced_row.html","./src/plugins/kibana/public/settings/sections/advanced/index.html","./src/plugins/kibana/public/settings/sections/indices/_create.html","./src/plugins/kibana/public/settings/sections/indices/_edit.html","./src/plugins/kibana/public/settings/sections/indices/_field_editor.html","./src/plugins/kibana/public/settings/sections/indices/_field_name.html","./src/plugins/kibana/public/settings/sections/indices/_field_type.html","./src/plugins/kibana/public/settings/sections/indices/_index_header.html","./src/plugins/kibana/public/settings/sections/indices/_indexed_fields.html","./src/plugins/kibana/public/settings/sections/indices/_scripted_fields.html","./src/plugins/kibana/public/settings/sections/indices/index.html","./src/plugins/kibana/public/settings/sections/objects/_objects.html","./src/plugins/kibana/public/settings/sections/objects/_view.html","./src/plugins/kibana/public/visualize/editor/agg.html","./src/plugins/kibana/public/visualize/editor/agg_add.html","./src/plugins/kibana/public/visualize/editor/agg_group.html","./src/plugins/kibana/public/visualize/editor/agg_params.html","./src/plugins/kibana/public/visualize/editor/agg_select.html","./src/plugins/kibana/public/visualize/editor/panels/load.html","./src/plugins/kibana/public/visualize/editor/panels/save.html","./src/plugins/kibana/public/visualize/editor/panels/share.html","./src/plugins/kibana/public/visualize/editor/sidebar.html","./src/plugins/kibana/public/visualize/editor/vis_options.html","./src/plugins/kibana/public/visualize/wizard/step_1.html","./src/plugins/kibana/public/visualize/wizard/step_2.html","./src/plugins/markdown_vis/public/markdown_vis.html","./src/plugins/markdown_vis/public/markdown_vis_params.html","./src/plugins/metric_vis/public/metric_vis.html","./src/plugins/metric_vis/public/metric_vis_params.html","./src/plugins/table_vis/public/table_vis.html","./src/plugins/table_vis/public/table_vis_params.html","./src/plugins/vis_debug_spy/public/vis_debug_spy.html","./src/ui/components/agg_response/geo_json/_tooltip.html","./src/ui/components/agg_response/hierarchical/_tooltip.html","./src/ui/components/agg_response/point_series/_tooltip.html","./src/ui/components/agg_table/agg_table.html","./src/ui/components/agg_table/agg_table_group.html","./src/ui/components/agg_types/controls/date_ranges.html","./src/ui/components/agg_types/controls/extended_bounds.html","./src/ui/components/agg_types/controls/field.html","./src/ui/components/agg_types/controls/filters.html","./src/ui/components/agg_types/controls/ip_ranges.html","./src/ui/components/agg_types/controls/min_doc_count.html","./src/ui/components/agg_types/controls/order_agg.html","./src/ui/components/agg_types/controls/percentile_ranks.html","./src/ui/components/agg_types/controls/percentiles.html","./src/ui/components/agg_types/controls/precision.html","./src/ui/components/agg_types/controls/ranges.html","./src/ui/components/agg_types/controls/raw_json.html","./src/ui/components/agg_types/controls/regular_expression.html","./src/ui/components/agg_types/controls/string.html","./src/ui/components/clipboard/clipboard.html","./src/ui/components/doc_table/components/table_header.html","./src/ui/components/doc_table/components/table_row/cell.html","./src/ui/components/doc_table/components/table_row/details.html","./src/ui/components/doc_table/components/table_row/open.html","./src/ui/components/doc_table/doc_table.html","./src/ui/components/doc_viewer/doc_viewer.html","./src/ui/components/field_editor/field_editor.html","./src/ui/components/field_editor/scripting_info.html","./src/ui/components/field_editor/scripting_warning.html","./src/ui/components/number_list/number_list.html","./src/ui/components/paginated_table/paginated_table.html","./src/ui/components/vislib/partials/legend_header.html","./src/ui/components/vislib/partials/touchdown.tmpl.html","./src/ui/components/visualize/spy/_req_resp_stats.html","./src/ui/components/visualize/spy/_spy.html","./src/ui/components/visualize/spy/_table.html","./src/ui/components/visualize/visualize.html","./src/ui/partials/truncate_by_height.html","webpack:///./bower_components/gridster/dist/jquery.gridster.css?51ba","webpack:///./bower_components/leaflet-draw/dist/leaflet.draw.css?d096","webpack:///./bower_components/leaflet/dist/leaflet.css?375e","webpack:///./src/plugins/markdown_vis/public/markdown_vis.less?7ec2","webpack:///./src/plugins/metric_vis/public/metric_vis.less?542a","webpack:///./src/plugins/table_vis/public/table_vis.less?003a","webpack:///./src/ui/components/agg_table/agg_table.less?753c","webpack:///./src/ui/components/collapsible_sidebar/collapsible_sidebar.less?afb3","webpack:///./src/ui/components/doc_table/doc_table.less?116a","webpack:///./src/ui/components/doc_viewer/doc_viewer.less?5cb6","webpack:///./src/ui/components/visualize/visualize.less?440e","(webpack)/buildin/amd-define.js","./src/plugins/kbn_vislib_vis_types/public/area.js","./src/plugins/kbn_vislib_vis_types/public/controls/line_interpolation_option.js","./src/plugins/kbn_vislib_vis_types/public/controls/point_series_options.js","./src/plugins/kbn_vislib_vis_types/public/controls/vislib_basic_options.js","./src/plugins/kbn_vislib_vis_types/public/histogram.js","./src/plugins/kbn_vislib_vis_types/public/kbn_vislib_vis_types.js","./src/plugins/kbn_vislib_vis_types/public/line.js","./src/plugins/kbn_vislib_vis_types/public/pie.js","./src/plugins/kbn_vislib_vis_types/public/tileMap.js","./src/plugins/kibana/public/dashboard/components/panel/lib/load_panel.js","./src/plugins/kibana/public/dashboard/components/panel/lib/search.js","./src/plugins/kibana/public/dashboard/components/panel/lib/visualization.js","./src/plugins/kibana/public/dashboard/components/panel/panel.js","./src/plugins/kibana/public/dashboard/directives/grid.js","./src/plugins/kibana/public/dashboard/index.js","./src/plugins/kibana/public/dashboard/services/_saved_dashboard.js","./src/plugins/kibana/public/dashboard/services/saved_dashboards.js","./src/plugins/kibana/public/discover/_hit_sort_fn.js","./src/plugins/kibana/public/discover/components/field_chooser/discover_field.js","./src/plugins/kibana/public/discover/components/field_chooser/field_chooser.js","./src/plugins/kibana/public/discover/components/field_chooser/lib/field_calculator.js","./src/plugins/kibana/public/discover/controllers/discover.js","./src/plugins/kibana/public/discover/directives/timechart.js","./src/plugins/kibana/public/discover/index.js","./src/plugins/kibana/public/discover/saved_searches/_saved_search.js","./src/plugins/kibana/public/doc/controllers/doc.js","./src/plugins/kibana/public/doc/index.js","./src/plugins/kibana/public/kibana.js","./src/plugins/kibana/public/settings/index.js","./src/plugins/kibana/public/settings/sections/about/index.js","./src/plugins/kibana/public/settings/sections/advanced/advanced_row.js","./src/plugins/kibana/public/settings/sections/advanced/index.js","./src/plugins/kibana/public/settings/sections/advanced/lib/get_val_type.js","./src/plugins/kibana/public/settings/sections/index.js","./src/plugins/kibana/public/settings/sections/indices/_create.js","./src/plugins/kibana/public/settings/sections/indices/_date_scripts.js","./src/plugins/kibana/public/settings/sections/indices/_edit.js","./src/plugins/kibana/public/settings/sections/indices/_field_editor.js","./src/plugins/kibana/public/settings/sections/indices/_field_types.js","./src/plugins/kibana/public/settings/sections/indices/_indexed_fields.js","./src/plugins/kibana/public/settings/sections/indices/_scripted_fields.js","./src/plugins/kibana/public/settings/sections/indices/index.js","./src/plugins/kibana/public/settings/sections/objects/_objects.js","./src/plugins/kibana/public/settings/sections/objects/_view.js","./src/plugins/kibana/public/settings/sections/objects/index.js","./src/plugins/kibana/public/visualize/editor/agg.js","./src/plugins/kibana/public/visualize/editor/agg_filter.js","./src/plugins/kibana/public/visualize/editor/agg_group.js","./src/plugins/kibana/public/visualize/editor/agg_param.js","./src/plugins/kibana/public/visualize/editor/agg_params.js","./src/plugins/kibana/public/visualize/editor/editor.js","./src/plugins/kibana/public/visualize/editor/nesting_indicator.js","./src/plugins/kibana/public/visualize/editor/sidebar.js","./src/plugins/kibana/public/visualize/editor/vis_options.js","./src/plugins/kibana/public/visualize/index.js","./src/plugins/kibana/public/visualize/saved_visualizations/_saved_vis.js","./src/plugins/kibana/public/visualize/wizard/wizard.js","./src/plugins/markdown_vis/public/markdown_vis.js","./src/plugins/markdown_vis/public/markdown_vis_controller.js","./src/plugins/metric_vis/public/metric_vis.js","./src/plugins/metric_vis/public/metric_vis_controller.js","./src/plugins/table_vis/public/table_vis.js","./src/plugins/table_vis/public/table_vis_controller.js","./src/plugins/table_vis/public/table_vis_params.js","./src/plugins/vis_debug_spy/public/vis_debug_spy.js","./src/ui/components/agg_response/geo_json/_tooltip_formatter.js","./src/ui/components/agg_response/geo_json/rowsToFeatures.js","./src/ui/components/agg_response/hierarchical/_array_to_linked_list.js","./src/ui/components/agg_response/hierarchical/_build_split.js","./src/ui/components/agg_response/hierarchical/_collect_branch.js","./src/ui/components/agg_response/hierarchical/_collect_keys.js","./src/ui/components/agg_response/hierarchical/_create_raw_data.js","./src/ui/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js","./src/ui/components/agg_response/hierarchical/_transform_aggregation.js","./src/ui/components/agg_response/hierarchical/build_hierarchical_data.js","./src/ui/components/agg_response/index.js","./src/ui/components/agg_response/point_series/_add_to_siri.js","./src/ui/components/agg_response/point_series/_fake_x_aspect.js","./src/ui/components/agg_response/point_series/_get_aspects.js","./src/ui/components/agg_response/point_series/_get_point.js","./src/ui/components/agg_response/point_series/_get_series.js","./src/ui/components/agg_response/point_series/_init_x_axis.js","./src/ui/components/agg_response/point_series/_init_y_axis.js","./src/ui/components/agg_response/point_series/_ordered_date_axis.js","./src/ui/components/agg_response/point_series/_tooltip_formatter.js","./src/ui/components/agg_response/tabify/_buckets.js","./src/ui/components/agg_response/tabify/_get_columns.js","./src/ui/components/agg_response/tabify/_response_writer.js","./src/ui/components/agg_response/tabify/_table_group.js","./src/ui/components/agg_table/agg_table_group.js","./src/ui/components/agg_types/buckets/_bucket_count_between.js","./src/ui/components/agg_types/buckets/create_filter/date_histogram.js","./src/ui/components/agg_types/buckets/create_filter/date_range.js","./src/ui/components/agg_types/buckets/create_filter/filters.js","./src/ui/components/agg_types/buckets/create_filter/histogram.js","./src/ui/components/agg_types/buckets/create_filter/ip_range.js","./src/ui/components/agg_types/buckets/create_filter/range.js","./src/ui/components/agg_types/buckets/date_histogram.js","./src/ui/components/agg_types/buckets/date_range.js","./src/ui/components/agg_types/buckets/filters.js","./src/ui/components/agg_types/buckets/geo_hash.js","./src/ui/components/agg_types/buckets/histogram.js","./src/ui/components/agg_types/buckets/ip_range.js","./src/ui/components/agg_types/buckets/range.js","./src/ui/components/agg_types/buckets/significant_terms.js","./src/ui/components/agg_types/buckets/terms.js","./src/ui/components/agg_types/metrics/avg.js","./src/ui/components/agg_types/metrics/cardinality.js","./src/ui/components/agg_types/metrics/count.js","./src/ui/components/agg_types/metrics/max.js","./src/ui/components/agg_types/metrics/min.js","./src/ui/components/agg_types/metrics/percentile_ranks.js","./src/ui/components/agg_types/metrics/percentiles.js","./src/ui/components/agg_types/metrics/std_deviation.js","./src/ui/components/agg_types/metrics/sum.js","./src/ui/components/agg_types/param_types/field.js","./src/ui/components/agg_types/param_types/optioned.js","./src/ui/components/agg_types/param_types/raw_json.js","./src/ui/components/agg_types/param_types/regex.js","./src/ui/components/agg_types/param_types/string.js","./src/ui/components/collapsible_sidebar/collapsible_sidebar.js","./src/ui/components/doc_table/components/table_header.js","./src/ui/components/doc_table/components/table_row.js","./src/ui/components/field_editor/field_editor.js","./src/ui/components/field_format_editor/field_format_editor.js","./src/ui/components/filter_bar/push_filter.js","./src/ui/components/filter_manager/lib/phrase.js","./src/ui/components/filter_manager/lib/query.js","./src/ui/components/fixedScroll.js","./src/ui/components/number_list/number_list_input.js","./src/ui/components/reflow_watcher.js","./src/ui/components/template_vis_type/TemplateRenderbot.js","./src/ui/components/time_buckets/calc_auto_interval.js","./src/ui/components/time_buckets/calc_es_interval.js","./src/ui/components/time_buckets/time_buckets.js","./src/ui/components/vis/AggConfigs.js","./src/ui/components/vislib/components/color/color.js","./src/ui/components/vislib/components/color/seed_colors.js","./src/ui/components/vislib/components/labels/data_array.js","./src/ui/components/vislib/components/labels/flatten_series.js","./src/ui/components/vislib/components/labels/labels.js","./src/ui/components/vislib/components/labels/uniq_labels.js","./src/ui/components/vislib/components/tooltip/_position_tooltip.js","./src/ui/components/vislib/components/zero_injection/flatten_data.js","./src/ui/components/vislib/components/zero_injection/uniq_keys.js","./src/ui/components/vislib/components/zero_injection/zero_fill_data_array.js","./src/ui/components/vislib/components/zero_injection/zero_filled_array.js","./src/ui/components/vislib/index.js","./src/ui/components/vislib/lib/alerts.js","./src/ui/components/vislib/lib/axis_title.js","./src/ui/components/vislib/lib/dispatch.js","./src/ui/components/vislib/lib/handler/handler_types.js","./src/ui/components/vislib/lib/handler/types/pie.js","./src/ui/components/vislib/lib/handler/types/point_series.js","./src/ui/components/vislib/lib/handler/types/tile_map.js","./src/ui/components/vislib/lib/layout/layout.js","./src/ui/components/vislib/lib/layout/layout_types.js","./src/ui/components/vislib/lib/layout/splits/column_chart/chart_split.js","./src/ui/components/vislib/lib/layout/splits/column_chart/chart_title_split.js","./src/ui/components/vislib/lib/layout/splits/column_chart/x_axis_split.js","./src/ui/components/vislib/lib/layout/splits/column_chart/y_axis_split.js","./src/ui/components/vislib/lib/layout/splits/pie_chart/chart_split.js","./src/ui/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js","./src/ui/components/vislib/lib/layout/splits/tile_map/map_split.js","./src/ui/components/vislib/lib/layout/types/map_layout.js","./src/ui/components/vislib/lib/layout/types/pie_layout.js","./src/ui/components/vislib/lib/resize_checker.js","./src/ui/components/vislib/lib/x_axis.js","./src/ui/components/vislib/lib/y_axis.js","./src/ui/components/vislib/vis.js","./src/ui/components/vislib/visualizations/area_chart.js","./src/ui/components/vislib/visualizations/column_chart.js","./src/ui/components/vislib/visualizations/line_chart.js","./src/ui/components/vislib/visualizations/pie_chart.js","./src/ui/components/vislib/visualizations/tile_map.js","./src/ui/components/vislib/visualizations/vis_types.js","./src/ui/components/vislib_vis_type/VislibRenderbot.js","./src/ui/components/vislib_vis_type/buildChartData.js","./src/ui/components/visualize/spy/_req_resp_stats.js","./src/ui/components/visualize/spy/_table.js","./src/ui/components/visualize/spy/spy.js","./src/ui/utils/add_word_breaks.js","./src/ui/utils/decode_geo_hash.js","./src/ui/utils/key_map.js","./src/ui/utils/ordinal_suffix.js","./src/ui/utils/range.js","./src/ui/utils/sequencer.js","./src/ui/utils/supports.js","webpack:///./src/plugins/kibana/public/discover/styles/main.less?6732"],"names":[],"mappings":";AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;mCC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;ACnBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,oBAAoB;;AAErB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,YAAY;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,2KAA0K,IAAI;;AAE9K,sEAAqE,IAAI;;AAEzE;;AAEA;;AAEA;AACA;AACA;AACA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,2CAA0C,YAAY;AACtD;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,wBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,+BAA8B;AAC9B,iCAAgC;AAChC,8BAA6B,EAAE,EAAE;AACjC,8BAA6B,EAAE,EAAE;AACjC,mCAAkC,EAAE,EAAE;AACtC,kCAAiC;AACjC,8BAA6B,IAAI,EAAE;AACnC,8BAA6B,IAAI,EAAE;AACnC,mCAAkC,IAAI,EAAE;;AAExC,gCAA+B;AAC/B,qCAAoC;;AAEpC,+CAA8C;;AAE9C,yCAAwC,IAAI,IAAI;;AAEhD;AACA,iIAAgI,IAAI;;AAEpI;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS,+BAA+B;AACxC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,kBAAkB;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,gDAA+C,EAAE,IAAI,EAAE;;AAEvD;AACA,kCAAiC,EAAE,IAAI,EAAE,IAAI,EAAE;AAC/C,4BAA2B,EAAE,IAAI,EAAE,IAAI,EAAE;AACzC,8BAA6B,EAAE,KAAK,EAAE;AACtC,4BAA2B,EAAE,KAAK,EAAE;AACpC,0BAAyB,EAAE,IAAI,EAAE;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,+BAA+B;AAClD;AACA;;AAEA;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,oBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,sBAAsB;AACzC;AACA,uCAAsC;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,0CAAyC,gBAAgB;AACzD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sEAAqE,EAAE;;AAEvE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,6BAA6B;AACtC;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAmB;;AAEnB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,cAAc;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAuC,qBAAqB;AAC5D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAuC,qBAAqB;AAC5D;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;;AAEA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,mCAAkC,IAAI;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,uFAAsF,IAAI;AAC1F;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB,WAAW;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;;AAEL;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,EAAC,G;;;;;;;mCCtiGD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;AC7DD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yCAAwC;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,EAAE,KAAK,EAAE;AAC9C;AACA;AACA;AACA,kCAAiC,EAAE,6BAA6B,EAAE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,+DAA+D;AAC5E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C;AAC5C,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;AAEA,4CAA2C,KAAK;AAChD;;AAEA;AACA;AACA;AACA,8CAA6C;AAC7C,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,gBAAe,sBAAsB;AACrC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA,kCAAiC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA,kCAAiC;;;AAGjC;AACA;AACA;AACA,2CAA0C,mDAAmD;AAC7F;AACA;AACA;AACA;AACA;AACA,2CAA0C,oDAAoD;AAC9F;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+DAA8D;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;;;AAGA;AACA;AACA,YAAW,EAAE;AACb,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA,YAAW,aAAa;AACxB,YAAW,SAAS;AACpB,YAAW,QAAQ;AACnB,cAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,oBAAmB,kBAAkB;AACrC;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAW,oBAAoB;AAC/B,cAAa;AACb;AACA;AACA,gCAA+B,wBAAwB;AACvD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,UAAU;AACrB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA,0CAAyC,GAAG,iBAAiB;AAC7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;;;AAGA,0BAAyB,mBAAmB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA,6BAA4B;;;AAG5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA,2BAA0B;;;AAG1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA,0BAAyB;;;AAGzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA,0BAAyB;;;AAGzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA,0BAAyB;;;AAGzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA,4BAA2B;;;AAG3B;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,gDAA+C;AAC/C;;AAEA;AACA;AACA,cAAa,OAAO,iBAAiB;AACrC;AACA;AACA,eAAc;AACd,eAAc,kBAAkB;AAChC;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,qBAAqB;AACzB;AACA,YAAW,oBAAoB;AAC/B,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb;AACA,YAAW,gBAAgB;AAC3B;AACA,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,kBAAiB,eAAe;AAChC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP,sCAAqC;AACrC;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAsB,mBAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAoB,gBAAgB;AACpC;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,WAAW;AACtB,YAAW,KAAK;AAChB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,gCAAgC;AAC3C,YAAW,SAAS;AACpB,cAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D,kCAAkC,EAAE;AAChG,IAAG;AACH;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA,cAAa;AACb;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA,IAAG;AACH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,eAAe;AAC1B,OAAM,4BAA4B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,wBAAwB;AAC5B;AACA;AACA,oCAAmC,qBAAqB;AACxD;AACA,2BAA0B,qBAAqB;AAC/C;AACA;AACA,6FAA4F,OAAO;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,GAAG,KAAK,GAAG,MAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAAyD;;AAEzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,mBAAkB,+BAA+B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C,SAAS;AACtD;AACA;AACA,0CAAyC,MAAM;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,YAAW,WAAW;AACtB,YAAW,8BAA8B;AACzC;AACA;AACA,cAAa;AACb,cAAa,eAAe;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yDAAwD,EAAE;AAC1D,gCAA+B,oBAAoB;AACnD;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wCAAuC,EAAE,MAAM,EAAE;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAY,OAAO;AACnB,aAAY,OAAO;AACnB;AACA;AACA;AACA,+DAA8D,EAAE;AAChE;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,MAAM;AACjB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,6BAA6B;AACnE;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,gBAAe,gCAAgC;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD,+BAA+B;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,+BAA+B;AACvC,SAAQ,wBAAwB;AAChC;AACA,gBAAe,QAAQ;AACvB,gBAAe,iBAAiB;AAChC;AACA,gBAAe,UAAU;AACzB,gBAAe,4CAA4C;AAC3D,kBAAiB,OAAO,sBAAsB,qBAAqB;AACnE;AACA;AACA;AACA;AACA,qEAAoE,EAAE;AACtE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD,EAAE;AACrD;AACA;AACA;;AAEA,oBAAmB,mBAAmB;AACtC;;AAEA,oBAAmB,kBAAkB;AACrC;;AAEA;;AAEA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,SAAS;AAC9B;AACA;AACA,mBAAkB,iDAAiD;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,SAAS;AAC9B;AACA,mBAAkB,+CAA+C;AACjE;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,SAAS;AAC9B;AACA,mBAAkB,+CAA+C;AACjE;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,EAAE;AACvB;AACA,mBAAkB,2CAA2C;AAC7D;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,EAAE;AACvB;AACA;AACA,mBAAkB,iDAAiD;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,kCAAkC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA,mBAAkB,sEAAsE;AACxF,eAAc,iCAAiC;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,SAAS;AAC9B;AACA,mBAAkB,6DAA6D;AAC/E;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,cAAc;AACnC;AACA,sBAAqB,SAAS;AAC9B;AACA,mBAAkB,qEAAqE;AACvF;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,cAAc;AACnC;AACA,sBAAqB,SAAS;AAC9B;AACA;AACA,mBAAkB,iEAAiE;AACnF;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA,eAAc,0DAA0D;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B,oBAAmB,QAAQ;AAC3B,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB,kBAAiB,OAAO;AACxB,gBAAe,OAAO;AACtB,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,WAAW;AAC7B;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,gCAAgC;AAChE;AACA,+CAA8C,gCAAgC;AAC9E;AACA;AACA;AACA;AACA;AACA,YAAW,kBAAkB;AAC7B,cAAa,OAAO;AACpB;;AAEA;;AAEA,gCAA+B;AAC/B;AACA;AACA,sCAAqC;AACrC,sCAAqC,sCAAsC;AAC3E;AACA,sCAAqC,6CAA6C;AAClF,sCAAqC,qCAAqC,EAAE;;AAE5E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAqB,eAAe;;;AAGpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAiD,sBAAsB;AACvE;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA4B;AAC5B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wCAAuC,MAAM;;AAE7C;AACA;AACA;;AAEA;AACA;AACA,2BAA0B;AAC1B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wDAAuD,qBAAqB;AAC5E;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,uBAAsB;;AAEtB;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,6DAA4D;AAC5D;AACA;AACA;AACA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,kDAAiD;AACjD;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAsC,QAAQ;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAkD,uBAAuB;AACzE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL,4CAA2C;AAC3C;AACA;AACA,0CAAyC;AACzC;AACA;AACA,IAAG;AACH;AACA;AACA,+BAA8B,qBAAqB;AACnD;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;AACD;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,gDAA+C;AAC/C,gDAA+C;AAC/C,MAAK;AACL;AACA,kDAAiD;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,qDAAoD,uBAAuB;AAC3E;AACA;AACA;AACA,IAAG;;AAEH;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,wBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,kBAAiB,eAAe;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,mCAAkC;AAClC;AACA;;AAEA;AACA;AACA,mCAAkC;AAClC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA,mEAAkE;AAClE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,2BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;;AAEA;;AAEA;AACA;AACA,gEAA+D;;AAE/D;;AAEA;AACA;AACA,qCAAoC,8BAA8B,EAAE;AACpE,yCAAwC,uCAAuC,EAAE;AACjF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,oCAAoC;AAClE;;AAEA,YAAW,wBAAwB;AACnC,YAAW,qBAAqB;AAChC,cAAa,SAAS,uBAAuB,+BAA+B;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA,oCAAmC,sBAAsB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C,eAAe;AAC9D;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,4DAA2D,+BAA+B;AAC1F;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,6BAA6B;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY,EAAE;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,UAAU;AACrB,OAAM,kCAAkC;AACxC,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB;AACA,cAAa,EAAE;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,QAAQ;AACnB;AACA,cAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA,iFAAgF;AAChF;AACA;AACA;AACA,YAAW,iCAAiC;AAC5C;AACA;AACA,cAAa,eAAe;AAC5B;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,6BAA6B;AACrC,cAAa,+BAA+B;AAC5C,KAAI,qBAAqB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,+BAA+B;AACnE;AACA;AACA;AACA;AACA;AACA,qBAAoB,6BAA6B;AACjD;AACA;AACA,OAAM,gDAAgD;AACtD,SAAQ;AACR,OAAM,2CAA2C;AACjD;AACA,OAAM,qCAAqC;AAC3C;AACA,OAAM,wCAAwC;AAC9C;AACA;AACA,OAAM,2CAA2C;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+CAA8C,+BAA+B;AAC7E;AACA;AACA;AACA;AACA,sBAAqB,mBAAmB;AACxC,KAAI,mCAAmC;AACvC;AACA;AACA;AACA,4DAA2D,mCAAmC;AAC9F,YAAW;AACX,wCAAuC,mBAAmB;AAC1D;AACA;AACA,YAAW,OAAO;AAClB;AACA,YAAW,oBAAoB;AAC/B;AACA;AACA,SAAQ,+CAA+C;AACvD;AACA,SAAQ,yDAAyD;AACjE;AACA,cAAa,OAAO;;AAEpB;AACA;AACA;AACA,KAAI,iDAAiD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAwD,aAAa;AACrE,QAAO;AACP,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,oDAAoD;AACvE;AACA;AACA,YAAW,OAAO;AAClB,YAAW,WAAW;AACtB,6DAA4D,aAAa;AACzE,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,oDAAoD;AACvE;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA,KAAI,oDAAoD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,2CAA0C,+BAA+B;AACzE;AACA;AACA;AACA;AACA;AACA,wCAAuC,4BAA4B;AACnE;AACA,KAAI,wCAAwC;AAC5C;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC,iCAAiC;AACpE;AACA;AACA;AACA,OAAM;AACN;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,+BAA+B,UAAU,gCAAgC;AACtF,wDAAuD,4BAA4B;AACnF,iCAAgC,wCAAwC;AACxE;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,+CAA8C,+BAA+B;AAC7E;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,WAAW;AACtB;AACA,YAAW,4CAA4C;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,mBAAmB;AAC5C,cAAa,gCAAgC;AAC7C;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;;AAGA;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,+DAA8D,EAAE;AAChE,YAAW;AACX,yBAAwB;AACxB;AACA;AACA;AACA;AACA,YAAW;;;AAGX,qDAAoD,qCAAqC,EAAE;;AAE3F;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAgD,EAAE;AAClD;AACA;AACA;;AAEA,sCAAqC,wBAAwB,kBAAkB,EAAE;;AAEjF;AACA;AACA;AACA,MAAK;AACL;;AAEA,8BAA6B,oCAAoC;;AAEjE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sDAAqD,wBAAwB;AAC7E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mFAAkF,QAAQ;AAC1F;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAAyE,EAAE,WAAW,EAAE;AACxF;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,sEAAqE,EAAE;AACvE;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,0CAAyC,YAAY;AACrD;AACA;AACA;AACA,qFAAoF,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sCAAqC;AACrC;;AAEA;AACA,oFAAmF;AACnF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAkB,uCAAuC;AACzD,OAAM,yCAAyC;AAC/C;AACA;AACA;AACA,OAAM,uCAAuC;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,qDAAoD,yBAAyB;AAC7E;AACA;AACA,UAAS;AACT;;AAEA;AACA,IAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA,2DAA0D,EAAE;AAC5D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAgF;AAChF,8BAA6B,iBAAiB;AAC9C,aAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,WAAW;AAC5B,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,WAAW;AAC5B,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,OAAO;AACxB,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,OAAO;AACxB,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,OAAO;AACxB,kBAAiB,OAAO;AACxB,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;;AAEP;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA,uBAAsB,kBAAkB;AACxC;AACA;AACA;AACA,IAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,0CAA0C;AACnE;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,WAAW;AACtB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,mDAAkD,2BAA2B;;AAE7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA,uCAAsC,UAAU,EAAE;;AAElD;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA,gBAAe,WAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAa,OAAO;AACpB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAwC,UAAU,EAAE;AACpD;AACA,MAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,qCAAqC;AAC3C;AACA,cAAa,OAAO;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,qCAAqC;AAC3C;AACA,cAAa,iBAAiB;AAC9B,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,gDAA+C;AAC/C,mCAAkC;AAClC,QAAO;AACP;AACA;AACA,mCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,gDAA+C;AAC/C;;AAEA,oBAAmB,wBAAwB;AAC3C;AACA;AACA,2BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,cAAa,WAAW;AACxB,cAAa,QAAQ;AACrB,gBAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA4B,gCAAgC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,uBAAuB;AACzD;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB;AACA,UAAS,QAAQ;AACjB;AACA,cAAa,OAAO;AACpB;AACA,QAAO,OAAO;AACd,SAAQ,GAAG,QAAQ,OAAO,OAAO,EAAE;AACnC;AACA,SAAQ,GAAG,QAAQ,OAAO;AAC1B,QAAO,KAAK,WAAW,OAAO;AAC9B,QAAO,KAAK;AACZ,QAAO,KAAK;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,yDAAwD,EAAE;AAC1D;;AAEA;AACA,4BAA2B,YAAY,YAAY;AACnD,oBAAmB;AACnB;AACA,uBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,kBAAkB,UAAU,iCAAiC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,gCAAgC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B,oBAAmB,EAAE;AACrB;AACA,sBAAqB,EAAE;AACvB;AACA;AACA;AACA,6DAA4D,SAAS;;AAErE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C,gCAAgC;AAC/E;AACA,oBAAmB,OAAO;AAC1B,sBAAqB,EAAE;AACvB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,UAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,gCAAgC;AACtE;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,gCAAgC;AACzD,kCAAiC,kCAAkC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,yDAAwD,gCAAgC;AACxF;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,UAAU,WAAW;AAC/C;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,kDAAiD;AACjD,kDAAiD;AACjD;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAqD,mCAAmC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,qCAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,kCAAkC;AAC/D;AACA;AACA,KAAI,+CAA+C;AACnD;AACA;AACA;AACA;AACA,aAAY,sCAAsC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAuE,MAAM;AAC7E;AACA,iFAAgF,MAAM;AACtF;AACA;AACA;AACA,yFAAwF,MAAM;AAC9F;AACA;AACA;AACA;AACA,0EAAyE,MAAM;AAC/E,4EAA2E;AAC3E;AACA;AACA,gDAA+C;AAC/C,WAAU;AACV;AACA;AACA,0EAAyE,MAAM;AAC/E,4EAA2E;AAC3E;AACA;AACA,6CAA4C;AAC5C;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA2D;AAC3D;AACA;AACA;AACA,8DAA6D;AAC7D,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,kEAAiE;AACjE,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,MAAM;AAC3C,kBAAiB,sBAAsB;AACvC,yCAAwC,MAAM;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,uBAAuB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,oBAAoB;AAClC;AACA;AACA;AACA;AACA,4CAA2C,WAAW;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAgD,YAAY;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8FAA6F;AAC7F,iEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,qBAAoB;AACpB;AACA;AACA;AACA,yBAAwB;AACxB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C,oCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,sDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAuE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,gCAAgC;AAClD,mCAAkC,yCAAyC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,kDAAkD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C,KAAK;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,gCAA+B,MAAM;AACrC,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B,MAAM;AAClC;AACA,OAAM;AACN;AACA;;AAEA;AACA;AACA,YAAW,kBAAkB;AAC7B,YAAW,wCAAwC;AACnD,YAAW,OAAO;AAClB;AACA,cAAa,gCAAgC;AAC7C;AACA;AACA,oBAAmB,gCAAgC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,2CAA2C;AAC/C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA,uDAAsD,MAAM;;AAE5D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,cAAc;AAC3B;AACA;AACA,cAAa,eAAe;AAC5B,UAAS,sBAAsB;AAC/B,gBAAe,oBAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,cAAa;AACb;AACA,YAAW;AACX;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,gBAAe,2BAA2B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,gBAAe,2BAA2B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAAyD;AACzD;AACA,kBAAiB,OAAO;AACxB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,kBAAiB,eAAe;AAChC,kBAAiB,SAAS;AAC1B;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT,QAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,kBAAiB,4BAA4B;AAC7C;AACA,0BAAyB,4CAA4C;AACrE,oBAAmB,WAAW;AAC9B;AACA;AACA;AACA,wEAAuE;AACvE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,kDAAiD,sBAAsB;AACvE;AACA;AACA,0CAAyC,EAAE,4BAA4B;AACvE,UAAS;AACT;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA,8CAA6C,MAAM;AACnD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,wCAAwC;AACvD;AACA,gBAAe,YAAY;AAC3B;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA,sBAAqB,qBAAqB;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAmB,oBAAoB;AACvC;AACA;;AAEA,+CAA8C,QAAQ;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;;AAEA,cAAa;AACb;;AAEA,cAAa;AACb;;AAEA,cAAa;AACb;AACA;;AAEA;;AAEA,YAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA2C,6BAA6B,EAAE;AAC1E;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wDAAuD,QAAQ;AAC/D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD,EAAE,oBAAoB,EAAE;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB;AACA,gBAAe,KAAK;AACpB,gBAAe,OAAO;AACtB,gBAAe,wCAAwC;AACvD;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA,gBAAe,QAAQ;AACvB;AACA,gBAAe,iBAAiB;AAChC,gBAAe,iBAAiB;AAChC,gBAAe,OAAO;AACtB;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA4C,QAAQ;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAgB;AAChB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC;AACzC,YAAW;AACX;AACA,kCAAiC;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,6CAA4C,EAAE,uCAAuC,EAAE;AACvF;AACA;;AAEA;;AAEA,qCAAoC;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,mBAAmB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C,mBAAmB;AAChE;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA8B,EAAE,2BAA2B,EAAE;AAC7D;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;;AAGA;AACA,8FAA6F;;AAE7F;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,4CAA2C,wCAAwC;AACnF;AACA;AACA;AACA;AACA;AACA,qCAAoC,EAAE,wBAAwB,EAAE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uEAAsE,EAAE;AACxE,oCAAmC,KAAK,EAAE,IAAI,EAAE,MAAM;AACtD;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA,2CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,8CAA6C,QAAQ;AACrD,iDAAgD,qBAAqB;AACrE;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,MAAM;AAChD;AACA;AACA;AACA;AACA;AACA,iDAAgD,2CAA2C;AAC3F;AACA;AACA;AACA;AACA,YAAW,WAAW,sBAAsB;AAC5C;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,6DAA4D;AAC5D,2DAA0D;AAC1D;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA,YAAW;AACX;AACA;AACA;;AAEA;;AAEA,2DAA0D,sBAAsB;AAChF;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,6CAA4C,EAAE,uCAAuC,EAAE;AACvF;AACA;;AAEA,kCAAiC;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,qEAAoE,EAAE;AACtE,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,iEAAgE,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE;AAC/F;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,YAAW;AACX;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,8EAA6E,EAAE;AAC/E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8EAA6E;;AAE7E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA,QAAO;AACP;;;AAGA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB;AACA,gBAAe,OAAO;AACtB;AACA,gBAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD,QAAQ;AAC3D;AACA,kCAAiC;AACjC;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA,iCAAgC,kCAAkC,EAAE;AACpE;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAmE,GAAG;AACtE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,2CAA0C;AAC1C;AACA,YAAW,OAAO;AAClB;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAgB,oBAAoB;AACpC;AACA,mBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAQ,yCAAyC;AACjD;AACA;AACA;AACA,KAAI,+CAA+C;AACnD;AACA;AACA,uBAAsB;AACtB;;;AAGA;AACA;AACA;AACA,cAAa,cAAc;AAC3B;AACA,cAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA,oCAAmC,+BAA+B;AAClE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,2CAA0C,EAAE,OAAO,EAAE;AACrD;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,uCAAuC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,sDAAsD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA,kBAAiB;;AAEjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,gBAAgB;AAC3B,cAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,kBAAkB;AAC7B,YAAW,4BAA4B;AACvC,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,+DAA8D,qBAAqB;AACnF;AACA;AACA,+BAA8B,IAAI;AAClC,sBAAqB;AACrB,mCAAkC;AAClC,wCAAuC,kCAAkC;;AAEzE;AACA;AACA;AACA;AACA;AACA,gDAA+C,qBAAqB;AACpE;AACA,yCAAwC,OAAO;AAC/C;AACA;AACA,yCAAwC,OAAO;AAC/C;AACA;AACA,kCAAiC,OAAO;AACxC,gBAAe,0CAA0C;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8EAA6E;AAC7E;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,4CAA4C;AACpD;AACA,iEAAgE;AAChE,kBAAiB;AACjB;AACA,uCAAsC,kCAAkC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA,iEAAgE;AAChE;AACA;AACA;AACA,iBAAgB,+BAA+B;AAC/C;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC,oBAAoB;AACrD,SAAQ,qDAAqD;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV,WAAU;AACV,WAAU;AACV,WAAU;AACV,WAAU;AACV,WAAU;AACV,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C,wBAAwB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,gBAAe,eAAe;AAC9B;AACA;AACA,sCAAqC,IAAI,mBAAmB,IAAI;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD,uCAAuC;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,uCAAuC;AAC/C,SAAQ,0DAA0D;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,yCAAyC;AACjD;AACA;AACA;AACA;AACA;AACA,iEAAgE;AAChE,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA,SAAQ,yCAAyC;AACjD;AACA;AACA;AACA;AACA,0EAAyE;AACzE,qBAAoB;AACpB;AACA;AACA;AACA;AACA,iBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAwF;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGAAgG;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA,4BAA2B,OAAO;AAClC,yBAAwB,OAAO;AAC/B,4BAA2B,uBAAuB;AAClD;AACA;AACA,0BAAyB,cAAc;AACvC,6BAA4B,OAAO;AACnC;AACA;AACA,oCAAmC,OAAO;AAC1C,oCAAmC,OAAO;AAC1C;AACA,eAAc,oEAAoE;AAClF;AACA;AACA;AACA,eAAc,oEAAoE;AAClF;AACA;AACA,2BAA0B,cAAc;AACxC;AACA,cAAa,qCAAqC;AAClD;AACA,6BAA4B,eAAe,iCAAiC;AAC5E;AACA,qCAAoC,QAAQ;AAC5C;AACA;AACA,kCAAiC,OAAO;AACxC;AACA;AACA,kBAAiB,YAAY,YAAY,oBAAoB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,cAAc;AACtC;AACA,2BAA0B,OAAO;AACjC,4BAA2B,uBAAuB;AAClD,2BAA0B,OAAO;AACjC,+BAA8B,OAAO;AACrC;AACA,mBAAkB,eAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,QAAQ;AACrC,gCAA+B,MAAM;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAiB,8DAA8D;AAC/E;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA,6BAA4B;AAC5B;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAkC;AAClC;;AAEA,+BAA8B;;AAE9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;;AAGA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;;;AAGA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,cAAa;AACb,iDAAgD;AAChD;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,uBAAuB;AACpD;AACA;AACA;AACA,KAAI,qBAAqB,KAAK,qCAAqC;AACnE;AACA,wDAAuD;AACvD,iBAAgB;AAChB;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAiE,SAAS;AAC1E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;;AAGH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,wBAAuB;AACvB,sBAAqB;;AAErB;AACA;AACA;AACA;AACA,sFAAqF;AACrF;AACA,cAAa,QAAQ;AACrB,gBAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wFAAuF;AACvF;AACA,cAAa,QAAQ;AACrB,gBAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,2BAA2B;AACxC,SAAQ,mDAAmD;AAC3D;AACA;AACA;AACA;AACA,iCAAgC;AAChC,0CAAyC,kBAAkB;AAC3D,sBAAqB,eAAe;AACpC;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB;AACA;AACA,gBAAe,QAAQ;AACvB,2BAA0B;AAC1B,2BAA0B,qCAAqC,mBAAmB;AAClF;AACA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,EAAE;AAC7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA6C,MAAM;AACnD;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,oCAAmC;AACnC;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA2E,EAAE,GAAG,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,4FAA2F;AAC3F;AACA,aAAY,6EAA6E;AACzF;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,0FAAyF;AACzF;AACA,aAAY,yEAAyE;AACrF;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,uDAAuD;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,WAAW;AAC3B,iBAAgB,OAAO;AACvB,iBAAgB,QAAQ;AACxB;AACA,iBAAgB,SAAS;AACzB,wCAAuC,wCAAwC;AAC/E,mBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C,SAAS;AACrD,6CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,QAAO;;AAEP;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,QAAQ;AACxB,mBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAqB;AACrB;;;AAGA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,wDAAuD,EAAE,yBAAyB,EAAE;AACpF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0DAAyD;AACzD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wDAAuD,EAAE,yBAAyB,EAAE;AACpF;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,iBAAiB;AAC9B,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,+CAA+C;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,uCAAuC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,YAAW;;AAEX;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,iBAAiB;AAC9B,eAAc,OAAO;AACrB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,gBAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,gBAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAgD,8BAA8B;AAC9E;AACA,OAAM,wEAAwE;AAC9E;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA,EAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,mDAAmD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,gBAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAAyC;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,EAAE;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oFAAmF,EAAE;AACrF;AACA,MAAK;AACL;AACA;AACA,sFAAqF,EAAE;AACvF;AACA,MAAK;AACL;AACA;AACA,qFAAoF,EAAE;AACtF;AACA,MAAK;AACL;AACA;AACA,kFAAiF,EAAE;AACnF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kFAAiF,EAAE;AACnF;AACA,MAAK;AACL;AACA,6FAA4F,EAAE;AAC9F;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAsB,aAAa;AACnC,uBAAsB,aAAa;AACnC,wBAAuB,cAAc;AACrC;AACA;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC;AACvC;AACA,6BAA4B;AAC5B;AACA,UAAS;AACT,qCAAoC,wCAAwC;AAC5E,qCAAoC,wCAAwC;AAC5E,qCAAoC,wCAAwC;AAC5E,qCAAoC,wCAAwC;AAC5E;AACA,wCAAuC,0CAA0C;AACjF,wCAAuC,0CAA0C;AACjF,sCAAqC,yCAAyC;AAC9E,sCAAqC,yCAAyC;AAC9E,qCAAoC,wCAAwC;AAC5E,qCAAoC,wCAAwC;AAC5E,sCAAqC,yCAAyC;AAC9E,sCAAqC,yCAAyC;AAC9E,sCAAqC,yCAAyC;AAC9E,sCAAqC,yCAAyC;AAC9E,qCAAoC,wCAAwC;AAC5E,uCAAsC,YAAY;AAClD,qCAAoC,uDAAuD;AAC3F,mCAAkC;AAClC;AACA;AACA,eAAc;;;AAGd;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uBAAsB;;AAEtB;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO,uBAAuB,KAAK;AACnC;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B,sCAAsC;AAClE;AACA,UAAS;AACT,6BAA4B,sCAAsC;AAClE;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,iDAAgD,EAAE,WAAW,EAAE,iBAAiB,EAAE;AAClF;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,eAAe;AACrC,MAAK;AACL,IAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,EAAE;AACpC;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,eAAe;AACzC,UAAS;AACT;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;AACD;AACA,EAAC;;AAED;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK,wBAAwB;AAC7B;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,iCAAgC,EAAE,IAAI,EAAE,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAE;AAC/F;AACA,IAAG;;AAEH;AACA;AACA,kEAAiE,EAAE;AACnE;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA,kDAAiD,UAAU;AAC3D;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,uBAAuB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,0BAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA,4CAA2C;AAC3C;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,aAAa,EAAE;AAC/C;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,wCAAuC;AACvC;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,sBAAqB,mBAAmB;AACxC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA,sBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA,qCAAoC;AACpC;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA,QAAO;AACP;AACA,oBAAmB;;AAEnB;AACA;AACA,sBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,mBAAmB,EAAE,EAAE;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,yBAAyB,EAAE;AACrE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,yBAAyB,EAAE;AACrE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,yBAAyB,EAAE;AACrE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,yBAAyB,EAAE;AACrE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,yBAAyB,EAAE;AACrE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA,8BAA6B;AAC7B;AACA,UAAS;AACT;AACA;AACA;AACA,IAAG;AACH,uBAAsB;AACtB;AACA,+BAA8B,iBAAiB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C;AAC9C,mCAAkC;AAClC;AACA,oCAAmC;AACnC,yEAAwE;AACxE,yCAAwC;AACxC,2BAA0B;AAC1B,yCAAwC;AACxC,2CAA0C,8CAA8C,EAAE;AAC1F,uBAAsB;AACtB;AACA,mBAAkB;;AAElB;AACA,MAAK;AACL,uBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,kCAAkC;AACvD;AACA;AACA;AACA;AACA,qBAAoB,MAAM;AAC1B,oBAAmB,MAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,0BAA0B;AACvC;AACA,uBAAsB,OAAO;AAC7B;AACA,sBAAqB,QAAQ;AAC7B;AACA;AACA;AACA,yBAAwB,QAAQ;AAChC;AACA,0BAAyB,QAAQ;AACjC;AACA,wBAAuB,0BAA0B;AACjD;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA6E;AAC7E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,gBAAe,aAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,gBAAe,aAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA,OAAM;AACN;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,0BAA0B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,uBAAuB,EAAE;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;;;AAGA;AACA;AACA;AACA,YAAW,mBAAmB;AAC9B,YAAW,eAAe;AAC1B;AACA,cAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qDAAoD,QAAQ;AAC5D;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,QAAO;;;AAGP;AACA;AACA,QAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;AACA,qDAAoD,QAAQ;AAC5D;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,QAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,gBAAe;AACf,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,cAAa,EAAE;AACf,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,iCAAiC;AAC9C,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAAyB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD;AACjD;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB;;;AAGA;AACA;AACA;AACA;AACA;AACA,yCAAwC,gCAAgC;AACxE;AACA;AACA;AACA,KAAI,4CAA4C;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAgD,+BAA+B;AAC/E,SAAQ,+BAA+B;AACvC,SAAQ,sCAAsC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,6BAA6B;AAC5C,2FAA0F,SAAS;AACnG,gBAAe,oBAAoB;AACnC;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,gCAAgC;AAC9D;AACA,+CAA8C,4CAA4C;AAC1F,mEAAkE,8CAA8C;AAChH;AACA,WAAU,8CAA8C;AACxD;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA6D;AAC7D,sBAAqB;AACrB,aAAY,4CAA4C;AACxD;AACA,aAAY,4CAA4C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,qBAAqB;AAClD,mCAAkC,mBAAmB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C,0CAA0C;AACxF;AACA,0CAAyC,0CAA0C;AACnF;AACA;AACA;AACA,gBAAe,gDAAgD;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAY;AACZ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,aAAa,EAAE;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,oBAAoB;AACrC,cAAa,0CAA0C;AACvD;AACA;AACA,uCAAsC;AACtC;AACA,kBAAiB,qBAAqB;AACtC;AACA;AACA,uCAAsC;AACtC;AACA;AACA;AACA,kBAAiB,SAAS,mDAAmD,qBAAqB;AAClG;AACA,oBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,yDAAwD;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB,uBAAuB,mBAAmB,kCAAkC;AAC7F;AACA,cAAa,0CAA0C;AACvD;AACA;AACA,kBAAiB,8CAA8C;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qCAAoC;AACpC;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,eAAe;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,8BAA6B,qBAAqB;AAClD;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,0CAA0C;AACzE,mCAAkC,yCAAyC;AAC3E,wDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA,WAAU,4CAA4C;AACtD,WAAU,+CAA+C;AACzD,oCAAmC,0CAA0C;AAC7E,aAAY,+CAA+C;AAC3D;AACA;AACA;AACA,WAAU,0CAA0C;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAY;AACZ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,aAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,+BAA+B;AACnE;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX,wCAAuC;;AAEvC;AACA;AACA;AACA,mBAAkB,EAAE;AACpB,4DAA2D,EAAE;AAC7D;AACA;;AAEA,UAAS;;AAET;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,QAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,4CAA4C;AACpE;AACA;AACA;AACA;AACA,WAAU,qCAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,8CAA6C,aAAa;AAC1D,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+CAA8C,0BAA0B,EAAE;AAC1E;AACA;AACA,kBAAiB,qBAAqB;AACtC;AACA,iEAAgE,kCAAkC;AAClG;AACA;AACA,kBAAiB,UAAU;AAC3B,oBAAmB,EAAE;AACrB;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,gDAAgD;AAC3E;AACA;AACA;AACA,WAAU,6CAA6C;AACvD;AACA;AACA;AACA;AACA;AACA,kBAAiB,qBAAqB;AACtC;AACA,gEAA+D,kCAAkC;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA,iCAAgC,8BAA8B;AAC9D,QAAO;;AAEP;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,8CAA8C;AACjE,WAAU,oDAAoD;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,kCAAkC;AACnD,cAAa,wCAAwC;AACrD;AACA,cAAa,6CAA6C;AAC1D,kBAAiB,uCAAuC;AACxD,gDAA+C,4CAA4C;AAC3F;AACA;AACA,kBAAiB,qBAAqB;AACtC;AACA,gEAA+D,kCAAkC;AACjG;AACA;AACA,oBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD,sCAAsC;AACvF;AACA;AACA;AACA;AACA;AACA,gCAA+B,MAAM;AACrC;AACA,iCAAgC,MAAM;AACtC,yBAAwB,OAAO;AAC/B,oCAAmC,UAAU;AAC7C;AACA,mCAAkC,SAAS;AAC3C;AACA,qCAAoC,QAAQ;AAC5C;AACA,kBAAiB,OAAO;AACxB,kBAAiB,yBAAyB;AAC1C,oBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,8BAA8B;AACnD;AACA;AACA,WAAU,wCAAwC;AAClD;AACA;AACA;AACA;AACA,0CAAyC,wCAAwC;AACjF,oBAAmB,6CAA6C;AAChE;AACA,kBAAiB,OAAO;AACxB,kBAAiB,KAAK;AACtB,mBAAkB,OAAO,oBAAoB,8BAA8B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,wBAAwB;AACnE;AACA;AACA,gBAAe;AACf;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,kDAAiD,UAAU;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,QAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,8BAA8B;AACnD;AACA;AACA,WAAU,wCAAwC;AAClD;AACA;AACA;AACA,0CAAyC,wCAAwC;AACjF,oBAAmB,6CAA6C;AAChE;AACA,kBAAiB,OAAO;AACxB,kBAAiB,KAAK;AACtB,mBAAkB,OAAO,oBAAoB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA,+CAA8C,UAAU;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;;AAGA;AACA;AACA,4CAA2C,EAAE;AAC7C;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,gBAAe,2BAA2B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,gBAAe,2BAA2B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;;;AAGA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,8DAA6D,EAAE;AAC/D;AACA;AACA;AACA,2CAA0C;AAC1C;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA8E;AAC9E,8BAA6B;AAC7B;AACA,oDAAmD,mCAAmC;AACtF;AACA;AACA;AACA;AACA;AACA,WAAU,mDAAmD;AAC7D;AACA;AACA;AACA,6BAA4B,mDAAmD;AAC/E;AACA,uBAAsB;AACtB,8CAA6C,MAAM;AACnD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4EAA2E;AAC3E,iBAAgB;AAChB,wEAAuE;AACvE,2FAA0F;AAC1F,KAAI;AACJ;AACA,mFAAkF;AAClF,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA,kBAAiB,+CAA+C;AAChE;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA,kBAAiB,+CAA+C;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAoD,OAAO;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY,mBAAmB;AAC/B;AACA,gBAAe,OAAO;AACtB;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,uEAAsE,GAAG,SAAS,EAAE;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+FAA8F,EAAE;AAChG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sEAAqE;AACrE,+BAA8B,6CAA6C;AAC3E,uDAAsD;AACtD;AACA,0EAAyE;AACzE,uDAAsD;AACtD;AACA,gBAAe,EAAE,8BAA8B;AAC/C;AACA,kBAAiB,EAAE,8CAA8C;AACjE,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+BAA8B,qDAAqD;AACnF;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE,qCAAqC;AACtD,mCAAkC;AAClC,kBAAiB,EAAE,2CAA2C;AAC9D,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,6FAA4F,EAAE;AAC9F;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA,aAAY;AACZ;AACA;AACA,IAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;AACA,kEAAiE,mBAAmB;AACpF;AACA;AACA;AACA,qBAAoB,+CAA+C;AACnE;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAoD;AACpD,oCAAmC,2CAA2C;AAC9E;AACA;AACA;AACA;AACA;AACA,4EAA2E;AAC3E,oCAAmC,qDAAqD;AACxF,+BAA8B;AAC9B,KAAI,yCAAyC;AAC7C;AACA,oBAAmB,yCAAyC,OAAO;AACnE,6DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,8BAA6B,0CAA0C;AACvE,kCAAiC,iCAAiC;AAClE;AACA;AACA,wCAAuC;AACvC,+BAA8B;AAC9B,sCAAqC;AACrC,SAAQ,KAAK,yCAAyC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY,yCAAyC;AACrD;AACA,kBAAiB,mCAAmC;AACpD;AACA;AACA,uEAAsE;AACtE,4DAA2D,MAAM;AACjE,4DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAsF,yCAAyC,sFAAsF,2BAA2B;AAChP;AACA;AACA;AACA;AACA;AACA,2BAA0B,wEAAwE,EAAE,6DAA6D;AACjK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,mDAAmD;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,sBAAsB;AAC1D;AACA,SAAQ;AACR;AACA,uDAAsD;AACtD,gCAA+B;AAC/B,OAAM;AACN;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,OAAM;AACN,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,yDAAwD;AACxD,kCAAiC;AACjC,SAAQ;AACR,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB,QAAQ;AACxB,gDAA+C,mCAAmC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6DAA4D,cAAc;AAC1E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAAyB,kCAAkC,iCAAiC;AAC5F,yBAAwB;AACxB,2CAA0C;AAC1C;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,0BAA0B;AAC3C;AACA,2BAA0B,OAAO;AACjC;AACA,0BAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAqB,qDAAqD;AAC1E;AACA;AACA;AACA,8CAA6C,mBAAmB;AAChE;AACA;AACA,gBAAe,OAAO;AACtB;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE,kCAAkC;AACrD,uCAAsC;AACtC;AACA,6BAA4B,mCAAmC;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE,kCAAkC;AACrD,sCAAqC;AACrC;AACA,6BAA4B,mCAAmC;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE,kCAAkC;AACrD,8CAA6C;AAC7C;AACA,sBAAqB,mCAAmC;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE,kCAAkC;AACrD,qCAAoC;AACpC;AACA,6BAA4B,mCAAmC;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAqB,2DAA2D;AAChF,+BAA8B,qCAAqC;AACnE;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE,qCAAqC;AACtD;AACA,kBAAiB,EAAE;AACnB,sBAAqB,qCAAqC;AAC1D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,OAAO;AACtB,kBAAiB,0BAA0B;AAC3C;AACA,2BAA0B,OAAO;AACjC;AACA,0BAAyB,QAAQ;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,OAAO;AACtB,kBAAiB,0BAA0B;AAC3C;AACA,2BAA0B,OAAO;AACjC;AACA,0BAAyB,QAAQ;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,OAAO;AACtB,kBAAiB,0BAA0B;AAC3C;AACA,2BAA0B,OAAO;AACjC;AACA,0BAAyB,QAAQ;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,OAAO;AACtB,kBAAiB,0BAA0B;AAC3C;AACA,2BAA0B,OAAO;AACjC;AACA,0BAAyB,QAAQ;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,OAAO;AACtB,kBAAiB,0BAA0B;AAC3C;AACA,2BAA0B,OAAO;AACjC;AACA,0BAAyB,QAAQ;AACjC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA,uEAAsE;AACtE,uDAAsD;AACtD,sCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,6CAA6C;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,yCAAyC;AACvE;AACA;AACA,iBAAgB,WAAW;AAC3B,iBAAgB,QAAQ;AACxB,iBAAgB,SAAS;AACzB,wCAAuC,wCAAwC;AAC/E,mBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,SAAS;AACzB,mBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,cAAc;AACzB;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV,SAAQ;AACR;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,KAAI,2BAA2B;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW,OAAO;AAClB,aAAY,SAAS;AACrB;AACA;AACA;AACA;AACA,eAAc,gBAAgB;AAC9B,eAAc,gBAAgB;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,cAAc;AAC3B;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC,oBAAoB;AACrD;AACA,+CAA8C,SAAS;AACvD;AACA;AACA,sBAAqB,WAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,0CAA0C;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D,yCAAyC;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC,8BAA8B;AAC/D,kCAAiC,kCAAkC;AACnE,kCAAiC,8BAA8B;AAC/D,kCAAiC,8BAA8B;AAC/D,kCAAiC,+BAA+B;AAChE,kCAAiC,kCAAkC;;AAEnE;AACA;AACA;AACA;AACA,kBAAiB,aAAa;AAC9B,kBAAiB,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,gBAAgB;AACjC,kBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ,WAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,gBAAgB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA,qEAAoE,mBAAmB;AACvF,qDAAoD,0BAA0B;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,cAAc;AACzB,YAAW,iBAAiB;AAC5B;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA,0DAAyD,cAAc;AACvE,gCAA+B,gBAAgB;AAC/C,mCAAkC,iBAAiB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,qCAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,qBAAqB;AAChC;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,gCAA+B,+BAA+B;AAC9D,oBAAmB,+BAA+B;AAClD,gCAA+B,8CAA8C;AAC7E,mBAAkB,8CAA8C;AAChE,gCAA+B,2CAA2C;AAC1E,mBAAkB,6CAA6C;AAC/D,gCAA+B,8CAA8C;AAC7E,mBAAkB,gDAAgD;AAClE;AACA;AACA;AACA;AACA,uCAAsC,IAAI,IAAI,EAAE,IAAI,EAAE;AACtD;AACA,uCAAsC,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE;AAClE;AACA,yCAAwC,IAAI,IAAI,EAAE;AAClD;AACA,0CAAyC,IAAI,IAAI,EAAE;AACnD,SAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA,6BAA4B,EAAE;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAA+E,OAAO;AACtF;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,eAAc,EAAE,eAAe,UAAU;AACzC;AACA;AACA;AACA,sCAAqC,eAAe,0BAA0B,uBAAuB;AACrG,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,YAAW,cAAc;AACzB;AACA;AACA;AACA,cAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA,kBAAiB,SAAS;AAC1B,+BAA8B,8BAA8B;AAC5D,kBAAiB,SAAS;AAC1B,+BAA8B,iCAAiC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA,WAAU,KAAK;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,iDAAiD;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,sCAAsC;AACzD,oBAAmB,sCAAsC;AACzD,oBAAmB,sCAAsC;AACzD,oBAAmB,sCAAsC;AACzD,oBAAmB,uCAAuC;AAC1D;AACA,aAAY;AACZ;AACA;AACA,qCAAoC,YAAY,aAAa,SAAS;AACtE;AACA;AACA;AACA;AACA,0DAAyD;AACzD,4DAA2D;AAC3D,2DAA0D;AAC1D,yDAAwD;AACxD;AACA;AACA,oBAAmB,aAAa;AAChC,oBAAmB,cAAc;AACjC,oBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD;AACnD;AACA,uDAAsD;AACtD,uDAAsD;AACtD;AACA;AACA,mBAAkB,aAAa;AAC/B,mBAAkB,cAAc;AAChC,mBAAkB,YAAY;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,iDAAiD;AAC9D,cAAa,iDAAiD;AAC9D,cAAa,iDAAiD;AAC9D,cAAa,iDAAiD;AAC9D,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,uBAAuB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;;AAEA;AACA,uBAAsB,0BAA0B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,MAAM;AACtC;AACA,2CAA0C,MAAM;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C,MAAM;AACnD;AACA;AACA;AACA;AACA,iDAAgD,MAAM;AACtD;AACA;AACA;AACA,YAAW,SAAS,0CAA0C;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC,OAAO;AAC1C;AACA;AACA,mCAAkC,OAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,MAAM;AACtC;AACA,YAAW,MAAM;AACjB,OAAM,MAAM;AACZ;AACA;AACA;AACA,+CAA8C,MAAM;AACpD;AACA;AACA;AACA;AACA,kDAAiD,MAAM;AACvD;AACA;AACA;AACA,YAAW,SAAS,yCAAyC;AAC7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,MAAM;AACtC;AACA,YAAW,MAAM;AACjB,OAAM,MAAM;AACZ;AACA;AACA;AACA,kDAAiD,MAAM;AACvD;AACA;AACA;AACA;AACA,qDAAoD,MAAM;AAC1D;AACA;AACA;AACA,YAAW,SAAS,4CAA4C;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,oBAAoB;AAC9C,yBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW,WAAW,oBAAoB,kCAAkC;AAC5E;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW,WAAW,mBAAmB,kCAAkC;AAC3E;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW,WAAW,oBAAoB,kCAAkC;AAC5E;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW,WAAW,oBAAoB,kCAAkC;AAC5E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA,YAAW,WAAW,gBAAgB,kCAAkC;AACxE;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,6BAA6B;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,+BAA+B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,yCAAyC;AAC7C;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,0BAAyB,mCAAmC;AAC5D;AACA;AACA,KAAI,uCAAuC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,qCAAqC;AAC3C,OAAM,mCAAmC;AACzC;AACA;AACA,qEAAoE;AACpE,QAAO,mCAAmC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,UAAU;AACpC,sCAAqC,qBAAqB;AAC1D,sCAAqC,qBAAqB;AAC1D,gCAA+B,eAAe;AAC9C,yCAAwC,0BAA0B;AAClE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,gBAAe;AACf;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD;AACjD,gBAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,+CAA8C,IAAI;AAClD,6CAA4C,EAAE;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAwB,MAAM;AAC9B,wCAAuC,qBAAqB;AAC5D,wCAAuC,qBAAqB;AAC5D,kCAAiC,eAAe;AAChD,2CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,OAAO;AAChC,wCAAuC,qBAAqB;AAC5D,wCAAuC,qBAAqB;AAC5D,kCAAiC,eAAe;AAChD,2CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B,wCAAuC,qBAAqB;AAC5D,wCAAuC,qBAAqB;AAC5D,kCAAiC,eAAe;AAChD,2CAA0C,0BAA0B;AACpE,sCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,MAAM;AAChC,0CAAyC,qBAAqB;AAC9D,0CAAyC,qBAAqB;AAC9D,oCAAmC,eAAe;AAClD,6CAA4C,0BAA0B;AACtE,0CAAyC,uBAAuB;AAChE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,0BAAyB,cAAc;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,2BAA0B,QAAQ;AAClC,2BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA,wBAAuB,EAAE,yBAAyB,EAAE,YAAY,EAAE;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,uCAAuC;AAC3C;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB;AACA;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,QAAQ;AACnB;AACA;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,SAAS;AACpB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB,YAAW,SAAS;AACpB,YAAW,QAAQ;AACnB;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,QAAQ;AACnB;AACA;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,MAAM;AAC5B,yCAAwC,wBAAwB;AAChE,yCAAwC,wBAAwB;AAChE,yCAAwC,wBAAwB;AAChE,yCAAwC,wBAAwB;AAChE,gCAA+B,eAAe;AAC9C,yCAAwC,0BAA0B;AAClE,0CAAyC,2BAA2B;AACpE,0CAAyC,2BAA2B;AACpE;AACA;AACA;AACA,0CAAyC,MAAM;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA6C,gCAAgC;AAC7E;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA,8CAA6C,iBAAiB;AAC9D;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA,8CAA6C,yBAAyB;AACtE;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA,8CAA6C,eAAe;AAC5D;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA,8CAA6C,eAAe;AAC5D;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,EAAE;AAChB,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA,SAAQ,4DAA4D;AACpE;;AAEA;AACA,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,2BAA2B,+BAA+B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC;;AAElC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf,sBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wDAAuD,EAAE,+BAA+B,EAAE;AAC1F;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAgC;;;AAGhC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA,8CAA6C,qCAAqC;AAClF,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,+BAA+B;AACjD,OAAM,iCAAiC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,kDAAkD;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C,6BAA6B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,UAAS;AACT,UAAS;AACT,UAAS;AACT,UAAS;AACT,UAAS;AACT,UAAS;AACT,QAAO;AACP,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,WAAW,kCAAkC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA,wBAAuB,WAAW;AAClC,0BAAyB,SAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA,4BAA2B;;AAE3B;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,2CAA0C,0BAA0B;AACpE,2CAA0C,0BAA0B;AACpE,gCAA+B,eAAe;AAC9C,yCAAwC,0BAA0B;AAClE;AACA;AACA;AACA;AACA,2CAA0C,OAAO;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA,iEAAgE,SAAS;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B,cAAa;AACb;AACA;AACA;AACA,qDAAoD,MAAM;AAC1D,iBAAgB;AAChB;AACA;AACA;AACA,4BAA2B,MAAM;AACjC;AACA;AACA,4BAA2B,aAAa;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,cAAc;AACpB;AACA,mDAAkD,cAAc;AAChE;AACA;AACA;AACA;AACA,KAAI,mCAAmC;AACvC;AACA;AACA;AACA,YAAW,WAAW,SAAS,kCAAkC;AACjE;AACA;AACA,8CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAiE,KAAK;AACtE;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,gCAAgC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA,kCAAiC,YAAY,GAAG,MAAM;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA,gGAA+F;AAC/F,mCAAkC;AAClC,6CAA4C,iBAAiB;AAC7D,oCAAmC,iBAAiB;AACpD;AACA;AACA;AACA,qCAAoC,2CAA2C;AAC/E,WAAU,uDAAuD;AACjE;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,aAAa,kCAAkC;AACrE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;;AAEA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAoB,oBAAoB;AACxC;AACA,uBAAsB,oBAAoB;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,UAAU,kCAAkC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,6CAA6C;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,SAAQ;AACR;AACA;;;AAGA;AACA;AACA;AACA;AACA,yCAAwC,oDAAoD;AAC5F,KAAI,0DAA0D;AAC9D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,mCAAmC;AACvC;AACA;AACA;AACA,KAAI,qCAAqC;AACzC;AACA;AACA,YAAW,WAAW,aAAa,kCAAkC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,mCAAmC;AACvC;AACA;AACA;AACA,KAAI,qCAAqC;AACzC;AACA;AACA,YAAW,WAAW,cAAc,kCAAkC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM,OAAO,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE,+BAA+B;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC,WAAW;AAClD,yDAAwD,eAAe;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD;AAClD;AACA;AACA,6EAA4E;AAC5E;AACA;AACA;AACA,aAAY,4BAA4B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW;AACtB,SAAQ,kCAAkC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,qCAAqC;AAChD,YAAW,+CAA+C;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B,6CAA6C;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,mCAAmC;AAC7C,WAAU,6CAA6C;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,2CAA2C;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,mCAAmC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,UAAU,kCAAkC;AAClE,aAAY,qEAAqE;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,aAAa;AACxC;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,aAAa,kCAAkC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,cAAc,kCAAkC;AACtE,iBAAgB,qEAAqE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,YAAY,kCAAkC;AACpE,eAAc,qEAAqE;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,cAAc,kCAAkC;AACtE,iBAAgB,qEAAqE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,eAAe,kCAAkC;AACvE,kBAAiB,qEAAqE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,eAAe,kCAAkC;AACvE,kBAAiB,qEAAqE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,cAAc,kCAAkC;AACtE,iBAAgB,qEAAqE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,YAAY,kCAAkC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,UAAU,kCAAkC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,+EAA8E;;AAE9E;AACA;AACA,4BAA2B,iBAAiB;AAC5C,2BAA0B,gBAAgB;AAC1C;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,aAAa,kCAAkC;AACrE,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,WAAW,kCAAkC;AACnE,MAAK,qEAAqE;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,qBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,UAAU,kCAAkC;AAClE,aAAY,qEAAqE;AACjF;AACA;AACA,SAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,SAAS,kCAAkC;AACjE,YAAW,qEAAqE;AAChF;AACA;AACA,SAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,SAAS,kCAAkC;AACjE,YAAW,qEAAqE;AAChF;AACA;AACA;AACA;AACA,0DAAyD;AACzD,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,QAAQ,kCAAkC;AAChE,WAAU,qEAAqE;AAC/E;AACA;AACA;AACA;AACA,mDAAkD;AAClD,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,UAAU,kCAAkC;AAClE,aAAY,qEAAqE;AACjF;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,WAAW;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,cAAc,kCAAkC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD;AAClD,+BAA8B;AAC9B,oBAAmB,kEAAkE;AACrF,mFAAkF;AAClF,uCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,QAAQ,6CAA6C;AAChE,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,cAAc;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,+CAA+C;AAC9D,gBAAe,+CAA+C;AAC9D;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA4B,sBAAsB;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;;AAEf;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,uCAAuC;AAC3C,gBAAe,mCAAmC;AAClD;AACA;AACA;AACA,6DAA4D,2BAA2B;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,SAAS,kCAAkC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,8CAA6C,YAAY,MAAM,YAAY,OAAO,QAAQ;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAoE;AACpE,qEAAoE;AACpE,qEAAoE;AACpE,qEAAoE;AACpE,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAsF;AACtF;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,yCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,2CAA0C,iCAAiC;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,8BAA8B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAoE;AACpE,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA,qCAAoC,sBAAsB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C;AAC1C,8EAA6E;AAC7E,6BAA4B,aAAa,+BAA+B;AACxE,gCAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB,iCAAgC,SAAS;AACzC,iCAAgC,SAAS,OAAO,SAAS;AACzD,mCAAkC,SAAS,IAAI,SAAS;AACxD,qCAAoC,SAAS,IAAI,SAAS,OAAO,4BAA4B;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,kBAAkB;AAC7B,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA,4CAA2C,sBAAsB;AACjE;;AAEA;AACA;AACA;AACA,gCAA+B;AAC/B,wCAAuC,SAAS;AAChD,wCAAuC,SAAS,OAAO,SAAS;AAChE,0CAAyC,SAAS,IAAI,SAAS;AAC/D,4CAA2C,SAAS,IAAI,SAAS,OAAO,4BAA4B;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,sFAAqF;AACrF;AACA,6CAA4C;AAC5C,2BAA0B;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,aAAa;AAC/B,mBAAkB,cAAc;AAChC,mBAAkB,cAAc;AAChC,mBAAkB,cAAc;AAChC,mBAAkB,cAAc;AAChC,mBAAkB,cAAc;AAChC;AACA,4DAA2D,mCAAmC;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA,eAAc;AACd;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,0BAAyB,gBAAgB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,kBAAkB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,uBAAuB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,kCAAkC;AAC3C,UAAS,qCAAqC;AAC9C,UAAS,sCAAsC;AAC/C,UAAS,kCAAkC;AAC3C,UAAS,mCAAmC;AAC5C,UAAS,mCAAmC;AAC5C,UAAS,uCAAuC;AAChD,UAAS,oCAAoC;AAC7C,UAAS,qCAAqC;AAC9C,UAAS;AACT;AACA,kBAAiB,gBAAgB;AACjC;AACA;AACA;AACA,gBAAe,YAAY,IAAI,aAAa,UAAU,YAAY;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B;;AAE1B;AACA,2HAA0H,EAAE;AAC5H;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oJAAmJ,EAAE;AACrJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD;AACvD;AACA;;;AAGA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,yBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA,eAAc;AACd;AACA;AACA,2HAA0H,EAAE,kBAAkB,EAAE,oBAAoB,EAAE;AACtK;AACA,aAAY;AACZ;AACA,uCAAsC;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA2D,4BAA4B,EAAE;AACzF;AACA;AACA;;AAEA;AACA,0DAAyD,gBAAgB;AACzE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;;AAEf;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE,+BAA+B;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B;AAC5B,gDAA+C;AAC/C,gCAA+B;AAC/B,sDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,gBAAgB,kCAAkC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE,+BAA+B;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B;AAC5B,gDAA+C;AAC/C,gCAA+B;AAC/B,sDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,gBAAgB,kCAAkC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW;AACtB;AACA,KAAI,kCAAkC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAkE,YAAY;AAC9E,wEAAuE,0BAA0B;AACjG,gEAA+D;AAC/D;AACA;AACA,wBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C,yBAAyB;AACxE;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,WAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kDAAiD,QAAQ;AACzD;AACA;AACA;;AAEA,gDAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C,4CAA4C;AAC3F;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,4CAA4C;AACtE;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,YAAY;AACnC,+DAA8D;AAC9D,mEAAkE,OAAO;AACzE;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA,yBAAwB,OAAO,IAAI,MAAM;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,EAAE;AACpB;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD,yCAAyC;AAC3F,6BAA4B,yCAAyC;AACrE,KAAI,wCAAwC,MAAM,iCAAiC;AACnF;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO,qCAAqC;AAC5C;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB;AACA;AACA,YAAW,0BAA0B;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,2BAA2B;AAC1C,gBAAe,4BAA4B;AAC3C,gBAAe,yBAAyB;AACxC,gBAAe,0BAA0B;AACzC,gBAAe;AACf;AACA,+CAA8C;AAC9C,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,+CAA8C,qCAAqC;AACnF;AACA,iCAAgC,EAAE,uBAAuB;AACzD,8CAA6C;AAC7C,2BAA0B,gCAAgC;AAC1D;AACA;AACA;AACA;AACA;AACA,wCAAuC,uBAAuB;AAC9D;AACA;AACA,wCAAuC,uBAAuB;AAC9D;AACA;AACA,wCAAuC,uBAAuB;AAC9D,WAAU;AACV;AACA;AACA;;AAEA,mCAAkC,iBAAiB;AACnD;AACA;AACA;AACA;AACA,wBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;;;AAGA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0EAAyE,QAAQ;AACjF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA,sEAAqE;AACrE,YAAW;AACX;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW;AACX,UAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAwB,EAAE,aAAa,EAAE;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC,iCAAiC;;AAEpE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4DAA2D,gBAAgB;AAC3E;AACA;AACA;AACA;AACA,2CAA0C,gCAAgC;AAC1E;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,gBAAe;AACf;AACA,gBAAe;AACf;AACA,uCAAsC,gCAAgC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;;AAEA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA,gDAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,8CAA6C,yBAAyB,EAAE;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,gCAAgC;AACtE;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,+BAA8B,MAAM;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;;;AAGA;AACA,0BAAyB,sCAAsC;;AAE/D;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,qDAAoD;AACpD;AACA,8CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,yCAAwC,uCAAuC;AAC/E,cAAa;AACb;AACA,yCAAwC,gCAAgC;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,mDAAkD;;AAElD;AACA;AACA;AACA;AACA;;AAEA,gCAA+B;AAC/B,wDAAuD,gBAAgB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oDAAmD;;AAEnD;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAG;;AAEH,EAAC;;AAED,2HAA0H,oFAAoF,yBAAyB,UAAU,eAAe,8BAA8B,4BAA4B,qCAAqC,oCAAoC,yBAAyB;;AAE5Z;AACA,gC;;;;;;AC/orBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;;;AAIA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAQ,YAAY;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF,qBAAoB;;AAEpB;AACA;AACA,GAAE;;AAEF;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4CAA2C;AAC3C;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF,iCAAgC;AAChC;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,YAAY;AACvB;;AAEA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA,YAAW,YAAY;AACvB;;AAEA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA,UAAS,SAAS;AAClB;AACA;;AAEA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS,YAAY;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU,YAAY;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAE;;AAEF;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,SAAS;AAClB;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA,iBAAgB,IAAI;;AAEpB;AACA;;AAEA;AACA;;AAEA;AACA,yCAAwC,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD,UAAS;;AAET;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;;AAEA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAa,yBAAyB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;AACA,GAAE;AACF;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF;;AAEA;AACA;AACA,YAAW,gBAAgB;AAC3B,cAAa,uBAAuB;AACpC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW,eAAe;AAC1B,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,eAAe;AAC1B,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,YAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,iCAAgC,MAAM;AACtC;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,gBAAe;;AAEf,UAAS;;AAET;AACA,SAAQ,iCAAiC;AACzC,SAAQ,oBAAoB;AAC5B,SAAQ,sCAAsC;AAC9C,SAAQ;AACR,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;;AAEA;AACA;AACA;AACA,iBAAgB,aAAa,EAAE;AAC/B;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,iEAAgE;AAChE;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO,yEAAyE;AAChF;;AAEA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,oDAAmD;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA,kEAAiE,UAAU;AAC3E,uCAAsC,2BAA2B;AACjE;AACA,iCAAgC,MAAM;AACtC;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA,WAAU,YAAY;AACtB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,WAAU,YAAY;AACtB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,WAAU,UAAU;AACpB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,WAAU,cAAc;AACxB;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;AAEA;AACA,aAAY,uEAAuE;AACnF;AACA;AACA,aAAY,4BAA4B;AACxC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA,4DAA2D;AAC3D;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA,oCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,SAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAQ,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,GAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,SAAQ,SAAS;AACjB;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC,iDAAiD;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAiD;AACjD,WAAU,wCAAwC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,gBAAgB;AAC3B;AACA,YAAW,QAAQ;AACnB,YAAW,MAAM;AACjB,YAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA,GAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA,GAAE;AACF;;AAEA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;;AAEA;;AAEA,EAAC;;;;AAID;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA,eAAc,SAAS;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;;AAEA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA,UAAS,GAAG;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU,OAAO;AACjB;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAS,OAAO;AAChB,wBAAuB,wBAAwB;AAC/C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA,iDAAgD;AAChD,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA;AACA,EAAC;AACD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;AACD;;;;AAIA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAmB;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,oCAAoC;AAC9C;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,QAAO;AACP,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,SAAQ;AACR,QAAO;AACP;AACA,OAAM;AACN,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,+CAA8C;AAC9C,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA,KAAI;;AAEJ;;AAEA,6CAA4C;AAC5C;AACA;AACA;AACA;AACA,WAAU,YAAY;AACtB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;AAGD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;AACF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU,SAAS;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,wCAAuC;AACvC;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAqB;AACrB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mCAAkC;AAClC;;AAEA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAuB,aAAa;AACpC,IAAG;AACH;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;;AAEA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAoB,SAAS;AAC7B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;;AAGD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ,GAAE;AACF;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;AACD;;;;AAIA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE,gBAAgB;AAClB;;AAEA;AACA;AACA;AACA;AACA;;AAEA,YAAW;;AAEX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,uCAAsC;AACtC;AACA;AACA;;AAEA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+CAA8C;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA2C;AAC3C;;AAEA;AACA;AACA;AACA;AACA,WAAU,KAAK;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mDAAkD;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA,sDAAqD;AACrD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,0BAAyB;AACzB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,+DAA8D;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAU,cAAc;;AAExB;AACA;AACA;AACA,kBAAiB,mBAAmB;AACpC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,+BAA+B;AACxD;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAsB,wDAAwD;AAC9E;;AAEA;AACA,GAAE;;AAEF;AACA;;AAEA,cAAa;;AAEb;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uCAAsC,cAAc;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAqC;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,eAAc,qCAAqC;;AAEnD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAK;AACL;AACA;AACA;AACA;AACA,GAAE;AACF;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAQ,OAAO;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wCAAuC,OAAO;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yCAAwC,OAAO;AAC/C;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAS,OAAO;AAChB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;;AAEA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA,UAAS,mCAAmC;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;;AAEA,UAAS,2BAA2B;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA,UAAS,0BAA0B;AACnC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA,8BAA6B;AAC7B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,aAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAiB,gBAAgB;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAS,WAAW;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;AAGD;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAkB;AAClB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,sCAAqC,QAAQ,SAAS,MAAM,aAAa,eAAe;AACxF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,2BAA2B;AAC7D,2BAA0B,cAAc,cAAc,OAAO;AAC7D,gBAAe,YAAY,UAAU;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA6B,SAAS,QAAQ,QAAQ;AACtD;AACA;AACA;AACA,sCAAqC,4BAA4B;AACjE,8BAA6B,cAAc,SAAS,SAAS;AAC7D;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA,EAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAY,+DAA+D;AAC3E;AACA;AACA;AACA,GAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,SAAQ,OAAO;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAQ,gBAAgB;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,+BAA8B,4BAA4B;AAC1D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA,kBAAiB;;AAEjB;AACA;;AAEA,WAAU,OAAO;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,aAAY;AACZ;;AAEA;AACA;AACA;;AAEA,YAAW,SAAS;AACpB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA,IAAG;AACH;AACA,EAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA,SAAQ,QAAQ;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAQ,gBAAgB;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,mDAAkD;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAU,iBAAiB;AAC3B;AACA;;AAEA;;AAEA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,4BAA2B;AAC3B,gCAA+B,kBAAkB,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,iBAAiB;AAC5B;AACA;;AAEA,8CAA6C;AAC7C;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;AAEA,SAAQ,iBAAiB;AACzB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,UAAS,iBAAiB;AAC1B;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,EAAC;;AAED;AACA,kEAAiE;AACjE;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAmB,cAAc;AACjC,GAAE;AACF;AACA;AACA;AACA;AACA;AACA,kDAAiD;;AAEjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAA+B,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gCAA+B,SAAS;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,WAAU,kBAAkB;AAC5B,YAAW,kBAAkB;AAC7B,eAAc;AACd,EAAC;AACD;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA,SAAQ,mBAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,KAAI;AACJ;;AAEA,KAAI;AACJ;AACA;AACA;;AAEA,IAAG;AACH;;AAEA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;AAKD;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,IAAG;AACH;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;AAKD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;;AAEA,WAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA,WAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA,UAAS,OAAO;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;AAKD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAI;AACJ;AACA;;AAEA,kCAAiC;AACjC;AACA;;AAEA,KAAI;AACJ;;AAEA,KAAI;AACJ;AACA;AACA,MAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,SAAS;AACpB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;AAKD;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA,EAAC;;;AAGD;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA,iBAAgB;;AAEhB,iDAAgD;AAChD;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,oBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wDAAuD;AACvD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,KAAI;;AAEJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,QAAO;AACP,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAS;AACT;;AAEA;;AAEA;AACA;;AAEA;AACA,kBAAiB;AACjB,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC;AAClC;AACA,uBAAsB;AACtB,4BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oFAAmF;AACnF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAc,oCAAoC;AAClD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAK;AACL;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,KAAI;AACJ;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;;AAEA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAI;AACJ;AACA;AACA;AACA,IAAG;;AAEH,GAAE;AACF;AACA;AACA;AACA;;AAEA,GAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd,OAAM;AACN,OAAM;AACN,IAAG;AACH;AACA,EAAC;;;AAGD;AACA;AACA;AACA,GAAE;AACF;;AAEA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;AACA,mDAAkD;AAClD;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;AAKD;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;AAKD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA,EAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,IAAG;AACH;AACA,IAAG;AACH;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;AAKD;AACA;AACA;AACA,GAAE;AACF;;;;;AAKA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,WAAU,kBAAkB;AAC5B;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB;;AAEnB,6DAA4D,eAAe;AAC3E;AACA;AACA;;AAEA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA,eAAc,sDAAsD;AACpE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAI;AACJ;AACA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA,eAAc,mCAAmC;AACjD,gBAAe,6DAA6D;AAC5E;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAI;AACJ;AACA,GAAE;AACF,EAAC;;;AAGD;AACA;AACA;AACA;;AAEA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;;;;;AAKA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;;AAEA,EAAC;;;;;;;ACz/RD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,E;;;;;;mCCvBA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;;mCC3QD;AACA;AACA;AACA,iBAAgB,uCAAuC;AACvD,mBAAkB,yCAAyC;AAC3D,oBAAmB;AACnB;AACA;AACA,EAAC,uJ;;;;;;mCCRD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB;AAClB;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,QAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCxFD;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCClCD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,0BAAyB;AACzB;;AAEA;AACA;;AAEA;AACA;AACA,iBAAgB,IAAI;AACpB,iBAAgB,OAAO;AACvB;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,SAAS;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA,uCAAsC;AACtC;;AAEA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO,IAAI;;AAEX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCClGD;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,SAAS;AACtB,cAAa,SAAS;AACtB,cAAa,SAAS;AACtB,cAAa,SAAS;AACtB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC;;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc,SAAS;AACvB,eAAc,SAAS;AACvB;AACA,eAAc,SAAS;AACvB;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;;AAEP;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCCnJD;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,yBAAwB;AACxB,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,oBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCC1GD;AACA;;AAEA;AACA;AACA,gCAA+B,2BAA2B;;AAE1D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,IAAI;AACnB,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCvGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iEAAgE;AAChE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAsB,SAAS;AAC/B,2BAA0B,SAAS;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,yCAAwC,WAAW;AACnD;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAgB;AAChB;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,8BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAkC,gBAAgB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAmB;AACnB;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAG;;;;;AAKH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,0CAA0C;AACzE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,qBAAoB;AACpB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,QAAQ;AAC7B;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCnfD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;;mCC1DD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAe,UAAU;AACzB;AACA;AACA;;AAEA;AACA;AACA,gBAAe,aAAa;AAC5B;AACA;AACA;;AAEA;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,eAAe;AAC9B,gBAAe,WAAW;AAC1B;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCC1ED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAO;AACP;;AAEA;;AAEA;AACA,EAAC;;;;;;;mCC1CD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA,oDAAmD,cAAc;AACjE;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,EAAE;AAClB,iBAAgB,EAAE;AAClB,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,YAAY;AAC5B,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC7JD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAkB,MAAM;AACxB,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,kDAAiD;AACjD,UAAS;AACT,QAAO;;AAEP;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB,MAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCC5CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;;AAEA;;AAEA,EAAC;;;;;;;AC5CD;AACA;AACA,kDAAiD,iBAAiB;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCC7BD;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCTD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,Q,6CAAO;AACP,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,aAAa;AAC7B,iBAAgB,KAAK;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,EAAE;AAClB,iBAAgB,EAAE;AAClB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCxMD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCClHD;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAkB,MAAM;AACxB,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB,MAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCC1BD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCzBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,gBAAe,KAAK;AACpB;AACA;AACA;AACA,qDAAoD;AACpD;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCChCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCbD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6BAA4B;AAC5B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,KAAK;AACpB,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;;AAGA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,uDAAsD,GAAG,iBAAiB;;AAE1E;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA,qCAAoC,iBAAiB;AACrD,kCAAiC,iBAAiB;AAClD;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;;;;;;mCC9UD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,QAAO;AACP;AACA,QAAO;;AAEP;AACA,uCAAsC,iBAAiB;AACvD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCjFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCdD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA,cAAa,6BAA6B;AAC1C,oBAAmB,0BAA0B;AAC7C,QAAO;AACP,cAAa,4BAA4B;AACzC,oBAAmB,0BAA0B;AAC7C;;AAEA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,iBAAgB,SAAS;AACzB;AACA,iBAAgB,SAAS;AACzB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;;AAEA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCzJD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCvDD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,EAAC,uJ;;;;;;mCCnCD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCC1BD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA,eAAc,OAAO;AACrB,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCCjID;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,UAAU;AACvB;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,OAAO;AACpB,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA,cAAa,eAAe;AAC5B;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,SAAS;AACtB,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,EAAE;AACf,eAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA,EAAC;;;;;;;mCCnPD;AACA;AACA;;AAEA,gCAA+B,iCAAiC;;AAEhE;AACA,kCAAiC;AACjC;AACA;AACA;AACA,MAAK;;AAEL,mBAAkB;AAClB;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,aAAa;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCC9ED;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gCAA+B,mCAAmC;;AAElE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC/CD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC7DD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCCpBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB,IAAI;AACpB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC1CD;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;;;;;;;mCClBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB,eAAc;AACd;AACA;AACA,eAAc;AACd;AACA;AACA,eAAc;AACd,aAAY;AACZ;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,cAAa,OAAO;AACpB;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,MAAK;AACL,IAAG;AACH,EAAC;;;;;;;AC9LD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oDAAmD;AACnD,0EAAyE;;AAEzE;AACA,mCAAkC;AAClC,oCAAmC;AACnC,+CAA8C;;AAE9C;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kFAAiF,iCAAiC;;AAElH;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH,EAAC;;;;;;;mCCvGD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCC9CD;;AAEA;AACA;AACA;AACA;AACA;AACA,uCAAsC,4BAA4B;AAClE;AACA;AACA;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL,EAAC;;;;;;;mCCvCD;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;ACND;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA,6FAA4F;AAC5F,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzDD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACrGD;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvDD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACtID;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACtGD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACjJD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC/GD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC5GD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC3ID;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7ED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,4BAA2B,IAAI;AAC/B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC3JD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC;AACnC,kBAAiB;AACjB;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7ED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1DD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1ED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA,yEAAwE;AACxE;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,kCAAiC;AACjC,iCAAgC;AAChC,iCAAgC;AAChC,gCAA+B;AAC/B;AACA;AACA;AACA,0DAAyD;AACzD;AACA,2DAA0D;AAC1D;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC;AACrC,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC5FD;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AChED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACjED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,4BAA2B,IAAI;AAC/B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7ED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC9ED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC9DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxDD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC5DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACrED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,4BAA2B,IAAI;AAC/B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AChFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzHD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1ID;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC3GD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,2BAA0B,IAAI,IAAI,IAAI;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7GD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACjFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7HD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,4BAA2B,IAAI;AAC/B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACpED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC/DD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACjFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,qCAAoC,IAAI,IAAI,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACrGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxDD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,4BAA2B,IAAI;AAC/B;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AClED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACpID;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACjHD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC9FD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC3GD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACrED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvHD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AChFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC3FD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC3DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzHD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACrED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C;AAC5C,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C;AAC5C,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC9DD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AClKD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC/DD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC5JD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC9JD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACnED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1GD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1GD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACjED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,iCAAgC;AAChC,cAAa;AACb,gCAA+B;AAC/B,cAAa;AACb,mCAAkC;AAClC,cAAa;AACb,mCAAkC;AAClC,cAAa;AACb,gCAA+B;AAC/B,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7FD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC/DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC5DD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxDD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxDD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvJD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxDD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AChED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7HD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACnGD,4SAA2S,kDAAkD,0P;;;;;;ACA7V;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;mCCTA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCJD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;;AAGA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH,EAAC;;;;;;;mCC1ID;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB,iBAAgB,IAAI;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB,iBAAgB,IAAI;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,cAAc;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,eAAe;AAC3C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB,mBAAkB,YAAY;AAC9B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,sBAAqB,QAAQ;AAC7B;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAqB,OAAO;AAC5B,wBAAuB;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC;;;;;;;mCChVD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCCxDD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCRD;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC,uJ;;;;;;mCCND;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCClBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC,uJ;;;;;;ACxLD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAwC;AACxC;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCChDD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCnDD;AACA;AACA;;AAEA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA2C,gBAAgB;AAC3D;;AAEA;AACA,cAAa;AACb;;AAEA;;AAEA,UAAS;AACT,QAAO;;AAEP;AACA,MAAK;AACL,EAAC;;;;;;;mCCvCD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC5CD;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA,EAAC;;;;;;;mCCrBD;AACA;AACA;;AAEA;AACA;AACA,cAAa,MAAM;AACnB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;;;;;;;mCChBD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAkB,cAAc,EAAE;AAClC;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCzCD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAiB,WAAW;AAC5B,kBAAiB,QAAQ;AACzB,oBAAmB;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,8FAA6F;AAC7F,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA,kBAAiB,WAAW;AAC5B,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC/HD;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCtCD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;AACH,EAAC;;;;;;;mCCzBD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;AACjB,gCAA+B;AAC/B;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA,EAAC;;;;;;;mCCtJD;AACA;;AAEA;AACA,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;;AAEtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;;AAEtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;;AAEtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;;AAEtF;;AAEA,EAAC;;;;;;;mCCtCD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,EAAC,uJ;;;;;;mCCbD;AACA;;AAEA;AACA;AACA;AACA,mCAAkC,mCAAmC;AACrE,IAAG;;AAEH,EAAC;;;;;;;mCCTD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCjCD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCdD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCfD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,EAAC,uJ;;;;;;mCCRD;AACA;AACA;AACA,EAAC;;;;;;;mCCHD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,sBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCCjDD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP,MAAK;;AAEL;AACA,kCAAiC;AACjC;AACA;AACA,6CAA4C;;AAE5C;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA,EAAC;;;;;;;mCC3GD;AACA;AACA;;AAEA;AACA;AACA,kBAAiB,2BAA2B;AAC5C;AACA;AACA,QAAO;AACP;AACA,kBAAiB,6BAA6B;AAC9C;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,aAAY;AACZ,qBAAoB,yBAAyB,EAAE;AAC/C,uBAAsB,2BAA2B,EAAE;AACnD,yBAAwB,6BAA6B,EAAE;AACvD,0BAAyB,8BAA8B,EAAE;AACzD,4BAA2B,6BAA6B,EAAE;AAC1D,aAAY;AACZ;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;;;;;;mCC7ID;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,8DAA6D,iBAAiB;AAC9E;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;ACtCD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,iDAAiD;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,uBAAsB,QAAQ,+BAA+B,UAAU,UAAU,EAAE;AACnF,8CAA6C;AAC7C;;AAEA;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC9ED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCVD;AACA;AACA,gCAA+B,iCAAiC;AAChE;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kCAAiC,iBAAiB,SAAS,MAAM;AACjE;;AAEA;AACA;AACA,EAAC;;;;;;;mCC9ED;AACA;;AAEA;AACA;;AAEA;AACA,0CAAyC,gCAAgC,EAAE;;AAE3E;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB,MAAM;AACtB;AACA;AACA;;AAEA,kCAAiC,EAAE,KAAK,KAAK,EAAE;AAC/C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCC7LD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,EAAC;;;;;;;mCCtBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,0BAAyB,qBAAqB,EAAE;AAChD;AACA;AACA,4BAA2B,oBAAoB;AAC/C;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAuB,wBAAwB;AAC/C,YAAW;AACX,wBAAuB,wBAAwB;AAC/C;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCC/CD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC7DD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB;AACA;AACA;AACA,cAAa,cAAc;AAC3B,cAAa,cAAc;AAC3B,cAAa,cAAc;AAC3B,cAAa,cAAc;AAC3B,cAAa,cAAc;AAC3B;AACA,eAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA,oEAAmE,kBAAkB;AACrF;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,aAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,EAAC,uJ;;;;;;AC1FD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6CAA4C,oBAAoB;AAChE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wCAAuC;AACvC;AACA,UAAS,qCAAqC;AAC9C;AACA,UAAS,qCAAqC;AAC9C;AACA,UAAS,OAAO;AAChB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAA+B,0BAA0B;AACzD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA,gCAA+B,0BAA0B;AACzD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sDAAqD,EAAE;AACvD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4BAA2B,gBAAgB;AAC3C;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,M;;;AAGA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,qF;AACA,oC;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,wF;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,8D;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,EAAC;;;;;;;;mCCtqBD;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA,gCAA+B,cAAc;AAC7C;AACA;AACA,EAAC;;;;;;;mCCdD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCCVD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,QAAQ;AACxB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,MAAM;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA,iBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,IAAG;AACH,EAAC;;;;;;;mCCzJD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA,IAAG;AACH,EAAC;;;;;;;mCCzBD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC/BD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCzCD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA,EAAC;;;;;;;;AClBD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;;AAEA,8CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,SAAS;AACtB;AACA,eAAc,SAAS;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kBAAiB;AACjB,gBAAe;AACf,eAAc;;AAEd,sCAAqC,oBAAoB,YAAY;AACrE,qCAAoC,qBAAqB,WAAW;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCClWD;AACA;AACA;AACA;;;AAGA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA,EAAC;;;;;;;mCCrDD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,YAAW,gCAAgC;AAC3C,YAAW,gCAAgC;AAC3C,YAAW,8BAA8B;AACzC,YAAW,6BAA6B;AACxC,YAAW,8BAA8B;AACzC,YAAW,+BAA+B;AAC1C,YAAW,8BAA8B;AACzC;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,8BAA6B,kBAAkB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH,EAAC;;;;;;;mCC3JD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCChPD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;AACf;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC,cAAc;AACjD;AACA,gBAAe;AACf;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA,MAAK;AACL,EAAC;;;;;;;mCC7HD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sCAAqC;;AAErC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,cAAc;AAC9B,iBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iCAAgC,qCAAqC;AACrE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB,UAAU;AAC1B,iBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,+DAA8D;AAC9D;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO,IAAI;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC1SD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCClBD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCjFD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA,MAAK;AACL,EAAC,uJ;;;;;;mCCvBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAgC,8BAA8B;AAC9D,cAAa;AACb;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC/BD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCC9CD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCClBD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA,iEAAgE,UAAU;AAC1E;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCC/ND;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,iCAAgC,MAAM;AACtC,mFAAkF,QAAQ;AAC1F;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCxCD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCChCD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;AC5BD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA,MAAK;AACL,EAAC;;;;;;;mCCxCD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL,EAAC,uJ;;;;;;mCCrCD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAgC;AAChC;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC/CD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,MAAM;AACtB,iBAAgB,aAAa;AAC7B;AACA;AACA,iBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO,IAAI;;AAEX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,QAAO;AACP;AACA;;AAEA;AACA,EAAC;;;;;;;ACvDD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCZD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;ACfD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCzBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCdD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA,MAAK;AACL,EAAC,uJ;;;;;;mCCVD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;ACTD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,EAAC,uJ;;;;;;mCCZD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,SAAS;AACvB,eAAc,cAAc;AAC5B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,SAAS;AACvB;AACA,eAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,EAAE;AAChB,eAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;;;AAGA;AACA,EAAC;;;;;;;mCCxHD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCC/BD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCnBD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA,MAAK;AACL;AACA;AACA;AACA,EAAC;;;;;;;ACnCD;AACA;AACA,wCAAuC;;AAEvC,EAAC;AACD,oE;AACA,oBAAmB,gBAAgB,UAAU,UAAU,0CAA0C,wBAAwB,oBAAoB,8CAA8C,YAAY,YAAY,mCAAmC,iBAAiB,gBAAgB,sBAAsB,oBAAoB,kDAAkD,WAAW,YAAY,SAAS,EAAE,oBAAoB,GAAG,qBAAqB,cAAc,mCAAmC,gBAAgB,MAAM,eAAe,gBAAgB,KAAK,wFAAwF,mBAAmB,oCAAoC,qFAAqF,cAAc,yDAAyD,cAAc,kEAAkE,SAAS,sCAAsC,SAAS,cAAc,iFAAiF,WAAW,oEAAoE,gBAAgB,OAAO,YAAY,kEAAkE,mFAAmF,iCAAiC,YAAY,WAAW,yBAAyB,SAAS,wBAAwB,+BAA+B,iBAAiB,WAAW,8BAA8B,SAAS,2BAA2B,mCAAmC,YAAY,WAAW,uBAAuB,qBAAqB,yBAAyB,kCAAkC,WAAW,qBAAqB,SAAS,0BAA0B,iCAAiC,WAAW,+BAA+B,uBAAuB,IAAI,2DAA2D,SAAS,gDAAgD,yCAAyC,iBAAiB,qBAAqB,oBAAoB,kDAAkD,mBAAmB,wDAAwD,mCAAmC,gBAAgB,kBAAkB,8DAA8D,2DAA2D,gIAAgI,8CAA8C,oBAAoB,8DAA8D,qDAAqD,MAAM,mBAAmB,iBAAiB,mCAAmC,kBAAkB,sCAAsC,0DAA0D,iCAAiC,IAAI,iEAAiE,SAAS,yCAAyC,IAAI,4CAA4C,SAAS,gBAAgB,kCAAkC,GAAG,qBAAqB,gBAAgB,+HAA+H,gBAAgB,iDAAiD,cAAc,gGAAgG,sBAAsB,4BAA4B,8DAA8D,EAAE,gBAAgB,uBAAuB,gBAAgB,kBAAkB,iCAAiC,+BAA+B,YAAY,WAAW,4BAA4B,SAAS,4PAA4P,cAAc,8DAA8D,gBAAgB,2DAA2D,sCAAsC,wDAAwD,IAAI,gCAAgC,SAAS,SAAS,+BAA+B,mCAAmC,KAAK,2BAA2B,iBAAiB,KAAK,qCAAqC,SAAS,gBAAgB,sGAAsG,kBAAkB,oBAAoB,MAAM,4BAA4B,IAAI,IAAI,SAAS,IAAI,+KAA+K,oEAAoE,6BAA6B,kIAAkI,4EAA4E,4BAA4B,4BAA4B,+BAA+B,6BAA6B,yCAAyC,gCAAgC,+CAA+C,+BAA+B,oCAAoC,kCAAkC,uCAAuC,6BAA6B,6CAA6C,8BAA8B,6CAA6C,uBAAuB,cAAc,EAAE,gBAAgB,qBAAqB,aAAa,6BAA6B,+CAA+C,gBAAgB,0JAA0J,sEAAsE,iCAAiC,8BAA8B,gBAAgB,iCAAiC,6LAA6L,+CAA+C,4CAA4C,oBAAoB,MAAM,iCAAiC,MAAM,8CAA8C,MAAM,oDAAoD,IAAI,wBAAwB,gBAAgB,uBAAuB,4CAA4C,IAAI,wBAAwB,+BAA+B,IAAI,uBAAuB,SAAS,uCAAuC,MAAM,mEAAmE,iCAAiC,6QAA6Q,MAAM,oUAAoU,YAAY,uEAAuE,aAAa,iDAAiD,mEAAmE,sCAAsC,0CAA0C,YAAY,mEAAmE,+CAA+C,yKAAyK,uBAAuB,QAAQ,MAAM,gDAAgD,IAAI,MAAM,mBAAmB,4HAA4H,YAAY,4CAA4C,QAAQ,6BAA6B,2EAA2E,8CAA8C,yBAAyB,uEAAuE,gEAAgE,MAAM,8DAA8D,UAAU,SAAS,sCAAsC,mCAAmC,mCAAmC,MAAM,kHAAkH,+BAA+B,MAAM,qFAAqF,EAAE,OAAO,qBAAqB,gBAAgB,yBAAyB,KAAK,KAAK,WAAW,0EAA0E,UAAU,IAAI,kBAAkB,SAAS,qFAAqF,IAAI,iDAAiD,2BAA2B,qBAAqB,uCAAuC,UAAU,KAAK,gCAAgC,mFAAmF,mCAAmC,6CAA6C,UAAU,kCAAkC,yBAAyB,6CAA6C,6CAA6C,UAAU,0DAA0D,0BAA0B,wBAAwB,mBAAmB,8CAA8C,4CAA4C,gFAAgF,SAAS,aAAa,0BAA0B,cAAc,YAAY,sBAAsB,KAAK,qBAAqB,gBAAgB,KAAK,+BAA+B,kDAAkD,kFAAkF,IAAI,oBAAoB,IAAI,MAAM,iBAAiB,WAAW,iBAAiB,0CAA0C,iDAAiD,yBAAyB,oDAAoD,0BAA0B,cAAc,yEAAyE,uBAAuB,gBAAgB,EAAE,wCAAwC,qBAAqB,gBAAgB,iDAAiD,cAAc,uBAAuB,uDAAuD,+BAA+B,iDAAiD,YAAY,KAAK,sBAAsB,UAAU,qBAAqB,6BAA6B,MAAM,0BAA0B,iBAAiB,MAAM,2DAA2D,2CAA2C,KAAK,4BAA4B,gCAAgC,MAAM,cAAc,MAAM,uDAAuD,2CAA2C,KAAK,4BAA4B,gCAAgC,MAAM,cAAc,eAAe,sBAAsB,0BAA0B,wCAAwC,sBAAsB,8BAA8B,kBAAkB,wFAAwF,uCAAuC,2FAA2F,uBAAuB,8CAA8C,wBAAwB,8BAA8B,+CAA+C,oCAAoC,kBAAkB,SAAS,yCAAyC,YAAY,aAAa,UAAU,wCAAwC,eAAe,gBAAgB,YAAY,IAAI,KAAK,mDAAmD,kDAAkD,IAAI,gDAAgD,SAAS,sCAAsC,yDAAyD,UAAU,EAAE,0BAA0B,qBAAqB,aAAa,sMAAsM,kBAAkB,6CAA6C,YAAY,wBAAwB,cAAc,oFAAoF,gBAAgB,6BAA6B,gBAAgB,uCAAuC,OAAO,mBAAmB,UAAU,2BAA2B,2DAA2D,kFAAkF,IAAI,iEAAiE,yDAAyD,KAAK,sBAAsB,KAAK,WAAW,+BAA+B,IAAI,+BAA+B,IAAI,mGAAmG,oBAAoB,kCAAkC,yFAAyF,QAAQ,YAAY,gBAAgB,MAAM,OAAO,sBAAsB,qCAAqC,0CAA0C,2BAA2B,6CAA6C,yBAAyB,iBAAiB,WAAW,KAAK,sBAAsB,6BAA6B,QAAQ,8HAA8H,YAAY,WAAW,KAAK,sBAAsB,6BAA6B,0GAA0G,0EAA0E,yDAAyD,IAAI,KAAK,WAAW,mBAAmB,4BAA4B,IAAI,oCAAoC,gBAAgB,+CAA+C,4FAA4F,QAAQ,2EAA2E,4CAA4C,WAAW,KAAK,WAAW,uDAAuD,0BAA0B,qDAAqD,2HAA2H,gCAAgC,IAAI,KAAK,mCAAmC,0CAA0C,qBAAqB,+CAA+C,qBAAqB,gJAAgJ,4GAA4G,0CAA0C,cAAc,oCAAoC,+BAA+B,oBAAoB,4DAA4D,sEAAsE,4OAA4O,gCAAgC,qOAAqO,6BAA6B,mCAAmC,iCAAiC,+CAA+C,uCAAuC,kBAAkB,YAAY,qBAAqB,YAAY,sCAAsC,aAAa,4DAA4D,iEAAiE,4BAA4B,sFAAsF,wCAAwC,yDAAyD,UAAU,sBAAsB,qEAAqE,KAAK,sCAAsC,8BAA8B,EAAE,0HAA0H,uIAAuI,oCAAoC,WAAW,0DAA0D,0OAA0O,gXAAgX,mFAAmF,wCAAwC,MAAM,4BAA4B,yDAAyD,kDAAkD,kKAAkK,0FAA0F,wFAAwF,KAAK,oFAAoF,eAAe,IAAI,kBAAkB,uGAAuG,4CAA4C,MAAM,6CAA6C,yDAAyD,kDAAkD,8RAA8R,kCAAkC,4BAA4B,mGAAmG,EAAE,8BAA8B,qBAAqB,gBAAgB,OAAO,mBAAmB,4SAA4S,gBAAgB,kBAAkB,6DAA6D,gBAAgB,SAAS,cAAc,SAAS,iCAAiC,QAAQ,IAAI,kBAAkB,2GAA2G,mBAAmB,4BAA4B,aAAa,cAAc,uBAAuB,4DAA4D,SAAS,4BAA4B,8CAA8C,qEAAqE,iEAAiE,oBAAoB,mBAAmB,IAAI,GAAG,kCAAkC,4BAA4B,qBAAqB,0KAA0K,yGAAyG,eAAe,MAAM,0CAA0C,sBAAsB,wBAAwB,gBAAgB,kDAAkD,SAAS,6FAA6F,6BAA6B,yGAAyG,cAAc,+CAA+C,sBAAsB,4BAA4B,IAAI,sDAAsD,+BAA+B,0CAA0C,IAAI,wBAAwB,UAAU,uCAAuC,WAAW,yRAAyR,aAAa,0DAA0D,cAAc,0DAA0D,gCAAgC,8MAA8M,gBAAgB,kBAAkB,mCAAmC,8EAA8E,IAAI,mGAAmG,cAAc,oBAAoB,cAAc,0BAA0B,cAAc,gBAAgB,cAAc,eAAe,cAAc,yBAAyB,cAAc,yBAAyB,cAAc,yBAAyB,cAAc,kBAAkB,cAAc,sCAAsC,cAAc,4BAA4B,cAAc,oCAAoC,cAAc,qCAAqC,cAAc,2BAA2B,cAAc,wHAAwH,cAAc,qHAAqH,cAAc,yCAAyC,cAAc,8CAA8C,aAAa,iFAAiF,gDAAgD,gBAAgB,iDAAiD,+BAA+B,qBAAqB,UAAU,iBAAiB,mBAAmB,4BAA4B,mBAAmB,qEAAqE,sBAAsB,iBAAiB,UAAU,+BAA+B,+BAA+B,aAAa,8BAA8B,SAAS,mBAAmB,kBAAkB,SAAS,IAAI,uCAAuC,SAAS,uBAAuB,sLAAsL,WAAW,4HAA4H,gNAAgN,gFAAgF,iBAAiB,uDAAuD,0BAA0B,6CAA6C,aAAa,mDAAmD,EAAE,yBAAyB,sBAAsB,+BAA+B,IAAI,iBAAiB,UAAU,EAAE,SAAS,qBAAqB,kCAAkC,qEAAqE,mCAAmC,IAAI,0BAA0B,8BAA8B,IAAI,0BAA0B,eAAe,KAAK,qCAAqC,sBAAsB,iCAAiC,sCAAsC,4HAA4H,mRAAmR,KAAK,+BAA+B,kBAAkB,IAAI,+BAA+B,iBAAiB,GAAG,sBAAsB,cAAc,kDAAkD,kBAAkB,+DAA+D,6EAA6E,cAAc,QAAQ,MAAM,uBAAuB,iBAAiB,YAAY,cAAc,uBAAuB,KAAK,mBAAmB,8BAA8B,MAAM,2CAA2C,MAAM,qCAAqC,MAAM,qFAAqF,oBAAoB,cAAc,6DAA6D,kDAAkD,iCAAiC,cAAc,eAAe,kBAAkB,iEAAiE,cAAc,iCAAiC,cAAc,kCAAkC,0BAA0B,mBAAmB,KAAK,cAAc,6EAA6E,cAAc,8CAA8C,cAAc,iBAAiB,WAAW,oDAAoD,wEAAwE,WAAW,8BAA8B,SAAS,cAAc,iBAAiB,WAAW,gCAAgC,SAAS,cAAc,qCAAqC,oBAAoB,YAAY,mCAAmC,iBAAiB,SAAS,cAAc,IAAI,6BAA6B,SAAS,mCAAmC,oBAAoB,QAAQ,uQAAuQ,oBAAoB,QAAQ,uYAAuY,oBAAoB,QAAQ,iNAAiN,oBAAoB,QAAQ,2NAA2N,oBAAoB,yKAAyK,oBAAoB,yKAAyK,gBAAgB,2PAA2P,sBAAsB,uNAAuN,YAAY,yBAAyB,8CAA8C,sBAAsB,4NAA4N,YAAY,yBAAyB,+BAA+B,kBAAkB,uOAAuO,kBAAkB,4KAA4K,sBAAsB,qQAAqQ,sBAAsB;;AAE3/9B,EAAC,sBAAsB,+SAA+S,sBAAsB,iTAAiT,MAAM,6FAA6F,8CAA8C,eAAe,+BAA+B,8CAA8C,iBAAiB,4BAA4B,kBAAkB,4BAA4B,0CAA0C,yCAAyC,gCAAgC,6CAA6C,uCAAuC,wCAAwC,wCAAwC,wCAAwC,wFAAwF,wCAAwC,uCAAuC,kDAAkD,uCAAuC,kCAAkC,oEAAoE,WAAW,iFAAiF,cAAc,mCAAmC,+DAA+D,WAAW,iCAAiC,SAAS,+EAA+E,+BAA+B,IAAI,+CAA+C,aAAa,MAAM,iCAAiC,oCAAoC,kBAAkB,uCAAuC,iBAAiB,IAAI,kBAAkB,SAAS,sCAAsC,mGAAmG,UAAU,oCAAoC,kDAAkD,wCAAwC,0CAA0C,0CAA0C,kDAAkD,6CAA6C,sCAAsC,QAAQ,oBAAoB,wBAAwB,eAAe,6CAA6C,eAAe,YAAY,IAAI,KAAK,mCAAmC,kDAAkD,YAAY,6BAA6B,qCAAqC,2CAA2C,KAAK,QAAQ,YAAY,QAAQ,oBAAoB,kEAAkE,sCAAsC,oDAAoD,0CAA0C,4CAA4C,4CAA4C,oDAAoD,6CAA6C,iCAAiC,kBAAkB,gDAAgD,oCAAoC,WAAW,4GAA4G,kBAAkB,qCAAqC,iEAAiE,iEAAiE,8DAA8D,gEAAgE,iBAAiB,IAAI,wFAAwF,YAAY,aAAa,gBAAgB,kCAAkC,sJAAsJ,sCAAsC,kBAAkB,2BAA2B,8DAA8D,2DAA2D,YAAY,IAAI,cAAc,wBAAwB,sBAAsB,wBAAwB,uGAAuG,gCAAgC,4BAA4B,uBAAuB,IAAI,YAAY,WAAW,KAAK,WAAW,aAAa,2BAA2B,WAAW,KAAK,WAAW,wBAAwB,SAAS,0BAA0B,6BAA6B,8IAA8I,kBAAkB,qCAAqC,WAAW,uIAAuI,wCAAwC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,sBAAsB,oCAAoC,aAAa,sKAAsK,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,WAAW,kLAAkL,2CAA2C,iBAAiB,2CAA2C,iBAAiB,2CAA2C,iBAAiB,2CAA2C,iBAAiB,uCAAuC,WAAW,qNAAqN,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,2CAA2C,iBAAiB,2CAA2C,kBAAkB,EAAE,6CAA6C,sBAAsB,yEAAyE,aAAa,aAAa,cAAc,sBAAsB,+FAA+F,cAAc,cAAc,SAAS,gBAAgB,kFAAkF,eAAe,kGAAkG,QAAQ,YAAY,IAAI,sIAAsI,6JAA6J,cAAc,cAAc,mBAAmB,cAAc,kDAAkD,4BAA4B,qBAAqB,IAAI,6CAA6C,UAAU,wDAAwD,MAAM,yFAAyF,SAAS,kMAAkM,kCAAkC,uCAAuC,IAAI,GAAG,sBAAsB,oBAAoB,gBAAgB,UAAU,UAAU,8BAA8B,wBAAwB,oBAAoB,8CAA8C,YAAY,YAAY,mCAAmC,iBAAiB,gBAAgB,sBAAsB,oBAAoB,sCAAsC,WAAW,YAAY,SAAS,EAAE,mBAAmB,kCAAkC,qEAAqE,mCAAmC,IAAI,0BAA0B,8BAA8B,IAAI,0BAA0B,eAAe,KAAK,qCAAqC,sBAAsB,iCAAiC,sCAAsC,4HAA4H,mRAAmR,KAAK,+BAA+B,kBAAkB,IAAI,+BAA+B,iBAAiB,GAAG,0BAA0B,cAAc,kDAAkD,kBAAkB,+DAA+D,6EAA6E,cAAc,QAAQ,MAAM,uBAAuB,iBAAiB,YAAY,cAAc,uBAAuB,KAAK,mBAAmB,8BAA8B,MAAM,2CAA2C,MAAM,qCAAqC,MAAM,iFAAiF,oBAAoB,cAAc,+CAA+C,kDAAkD,iCAAiC,cAAc,eAAe,kBAAkB,iEAAiE,cAAc,iCAAiC,cAAc,kCAAkC,0BAA0B,mBAAmB,KAAK,cAAc,6EAA6E,cAAc,8CAA8C,cAAc,iBAAiB,WAAW,oDAAoD,wEAAwE,WAAW,8BAA8B,SAAS,cAAc,iBAAiB,WAAW,gCAAgC,SAAS,cAAc,qCAAqC,oBAAoB,YAAY,mCAAmC,iBAAiB,SAAS,cAAc,IAAI,6BAA6B,SAAS,mCAAmC,oBAAoB,QAAQ,uQAAuQ,oBAAoB,QAAQ,uYAAuY,oBAAoB,QAAQ,iNAAiN,oBAAoB,QAAQ,2NAA2N,oBAAoB,yKAAyK,oBAAoB,yKAAyK,gBAAgB,2PAA2P,sBAAsB,uNAAuN,YAAY,yBAAyB,8CAA8C,sBAAsB,4NAA4N,YAAY,yBAAyB,+BAA+B,kBAAkB,uOAAuO,kBAAkB,4KAA4K,sBAAsB,qQAAqQ,sBAAsB,oRAAoR,sBAAsB,+SAA+S,sBAAsB,iTAAiT,MAAM,6FAA6F,8CAA8C,eAAe,+BAA+B,8CAA8C,iBAAiB,4BAA4B,kBAAkB,4BAA4B,0CAA0C,yCAAyC,gCAAgC,6CAA6C,uCAAuC,wCAAwC,wCAAwC,wCAAwC,wFAAwF,wCAAwC,uCAAuC,kDAAkD,uCAAuC,kCAAkC,oEAAoE,WAAW,iFAAiF,cAAc,mCAAmC,+DAA+D,WAAW,iCAAiC,SAAS,+EAA+E,+BAA+B,IAAI,+CAA+C,aAAa,MAAM,iCAAiC,oCAAoC,kBAAkB,uCAAuC,iBAAiB,IAAI,kBAAkB,SAAS,sCAAsC,mGAAmG,UAAU,oCAAoC,kDAAkD,wCAAwC,0CAA0C,0CAA0C,kDAAkD,6CAA6C,sCAAsC,QAAQ,oBAAoB,wBAAwB,eAAe,6CAA6C,eAAe,YAAY,IAAI,KAAK,mCAAmC,kDAAkD,YAAY,6BAA6B,qCAAqC,2CAA2C,KAAK,QAAQ,YAAY,QAAQ,oBAAoB,kEAAkE,sCAAsC,oDAAoD,0CAA0C,4CAA4C,4CAA4C,oDAAoD,6CAA6C,iCAAiC,kBAAkB,gDAAgD,oCAAoC,WAAW,4GAA4G,kBAAkB,qCAAqC,iEAAiE,iEAAiE,8DAA8D,gEAAgE,iBAAiB,IAAI,wFAAwF,YAAY,aAAa,gBAAgB,kCAAkC,sJAAsJ,sCAAsC,kBAAkB,2BAA2B,8DAA8D,2DAA2D,YAAY,IAAI,cAAc,wBAAwB,sCAAsC,wBAAwB,uGAAuG,gCAAgC,4BAA4B,uBAAuB,IAAI,YAAY,WAAW,KAAK,WAAW,aAAa,2BAA2B,WAAW,KAAK,WAAW,wBAAwB,SAAS,0BAA0B,6BAA6B,8IAA8I,kBAAkB,qCAAqC,WAAW,uIAAuI,wCAAwC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,sBAAsB,oCAAoC,aAAa,sKAAsK,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,WAAW,kLAAkL,2CAA2C,iBAAiB,2CAA2C,iBAAiB,2CAA2C,iBAAiB,2CAA2C,iBAAiB,uCAAuC,WAAW,qNAAqN,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,2CAA2C,iBAAiB,2CAA2C,kBAAkB,EAAE,4CAA4C,uCAAuC,sBAAsB,GAAG,qBAAqB,aAAa,aAAa,cAAc,gBAAgB,sEAAsE,+EAA+E,IAAI,yJAAyJ,iLAAiL,cAAc,cAAc,kDAAkD,4BAA4B,qBAAqB,IAAI,6CAA6C,UAAU,wDAAwD,MAAM,yFAAyF,SAAS,yEAAyE,kDAAkD,GAAG,GAAG,qBAAqB,cAAc,mCAAmC,gBAAgB,MAAM,eAAe,gBAAgB,KAAK,wFAAwF,mBAAmB,oCAAoC,qFAAqF,cAAc,yDAAyD,cAAc,kEAAkE,SAAS,sCAAsC,SAAS,cAAc,iFAAiF,WAAW,oEAAoE,gBAAgB,OAAO,YAAY,kEAAkE,mFAAmF,iCAAiC,YAAY,WAAW,yBAAyB,SAAS,wBAAwB,+BAA+B,iBAAiB,WAAW,8BAA8B,SAAS,2BAA2B,mCAAmC,YAAY,WAAW,uBAAuB,qBAAqB,yBAAyB,kCAAkC,WAAW,qBAAqB,SAAS,0BAA0B,iCAAiC,WAAW,+BAA+B,uBAAuB,IAAI,2DAA2D,SAAS,gDAAgD,yCAAyC,iBAAiB,qBAAqB,oBAAoB,kDAAkD,mBAAmB,wDAAwD,mCAAmC,gBAAgB,kBAAkB,8DAA8D,2DAA2D,gIAAgI,8CAA8C,oBAAoB,8DAA8D,qDAAqD,MAAM,mBAAmB,iBAAiB,mCAAmC,kBAAkB,sCAAsC,0DAA0D,iCAAiC,IAAI,iEAAiE,SAAS,yCAAyC,IAAI,4CAA4C,SAAS,gBAAgB,kCAAkC,GAAG,qBAAqB,gBAAgB,+HAA+H,gBAAgB,iDAAiD,cAAc,gGAAgG,sBAAsB,4BAA4B,8DAA8D,EAAE,gBAAgB,uBAAuB,gBAAgB,kBAAkB,iCAAiC,+BAA+B,YAAY,WAAW,4BAA4B,SAAS,4PAA4P,cAAc,8DAA8D,gBAAgB,2DAA2D,sCAAsC,wDAAwD,IAAI,gCAAgC,SAAS,SAAS,+BAA+B,mCAAmC,KAAK,2BAA2B,iBAAiB,KAAK,qCAAqC,SAAS,gBAAgB,sGAAsG,kBAAkB,oBAAoB,MAAM,4BAA4B,IAAI,IAAI,SAAS,IAAI,+KAA+K,oEAAoE,6BAA6B,kIAAkI,4EAA4E,4BAA4B,4BAA4B,+BAA+B,6BAA6B,yCAAyC,gCAAgC,+CAA+C,+BAA+B,oCAAoC,kCAAkC,uCAAuC,6BAA6B,6CAA6C,8BAA8B,6CAA6C,uBAAuB,cAAc,EAAE,gBAAgB,qBAAqB,gBAAgB,OAAO,mBAAmB,4SAA4S,gBAAgB,kBAAkB,6DAA6D,gBAAgB,SAAS,cAAc,SAAS,iCAAiC,QAAQ,IAAI,kBAAkB,2GAA2G,mBAAmB,4BAA4B,aAAa,cAAc,uBAAuB,4DAA4D,SAAS,4BAA4B,8CAA8C,qEAAqE,iEAAiE,oBAAoB,mBAAmB,IAAI,GAAG,kCAAkC,4BAA4B,qBAAqB,0KAA0K,yGAAyG,eAAe,MAAM,0CAA0C,sBAAsB,wBAAwB,gBAAgB,kDAAkD,SAAS,6FAA6F,6BAA6B,yGAAyG,cAAc,+CAA+C,sBAAsB,4BAA4B,IAAI,sDAAsD,+BAA+B,0CAA0C,IAAI;AAChv+B,WAAU,uCAAuC,WAAW,yRAAyR,aAAa,0DAA0D,cAAc,0DAA0D,gCAAgC,8MAA8M,gBAAgB,kBAAkB,mCAAmC,8EAA8E,IAAI,mGAAmG,cAAc,oBAAoB,cAAc,0BAA0B,cAAc,gBAAgB,cAAc,eAAe,cAAc,yBAAyB,cAAc,yBAAyB,cAAc,yBAAyB,cAAc,kBAAkB,cAAc,sCAAsC,cAAc,4BAA4B,cAAc,oCAAoC,cAAc,qCAAqC,cAAc,2BAA2B,cAAc,wHAAwH,cAAc,2BAA2B,cAAc,yCAAyC,cAAc,8CAA8C,aAAa,iFAAiF,gDAAgD,gBAAgB,iDAAiD,+BAA+B,qBAAqB,UAAU,iBAAiB,mBAAmB,4BAA4B,mBAAmB,qEAAqE,sBAAsB,iBAAiB,UAAU,+BAA+B,+BAA+B,aAAa,8BAA8B,SAAS,mBAAmB,kBAAkB,SAAS,IAAI,uCAAuC,SAAS,uBAAuB,sLAAsL,WAAW,4HAA4H,gNAAgN,gFAAgF,iBAAiB,uDAAuD,0BAA0B,6CAA6C,aAAa,mDAAmD,EAAE,yBAAyB,sBAAsB,+BAA+B,IAAI,iBAAiB,UAAU,EAAE,SAAS,EAAE,GAAG,sCAAsC,GAAG,sBAAsB,mBAAmB,sBAAsB,gIAAgI,wBAAwB,+BAA+B,MAAM,SAAS,qDAAqD,eAAe,sFAAsF,gBAAgB,KAAK,iBAAiB,kDAAkD,mBAAmB,iBAAiB,0CAA0C,iCAAiC,oDAAoD,kBAAkB,UAAU,qBAAqB,mDAAmD,GAAG,sBAAsB,yEAAyE,YAAY,gBAAgB,UAAU,0DAA0D,wCAAwC,wCAAwC,SAAS,kBAAkB,4BAA4B,YAAY,yBAAyB,SAAS,kBAAkB,uBAAuB,yBAAyB,MAAM,sBAAsB,SAAS,cAAc,+BAA+B,cAAc,2CAA2C,gBAAgB,wBAAwB,iCAAiC,EAAE,SAAS,gBAAgB,mBAAmB,+BAA+B,EAAE,SAAS,gBAAgB,iDAAiD,kBAAkB,6DAA6D,MAAM,EAAE,mBAAmB,iCAAiC,uBAAuB,cAAc,aAAa,cAAc,aAAa,cAAc,iBAAiB,kBAAkB,gCAAgC,YAAY,EAAE,WAAW,kBAAkB,SAAS,cAAc,8BAA8B,cAAc,wIAAwI,gBAAgB,kCAAkC,MAAM,6BAA6B,SAAS,gBAAgB,oCAAoC,MAAM,EAAE,0BAA0B,yBAAyB,SAAS,cAAc,wBAAwB,0BAA0B,EAAE,SAAS,cAAc,mBAAmB,wBAAwB,EAAE,SAAS,cAAc,aAAa,cAAc,cAAc,oCAAoC,2BAA2B,iEAAiE,gBAAgB,cAAc,kBAAkB,6DAA6D,cAAc,oKAAoK,cAAc,uFAAuF,qLAAqL,cAAc,sBAAsB,kBAAkB,+BAA+B,kCAAkC,SAAS,cAAc,+BAA+B,wCAAwC,mKAAmK,OAAO,SAAS,EAAE,KAAK,oBAAoB,MAAM,EAAE,iCAAiC,SAAS,6EAA6E,cAAc,iDAAiD,KAAK,WAAW,YAAY,YAAY,mBAAmB,UAAU,SAAS,SAAS,cAAc,iBAAiB,eAAe,4CAA4C,eAAe,wCAAwC,eAAe,+CAA+C,iBAAiB,gDAAgD,eAAe,mBAAmB,eAAe,0BAA0B,IAAI,iBAAiB,iBAAiB,gEAAgE,cAAc,eAAe,gBAAgB,oDAAoD,iBAAiB,oBAAoB,iBAAiB,MAAM,WAAW,SAAS,iBAAiB,wBAAwB,wBAAwB,EAAE,SAAS,iBAAiB,mBAAmB,sBAAsB,EAAE,SAAS,iBAAiB,wBAAwB,MAAM,0BAA0B,SAAS,qBAAqB,gCAAgC,MAAM,EAAE,mBAAmB,kBAAkB,SAAS,iBAAiB,kCAAkC,MAAM,EAAE,WAAW,qBAAqB,SAAS,iBAAiB,gCAAgC,MAAM,kBAAkB,SAAS,qBAAqB,oBAAoB,qBAAqB,MAAM,iBAAiB,SAAS,qBAAqB,eAAe,qBAAqB,IAAI,iBAAiB,SAAS,iBAAiB,wBAAwB,MAAM,yBAAyB,SAAS,eAAe,uBAAuB,IAAI,aAAa,SAAS,iBAAiB,iBAAiB,qBAAqB,+BAA+B,mBAAmB,gCAAgC,MAAM,EAAE,oCAAoC,+CAA+C,SAAS,iBAAiB,+BAA+B,iBAAiB,qEAAqE,MAAM,EAAE,WAAW,+BAA+B,SAAS,mBAAmB,QAAQ,EAAE,wBAAwB,MAAM,EAAE,WAAW,UAAU,SAAS,mBAAmB,eAAe,uFAAuF,2BAA2B,MAAM,yCAAyC,mBAAmB,YAAY,MAAM,6BAA6B,KAAK,wBAAwB,qDAAqD,uBAAuB,YAAY,sBAAsB,oBAAoB,mBAAmB,IAAI,wBAAwB,qDAAqD,uBAAuB,IAAI,mBAAmB,wCAAwC,qBAAqB,aAAa,IAAI,iBAAiB,wBAAwB,eAAe,gEAAgE,mBAAmB,OAAO,MAAM,EAAE,WAAW,aAAa,YAAY,IAAI,wBAAwB,UAAU,2BAA2B,SAAS,iBAAiB,SAAS,4BAA4B,oBAAoB,IAAI,qBAAqB,YAAY,4BAA4B,gBAAgB,kCAAkC,IAAI,qBAAqB,eAAe,gGAAgG,IAAI,UAAU,SAAS,iBAAiB,SAAS,4BAA4B,oBAAoB,IAAI,qBAAqB,MAAM,2BAA2B,oCAAoC,IAAI,mBAAmB,kCAAkC,MAAM,EAAE,WAAW,mCAAmC,iBAAiB,wBAAwB,MAAM,aAAa,mBAAmB,SAAS,iBAAiB,kBAAkB,iBAAiB,kBAAkB,iBAAiB,kBAAkB,iBAAiB,kCAAkC,MAAM,EAAE,WAAW,qBAAqB,SAAS,mBAAmB,YAAY,+BAA+B,uBAAuB,aAAa,iBAAiB,oBAAoB,yBAAyB,gFAAgF,2BAA2B,4BAA4B,sFAAsF,yCAAyC,8BAA8B,OAAO,gEAAgE,sDAAsD,eAAe,oBAAoB,mBAAmB,IAAI,2BAA2B,oBAAoB,+BAA+B,yBAAyB,mBAAmB,wBAAwB,oBAAoB,YAAY,IAAI,EAAE,WAAW,+CAA+C,KAAK,MAAM,EAAE,OAAO,yBAAyB,YAAY,6BAA6B,KAAK,mBAAmB,qCAAqC,SAAS,iBAAiB,iCAAiC,4BAA4B,gBAAgB,IAAI,eAAe,YAAY,yBAAyB,wBAAwB,mBAAmB,uDAAuD,mBAAmB,gBAAgB,iBAAiB,kCAAkC,2BAA2B,oBAAoB,QAAQ,6BAA6B,qDAAqD,gBAAgB,+CAA+C,uBAAuB,mBAAmB,2CAA2C,6BAA6B,+DAA+D,KAAK,sCAAsC,iEAAiE,IAAI,2BAA2B,0BAA0B,IAAI,mCAAmC,sCAAsC,4FAA4F,6EAA6E,eAAe,mBAAmB,2BAA2B,eAAe,WAAW,2BAA2B,kBAAkB,iBAAiB,uBAAuB,IAAI,EAAE,WAAW,gBAAgB,QAAQ,gBAAgB,SAAS,iBAAiB,0BAA0B,uBAAuB,2BAA2B,wBAAwB,IAAI,mBAAmB,oBAAoB,8FAA8F,gBAAgB,MAAM,aAAa,SAAS,iBAAiB,MAAM,4BAA4B,qBAAqB,MAAM,iBAAiB,eAAe,cAAc,IAAI,iBAAiB,SAAS,mBAAmB,gBAAgB,mBAAmB,YAAY,EAAE,uBAAuB,uBAAuB,YAAY,EAAE,OAAO,8BAA8B,EAAE,0BAA0B,gBAAgB,EAAE,iBAAiB,QAAQ,4BAA4B,gBAAgB,IAAI,iBAAiB,iEAAiE,8BAA8B,OAAO,MAAM,EAAE,0BAA0B,aAAa,mBAAmB,IAAI,wBAAwB,uBAAuB,+CAA+C,SAAS,iBAAiB,gCAAgC,MAAM,cAAc,SAAS,qBAAqB,4BAA4B,2BAA2B,EAAE,iDAAiD,iBAAiB,QAAQ,8BAA8B,wBAAwB,MAAM,EAAE,iBAAiB,+CAA+C,SAAS,mBAAmB,uBAAuB,qCAAqC,KAAK,IAAI,EAAE,qBAAqB,iCAAiC,SAAS,oBAAoB,qBAAqB,OAAO,sDAAsD,IAAI,EAAE,4CAA4C,gBAAgB,8DAA8D,YAAY,gBAAgB,mBAAmB,kCAAkC,kBAAkB,UAAU,0BAA0B,oBAAoB,8BAA8B,wBAAwB,gCAAgC,0BAA0B,kCAAkC,4BAA4B,kBAAkB,6BAA6B,eAAe,oBAAoB,mBAAmB,qEAAqE,MAAM,WAAW,KAAK,MAAM,cAAc,KAAK,IAAI,eAAe,SAAS,mBAAmB,0EAA0E,MAAM,WAAW,YAAY,MAAM,aAAa,KAAK,MAAM,kBAAkB,SAAS,iBAAiB,uBAAuB,eAAe,6CAA6C,MAAM,EAAE,WAAW,kBAAkB,0BAA0B,kBAAkB,EAAE,UAAU,eAAe,wBAAwB,yEAAyE,sHAAsH,MAAM,EAAE,WAAW,YAAY,SAAS,EAAE,iBAAiB,qBAAqB,gBAAgB,wBAAwB,yBAAyB,gCAAgC,EAAE,UAAU,eAAe,uBAAuB,2CAA2C,YAAY,EAAE,WAAW,0BAA0B,UAAU,iBAAiB,aAAa,6CAA6C,4BAA4B,YAAY,SAAS,eAAe,mBAAmB,yCAAyC,MAAM,eAAe,UAAU,eAAe,kBAAkB,gBAAgB,iBAAiB,oBAAoB,0BAA0B,+BAA+B,oCAAoC,yCAAyC,8CAA8C,qCAAqC,kBAAkB,eAAe,kBAAkB,uBAAuB,yCAAyC,qCAAqC,SAAS,iBAAiB,uBAAuB,mDAAmD,QAAQ,kBAAkB,6BAA6B,oBAAoB,iBAAiB,uBAAuB,sBAAsB,eAAe,mBAAmB,kBAAkB,eAAe,uBAAuB,8CAA8C,eAAe,uBAAuB,iCAAiC,eAAe,kBAAkB,kDAAkD,YAAY,EAAE,0BAA0B,wCAAwC,sDAAsD,aAAa,MAAM,EAAE,OAAO,sCAAsC,oHAAoH,kBAAkB,gBAAgB,yDAAyD,wCAAwC,MAAM,qBAAqB,WAAW,iBAAiB,uBAAuB,gEAAgE,eAAe,uBAAuB,8DAA8D,eAAe,uBAAuB,2DAA2D,eAAe,uBAAuB,SAAS,wCAAwC,eAAe,uBAAuB,KAAK,eAAe,uBAAuB,2CAA2C,eAAe,uBAAuB,yBAAyB,wBAAwB,EAAE,SAAS,iBAAiB,yBAAyB,yBAAyB,2EAA2E,iCAAiC,aAAa,uCAAuC,IAAI,mBAAmB,2CAA2C,6BAA6B,oBAAoB,2EAA2E,oCAAoC,4CAA4C,yCAAyC,0BAA0B,gHAAgH,uDAAuD,SAAS,mBAAmB,eAAe,8BAA8B,UAAU,0DAA0D,qBAAqB,aAAa,0DAA0D,MAAM,WAAW,KAAK,IAAI,uBAAuB,6CAA6C,2BAA2B,kBAAkB,SAAS,eAAe,yBAAyB,YAAY,qDAAqD,6BAA6B,UAAU,4CAA4C,mBAAmB,gDAAgD,YAAY,SAAS,2CAA2C,8FAA8F,+DAA+D,cAAc,cAAc,2BAA2B,+BAA+B,4BAA4B,KAAK,MAAM,EAAE,yCAAyC,UAAU,cAAc,SAAS,MAAM,qBAAqB,6BAA6B,WAAW,wCAAwC,SAAS,mBAAmB,UAAU,2BAA2B,mDAAmD,gCAAgC,8BAA8B,SAAS,2BAA2B,0CAA0C,qBAAqB,YAAY,IAAI,EAAE,WAAW,qCAAqC,YAAY,MAAM,EAAE,OAAO,yCAAyC,sCAAsC,wBAAwB,OAAO,oCAAoC,sIAAsI,SAAS,mBAAmB,qBAAqB,kCAAkC,eAAe,wCAAwC,IAAI,EAAE,oBAAoB,+BAA+B,SAAS,mBAAmB,oBAAoB,iCAAiC,eAAe,2BAA2B,IAAI,qBAAqB,SAAS,iBAAiB,qBAAqB,iBAAiB,mBAAmB,4BAA4B,MAAM,EAAE,oBAAoB,eAAe,gBAAgB,MAAM,qBAAqB,MAAM,uBAAuB,MAAM,6BAA6B,OAAO,eAAe,eAAe,sCAAsC,yFAAyF,eAAe,oBAAoB,yDAAyD,mBAAmB,oBAAoB,UAAU,qBAAqB,+BAA+B,kGAAkG,eAAe,8CAA8C,+BAA+B,wCAAwC,wBAAwB,SAAS,mBAAmB,qEAAqE,qBAAqB,8BAA8B,eAAe,0BAA0B,iBAAiB,+EAA+E,mBAAmB,mBAAmB,eAAe,0DAA0D,WAAW,yBAAyB,SAAS,iBAAiB,eAAe,iDAAiD,kBAAkB,kBAAkB,8BAA8B,eAAe,YAAY,gCAAgC,WAAW,kBAAkB,YAAY,oBAAoB,eAAe,8CAA8C,eAAe,qBAAqB,iBAAiB,0FAA0F,mBAAmB,4BAA4B,WAAW,MAAM,WAAW,oDAAoD,0LAA0L,iBAAiB,QAAQ,6BAA6B,MAAM,EAAE,WAAW,oBAAoB,SAAS,iBAAiB,SAAS,4BAA4B,mBAAmB,IAAI,iBAAiB,4CAA4C,IAAI,EAAE,WAAW,oBAAoB,SAAS,eAAe,kBAAkB,iJAAiJ,MAAM,uCAAuC,yBAAyB,8BAA8B,IAAI,uBAAuB,eAAe,uFAAuF,MAAM,EAAE,WAAW,sCAAsC,SAAS,eAAe,wFAAwF,eAAe,oCAAoC,gCAAgC,MAAM,kBAAkB,SAAS,qBAAqB,eAAe,kBAAkB,SAAS,yCAAyC,kCAAkC,IAAI,eAAe,mFAAmF,mBAAmB,sCAAsC,8CAA8C,IAAI,qBAAqB,SAAS,eAAe,sCAAsC,MAAM,EAAE,WAAW,cAAc,SAAS,mBAAmB,mBAAmB,yDAAyD,mBAAmB,mBAAmB,uEAAuE,mBAAmB,4CAA4C,mBAAmB,yCAAyC,qBAAqB,mBAAmB,sEAAsE,eAAe,gBAAgB,mBAAmB,mBAAmB,yCAAyC,eAAe,mBAAmB,qBAAqB,mBAAmB,mBAAmB,eAAe,wCAAwC,WAAW,qBAAqB,+BAA+B,mBAAmB,eAAe,eAAe,eAAe,mBAAmB,kBAAkB,mBAAmB,mBAAmB,eAAe,QAAQ,uDAAuD,WAAW,eAAe,WAAW,+BAA+B,0BAA0B,KAAK,IAAI,sBAAsB,SAAS,cAAc,uBAAuB,0BAA0B,8BAA8B,MAAM,oBAAoB,gBAAgB,gBAAgB,SAAS,mBAAmB,SAAS,0BAA0B,yBAAyB,gBAAgB,MAAM,EAAE,WAAW,gCAAgC,iBAAiB,eAAe,eAAe,mBAAmB,mBAAmB,oEAAoE,mBAAmB,mBAAmB,2DAA2D,mBAAmB,mBAAmB,qEAAqE,mBAAmB,4CAA4C,mBAAmB,sCAAsC,qBAAqB,mBAAmB,eAAe,4DAA4D,WAAW,gEAAgE,eAAe,0BAA0B,aAAa,mBAAmB,0CAA0C,EAAE,gBAAgB,MAAM,kBAAkB,SAAS,mBAAmB,mBAAmB,eAAe,YAAY,+CAA+C,oBAAoB,GAAG,cAAc,gCAAgC,MAAM,EAAE,mBAAmB,2CAA2C,kBAAkB,iBAAiB,6BAA6B,4BAA4B,MAAM,EAAE,WAAW,8BAA8B,SAAS,eAAe,WAAW,wBAAwB,mBAAmB,qBAAqB,mBAAmB,mBAAmB,cAAc,gBAAgB,cAAc,0CAA0C,eAAe,iBAAiB,eAAe,EAAE,YAAY,sBAAsB,QAAQ,gBAAgB,yBAAyB,cAAc,uBAAuB,yHAAyH,mBAAmB,EAAE,cAAc,uBAAuB,cAAc,6CAA6C,mBAAmB,kBAAkB,kFAAkF,mBAAmB,kBAAkB,0BAA0B,iBAAiB,mBAAmB,qBAAqB,gBAAgB,wKAAwK,mBAAmB,kBAAkB,0BAA0B,iBAAiB,mBAAmB,mBAAmB,kBAAkB,uCAAuC,gBAAgB,EAAE,mBAAmB,wBAAwB,QAAQ,eAAe,0BAA0B,kCAAkC,wBAAwB,MAAM,EAAE,qBAAqB,iBAAiB,oBAAoB,eAAe,gBAAgB,eAAe,gBAAgB,4BAA4B,mBAAmB,kBAAkB,kFAAkF,mBAAmB,oBAAoB,uBAAuB,SAAS,YAAY,2BAA2B,OAAO,qCAAqC,EAAE,eAAe,qBAAqB,yGAAyG,iBAAiB,mBAAmB,iBAAiB,yBAAyB,wCAAwC,QAAQ,QAAQ,iCAAiC,4CAA4C,mBAAmB,8FAA8F,iBAAiB,MAAM,yBAAyB,wCAAwC,QAAQ,QAAQ,kBAAkB,2DAA2D,mBAAmB,aAAa,0BAA0B,aAAa,iBAAiB,cAAc,SAAS,QAAQ,oDAAoD,eAAe,aAAa,sEAAsE,aAAa,6DAA6D,KAAK,YAAY,0BAA0B,mDAAmD,0FAA0F,gCAAgC,wCAAwC,yBAAyB,SAAS,KAAK,6FAA6F,oBAAoB,iBAAiB,iEAAiE,iBAAiB,mDAAmD,4BAA4B,sBAAsB,6BAA6B,8BAA8B,eAAe,wCAAwC,kBAAkB,gCAAgC,eAAe,eAAe,iBAAiB,wCAAwC,iDAAiD,oDAAoD,MAAM;;AAE3y+B,WAAU,6BAA6B,kCAAkC,uCAAuC,cAAc,SAAS,MAAM,WAAW,+BAA+B,eAAe,wCAAwC,mBAAmB,wBAAwB,mBAAmB,cAAc,wCAAwC,8IAA8I,iBAAiB,0CAA0C,qBAAqB,kIAAkI,mBAAmB,uDAAuD,iBAAiB,WAAW,iBAAiB,YAAY,eAAe,kCAAkC,eAAe,2CAA2C,eAAe,2BAA2B,eAAe,4FAA4F,eAAe,2FAA2F,qBAAqB,mCAAmC,iBAAiB,2BAA2B,eAAe,uDAAuD,eAAe,eAAe,wCAAwC,qBAAqB,wDAAwD,eAAe,oBAAoB,eAAe,gFAAgF,eAAe,gBAAgB,eAAe,8CAA8C,eAAe,4BAA4B,eAAe,+CAA+C,eAAe,4CAA4C,eAAe,aAAa,iBAAiB,WAAW,iBAAiB,YAAY,eAAe,gBAAgB,0EAA0E,eAAe,mBAAmB,mBAAmB,YAAY,0CAA0C,eAAe,mBAAmB,mBAAmB,iCAAiC,iBAAiB,iBAAiB,oBAAoB,mBAAmB,eAAe,6DAA6D,uBAAuB,8DAA8D,mBAAmB,uBAAuB,qCAAqC,MAAM,EAAE,kBAAkB,4CAA4C,SAAS,eAAe,oBAAoB,iBAAiB,2BAA2B,wCAAwC,oJAAoJ,MAAM,WAAW,4HAA4H,6BAA6B,mDAAmD,6BAA6B,IAAI,EAAE,QAAQ,WAAW,gDAAgD,SAAS,eAAe,QAAQ,wCAAwC,MAAM,EAAE,WAAW,cAAc,SAAS,mBAAmB,yBAAyB,oIAAoI,mBAAmB,oBAAoB,WAAW,gCAAgC,kCAAkC,eAAe,EAAE,WAAW,sDAAsD,UAAU,SAAS,qBAAqB,mBAAmB,oCAAoC,oBAAoB,8CAA8C,UAAU,kCAAkC,kBAAkB,IAAI,eAAe,mBAAmB,eAAe,mBAAmB,mBAAmB,6EAA6E,mBAAmB,yBAAyB,wBAAwB,yIAAyI,WAAW,mDAAmD,eAAe,eAAe,sDAAsD,eAAe,gDAAgD,mBAAmB,aAAa,eAAe,uEAAuE,eAAe,8CAA8C,eAAe,mDAAmD,mBAAmB,YAAY,eAAe,yBAAyB,8BAA8B,qCAAqC,mBAAmB,mCAAmC,iBAAiB,SAAS,wCAAwC,8BAA8B,SAAS,SAAS,mBAAmB,yEAAyE,mBAAmB,yBAAyB,0CAA0C,aAAa,kBAAkB,mRAAmR,kCAAkC,iGAAiG,QAAQ,qFAAqF,QAAQ,IAAI,iBAAiB,mBAAmB,UAAU,8DAA8D,gCAAgC,2BAA2B,EAAE,oFAAoF,oBAAoB,iCAAiC,MAAM,qBAAqB,EAAE,oBAAoB,sCAAsC,EAAE,4BAA4B,SAAS,mBAAmB,QAAQ,6FAA6F,mBAAmB,QAAQ,gEAAgE,mBAAmB,QAAQ,iFAAiF,mBAAmB,uBAAuB,YAAY,qBAAqB,oCAAoC,+DAA+D,aAAa,+BAA+B,iBAAiB,gBAAgB,mBAAmB,sBAAsB,UAAU,yBAAyB,uBAAuB,kEAAkE,YAAY,WAAW,0BAA0B,2BAA2B,uBAAuB,uBAAuB,WAAW,eAAe,8CAA8C,mBAAmB,wDAAwD,mBAAmB,iDAAiD,eAAe,kBAAkB,UAAU,eAAe,SAAS,eAAe,oBAAoB,iBAAiB,sBAAsB,mBAAmB,YAAY,sDAAsD,sCAAsC,mBAAmB,iCAAiC,4CAA4C,KAAK,MAAM,EAAE,kBAAkB,sCAAsC,kBAAkB,qBAAqB,SAAS,+DAA+D,eAAe,gCAAgC,kBAAkB,qBAAqB,2CAA2C,KAAK,SAAS,cAAc,mBAAmB,eAAe,eAAe,yBAAyB,eAAe,mBAAmB,yBAAyB,mBAAmB,6EAA6E,8CAA8C,MAAM,aAAa,SAAS,mBAAmB,gCAAgC,wBAAwB,gBAAgB,MAAM,qBAAqB,SAAS,eAAe,WAAW,cAAc,iBAAiB,sBAAsB,mBAAmB,uBAAuB,qBAAqB,gEAAgE,iDAAiD,gqBAAgqB,IAAI,sDAAsD,UAAU,eAAe,iTAAiT,OAAO,gMAAgM,UAAU,mBAAmB,wDAAwD,eAAe,sCAAsC,oBAAoB,2BAA2B,QAAQ,eAAe,mBAAmB,kCAAkC,YAAY,mBAAmB,EAAE,oBAAoB,aAAa,iBAAiB,SAAS,IAAI,aAAa,MAAM,aAAa,eAAe,6BAA6B,4SAA4S,IAAI,iDAAiD,SAAS,WAAW,0BAA0B,0DAA0D,MAAM,kBAAkB,cAAc,mBAAmB,UAAU,cAAc,YAAY,iBAAiB,cAAc,gEAAgE,qBAAqB,IAAI,2BAA2B,sDAAsD,MAAM,oBAAoB,qBAAqB,kDAAkD,WAAW,0BAA0B,iBAAiB,4BAA4B,iBAAiB,kCAAkC,YAAY,qBAAqB,qBAAqB,YAAY,mBAAmB,SAAS,gBAAgB,uBAAuB,kCAAkC,sCAAsC,kDAAkD,IAAI,EAAE,2BAA2B,oCAAoC,sCAAsC,OAAO,MAAM,mCAAmC,YAAY,IAAI,EAAE,WAAW,wCAAwC,uBAAuB,SAAS,sBAAsB,QAAQ,cAAc,yBAAyB,sCAAsC,uBAAuB,sBAAsB,wBAAwB,8BAA8B,6CAA6C,uGAAuG,sBAAsB,oCAAoC,wBAAwB,2BAA2B,yEAAyE,mCAAmC,wBAAwB,OAAO,wBAAwB,gEAAgE,wBAAwB,+BAA+B,gCAAgC,IAAI,wBAAwB,iBAAiB,YAAY,cAAc,gDAAgD,oBAAoB,WAAW,uDAAuD,oBAAoB,yBAAyB,uBAAuB,QAAQ,aAAa,0BAA0B,KAAK,qBAAqB,sBAAsB,uBAAuB,wBAAwB,MAAM,EAAE,WAAW,kBAAkB,SAAS,wBAAwB,UAAU,aAAa,0BAA0B,KAAK,qBAAqB,wCAAwC,iBAAiB,wBAAwB,iBAAiB,0DAA0D,oCAAoC,EAAE,4BAA4B,8DAA8D,EAAE,uBAAuB,0CAA0C,wBAAwB,wCAAwC,EAAE,uBAAuB,gCAAgC,mCAAmC,qBAAqB,qBAAqB,yDAAyD,4CAA4C,8BAA8B,0BAA0B,2BAA2B,oBAAoB,WAAW,4CAA4C,gFAAgF,iCAAiC,wHAAwH,oDAAoD,oBAAoB,4BAA4B,mBAAmB,yBAAyB,sBAAsB,4BAA4B,gBAAgB,EAAE,sBAAsB,iBAAiB,2DAA2D,wBAAwB,sEAAsE,wBAAwB,oCAAoC,oBAAoB,oCAAoC,8EAA8E,EAAE,0BAA0B,oCAAoC,wBAAwB,2DAA2D,sBAAsB,IAAI,oBAAoB,SAAS,0BAA0B,sBAAsB,mBAAmB,kBAAkB,sBAAsB,mBAAmB,kBAAkB,4BAA4B,48FAA48F,SAAS,0BAA0B,yBAAyB,IAAI,kDAAkD,qDAAqD,eAAe,mBAAmB,6FAA6F,mBAAmB,4DAA4D,kBAAkB,6BAA6B,gGAAgG,eAAe,2DAA2D,yBAAyB,mCAAmC,gBAAgB,2BAA2B,8DAA8D,oGAAoG,KAAK,oCAAoC,QAAQ,uCAAuC,EAAE,SAAS,oCAAoC,sCAAsC,2CAA2C,yCAAyC,oCAAoC,4BAA4B,0BAA0B,8BAA8B,sCAAsC,4BAA4B,0BAA0B,mBAAmB,qCAAqC,iCAAiC,2BAA2B,sBAAsB,iCAAiC,uBAAuB,kCAAkC,2CAA2C,YAAY,EAAE,iCAAiC,kBAAkB,WAAW,yGAAyG,gCAAgC,oBAAoB,8BAA8B,WAAW,MAAM,2EAA2E,0BAA0B,mHAAmH,kDAAkD,YAAY,mDAAmD,kBAAkB,UAAU,mCAAmC,MAAM,qCAAqC,2BAA2B,wCAAwC,QAAQ,2BAA2B,EAAE,kBAAkB,sBAAsB,oGAAoG,8MAA8M,8BAA8B,yCAAyC,GAAG,0BAA0B,gBAAgB,sEAAsE,oBAAoB,GAAG,+BAA+B,WAAW,MAAM,iCAAiC,QAAQ,cAAc,GAAG,wBAAwB,yBAAyB,+YAA+Y,8qBAA8qB,2DAA2D,mCAAmC,wRAAwR,4FAA4F,MAAM,aAAa,OAAO,sKAAsK,qEAAqE,8DAA8D,sgBAAsgB,6JAA6J,UAAU,6JAA6J,QAAQ,iCAAiC,KAAK,qfAAqf,KAAK,UAAU,WAAW,WAAW,aAAa,YAAY,YAAY,EAAE,KAAK,MAAM,WAAW,WAAW,aAAa,YAAY,YAAY,MAAM,KAAK,wBAAwB,KAAK,sEAAsE,4SAA4S,IAAI,QAAQ,WAAW,KAAK,SAAS,kBAAkB,UAAU,mBAAmB,6DAA6D,UAAU,8FAA8F,UAAU,kDAAkD,aAAa,GAAG,sBAAsB,oFAAoF,0GAA0G,kBAAkB,cAAc,sDAAsD,iBAAiB,gDAAgD,iHAAiH,GAAG,EAAE,0IAA0I,sBAAsB,4FAA4F,uEAAuE,QAAQ,aAAa,2CAA2C,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,OAAO,eAAe,QAAQ,uCAAuC,OAAO,cAAc,OAAO,gBAAgB,EAAE,6BAA6B,OAAO,gBAAgB,EAAE,aAAa,wCAAwC,uCAAuC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,mCAAmC,MAAM,cAAc,EAAE,oBAAoB,EAAE,gCAAgC,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,wCAAwC,QAAQ,cAAc,EAAE,uBAAuB,EAAE,2BAA2B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,kCAAkC,OAAO,cAAc,EAAE,kBAAkB,EAAE,+BAA+B,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,4BAA4B,SAAS,aAAa,QAAQ,uCAAuC,QAAQ,cAAc,EAAE,sBAAsB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,KAAK,4BAA4B,IAAI,6BAA6B,MAAM,oBAAoB,0BAA0B,QAAQ,MAAM,6BAA6B,MAAM,aAAa,6BAA6B,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,MAAM,4BAA4B,IAAI,6BAA6B,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,oBAAoB,2BAA2B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,mBAAmB,kCAAkC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,2BAA2B,6BAA6B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,qBAAqB,8BAA8B,QAAQ,OAAO,sCAAsC,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,EAAE,8BAA8B,QAAQ,GAAG,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,mCAAmC,OAAO,cAAc,EAAE,mBAAmB,EAAE,gCAAgC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,4BAA4B,SAAS,4CAA4C,MAAM,yBAAyB,mBAAmB,OAAO,yCAAyC,UAAU,cAAc,EAAE,sBAAsB,kBAAkB,mDAAmD,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,0BAA0B,gCAAgC,QAAQ,OAAO,uEAAuE,QAAQ,eAAe,gBAAgB,kCAAkC,UAAU,YAAY,sBAAsB,4CAA4C,eAAe,oCAAoC,0BAA0B,gDAAgD,gBAAgB,oFAAoF,QAAQ,uCAAuC,OAAO,gBAAgB,EAAE,uBAAuB,EAAE,sCAAsC,QAAQ,OAAO,eAAe,gBAAgB,mCAAmC,MAAM,+BAA+B,qCAAqC,QAAQ,cAAc,qCAAqC,MAAM,yBAAyB,cAAc,iCAAiC,QAAQ,QAAQ;AACpv+B,gBAAe,UAAU,eAAe,SAAS,iGAAiG,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,wBAAwB,eAAe,+BAA+B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,eAAe,qCAAqC,QAAQ,kDAAkD,QAAQ,iGAAiG,QAAQ,cAAc,EAAE,uCAAuC,QAAQ,mGAAmG,EAAE,sBAAsB,EAAE,+BAA+B,QAAQ,cAAc,oCAAoC,QAAQ,6BAA6B,QAAQ,6CAA6C,QAAQ,cAAc,EAAE,sBAAsB,EAAE,aAAa,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,WAAW,+BAA+B,aAAa,cAAc,UAAU,cAAc,SAAS,eAAe,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,gBAAgB,sBAAsB,QAAQ,QAAQ,cAAc,UAAU,YAAY,aAAa,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,iBAAiB,qCAAqC,gBAAgB,oCAAoC,UAAU,cAAc,cAAc,wFAAwF,QAAQ,0DAA0D,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,kDAAkD,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,iBAAiB,QAAQ,aAAa,2CAA2C,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,UAAU,cAAc,cAAc,wFAAwF,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,iBAAiB,qBAAqB,QAAQ,UAAU,cAAc,cAAc,2CAA2C,kBAAkB,wEAAwE,KAAK,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,cAAc,sDAAsD,IAAI,cAAc,UAAU,cAAc,SAAS,cAAc,UAAU,aAAa,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,8BAA8B,OAAO,cAAc,kBAAkB,oBAAoB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,gBAAgB,iBAAiB,sBAAsB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,gBAAgB,iBAAiB,cAAc,QAAQ,QAAQ,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,eAAe,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,eAAe,QAAQ,iBAAiB,uCAAuC,WAAW,cAAc,kBAAkB,wEAAwE,KAAK,cAAc,SAAS,YAAY,UAAU,eAAe,yBAAyB,+CAA+C,SAAS,cAAc,aAAa,cAAc,IAAI,cAAc,UAAU,cAAc,SAAS,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,oCAAoC,MAAM,kDAAkD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,WAAW,QAAQ,QAAQ,YAAY,SAAS,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,UAAU,cAAc,cAAc,wFAAwF,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,iBAAiB,iBAAiB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,iBAAiB,iBAAiB,QAAQ,QAAQ,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,UAAU,cAAc,cAAc,wFAAwF,MAAM,iDAAiD,OAAO,cAAc,OAAO,cAAc,KAAK,iBAAiB,mBAAmB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,iBAAiB,aAAa,QAAQ,aAAa,2CAA2C,SAAS,wEAAwE,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,YAAY,YAAY,MAAM,gBAAgB,UAAU,cAAc,cAAc,wFAAwF,QAAQ,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,iCAAiC,OAAO,cAAc,OAAO,gBAAgB,4BAA4B,+CAA+C,QAAQ,QAAQ,cAAc,WAAW,cAAc,cAAc,gCAAgC,QAAQ,cAAc,UAAU,YAAY,QAAQ,cAAc,cAAc,mCAAmC,OAAO,cAAc,YAAY,cAAc,SAAS,8DAA8D,QAAQ,gCAAgC,OAAO,gBAAgB,EAAE,gBAAgB,gBAAgB,oCAAoC,QAAQ,WAAW,iCAAiC,YAAY,eAAe,SAAS,YAAY,SAAS,eAAe,cAAc,mCAAmC,aAAa,kCAAkC,KAAK,eAAe,UAAU,+BAA+B,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,YAAY,WAAW,eAAe,aAAa,mCAAmC,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,gBAAgB,+BAA+B,QAAQ,SAAS,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,MAAM,8BAA8B,OAAO,gBAAgB,eAAe,gCAAgC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,uBAAuB,OAAO,gBAAgB,eAAe,mCAAmC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,uBAAuB,OAAO,cAAc,iBAAiB,qCAAqC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,wCAAwC,OAAO,YAAY,OAAO,cAAc,iBAAiB,uCAAuC,QAAQ,eAAe,mCAAmC,MAAM,0CAA0C,OAAO,YAAY,OAAO,cAAc,iBAAiB,wCAAwC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,gCAAgC,MAAM,gBAAgB,iBAAiB,sCAAsC,QAAQ,eAAe,kCAAkC,OAAO,aAAa,MAAM,yCAAyC,OAAO,YAAY,OAAO,cAAc,iBAAiB,gCAAgC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,MAAM,uBAAuB,OAAO,cAAc,eAAe,qCAAqC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,uGAAuG,QAAQ,gBAAgB,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,6BAA6B,MAAM,cAAc,EAAE,8BAA8B,OAAO,cAAc,gBAAgB,wCAAwC,QAAQ,OAAO,gBAAgB,MAAM,gCAAgC,MAAM,gBAAgB,eAAe,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,MAAM,iCAAiC,OAAO,YAAY,OAAO,cAAc,eAAe,+BAA+B,QAAQ,OAAO,eAAe,OAAO,eAAe,gBAAgB,sCAAsC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,8BAA8B,OAAO,cAAc,EAAE,cAAc,gBAAgB,6BAA6B,QAAQ,OAAO,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,oCAAoC,OAAO,YAAY,UAAU,cAAc,EAAE,uBAAuB,OAAO,cAAc,EAAE,kCAAkC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,6BAA6B,MAAM,cAAc,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,EAAE,oCAAoC,QAAQ,SAAS,YAAY,QAAQ,gBAAgB,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,+BAA+B,MAAM,cAAc,EAAE,gBAAgB,EAAE,yCAAyC,QAAQ,iBAAiB,uCAAuC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,2DAA2D,OAAO,YAAY,OAAO,YAAY,QAAQ,cAAc,EAAE,iDAAiD,OAAO,YAAY,QAAQ,cAAc,EAAE,gDAAgD,MAAM,YAAY,QAAQ,cAAc,EAAE,sCAAsC,OAAO,cAAc,EAAE,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,+BAA+B,MAAM,cAAc,EAAE,gBAAgB,EAAE,qCAAqC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,uGAAuG,eAAe,oCAAoC,QAAQ,gBAAgB,QAAQ,2CAA2C,OAAO,YAAY,OAAO,cAAc,EAAE,iCAAiC,OAAO,cAAc,EAAE,gCAAgC,MAAM,cAAc,EAAE,iBAAiB,EAAE,qCAAqC,QAAQ,cAAc,oCAAoC,QAAQ,gBAAgB,QAAQ,gCAAgC,MAAM,gBAAgB,EAAE,iBAAiB,EAAE,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,6BAA6B,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,EAAE,mCAAmC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,mDAAmD,OAAO,YAAY,OAAO,YAAY,OAAO,cAAc,EAAE,yCAAyC,OAAO,YAAY,OAAO,cAAc,EAAE,+BAA+B,OAAO,cAAc,EAAE,8BAA8B,MAAM,cAAc,EAAE,eAAe,EAAE,8BAA8B,QAAQ,SAAS,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,+FAA+F,MAAM,6BAA6B,OAAO,gBAAgB,eAAe,kCAAkC,QAAQ,OAAO,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,iBAAiB,sCAAsC,qBAAqB,2CAA2C,qBAAqB,2BAA2B,eAAe,qCAAqC,QAAQ,gBAAgB,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,gBAAgB,kCAAkC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,QAAQ,wCAAwC,OAAO,YAAY,OAAO,gBAAgB,EAAE,6BAA6B,MAAM,gBAAgB,eAAe,oCAAoC,QAAQ,iBAAiB,uCAAuC,UAAU,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,0CAA0C,OAAO,YAAY,OAAO,gBAAgB,EAAE,+BAA+B,MAAM,gBAAgB,2BAA2B,qCAAqC,QAAQ,eAAe,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,eAAe,qCAAqC,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,2BAA2B,qCAAqC,QAAQ,OAAO,cAAc,SAAS,4BAA4B,UAAU,YAAY,gBAAgB,kCAAkC,eAAe,qCAAqC,MAAM,gCAAgC,MAAM,gBAAgB,0BAA0B,mCAAmC,QAAQ,eAAe,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,mDAAmD,OAAO,YAAY,OAAO,YAAY,OAAO,gBAAgB,EAAE,yCAAyC,OAAO,YAAY,OAAO,gBAAgB,EAAE,8BAA8B,MAAM,gBAAgB,2BAA2B,kCAAkC,QAAQ,UAAU,4BAA4B,aAAa,+CAA+C,QAAQ,6BAA6B,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,EAAE,iCAAiC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,4BAA4B,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,gBAAgB,kCAAkC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,4BAA4B,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,EAAE,+BAA+B,QAAQ,kBAAkB,qCAAqC,kBAAkB,oCAAoC,SAAS,YAAY,SAAS,YAAY,QAAQ,4BAA4B,QAAQ,uEAAuE,QAAQ,aAAa,QAAQ,0CAA0C,OAAO,YAAY,SAAS,6MAA6M,EAAE,+BAA+B,QAAQ,6MAA6M,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,EAAE,gCAAgC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,2BAA2B,WAAW,eAAe,WAAW,gBAAgB,QAAQ,+BAA+B,OAAO,cAAc,EAAE,eAAe,EAAE,uCAAuC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,gBAAgB,2BAA2B,iCAAiC,QAAQ,gBAAgB,uCAAuC,kBAAkB,4FAA4F,oBAAoB,yCAAyC,oBAAoB,2CAA2C,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,gBAAgB,uCAAuC,QAAQ,SAAS,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,qBAAqB,2BAA2B,SAAS,cAAc,IAAI,eAAe,QAAQ,iDAAiD,OAAO,YAAY,OAAO,cAAc,EAAE,uCAAuC,OAAO,cAAc,EAAE,uBAAuB,gBAAgB,YAAY,KAAK,SAAS,YAAY,QAAQ,QAAQ,cAAc,SAAS,YAAY,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,oCAAoC,QAAQ,uCAAuC,OAAO,cAAc,OAAO,gBAAgB,EAAE,6BAA6B,OAAO,gBAAgB,EAAE,aAAa,4BAA4B,WAAW,QAAQ,QAAQ,cAAc,aAAa,iCAAiC,aAAa,kCAAkC,gBAAgB,qCAAqC,gBAAgB,qCAAqC,aAAa,kCAAkC,cAAc,mCAAmC,gBAAgB,qCAAqC,YAAY,8BAA8B,sBAAsB,4CAA4C,UAAU,cAAc,aAAa,iCAAiC,gBAAgB,kCAAkC,eAAe,mCAAmC,aAAa,iCAAiC,eAAe,mCAAmC,aAAa,iCAAiC,cAAc,gCAAgC,YAAY,+BAA+B,MAAM,8CAA8C,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,kBAAkB,QAAQ,QAAQ,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,6CAA6C,OAAO,cAAc,OAAO,gBAAgB,EAAE,mCAAmC,OAAO,gBAAgB,EAAE,mBAAmB,wCAAwC,eAAe,QAAQ,QAAQ,cAAc,aAAa,2IAA2I,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,wCAAwC,oBAAoB,QAAQ,QAAQ,cAAc,MAAM,wBAAwB,iBAAiB,+DAA+D,kBAAkB,gEAAgE,SAAS,wBAAwB,UAAU,wCAAwC,YAAY,wCAAwC,WAAW,wCAAwC,aAAa,0BAA0B,UAAU,0BAA0B,SAAS,2BAA2B,QAAQ,+CAA+C,OAAO,cAAc,OAAO,gBAAgB,EAAE,qCAAqC,OAAO,gBAAgB,EAAE,qBAAqB,gBAAgB,8CAA8C,QAAQ,UAAU,YAAY,YAAY,cAAc,UAAU,cAAc,OAAO,4CAA4C,QAAQ,0CAA0C,QAAQ,cAAc,EAAE,yBAAyB,EAAE,4BAA4B,QAAQ,cAAc,oCAAoC,QAAQ,6BAA6B,QAAQ,2CAA2C,QAAQ,YAAY,SAAS,6GAA6G,EAAE,+BAA+B,QAAQ,cAAc,EAAE,+BAA+B,QAAQ,6GAA6G,EAAE,cAAc,EAAE,gCAAgC,QAAQ,OAAO,YAAY,OAAO,gBAAgB,QAAQ,iDAAiD,QAAQ,cAAc,EAAE,iBAAiB,gBAAgB,6BAA6B,QAAQ,kBAAkB,qCAAqC,kBAAkB,oCAAoC,SAAS,YAAY,SAAS,eAAe,QAAQ,4BAA4B,QAAQ,iEAAiE,QAAQ,aAAa,QAAQ,kEAAkE,QAAQ,YAAY,SAAS,sHAAsH,cAAc,6MAA6M,EAAE,iDAAiD,QAAQ,YAAY,SAAS,wHAAwH,EAAE,sDAAsD,QAAQ,sHAAsH,cAAc,6MAA6M,EAAE,qCAAqC,QAAQ,cAAc,EAAE,qCAAqC,QAAQ,wHAAwH,EAAE,oBAAoB,EAAE,iBAAiB,QAAQ,QAAQ,cAAc,UAAU,YAAY,aAAa,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,kBAAkB,oDAAoD,iBAAiB,qCAAqC,gBAAgB,oCAAoC,mBAAmB,uCAAuC,sBAAsB,0CAA0C,UAAU,cAAc,cAAc,wFAAwF,QAAQ,oDAAoD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,4CAA4C,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,YAAY,KAAK,QAAQ,kCAAkC,iBAAiB,QAAQ,QAAQ,wEAAwE,UAAU,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,gBAAgB,0BAA0B,mBAAmB,QAAQ,QAAQ,wEAAwE,UAAU,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,gBAAgB,0BAA0B,cAAc,QAAQ,QAAQ,cAAc,SAAS,gBAAgB,WAAW,gCAAgC,QAAQ,yCAAyC,UAAU,gBAAgB,EAAE,sBAAsB,uCAAuC,cAAc,QAAQ,UAAU,cAAc,kBAAkB,uCAAuC,kBAAkB,wEAAwE,KAAK,cAAc,UAAU,eAAe,SAAS,YAAY,kBAAkB,oCAAoC,OAAO,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,eAAe,iCAAiC,UAAU,eAAe,yBAAyB,+CAA+C,aAAa,cAAc,IAAI,cAAc,UAAU,YAAY,SAAS,gBAAgB,aAAa,0IAA0I,OAAO,cAAc,OAAO,YAAY,SAAS,cAAc,UAAU;AAC3v+B,EAAC,iBAAiB,mCAAmC,iBAAiB,mCAAmC,iBAAiB,qCAAqC,QAAQ,YAAY,eAAe,mCAAmC,cAAc,2FAA2F,cAAc,kCAAkC,cAAc,gCAAgC,UAAU,YAAY,cAAc,mCAAmC,UAAU,eAAe,aAAa,mCAAmC,QAAQ,yCAAyC,OAAO,YAAY,OAAO,cAAc,EAAE,+BAA+B,OAAO,cAAc,EAAE,eAAe,gBAAgB,oBAAoB,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,WAAW,+BAA+B,aAAa,cAAc,UAAU,cAAc,SAAS,eAAe,QAAQ,gDAAgD,OAAO,YAAY,OAAO,cAAc,EAAE,sCAAsC,OAAO,cAAc,EAAE,sBAAsB,gBAAgB,oBAAoB,QAAQ,YAAY,cAAc,UAAU,cAAc,QAAQ,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,gDAAgD,OAAO,cAAc,OAAO,gBAAgB,EAAE,sCAAsC,OAAO,gBAAgB,EAAE,sBAAsB,gBAAgB,sBAAsB,QAAQ,QAAQ,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,aAAa,cAAc,UAAU,YAAY,SAAS,gBAAgB,aAAa,2IAA2I,QAAQ,kDAAkD,OAAO,YAAY,OAAO,cAAc,EAAE,wCAAwC,OAAO,cAAc,EAAE,wBAAwB,gBAAgB,gDAAgD,QAAQ,eAAe,kCAAkC,oBAAoB,wDAAwD,MAAM,4DAA4D,YAAY,cAAc,WAAW,gBAAgB,eAAe,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,YAAY,SAAS,gBAAgB,MAAM,sCAAsC,YAAY,gBAAgB,2BAA2B,oCAAoC,QAAQ,eAAe,mCAAmC,MAAM,oDAAoD,YAAY,cAAc,WAAW,gBAAgB,iBAAiB,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,aAAa,MAAM,sCAAsC,YAAY,cAAc,iBAAiB,8BAA8B,QAAQ,eAAe,mCAAmC,MAAM,oDAAoD,YAAY,cAAc,WAAW,eAAe,wCAAwC,QAAQ,eAAe,kCAAkC,QAAQ,gBAAgB,QAAQ,sCAAsC,YAAY,cAAc,EAAE,iBAAiB,EAAE,kCAAkC,QAAQ,eAAe,kCAAkC,oBAAoB,wDAAwD,MAAM,6DAA6D,YAAY,cAAc,WAAW,gBAAgB,eAAe,iCAAiC,QAAQ,eAAe,mCAAmC,QAAQ,4DAA4D,YAAY,cAAc,WAAW,cAAc,EAAE,8CAA8C,YAAY,gBAAgB,EAAE,yBAAyB,EAAE,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,aAAa,MAAM,8CAA8C,YAAY,gBAAgB,eAAe,eAAe,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,aAAa,cAAc,UAAU,cAAc,SAAS,eAAe,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,4BAA4B,kBAAkB,QAAQ,QAAQ,cAAc,iBAAiB,+DAA+D,kBAAkB,gEAAgE,SAAS,wBAAwB,UAAU,wCAAwC,YAAY,wCAAwC,WAAW,wCAAwC,aAAa,0BAA0B,UAAU,0BAA0B,SAAS,2BAA2B,QAAQ,qDAAqD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,6CAA6C,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,cAAc,QAAQ,aAAa,2CAA2C,SAAS,YAAY,OAAO,cAAc,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,kBAAkB,uCAAuC,UAAU,cAAc,UAAU,WAAW,iBAAiB,iBAAiB,sCAAsC,UAAU,YAAY,YAAY,YAAY,MAAM,gBAAgB,UAAU,cAAc,cAAc,8DAA8D,MAAM,iDAAiD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,4BAA4B,sBAAsB,oBAAoB,EAAE,EAAE,sBAAsB,sBAAsB,4FAA4F,uEAAuE,QAAQ,aAAa,2CAA2C,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,OAAO,eAAe,QAAQ,uCAAuC,OAAO,cAAc,OAAO,gBAAgB,EAAE,6BAA6B,OAAO,gBAAgB,EAAE,aAAa,wCAAwC,uCAAuC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,mCAAmC,MAAM,cAAc,EAAE,oBAAoB,EAAE,gCAAgC,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,wCAAwC,QAAQ,cAAc,EAAE,uBAAuB,EAAE,2BAA2B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,kCAAkC,OAAO,cAAc,EAAE,kBAAkB,EAAE,+BAA+B,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,4BAA4B,SAAS,aAAa,QAAQ,uCAAuC,QAAQ,cAAc,EAAE,sBAAsB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,KAAK,4BAA4B,IAAI,6BAA6B,MAAM,oBAAoB,0BAA0B,QAAQ,MAAM,6BAA6B,MAAM,aAAa,6BAA6B,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,MAAM,4BAA4B,IAAI,6BAA6B,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,oBAAoB,2BAA2B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,mBAAmB,kCAAkC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,2BAA2B,6BAA6B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,qBAAqB,8BAA8B,QAAQ,OAAO,sCAAsC,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,EAAE,8BAA8B,QAAQ,GAAG,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,mCAAmC,OAAO,cAAc,EAAE,mBAAmB,EAAE,gCAAgC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,4BAA4B,SAAS,4CAA4C,MAAM,yBAAyB,mBAAmB,OAAO,yCAAyC,UAAU,cAAc,EAAE,sBAAsB,kBAAkB,mDAAmD,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,0BAA0B,gCAAgC,QAAQ,OAAO,uEAAuE,QAAQ,eAAe,gBAAgB,kCAAkC,UAAU,YAAY,sBAAsB,4CAA4C,eAAe,oCAAoC,0BAA0B,gDAAgD,gBAAgB,oFAAoF,QAAQ,uCAAuC,OAAO,gBAAgB,EAAE,uBAAuB,EAAE,sCAAsC,QAAQ,OAAO,eAAe,gBAAgB,mCAAmC,MAAM,+BAA+B,qCAAqC,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,yBAAyB,cAAc,iCAAiC,QAAQ,QAAQ,8BAA8B,UAAU,eAAe,SAAS,iGAAiG,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,wBAAwB,eAAe,+BAA+B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,eAAe,oCAAoC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,kDAAkD,QAAQ,iGAAiG,QAAQ,cAAc,EAAE,uCAAuC,QAAQ,mGAAmG,EAAE,sBAAsB,EAAE,+BAA+B,QAAQ,cAAc,oCAAoC,QAAQ,6BAA6B,QAAQ,6CAA6C,QAAQ,cAAc,EAAE,sBAAsB,EAAE,aAAa,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,WAAW,+BAA+B,aAAa,cAAc,UAAU,cAAc,SAAS,eAAe,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,gBAAgB,sBAAsB,QAAQ,QAAQ,cAAc,UAAU,YAAY,aAAa,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,iBAAiB,qCAAqC,gBAAgB,oCAAoC,UAAU,cAAc,cAAc,wFAAwF,QAAQ,0DAA0D,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,kDAAkD,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,iBAAiB,QAAQ,aAAa,2CAA2C,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,UAAU,cAAc,cAAc,wFAAwF,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,iBAAiB,qBAAqB,QAAQ,UAAU,cAAc,cAAc,2CAA2C,kBAAkB,wEAAwE,KAAK,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,cAAc,sDAAsD,IAAI,cAAc,UAAU,cAAc,SAAS,cAAc,UAAU,aAAa,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,8BAA8B,OAAO,cAAc,kBAAkB,oBAAoB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,gBAAgB,iBAAiB,sBAAsB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,gBAAgB,iBAAiB,cAAc,QAAQ,QAAQ,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,eAAe,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,eAAe,QAAQ,iBAAiB,uCAAuC,WAAW,cAAc,kBAAkB,wEAAwE,KAAK,cAAc,SAAS,YAAY,UAAU,eAAe,yBAAyB,+CAA+C,SAAS,cAAc,aAAa,cAAc,IAAI,cAAc,UAAU,cAAc,SAAS,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,oCAAoC,MAAM,kDAAkD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,WAAW,QAAQ,QAAQ,YAAY,SAAS,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,UAAU,cAAc,cAAc,wFAAwF,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,iBAAiB,iBAAiB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,iBAAiB,iBAAiB,QAAQ,QAAQ,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,UAAU,cAAc,cAAc,wFAAwF,MAAM,iDAAiD,OAAO,cAAc,OAAO,cAAc,KAAK,iBAAiB,mBAAmB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,iBAAiB,aAAa,QAAQ,aAAa,2CAA2C,SAAS,wEAAwE,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,YAAY,YAAY,MAAM,gBAAgB,UAAU,cAAc,cAAc,wFAAwF,QAAQ,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,iCAAiC,OAAO,cAAc,OAAO,gBAAgB,4BAA4B,+CAA+C,QAAQ,QAAQ,cAAc,WAAW,cAAc,cAAc,gCAAgC,QAAQ,cAAc,UAAU,YAAY,QAAQ,cAAc,cAAc,mCAAmC,OAAO,cAAc,YAAY,cAAc,SAAS,8DAA8D,QAAQ,gCAAgC,OAAO,gBAAgB,EAAE,gBAAgB,gBAAgB,oCAAoC,QAAQ,WAAW,iCAAiC,YAAY,eAAe,SAAS,YAAY,SAAS,eAAe,cAAc,mCAAmC,aAAa,kCAAkC,KAAK,eAAe,UAAU,+BAA+B,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,YAAY,WAAW,eAAe,aAAa,mCAAmC,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,gBAAgB,+BAA+B,QAAQ,SAAS,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,MAAM,8BAA8B,OAAO,gBAAgB,eAAe,gCAAgC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,uBAAuB,OAAO,gBAAgB,eAAe,mCAAmC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,uBAAuB,OAAO,cAAc,iBAAiB,qCAAqC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,wCAAwC,OAAO,YAAY,OAAO,cAAc,iBAAiB,uCAAuC,QAAQ,eAAe,mCAAmC,MAAM,0CAA0C,OAAO,YAAY,OAAO,cAAc,iBAAiB,wCAAwC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,gCAAgC,MAAM,gBAAgB,iBAAiB,sCAAsC,QAAQ,eAAe,kCAAkC,OAAO,aAAa,MAAM,yCAAyC,OAAO,YAAY,OAAO,cAAc,iBAAiB,gCAAgC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,MAAM,uBAAuB,OAAO,cAAc,eAAe,qCAAqC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,uGAAuG,QAAQ,gBAAgB,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,6BAA6B,MAAM,cAAc,EAAE,8BAA8B,OAAO,cAAc,gBAAgB,wCAAwC,QAAQ,eAAe,kCAAkC,QAAQ,gBAAgB,MAAM,gCAAgC,MAAM,gBAAgB,eAAe,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,MAAM,iCAAiC,OAAO,YAAY,OAAO,cAAc,eAAe,+BAA+B,QAAQ,OAAO,eAAe,gBAAgB,sCAAsC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,8BAA8B,OAAO,cAAc,EAAE,cAAc,gBAAgB,6BAA6B,QAAQ,OAAO,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,oCAAoC,OAAO,YAAY,UAAU,cAAc,EAAE,uBAAuB,OAAO,cAAc,EAAE,kCAAkC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,6BAA6B,MAAM,cAAc,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,EAAE,oCAAoC,QAAQ,SAAS,YAAY,QAAQ,gBAAgB,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,+BAA+B,MAAM,cAAc,EAAE,gBAAgB,EAAE,yCAAyC,QAAQ,iBAAiB,uCAAuC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,2DAA2D,OAAO,YAAY,OAAO,YAAY,QAAQ,cAAc,EAAE,iDAAiD,OAAO,YAAY,QAAQ,cAAc,EAAE,gDAAgD,MAAM,YAAY,QAAQ,cAAc,EAAE,sCAAsC,OAAO,cAAc,EAAE,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,+BAA+B,MAAM,cAAc,EAAE,gBAAgB,EAAE,qCAAqC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,uGAAuG,eAAe,oCAAoC,QAAQ,gBAAgB,QAAQ,2CAA2C,OAAO,YAAY,OAAO,cAAc,EAAE,iCAAiC,OAAO,cAAc,EAAE,gCAAgC,MAAM,cAAc,EAAE,iBAAiB,EAAE,qCAAqC,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,QAAQ,gBAAgB,QAAQ,gCAAgC,MAAM,gBAAgB,EAAE,iBAAiB,EAAE,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,6BAA6B,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,EAAE,mCAAmC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,mDAAmD,OAAO,YAAY,OAAO,YAAY,OAAO,cAAc,EAAE,yCAAyC,OAAO,YAAY,OAAO,cAAc,EAAE,+BAA+B,OAAO,cAAc,EAAE,8BAA8B,MAAM,cAAc,EAAE,eAAe,EAAE,8BAA8B,QAAQ,SAAS,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,+FAA+F,MAAM,6BAA6B,OAAO,gBAAgB,eAAe,kCAAkC,QAAQ,OAAO,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,iBAAiB,sCAAsC,qBAAqB,2CAA2C,qBAAqB,2BAA2B,eAAe,qCAAqC,QAAQ,gBAAgB,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,gBAAgB,kCAAkC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,wCAAwC,OAAO,YAAY,OAAO,gBAAgB,cAAc,oCAAoC,QAAQ,iBAAiB,uCAAuC,UAAU,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,0CAA0C,OAAO,YAAY,OAAO,gBAAgB,EAAE,+BAA+B,MAAM,gBAAgB,2BAA2B,qCAAqC,QAAQ,eAAe,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,eAAe,qCAAqC,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,2BAA2B,qCAAqC,QAAQ,OAAO,cAAc,SAAS,4BAA4B,UAAU,YAAY,gBAAgB,kCAAkC,eAAe,qCAAqC,MAAM,gCAAgC,MAAM,gBAAgB,0BAA0B,mCAAmC,QAAQ,eAAe,kCAAkC,oBAAoB;AAClu+B,EAAC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,mDAAmD,OAAO,YAAY,OAAO,YAAY,OAAO,gBAAgB,EAAE,yCAAyC,OAAO,YAAY,OAAO,gBAAgB,EAAE,8BAA8B,MAAM,gBAAgB,2BAA2B,kCAAkC,QAAQ,UAAU,4BAA4B,aAAa,+CAA+C,QAAQ,6BAA6B,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,EAAE,iCAAiC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,4BAA4B,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,gBAAgB,kCAAkC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,4BAA4B,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,EAAE,+BAA+B,QAAQ,kBAAkB,qCAAqC,kBAAkB,oCAAoC,SAAS,YAAY,SAAS,YAAY,QAAQ,4BAA4B,QAAQ,uEAAuE,QAAQ,aAAa,QAAQ,0CAA0C,OAAO,YAAY,SAAS,6MAA6M,EAAE,+BAA+B,QAAQ,6MAA6M,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,EAAE,gCAAgC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,2BAA2B,WAAW,eAAe,WAAW,gBAAgB,QAAQ,+BAA+B,OAAO,cAAc,EAAE,eAAe,EAAE,uCAAuC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,gBAAgB,2BAA2B,iCAAiC,QAAQ,gBAAgB,uCAAuC,kBAAkB,4FAA4F,oBAAoB,yCAAyC,oBAAoB,2CAA2C,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,gBAAgB,uCAAuC,QAAQ,SAAS,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,qBAAqB,2BAA2B,SAAS,cAAc,IAAI,eAAe,QAAQ,iDAAiD,OAAO,YAAY,OAAO,cAAc,EAAE,uCAAuC,OAAO,cAAc,EAAE,uBAAuB,gBAAgB,YAAY,KAAK,SAAS,YAAY,QAAQ,QAAQ,cAAc,SAAS,YAAY,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,oCAAoC,QAAQ,uCAAuC,OAAO,cAAc,OAAO,gBAAgB,EAAE,6BAA6B,OAAO,gBAAgB,EAAE,aAAa,4BAA4B,WAAW,QAAQ,QAAQ,cAAc,aAAa,iCAAiC,aAAa,kCAAkC,gBAAgB,qCAAqC,gBAAgB,qCAAqC,aAAa,kCAAkC,cAAc,mCAAmC,gBAAgB,qCAAqC,YAAY,8BAA8B,sBAAsB,4CAA4C,UAAU,cAAc,aAAa,iCAAiC,gBAAgB,kCAAkC,eAAe,mCAAmC,aAAa,iCAAiC,eAAe,mCAAmC,aAAa,iCAAiC,cAAc,gCAAgC,YAAY,+BAA+B,MAAM,8CAA8C,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,kBAAkB,QAAQ,QAAQ,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,6CAA6C,OAAO,cAAc,OAAO,gBAAgB,EAAE,mCAAmC,OAAO,gBAAgB,EAAE,mBAAmB,wCAAwC,eAAe,QAAQ,QAAQ,cAAc,aAAa,2IAA2I,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,wCAAwC,oBAAoB,QAAQ,QAAQ,cAAc,MAAM,wBAAwB,iBAAiB,+DAA+D,kBAAkB,gEAAgE,SAAS,wBAAwB,UAAU,wCAAwC,YAAY,wCAAwC,WAAW,wCAAwC,aAAa,0BAA0B,UAAU,0BAA0B,SAAS,0BAA0B,WAAW,4BAA4B,QAAQ,+CAA+C,OAAO,cAAc,OAAO,gBAAgB,EAAE,qCAAqC,OAAO,gBAAgB,EAAE,qBAAqB,gBAAgB,8CAA8C,QAAQ,UAAU,YAAY,YAAY,cAAc,UAAU,cAAc,oBAAoB,0CAA0C,OAAO,4CAA4C,QAAQ,0CAA0C,QAAQ,cAAc,EAAE,yBAAyB,EAAE,4BAA4B,QAAQ,cAAc,oCAAoC,QAAQ,6BAA6B,QAAQ,2CAA2C,QAAQ,YAAY,SAAS,6GAA6G,EAAE,+BAA+B,QAAQ,cAAc,EAAE,+BAA+B,QAAQ,6GAA6G,EAAE,cAAc,EAAE,gCAAgC,QAAQ,OAAO,YAAY,OAAO,gBAAgB,QAAQ,iDAAiD,QAAQ,cAAc,EAAE,iBAAiB,gBAAgB,6BAA6B,QAAQ,kBAAkB,qCAAqC,kBAAkB,oCAAoC,SAAS,YAAY,SAAS,eAAe,QAAQ,4BAA4B,QAAQ,iEAAiE,QAAQ,aAAa,QAAQ,kEAAkE,QAAQ,YAAY,SAAS,sHAAsH,cAAc,6MAA6M,EAAE,iDAAiD,QAAQ,YAAY,SAAS,wHAAwH,EAAE,sDAAsD,QAAQ,sHAAsH,cAAc,6MAA6M,EAAE,qCAAqC,QAAQ,cAAc,EAAE,qCAAqC,QAAQ,wHAAwH,EAAE,oBAAoB,EAAE,iBAAiB,QAAQ,QAAQ,cAAc,UAAU,YAAY,aAAa,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,kBAAkB,oDAAoD,iBAAiB,qCAAqC,gBAAgB,oCAAoC,mBAAmB,uCAAuC,sBAAsB,0CAA0C,UAAU,cAAc,cAAc,wFAAwF,QAAQ,oDAAoD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,4CAA4C,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,YAAY,KAAK,QAAQ,kCAAkC,iBAAiB,QAAQ,QAAQ,wEAAwE,UAAU,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,gBAAgB,0BAA0B,mBAAmB,QAAQ,QAAQ,wEAAwE,UAAU,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,gBAAgB,0BAA0B,cAAc,QAAQ,QAAQ,cAAc,SAAS,gBAAgB,WAAW,gCAAgC,QAAQ,yCAAyC,UAAU,gBAAgB,EAAE,sBAAsB,uCAAuC,cAAc,QAAQ,UAAU,cAAc,kBAAkB,uCAAuC,kBAAkB,wEAAwE,KAAK,cAAc,UAAU,eAAe,SAAS,YAAY,kBAAkB,oCAAoC,OAAO,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,eAAe,iCAAiC,UAAU,eAAe,yBAAyB,+CAA+C,aAAa,cAAc,IAAI,cAAc,UAAU,YAAY,SAAS,gBAAgB,aAAa,0IAA0I,OAAO,cAAc,OAAO,YAAY,SAAS,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,QAAQ,YAAY,eAAe,mCAAmC,cAAc,2FAA2F,cAAc,kCAAkC,cAAc,gCAAgC,UAAU,YAAY,cAAc,mCAAmC,UAAU,eAAe,aAAa,mCAAmC,QAAQ,yCAAyC,OAAO,YAAY,OAAO,cAAc,EAAE,+BAA+B,OAAO,cAAc,EAAE,eAAe,gBAAgB,oBAAoB,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,WAAW,+BAA+B,aAAa,cAAc,UAAU,cAAc,SAAS,eAAe,QAAQ,gDAAgD,OAAO,YAAY,OAAO,cAAc,EAAE,sCAAsC,OAAO,cAAc,EAAE,sBAAsB,gBAAgB,oBAAoB,QAAQ,YAAY,cAAc,UAAU,cAAc,QAAQ,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,gDAAgD,OAAO,cAAc,OAAO,gBAAgB,EAAE,sCAAsC,OAAO,gBAAgB,EAAE,sBAAsB,gBAAgB,sBAAsB,QAAQ,QAAQ,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,aAAa,cAAc,UAAU,YAAY,SAAS,gBAAgB,aAAa,2IAA2I,QAAQ,kDAAkD,OAAO,YAAY,OAAO,cAAc,EAAE,wCAAwC,OAAO,cAAc,EAAE,wBAAwB,gBAAgB,gDAAgD,QAAQ,eAAe,kCAAkC,oBAAoB,wDAAwD,MAAM,4DAA4D,YAAY,cAAc,WAAW,gBAAgB,eAAe,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,YAAY,SAAS,gBAAgB,MAAM,sCAAsC,YAAY,gBAAgB,2BAA2B,oCAAoC,QAAQ,eAAe,mCAAmC,MAAM,oDAAoD,YAAY,cAAc,WAAW,gBAAgB,iBAAiB,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,aAAa,MAAM,sCAAsC,YAAY,cAAc,iBAAiB,8BAA8B,QAAQ,eAAe,mCAAmC,MAAM,oDAAoD,YAAY,cAAc,WAAW,eAAe,wCAAwC,QAAQ,eAAe,kCAAkC,QAAQ,gBAAgB,QAAQ,sCAAsC,YAAY,cAAc,EAAE,iBAAiB,EAAE,kCAAkC,QAAQ,eAAe,kCAAkC,oBAAoB,wDAAwD,MAAM,6DAA6D,YAAY,cAAc,WAAW,gBAAgB,eAAe,iCAAiC,QAAQ,eAAe,mCAAmC,QAAQ,4DAA4D,YAAY,cAAc,WAAW,cAAc,EAAE,8CAA8C,YAAY,gBAAgB,EAAE,yBAAyB,EAAE,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,aAAa,MAAM,8CAA8C,YAAY,gBAAgB,eAAe,eAAe,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,aAAa,cAAc,UAAU,cAAc,SAAS,eAAe,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,4BAA4B,kBAAkB,QAAQ,QAAQ,cAAc,iBAAiB,+DAA+D,kBAAkB,gEAAgE,SAAS,wBAAwB,UAAU,wCAAwC,YAAY,wCAAwC,WAAW,wCAAwC,aAAa,0BAA0B,UAAU,0BAA0B,SAAS,0BAA0B,WAAW,4BAA4B,QAAQ,qDAAqD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,6CAA6C,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,cAAc,QAAQ,aAAa,2CAA2C,SAAS,YAAY,OAAO,cAAc,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,kBAAkB,uCAAuC,UAAU,cAAc,UAAU,WAAW,iBAAiB,iBAAiB,sCAAsC,UAAU,YAAY,YAAY,YAAY,MAAM,gBAAgB,UAAU,cAAc,cAAc,8DAA8D,MAAM,iDAAiD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,4BAA4B,sBAAsB,oBAAoB,EAAE,EAAE,sBAAsB,sBAAsB,gEAAgE,8BAA8B,QAAQ,YAAY,iCAAiC,EAAE,0DAA0D,uEAAuE,QAAQ,aAAa,2CAA2C,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,OAAO,eAAe,QAAQ,uCAAuC,OAAO,cAAc,OAAO,gBAAgB,EAAE,6BAA6B,OAAO,gBAAgB,EAAE,aAAa,wCAAwC,uCAAuC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,mCAAmC,MAAM,cAAc,EAAE,oBAAoB,EAAE,gCAAgC,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,wCAAwC,QAAQ,cAAc,EAAE,uBAAuB,EAAE,2BAA2B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,kCAAkC,OAAO,cAAc,EAAE,kBAAkB,EAAE,+BAA+B,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,4BAA4B,SAAS,aAAa,QAAQ,uCAAuC,QAAQ,cAAc,EAAE,sBAAsB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,KAAK,4BAA4B,IAAI,6BAA6B,MAAM,oBAAoB,0BAA0B,QAAQ,MAAM,6BAA6B,MAAM,aAAa,6BAA6B,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,MAAM,4BAA4B,IAAI,6BAA6B,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,oBAAoB,2BAA2B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,mBAAmB,kCAAkC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,2BAA2B,6BAA6B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,qBAAqB,8BAA8B,QAAQ,OAAO,sCAAsC,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,EAAE,8BAA8B,QAAQ,GAAG,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,mCAAmC,OAAO,cAAc,EAAE,mBAAmB,EAAE,gCAAgC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,4BAA4B,SAAS,4CAA4C,MAAM,yBAAyB,mBAAmB,OAAO,yCAAyC,UAAU,cAAc,EAAE,sBAAsB,kBAAkB,mDAAmD,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,0BAA0B,gCAAgC,QAAQ,OAAO,uEAAuE,QAAQ,eAAe,gBAAgB,kCAAkC,UAAU,YAAY,sBAAsB,4CAA4C,eAAe,oCAAoC,0BAA0B,gDAAgD,gBAAgB,oFAAoF,QAAQ,uCAAuC,OAAO,gBAAgB,EAAE,uBAAuB,EAAE,sCAAsC,QAAQ,OAAO,eAAe,gBAAgB,mCAAmC,MAAM,+BAA+B,qCAAqC,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,yBAAyB,cAAc,iCAAiC,QAAQ,QAAQ,8BAA8B,UAAU,eAAe,SAAS,iGAAiG,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,wBAAwB,eAAe,+BAA+B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,eAAe,oCAAoC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,kDAAkD,QAAQ,iHAAiH,QAAQ,cAAc,EAAE,uCAAuC,QAAQ,mHAAmH,EAAE,sBAAsB,EAAE,+BAA+B,QAAQ,cAAc,oCAAoC,QAAQ,6BAA6B,QAAQ,6CAA6C,QAAQ,cAAc,EAAE,sBAAsB,EAAE,aAAa,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,WAAW,+BAA+B,aAAa,cAAc,UAAU,cAAc,IAAI,cAAc,WAAW,cAAc,kBAAkB,uCAAuC,kBAAkB,wEAAwE,KAAK,cAAc,UAAU,eAAe,yBAAyB,gDAAgD,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,gBAAgB,sBAAsB,QAAQ,SAAS,YAAY,aAAa,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,iBAAiB,qCAAqC,gBAAgB,oCAAoC,UAAU,cAAc,cAAc,wFAAwF,QAAQ,0DAA0D,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,kDAAkD,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,iBAAiB,QAAQ,aAAa,2CAA2C,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,UAAU,cAAc,cAAc,wFAAwF,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,iBAAiB,qBAAqB,QAAQ,UAAU,cAAc,cAAc,2CAA2C,kBAAkB,wEAAwE,KAAK,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,cAAc,sDAAsD,IAAI,cAAc,UAAU,cAAc,UAAU,aAAa,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,8BAA8B,OAAO,cAAc,kBAAkB,oBAAoB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,gBAAgB,iBAAiB,sBAAsB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,gBAAgB,iBAAiB,cAAc,QAAQ,QAAQ,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,eAAe,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,eAAe,QAAQ,iBAAiB,uCAAuC,WAAW,cAAc,kBAAkB,wEAAwE,KAAK,cAAc,SAAS,YAAY,UAAU,eAAe,yBAAyB,+CAA+C,SAAS,cAAc,aAAa,cAAc,IAAI,cAAc,UAAU,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,oCAAoC,MAAM,kDAAkD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,kBAAkB,QAAQ,QAAQ,YAAY,QAAQ,8DAA8D,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,gBAAgB,WAAW,QAAQ,QAAQ,YAAY,SAAS,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,cAAc,UAAU;AAC1v+B,EAAC,iBAAiB,mCAAmC,iBAAiB,mCAAmC,UAAU,cAAc,cAAc,wFAAwF,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,iBAAiB,iBAAiB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,iBAAiB,iBAAiB,QAAQ,QAAQ,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,UAAU,cAAc,cAAc,wFAAwF,MAAM,iDAAiD,OAAO,cAAc,OAAO,cAAc,KAAK,iBAAiB,mBAAmB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,iBAAiB,aAAa,QAAQ,aAAa,2CAA2C,SAAS,wEAAwE,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,YAAY,YAAY,MAAM,gBAAgB,UAAU,cAAc,cAAc,wFAAwF,QAAQ,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,iCAAiC,OAAO,cAAc,OAAO,gBAAgB,4BAA4B,+CAA+C,QAAQ,UAAU,cAAc,cAAc,gCAAgC,QAAQ,cAAc,UAAU,YAAY,QAAQ,cAAc,cAAc,mCAAmC,OAAO,cAAc,YAAY,cAAc,SAAS,8DAA8D,QAAQ,gCAAgC,OAAO,gBAAgB,EAAE,gBAAgB,gBAAgB,oCAAoC,QAAQ,WAAW,iCAAiC,YAAY,eAAe,SAAS,YAAY,SAAS,eAAe,cAAc,mCAAmC,aAAa,kCAAkC,KAAK,eAAe,UAAU,+BAA+B,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,YAAY,WAAW,eAAe,aAAa,mCAAmC,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,gBAAgB,+BAA+B,QAAQ,SAAS,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,MAAM,8BAA8B,OAAO,gBAAgB,eAAe,gCAAgC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,uBAAuB,OAAO,gBAAgB,eAAe,mCAAmC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,uBAAuB,OAAO,cAAc,iBAAiB,qCAAqC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,wCAAwC,OAAO,YAAY,OAAO,cAAc,iBAAiB,uCAAuC,QAAQ,eAAe,mCAAmC,MAAM,0CAA0C,OAAO,YAAY,OAAO,cAAc,iBAAiB,wCAAwC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,gCAAgC,MAAM,gBAAgB,iBAAiB,sCAAsC,QAAQ,eAAe,kCAAkC,OAAO,aAAa,MAAM,yCAAyC,OAAO,YAAY,OAAO,cAAc,iBAAiB,gCAAgC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,MAAM,uBAAuB,OAAO,cAAc,eAAe,qCAAqC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,uGAAuG,QAAQ,gBAAgB,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,6BAA6B,MAAM,cAAc,EAAE,8BAA8B,OAAO,cAAc,gBAAgB,wCAAwC,QAAQ,eAAe,kCAAkC,QAAQ,gBAAgB,MAAM,gCAAgC,MAAM,gBAAgB,eAAe,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,MAAM,iCAAiC,OAAO,YAAY,OAAO,cAAc,eAAe,+BAA+B,QAAQ,OAAO,eAAe,gBAAgB,sCAAsC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,8BAA8B,OAAO,cAAc,EAAE,cAAc,gBAAgB,qCAAqC,OAAO,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,gBAAgB,6BAA6B,QAAQ,OAAO,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,oCAAoC,OAAO,YAAY,UAAU,cAAc,EAAE,uBAAuB,OAAO,cAAc,EAAE,kCAAkC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,6BAA6B,MAAM,cAAc,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,EAAE,oCAAoC,QAAQ,SAAS,YAAY,QAAQ,gBAAgB,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,+BAA+B,MAAM,cAAc,EAAE,gBAAgB,EAAE,yCAAyC,QAAQ,iBAAiB,uCAAuC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,2DAA2D,OAAO,YAAY,OAAO,YAAY,QAAQ,cAAc,EAAE,iDAAiD,OAAO,YAAY,QAAQ,cAAc,EAAE,gDAAgD,MAAM,YAAY,QAAQ,cAAc,EAAE,sCAAsC,OAAO,cAAc,EAAE,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,+BAA+B,MAAM,cAAc,EAAE,gBAAgB,EAAE,qCAAqC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,uGAAuG,eAAe,oCAAoC,QAAQ,gBAAgB,QAAQ,2CAA2C,OAAO,YAAY,OAAO,cAAc,EAAE,iCAAiC,OAAO,cAAc,EAAE,gCAAgC,MAAM,cAAc,EAAE,iBAAiB,EAAE,qCAAqC,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,QAAQ,gBAAgB,QAAQ,gCAAgC,MAAM,gBAAgB,EAAE,iBAAiB,EAAE,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,6BAA6B,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,EAAE,mCAAmC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,mDAAmD,OAAO,YAAY,OAAO,YAAY,OAAO,cAAc,EAAE,yCAAyC,OAAO,YAAY,OAAO,cAAc,EAAE,+BAA+B,OAAO,cAAc,EAAE,8BAA8B,MAAM,cAAc,EAAE,eAAe,EAAE,8BAA8B,QAAQ,SAAS,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,+FAA+F,MAAM,6BAA6B,OAAO,gBAAgB,eAAe,kCAAkC,QAAQ,OAAO,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,iBAAiB,sCAAsC,qBAAqB,2CAA2C,qBAAqB,2BAA2B,eAAe,qCAAqC,QAAQ,gBAAgB,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,gBAAgB,kCAAkC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,wCAAwC,OAAO,YAAY,OAAO,gBAAgB,cAAc,oCAAoC,QAAQ,iBAAiB,uCAAuC,UAAU,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,0CAA0C,OAAO,YAAY,OAAO,gBAAgB,EAAE,+BAA+B,MAAM,gBAAgB,2BAA2B,qCAAqC,QAAQ,eAAe,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,eAAe,qCAAqC,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,2BAA2B,qCAAqC,QAAQ,OAAO,cAAc,SAAS,4BAA4B,UAAU,YAAY,gBAAgB,kCAAkC,eAAe,qCAAqC,MAAM,gCAAgC,MAAM,gBAAgB,0BAA0B,mCAAmC,QAAQ,eAAe,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,mDAAmD,OAAO,YAAY,OAAO,YAAY,OAAO,gBAAgB,EAAE,yCAAyC,OAAO,YAAY,OAAO,gBAAgB,EAAE,8BAA8B,MAAM,gBAAgB,2BAA2B,kCAAkC,QAAQ,UAAU,4BAA4B,aAAa,+CAA+C,QAAQ,6BAA6B,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,EAAE,iCAAiC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,4BAA4B,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,gBAAgB,kCAAkC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,4BAA4B,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,EAAE,+BAA+B,QAAQ,kBAAkB,qCAAqC,kBAAkB,oCAAoC,SAAS,YAAY,SAAS,YAAY,QAAQ,4BAA4B,QAAQ,uEAAuE,QAAQ,aAAa,QAAQ,0CAA0C,OAAO,YAAY,SAAS,6MAA6M,EAAE,+BAA+B,QAAQ,6MAA6M,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,EAAE,gCAAgC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,2BAA2B,WAAW,eAAe,WAAW,gBAAgB,QAAQ,+BAA+B,OAAO,cAAc,EAAE,eAAe,EAAE,uCAAuC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,gBAAgB,2BAA2B,iCAAiC,QAAQ,gBAAgB,uCAAuC,kBAAkB,4FAA4F,oBAAoB,yCAAyC,oBAAoB,0CAA0C,sBAAsB,6CAA6C,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,gBAAgB,uCAAuC,QAAQ,SAAS,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,qBAAqB,2BAA2B,IAAI,cAAc,WAAW,cAAc,kBAAkB,uCAAuC,kBAAkB,wEAAwE,KAAK,cAAc,UAAU,eAAe,yBAAyB,gDAAgD,QAAQ,iDAAiD,OAAO,YAAY,OAAO,cAAc,EAAE,uCAAuC,OAAO,cAAc,EAAE,uBAAuB,gBAAgB,YAAY,KAAK,SAAS,YAAY,QAAQ,QAAQ,YAAY,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,oCAAoC,QAAQ,uCAAuC,OAAO,cAAc,OAAO,gBAAgB,EAAE,6BAA6B,OAAO,gBAAgB,EAAE,aAAa,4BAA4B,WAAW,QAAQ,YAAY,iCAAiC,aAAa,kCAAkC,gBAAgB,qCAAqC,gBAAgB,qCAAqC,aAAa,kCAAkC,cAAc,mCAAmC,gBAAgB,qCAAqC,YAAY,8BAA8B,sBAAsB,4CAA4C,UAAU,cAAc,aAAa,iCAAiC,gBAAgB,kCAAkC,eAAe,mCAAmC,aAAa,iCAAiC,eAAe,mCAAmC,aAAa,iCAAiC,cAAc,gCAAgC,YAAY,+BAA+B,MAAM,8CAA8C,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,kBAAkB,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,6CAA6C,OAAO,cAAc,OAAO,gBAAgB,EAAE,mCAAmC,OAAO,gBAAgB,EAAE,mBAAmB,wCAAwC,eAAe,QAAQ,YAAY,2IAA2I,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,wCAAwC,oBAAoB,QAAQ,KAAK,wBAAwB,iBAAiB,+DAA+D,kBAAkB,gEAAgE,SAAS,wBAAwB,UAAU,wCAAwC,YAAY,wCAAwC,WAAW,wCAAwC,aAAa,0BAA0B,UAAU,0BAA0B,SAAS,0BAA0B,WAAW,4BAA4B,QAAQ,+CAA+C,OAAO,cAAc,OAAO,gBAAgB,EAAE,qCAAqC,OAAO,gBAAgB,EAAE,qBAAqB,gBAAgB,8CAA8C,QAAQ,UAAU,YAAY,YAAY,cAAc,UAAU,cAAc,oBAAoB,0CAA0C,OAAO,4CAA4C,QAAQ,0CAA0C,QAAQ,cAAc,EAAE,yBAAyB,EAAE,4BAA4B,QAAQ,cAAc,oCAAoC,QAAQ,6BAA6B,QAAQ,2CAA2C,QAAQ,YAAY,SAAS,6GAA6G,EAAE,+BAA+B,QAAQ,cAAc,EAAE,+BAA+B,QAAQ,6GAA6G,EAAE,cAAc,EAAE,gCAAgC,QAAQ,OAAO,YAAY,OAAO,gBAAgB,QAAQ,iDAAiD,QAAQ,cAAc,EAAE,iBAAiB,gBAAgB,6BAA6B,QAAQ,kBAAkB,qCAAqC,kBAAkB,oCAAoC,SAAS,YAAY,SAAS,eAAe,QAAQ,4BAA4B,QAAQ,iEAAiE,QAAQ,aAAa,QAAQ,kEAAkE,QAAQ,YAAY,SAAS,sHAAsH,cAAc,6MAA6M,EAAE,iDAAiD,QAAQ,YAAY,SAAS,wHAAwH,EAAE,sDAAsD,QAAQ,sHAAsH,cAAc,6MAA6M,EAAE,qCAAqC,QAAQ,cAAc,EAAE,qCAAqC,QAAQ,wHAAwH,EAAE,oBAAoB,EAAE,iBAAiB,QAAQ,SAAS,YAAY,aAAa,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,kBAAkB,oDAAoD,iBAAiB,qCAAqC,gBAAgB,oCAAoC,mBAAmB,uCAAuC,sBAAsB,0CAA0C,UAAU,cAAc,cAAc,wFAAwF,QAAQ,oDAAoD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,4CAA4C,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,YAAY,KAAK,QAAQ,kCAAkC,iBAAiB,QAAQ,QAAQ,wEAAwE,UAAU,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,gBAAgB,0BAA0B,mBAAmB,QAAQ,QAAQ,wEAAwE,UAAU,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,gBAAgB,0BAA0B,cAAc,QAAQ,QAAQ,gBAAgB,WAAW,gCAAgC,QAAQ,yCAAyC,UAAU,gBAAgB,EAAE,sBAAsB,uCAAuC,cAAc,QAAQ,UAAU,cAAc,kBAAkB,uCAAuC,kBAAkB,wEAAwE,KAAK,cAAc,UAAU,eAAe,SAAS,YAAY,kBAAkB,oCAAoC,OAAO,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,UAAU,eAAe,yBAAyB,+CAA+C,aAAa,cAAc,IAAI,cAAc,UAAU,YAAY,SAAS,gBAAgB,aAAa,0IAA0I,OAAO,cAAc,OAAO,YAAY,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,QAAQ,YAAY,eAAe,mCAAmC,cAAc,2FAA2F,cAAc,kCAAkC,cAAc,gCAAgC,UAAU,YAAY,cAAc,mCAAmC,UAAU,eAAe,aAAa,mCAAmC,QAAQ,yCAAyC,OAAO,YAAY,OAAO,cAAc,EAAE,+BAA+B,OAAO,cAAc,EAAE,eAAe,gBAAgB,oBAAoB,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,WAAW,+BAA+B,aAAa,cAAc,UAAU,cAAc,IAAI,cAAc,WAAW,cAAc,kBAAkB,uCAAuC,kBAAkB,wEAAwE,KAAK,cAAc,UAAU,eAAe,yBAAyB,gDAAgD,QAAQ,gDAAgD,OAAO,YAAY,OAAO,cAAc,EAAE,sCAAsC,OAAO,cAAc,EAAE,sBAAsB,gBAAgB,oBAAoB,QAAQ,YAAY,cAAc,UAAU,cAAc,QAAQ,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,gDAAgD,OAAO,cAAc,OAAO,gBAAgB,EAAE,sCAAsC,OAAO,gBAAgB,EAAE,sBAAsB,gBAAgB,sBAAsB,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,aAAa,cAAc,UAAU,YAAY,SAAS,gBAAgB,aAAa,2IAA2I,QAAQ,kDAAkD,OAAO,YAAY,OAAO,cAAc,EAAE,wCAAwC,OAAO,cAAc,EAAE,wBAAwB,gBAAgB,gDAAgD,QAAQ,eAAe,kCAAkC,oBAAoB,wDAAwD,MAAM,4DAA4D,YAAY,cAAc,WAAW,gBAAgB,eAAe,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,YAAY,SAAS,gBAAgB,MAAM,sCAAsC,YAAY,gBAAgB,2BAA2B,oCAAoC,QAAQ,eAAe,mCAAmC,MAAM,oDAAoD,YAAY,cAAc,WAAW,gBAAgB,iBAAiB,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,aAAa,MAAM,sCAAsC,YAAY,cAAc,iBAAiB,8BAA8B,QAAQ,eAAe,mCAAmC,MAAM,oDAAoD,YAAY,cAAc,WAAW,eAAe,wCAAwC,QAAQ,eAAe,kCAAkC,QAAQ,gBAAgB,QAAQ,sCAAsC,YAAY,cAAc,EAAE,iBAAiB,EAAE,kCAAkC,QAAQ,eAAe,kCAAkC,oBAAoB,wDAAwD,MAAM,6DAA6D,YAAY,cAAc,WAAW,gBAAgB,eAAe,iCAAiC,QAAQ,eAAe,mCAAmC,QAAQ,4DAA4D,YAAY,cAAc,WAAW,cAAc,EAAE,8CAA8C,YAAY,gBAAgB,EAAE,yBAAyB,EAAE,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,aAAa,MAAM;AAC3v+B,MAAK,YAAY,gBAAgB,eAAe,eAAe,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,aAAa,cAAc,UAAU,eAAe,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,4BAA4B,kBAAkB,QAAQ,gBAAgB,+DAA+D,kBAAkB,gEAAgE,SAAS,wBAAwB,UAAU,wCAAwC,YAAY,wCAAwC,WAAW,wCAAwC,aAAa,0BAA0B,UAAU,0BAA0B,SAAS,0BAA0B,WAAW,4BAA4B,QAAQ,qDAAqD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,6CAA6C,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,cAAc,QAAQ,aAAa,2CAA2C,SAAS,YAAY,OAAO,cAAc,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,kBAAkB,uCAAuC,UAAU,cAAc,UAAU,WAAW,iBAAiB,iBAAiB,sCAAsC,UAAU,YAAY,YAAY,YAAY,MAAM,gBAAgB,UAAU,cAAc,cAAc,8DAA8D,MAAM,iDAAiD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,4BAA4B,sBAAsB,oBAAoB,EAAE,EAAE,oCAAoC,sBAAsB,WAAW,8CAA8C,EAAE,iCAAiC,sBAAsB,cAAc,aAAa,mHAAmH,uBAAuB,0DAA0D,uEAAuE,+BAA+B,UAAU,6JAA6J,qJAAqJ,QAAQ,qFAAqF,SAAS,+XAA+X,KAAK,SAAS,YAAY,6DAA6D,mBAAmB,EAAE,mQAAmQ,sBAAsB,cAAc,gBAAgB,kBAAkB,gBAAgB,8BAA8B,UAAU,gCAAgC,IAAI,wCAAwC,SAAS,yBAAyB,6BAA6B,6BAA6B,iBAAiB,qDAAqD,yCAAyC,6BAA6B,qBAAqB,oCAAoC,UAAU,8EAA8E,GAAG,gBAAgB,aAAa,gEAAgE,wBAAwB,KAAK,iEAAiE,6DAA6D,gEAAgE,wBAAwB,0HAA0H,2FAA2F,uCAAuC,GAAG,GAAG,oBAAoB,SAAS,gBAAgB,MAAM,2MAA2M,4FAA4F,aAAa,0CAA0C,KAAK,YAAY,qCAAqC,2GAA2G,mGAAmG,sBAAsB,MAAM,4DAA4D,2DAA2D,MAAM,kDAAkD,MAAM,4CAA4C,MAAM,0BAA0B,mJAAmJ,QAAQ,4BAA4B,yHAAyH,gCAAgC,cAAc,oCAAoC,gBAAgB,EAAE,mBAAmB,oHAAoH,+BAA+B,cAAc,iBAAiB,yCAAyC,OAAO,yBAAyB,oFAAoF,gBAAgB,YAAY,YAAY,mBAAmB,2CAA2C,gHAAgH,0BAA0B,4CAA4C,6GAA6G,sBAAsB,iBAAiB,sCAAsC,oBAAoB,gDAAgD,4GAA4G,yBAAyB,oEAAoE,wBAAwB,6BAA6B,yDAAyD,wBAAwB,iBAAiB,qCAAqC,kEAAkE,sBAAsB,+BAA+B,6BAA6B,0CAA0C,oEAAoE,EAAE,aAAa,sBAAsB,gBAAgB,UAAU,+GAA+G,yDAAyD,qCAAqC,YAAY,yFAAyF,+CAA+C,2EAA2E,gCAAgC,gEAAgE,6BAA6B,2FAA2F,EAAE,uBAAuB,cAAc,6BAA6B,8BAA8B,qEAAqE,KAAK,mCAAmC,kBAAkB,wFAAwF,EAAE,2DAA2D,sBAAsB,cAAc,OAAO,yfAAyf,cAAc,iBAAiB,mBAAmB,gCAAgC,YAAY,gCAAgC,sNAAsN,mBAAmB,SAAS,2BAA2B,6DAA6D,gCAAgC,yFAAyF,SAAS,sDAAsD,SAAS,KAAK,8EAA8E,mDAAmD,8FAA8F,sMAAsM,+CAA+C,cAAc,wBAAwB,mCAAmC,wEAAwE,OAAO,6CAA6C,MAAM,MAAM,YAAY,wBAAwB,mCAAmC,oBAAoB,OAAO,QAAQ,oCAAoC,+BAA+B,4DAA4D,GAAG,wBAAwB,yBAAyB,uDAAuD,8CAA8C,+CAA+C,kDAAkD,wBAAwB,gBAAgB,iEAAiE,wFAAwF,4CAA4C,EAAE,0CAA0C,MAAM,0HAA0H,uCAAuC,gLAAgL,0CAA0C,uJAAuJ,kCAAkC,kCAAkC,QAAQ,WAAW,yHAAyH,gBAAgB,QAAQ,WAAW,4CAA4C,8BAA8B,kBAAkB,qCAAqC,EAAE,mFAAmF,sBAAsB,gBAAgB,iBAAiB,WAAW,+CAA+C,iBAAiB,GAAG,YAAY,0EAA0E,kDAAkD,sBAAsB,mBAAmB,iKAAiK,mBAAmB,oCAAoC,aAAa,iEAAiE,aAAa,cAAc,EAAE,gDAAgD,sBAAsB,OAAO,2DAA2D,iBAAiB,uBAAuB,kCAAkC,kEAAkE,EAAE,oDAAoD,sBAAsB,gBAAgB,iHAAiH,kGAAkG,gEAAgE,uDAAuD,6DAA6D,wDAAwD,qDAAqD,0CAA0C,sDAAsD,mDAAmD,4DAA4D,iEAAiE,8DAA8D,qFAAqF,kCAAkC,OAAO,+PAA+P,uBAAuB,cAAc,2DAA2D,qDAAqD,kDAAkD,sBAAsB,8BAA8B,EAAE,EAAE,aAAa,sBAAsB,gBAAgB,kBAAkB,SAAS,+KAA+K,UAAU,UAAU,wBAAwB,mEAAmE,6EAA6E,yBAAyB,yGAAyG,mCAAmC,eAAe,6EAA6E,MAAM,iCAAiC,oFAAoF,8BAA8B,sCAAsC,iUAAiU,gBAAgB,mBAAmB,sBAAsB,cAAc,8BAA8B,+BAA+B,sCAAsC,YAAY,iFAAiF,wFAAwF,2CAA2C,oFAAoF,4GAA4G,gBAAgB,kBAAkB,iCAAiC,QAAQ,SAAS,6DAA6D,sCAAsC,6BAA6B,0CAA0C,+EAA+E,gDAAgD,+CAA+C,EAAE,iCAAiC,IAAI,6CAA6C,sCAAsC,kCAAkC,uBAAuB,EAAE,wDAAwD,sBAAsB,cAAc,QAAQ,QAAQ,UAAU,iCAAiC,aAAa,kCAAkC,gDAAgD,QAAQ,QAAQ,2KAA2K,QAAQ,WAAW,0BAA0B,qFAAqF,sEAAsE,+JAA+J,uCAAuC,wEAAwE,+EAA+E,iBAAiB,yCAAyC,qCAAqC,8BAA8B,iCAAiC,gCAAgC,0HAA0H,oBAAoB,2BAA2B,yDAAyD,YAAY,mCAAmC,OAAO,qEAAqE,iEAAiE,qBAAqB,+BAA+B,+FAA+F,gCAAgC,mFAAmF,6BAA6B,6EAA6E,8BAA8B,+EAA+E,uCAAuC,6FAA6F,0CAA0C,oLAAoL,qDAAqD,aAAa,EAAE,mEAAmE,sBAAsB,gBAAgB,+IAA+I,cAAc,8CAA8C,gBAAgB,yBAAyB,6CAA6C,WAAW,aAAa,mBAAmB,iCAAiC,eAAe,sJAAsJ,kCAAkC,gDAAgD,8BAA8B,4DAA4D,wCAAwC,qEAAqE,wBAAwB,wEAAwE,0DAA0D,OAAO,mDAAmD,wCAAwC,yDAAyD,OAAO,4CAA4C,oDAAoD,8CAA8C,wBAAwB,2CAA2C,qBAAqB,4CAA4C,sBAAsB,4CAA4C,gDAAgD,8CAA8C,gHAAgH,qCAAqC,IAAI,gGAAgG,SAAS,+BAA+B,aAAa,EAAE,aAAa,sBAAsB,WAAW,wBAAwB,EAAE,eAAe,sBAAsB,gBAAgB,0DAA0D,YAAY,qCAAqC,uDAAuD,wCAAwC,mCAAmC,yCAAyC,2CAA2C,kCAAkC,iEAAiE,8CAA8C,kDAAkD,2CAA2C,+CAA+C,4CAA4C,kDAAkD,4CAA4C,sDAAsD,EAAE,EAAE,6BAA6B,sBAAsB,cAAc,mBAAmB,qCAAqC,SAAS,mBAAmB,qHAAqH,QAAQ,wCAAwC,wDAAwD,GAAG,MAAM,4CAA4C,oEAAoE,EAAE,aAAa,sBAAsB,WAAW,oDAAoD,EAAE,iCAAiC,sBAAsB,sBAAsB,8CAA8C,GAAG,sBAAsB,sBAAsB,WAAW,4BAA4B,GAAG,sBAAsB,cAAc,+CAA+C,+CAA+C,iBAAiB,sBAAsB,2CAA2C,gBAAgB,aAAa,EAAE,uCAAuC,sBAAsB,WAAW,yCAAyC,EAAE,2BAA2B,sBAAsB,cAAc,YAAY,oBAAoB,sCAAsC,iBAAiB,sBAAsB,+CAA+C,gBAAgB,qCAAqC,0BAA0B,qBAAqB,WAAW,kCAAkC,WAAW,wBAAwB,WAAW,iCAAiC,KAAK,iHAAiH,mCAAmC,UAAU,EAAE,cAAc,sBAAsB,cAAc,WAAW,kBAAkB,gDAAgD,qBAAqB,8DAA8D,0BAA0B,sDAAsD,sXAAsX,+DAA+D,qCAAqC,wCAAwC,kEAAkE,EAAE,+IAA+I,0BAA0B,2CAA2C,EAAE,iDAAiD,mEAAmE,wCAAwC,iDAAiD,YAAY,8GAA8G,mBAAmB,4BAA4B,0DAA0D,0BAA0B,8BAA8B,iBAAiB,mCAAmC,gBAAgB,yGAAyG,oBAAoB,2aAA2a,oBAAoB,OAAO,cAAc,8EAA8E,yYAAyY,aAAa,sDAAsD,kEAAkE,wUAAwU,2DAA2D,yCAAyC,6DAA6D,6BAA6B,QAAQ,oFAAoF,oCAAoC,8BAA8B,MAAM,0FAA0F,MAAM,gBAAgB,8BAA8B,kCAAkC,+BAA+B,+EAA+E,8CAA8C,qCAAqC,iBAAiB,mBAAmB,MAAM,IAAI,aAAa,SAAS,4JAA4J,+BAA+B,kBAAkB,GAAG,SAAS,EAAE,8BAA8B,gFAAgF,EAAE,uKAAuK,sBAAsB,oBAAoB,sBAAsB,8DAA8D,0CAA0C,eAAe,cAAc,kBAAkB,aAAa,kCAAkC,oBAAoB,kBAAkB,+BAA+B,0IAA0I,wCAAwC,wBAAwB,EAAE,cAAc,sBAAsB,kBAAkB,mBAAmB,8BAA8B,WAAW,4MAA4M,mFAAmF,qHAAqH,MAAM,gDAAgD,8BAA8B,oBAAoB,0BAA0B,MAAM,2IAA2I,IAAI,2FAA2F,gBAAgB,iCAAiC,+CAA+C,wBAAwB,uDAAuD,uGAAuG,mEAAmE,6BAA6B,mEAAmE,yBAAyB,8CAA8C,qCAAqC,yBAAyB,+BAA+B,wBAAwB,8BAA8B,+BAA+B,0BAA0B,wBAAwB,+BAA+B,sCAAsC,6CAA6C,oDAAoD,2DAA2D,2DAA2D,wBAAwB,wDAAwD,uBAAuB,4BAA4B,sDAAsD,WAAW,6FAA6F,oBAAoB,8BAA8B,WAAW,iBAAiB,4BAA4B,wBAAwB,gDAAgD,2DAA2D,kBAAkB,aAAa,8BAA8B,MAAM;;AAE9t+B,EAAC,wBAAwB,6BAA6B,oCAAoC,aAAa,8BAA8B,WAAW,KAAK,iCAAiC,UAAU,SAAS,sCAAsC,gCAAgC,MAAM,SAAS,sCAAsC,yBAAyB,KAAK,oEAAoE,YAAY,QAAQ,oCAAoC,wBAAwB,uBAAuB,2DAA2D,sCAAsC,gCAAgC,sBAAsB,kBAAkB,kEAAkE,aAAa,EAAE,uEAAuE,EAAE,GAAG;AACn1B,EAAC,I;;;;;;mCCnBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA2C;AAC3C;AACA,4DAA2D;;AAE3D;AACA,oDAAmD;AACnD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA0B,MAAM,aAAa,OAAO;;AAEpD;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;AACf,eAAc;AACd,eAAc;AACd,iBAAgB;AAChB,gBAAe;AACf,gBAAe;AACf;;AAEA;AACA;AACA,WAAU;AACV,UAAS;AACT,UAAS;AACT,YAAW;AACX,WAAU;AACV,WAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,cAAa,EAAE;AACf,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,SAAS;AACtB,cAAa,QAAQ;AACrB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,EAAE;AACf,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,UAAU;AACvB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,EAAE;AACf,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,SAAS;AACtB,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,SAAS;AACxB;AACA;AACA,eAAc,2BAA2B;AACzC;AACA;AACA,oBAAmB,gCAAgC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,OAAM;AACN;AACA;AACA,kCAAiC,6BAA6B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA6B,YAAY,EAAE;AAC3C,qBAAoB,sBAAsB;AAC1C;;AAEA,yBAAwB;AACxB,kCAAiC,iBAAiB;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;;AAEA,oBAAmB;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB;AACA,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB;AACA,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,kBAAkB;AACjC,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,OAAO,WAAW;AACjC,kBAAiB,OAAO;AACxB;AACA;AACA,6BAA4B;;AAE5B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA,+CAA8C;AAC9C;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,qCAAoC,6BAA6B,EAAE;AACnE;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,oBAAoB;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,oBAAoB;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB;AACA,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,QAAQ;AACvB,gBAAe,QAAQ;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB;AACA,gBAAe,SAAS;AACxB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,6BAA6B;AAC5C,gBAAe,UAAU;AACzB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA,2DAA0D,2BAA2B,EAAE;;AAEvF;AACA,gEAA+D,wBAAwB,EAAE;AACzF,iBAAgB;AAChB,QAAO;;AAEP;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,gBAAe,QAAQ;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,MAAM;AACrB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8CAA6C;AAC7C;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,YAAY;AAC3B,kBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,gBAAe,MAAM;AACrB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,EAAE;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C;AAC1C,yCAAwC;AACxC,gEAA+D;AAC/D,kEAAiE;AACjE;AACA;AACA,eAAc;AACd;;AAEA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,MAAM;AACrB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,oCAAoC;AAC9C,WAAU,qCAAqC;AAC/C,WAAU;AACV;AACA;AACA;AACA,yCAAwC,qCAAqC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,qCAAqC;AAC/C,WAAU,qCAAqC;AAC/C,WAAU;AACV;AACA;AACA;AACA,oCAAmC,oCAAoC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,WAAU,qCAAqC;AAC/C,WAAU,qCAAqC;AAC/C,WAAU;AACV;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,4BAA2B,kCAAkC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,WAAU,oCAAoC;AAC9C,WAAU,qCAAqC;AAC/C,WAAU;AACV;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,gCAA+B,mCAAmC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,QAAQ;AACvB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,eAAe;AAC9B;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,eAAe;AAC9B;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,KAAK;AACpB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,qBAAqB;AACpC;AACA,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,UAAU,yCAAyC;AACtE;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,wBAAuB,UAAU,GAAG,UAAU,IAAI,UAAU;AAC5D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,oCAAoC;AAC9C,WAAU,qCAAqC;AAC/C,WAAU;AACV;AACA;AACA;AACA,yCAAwC,qCAAqC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,qCAAqC;AAC/C,WAAU,oCAAoC;AAC9C,WAAU;AACV;AACA;AACA;AACA,oCAAmC,oCAAoC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,QAAQ;AACvB,gBAAe,uBAAuB;AACtC,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,iBAAgB,SAAS,GAAG,SAAS,GAAG,SAAS;AACjD,gBAAe,SAAS,GAAG,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,KAAK;AACpB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,eAAc;AACd;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,WAAU,+BAA+B;AACzC,WAAU,+BAA+B;AACzC,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,qCAAqC;AACpD;AACA,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,oCAAoC;AAC9C,WAAU;AACV;AACA;AACA;AACA,wBAAuB,oCAAoC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,8CAA8C;AACxD,WAAU;AACV;AACA;AACA;AACA,iCAAgC,4BAA4B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA,WAAU,+CAA+C;AACzD,WAAU,gDAAgD;AAC1D,WAAU;AACV;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,gCAA+B,2BAA2B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,OAAO;AACtB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA,WAAU,8CAA8C;AACxD,WAAU;AACV;AACA;AACA,qCAAoC,4BAA4B;AAChE;AACA;AACA,qCAAoC,6BAA6B;AACjE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,mBAAkB,iBAAiB;AACnC;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,4BAA4B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,WAAU,4BAA4B;AACtC,WAAU;AACV;AACA;AACA;AACA,eAAc,UAAU,4BAA4B,YAAY,8BAA8B;AAC9F;AACA;AACA;AACA,SAAQ;AACR,eAAc,OAAO,4BAA4B,QAAQ,8BAA8B;AACvF;AACA;AACA;AACA,SAAQ;AACR,eAAc,OAAO,4BAA4B,QAAQ,8BAA8B;AACvF;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,sBAAsB;AACrC;AACA,gBAAe,KAAK;AACpB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA,WAAU,mBAAmB;AAC7B,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,gDAAgD;AAC1D,WAAU,+CAA+C;AACzD,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC,4BAA4B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK,cAAc,iBAAiB,EAAE;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,aAAa;AAC5B,kBAAiB,MAAM;AACvB;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,kBAAiB,iBAAiB;AAClC;AACA;AACA,SAAQ,IAAI;AACZ,eAAc,iBAAiB;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,+CAA+C;AACzD,WAAU;AACV;AACA;AACA;AACA,iCAAgC,4BAA4B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,gBAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,mCAAmC;AAC7C,WAAU;AACV;AACA;AACA;AACA,uBAAsB,oCAAoC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,iBAAiB;AAC3B,WAAU,oBAAoB;AAC9B,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAgB;AAChB,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,yDAAyD;AACxE;AACA,kBAAiB,MAAM;AACvB;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU,8BAA8B;AACxC,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,6BAA6B;AAC5C,gBAAe,UAAU;AACzB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU,8BAA8B;AACxC,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA,WAAU,kEAAkE;AAC5E,WAAU;AACV;AACA;AACA,gCAA+B,6BAA6B;AAC5D;AACA;AACA,gCAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,qBAAoB,iCAAiC;AACrD,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,KAAK;AACpB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,qBAAqB;AACpC;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,KAAK;AACpB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,gBAAe,OAAO;AACtB;AACA,gBAAe,QAAQ;AACvB;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,kCAAkC;AAChE;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,KAAK;AACpB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,KAAK;AACpB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,YAAY;AAC3B,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,YAAY;AAC3B,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB,qBAAoB;AACpB;AACA;AACA;AACA,eAAc;AACd;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,KAAK;AACpB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,KAAK;AACpB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,qBAAqB;AACpC;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,gBAAe,QAAQ;AACvB;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA,WAAU,mBAAmB;AAC7B,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA,WAAU,mBAAmB;AAC7B,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA,kCAAiC,kBAAkB,EAAE;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA,8BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA,sBAAqB;AACrB,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA,sBAAqB;AACrB;AACA,2BAA0B,YAAY;AACtC;AACA;AACA,2BAA0B,YAAY;AACtC;AACA;AACA;AACA,sBAAqB;AACrB,sBAAqB;AACrB;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B,eAAc;AACd;AACA,kBAAiB,SAAS;AAC1B,eAAc;AACd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,UAAU;AACzB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA,kBAAiB,mBAAmB,GAAG,YAAY,GAAG,iBAAiB;AACvE,eAAc;AACd;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,kBAAiB,mBAAmB,GAAG,YAAY,GAAG,iBAAiB;AACvE,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,UAAU;AACzB,kBAAiB,OAAO;AACxB;AACA;AACA,oBAAmB,mBAAmB,GAAG,YAAY,GAAG,iBAAiB;AACzE,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,sBAAqB,4BAA4B;AACjD,sBAAqB,6BAA6B;AAClD,sBAAqB;AACrB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,0BAAyB,2BAA2B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,sBAAqB,4BAA4B;AACjD,sBAAqB,6BAA6B;AAClD,sBAAqB;AACrB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,8BAA6B,4BAA4B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA,sBAAqB,QAAQ,OAAO,SAAS,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,kBAAiB,QAAQ;AACzB;AACA;AACA,sBAAqB,OAAO,OAAO,SAAS,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA,sBAAqB;AACrB;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA,mBAAkB,iBAAiB;AACnC;AACA,SAAQ;AACR,eAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA,sBAAqB,+BAA+B;AACpD,sBAAqB;AACrB;AACA;AACA;AACA;AACA,eAAc,2BAA2B;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,UAAU;AACzB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,oBAAmB,mBAAmB,GAAG,iBAAiB;AAC1D;AACA;AACA;AACA,oBAAmB,YAAY,GAAG,YAAY;AAC9C;AACA;AACA;AACA,eAAc,WAAW,8BAA8B,GAAG,4BAA4B;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;;AAEA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,8BAA8B;AAC7C;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA,sBAAqB;AACrB;AACA;AACA,eAAc;AACd;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA,iBAAgB,2BAA2B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,8BAA8B;AAC7C;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA,sBAAqB;AACrB;AACA;AACA,eAAc;AACd;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA,sBAAqB,QAAQ,OAAO,+BAA+B,EAAE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA,sBAAqB,QAAQ,OAAO,SAAS,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,kBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA,kBAAiB,sBAAsB;AACvC,sBAAqB,UAAU;AAC/B;AACA;AACA,uEAAsE,2BAA2B,EAAE;AACnG,kBAAiB,8BAA8B;AAC/C;AACA;AACA;AACA,6DAA4D;AAC5D,kBAAiB,mBAAmB;AACpC;AACA;AACA;AACA,2CAA0C,OAAO;AACjD,kBAAiB,oBAAoB;AACrC;AACA;AACA;AACA,4CAA2C,YAAY;AACvD,2CAA0C,QAAQ;AAClD,kBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA,kBAAiB,qBAAqB;AACtC;AACA;AACA;AACA,sDAAqD,2BAA2B,EAAE;AAClF,yCAAwC,aAAa,eAAe,EAAE;AACtE,kBAAiB,8BAA8B;AAC/C;AACA;AACA;AACA,yDAAwD,qCAAqC;AAC7F;AACA;AACA;AACA;AACA,2DAA0D,qBAAqB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAwC;;AAExC,6CAA4C;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP,oBAAmB;;AAEnB;AACA;AACA;AACA;AACA,+BAA8B,mBAAmB;AACjD;AACA;AACA;AACA;AACA,6CAA4C;;AAE5C;AACA,wDAAuD;AACvD;AACA;AACA,8BAA6B,EAAE;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C;AAC1C,gCAA+B,iCAAiC;AAChE,eAAc;AACd;AACA;AACA,uBAAsB;;AAEtB;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,cAAc;AAC7B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,cAAc;AAC7B,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAiC;AACjC,cAAa,QAAQ,QAAQ,UAAU,SAAS,aAAa;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA,uCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,cAAc;AAC7B,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,iBAAgB,OAAO;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,gBAAe,4BAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,WAAU,8CAA8C;AACxD,WAAU;AACV;AACA;AACA,mCAAkC,6BAA6B;AAC/D,gBAAe,6CAA6C;AAC5D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,WAAU,mBAAmB;AAC7B,WAAU;AACV;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,KAAK;AACpB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,WAAU,OAAO,OAAO,qBAAqB,EAAE,EAAE;AACjD,WAAU,OAAO,OAAO,qBAAqB,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,KAAK;AACpB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,kBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA,iBAAgB,mBAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,mBAAmB,GAAG,iBAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA8B,qDAAqD;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,WAAU,OAAO,OAAO,SAAS,EAAE,EAAE;AACrC,WAAU,OAAO,OAAO,SAAS,EAAE;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA,WAAU,SAAS;AACnB,WAAU;AACV;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA,uBAAsB,sEAAsE;AAC5F;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA0B,yDAAyD;AACnF;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAoB,yCAAyC;AAC7D;AACA,MAAK;;AAEL,kEAAiE,kCAAkC;;AAEnG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;AC18XD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC,uDAAuD;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnLA,sF;;;;;;ACAA,sE;;;;;;ACAA,yE;;;;;;ACAA,wE;;;;;;ACAA,+E;;;;;;ACAA,yE;;;;;;ACAA,uE;;;;;;ACAA,iF;;;;;;ACAA,wE;;;;;;ACAA,wE;;;;;;ACAA,4E;;;;;;ACAA,yE;;;;;;ACAA,yE;;;;;;ACAA,uE;;;;;;ACAA,0E;;;;;;ACAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAiC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,OAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,4DAA2D,yDAAyD;AACpH;AACA;AACA;AACA;AACA,gCAA+B,yDAAyD;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA,IAAG,6CAA6C;AAChD,IAAG,6CAA6C;AAChD,IAAG,+CAA+C;AAClD,IAAG,6CAA6C;AAChD,IAAG,6CAA6C;AAChD,IAAG,6CAA6C;AAChD,IAAG,+DAA+D;AAClE,IAAG,2CAA2C;AAC9C,IAAG,iEAAiE;AACpE,IAAG,6CAA6C;AAChD,IAAG,2CAA2C;AAC9C,IAAG,+CAA+C;AAClD,IAAG,yCAAyC;AAC5C,IAAG,+CAA+C;AAClD,IAAG,qDAAqD;AACxD,IAAG,+CAA+C;AAClD,IAAG,6CAA6C;;AAEhD,IAAG,+EAA+E;AAClF,IAAG,0EAA0E,iBAAiB,EAAE,EAAE;AAClG,IAAG,4FAA4F;AAC/F,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA,IAAG;AACH,GAAE;AACF,EAAC;;;;;;;ACxUD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAY,WAAW;AACvB,aAAY,uBAAuB;AACnC;AACA;AACA;AACA,aAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,2BAA0B,yCAAyC;AACnE;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,eAAe;AACtC;;AAEA;AACA;AACA;AACA;AACA,0BAAyB,UAAU;AACnC,YAAW;AACX;AACA,0BAAyB,yCAAyC;AAClE;AACA;;AAEA;;AAEA,2BAA0B,YAAY;AACtC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,cAAc;AACzB;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE;AACrE;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,6CAA6C,EAAE;AAC9E;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,uBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA,wDAAuD;;AAEvD;AACA;AACA,kCAAiC,8DAA8D;AAC/F,UAAS;AACT,oCAAmC,mDAAmD;AACtF,6CAA4C,GAAG,oCAAoC;;AAEnF,uEAAsE;AACtE;AACA;AACA;AACA,wBAAuB,+BAA+B,EAAE;AACxD,wBAAuB,+BAA+B;AACtD;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B,6DAA6D;AACzF,iCAAgC,GAAG,8DAA8D;AACjG;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA,sEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,wDAAwD;AACrF;AACA,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,aAAa,qBAAqB;AACvD;AACA,qBAAoB,QAAQ;AAC5B,cAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD,uDAAuD;AACzG,aAAY,QAAQ,IAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,gBAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA4B;AAC5B;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qDAAoD;AACpD;AACA,qDAAoD;AACpD,4CAA2C;;AAE3C;AACA,wBAAuB,cAAc;AACrC;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B;AACA;AACA,iBAAgB;AAChB,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA,cAAa;AACb,MAAK;AACL;AACA;AACA;AACA;AACA,yBAAwB,QAAQ;AAChC;AACA;AACA;AACA,iBAAgB;AAChB,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA,cAAa;AACb,MAAK;AACL;AACA;AACA;AACA;AACA,yBAAwB,eAAe;AACvC;AACA;AACA;AACA,iBAAgB;AAChB,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA,4LAA2L,mCAAmC;AAC9N;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,gBAAe;AACf;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gFAA+E;AAC/E;AACA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,mEAAkE;;AAElE;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,4CAA2C;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,aAAa,IAAI,aAAa;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD,aAAa,EAAE;AAChE,kDAAiD,aAAa,EAAE;AAChE;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA,4BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,4BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,4BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,+CAA8C,sBAAsB;AACpE;AACA,gBAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA,6CAA4C;AAC5C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;;AAEf,cAAa;AACb;AACA,cAAa;;AAEb;AACA;AACA,cAAa;AACb;AACA,cAAa;;AAEb;AACA;;AAEA;AACA,UAAS;AACT;;AAEA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA2B,aAAa;AACxC;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA,wCAAuC;;AAEvC;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qCAAoC,mBAAmB;AACvD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,qCAAoC,oBAAoB;AACxD,SAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC;;AAEtC;AACA;AACA;AACA;AACA,yCAAwC;AACxC,iEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD,cAAc;AACrE,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA2B,oCAAoC;;AAE/D;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;;AAEA;;AAEA;AACA;AACA,+BAA8B;;AAE9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4DAA2D;;AAE3D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA,cAAa;;AAEb;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA,aAAY,4DAA4D;AACxE;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,aAAY,4DAA4D;AACxE;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAY,wEAAwE;AACpF;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mCAAkC,qBAAqB;AACvD,UAAS;AACT,0BAAyB,6CAA6C;AACtE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,uCAAsC,OAAO;AAC7C,mCAAkC,WAAW;AAC7C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB,aAAa;AACjC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ,4EAA4E,wDAAwD;AACvJ,YAAW,QAAQ;AACnB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB;AACA;AACA,uEAAsE,gDAAgD;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,YAAY;AACjC;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,oDAAoD;AAC7D,UAAS;AACT;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qEAAoE;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;;AAEA,uBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA0B,kBAAkB;AAC5C;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,+CAA8C;AAC9C;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,UAAS;AACT;AACA;;AAEA,UAAS;AACT;AACA;AACA,YAAW;;AAEX,UAAS;AACT;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,4BAA2B,sBAAsB;AACjD;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;;AAEA;AACA,sDAAqD;AACrD;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,2GAA0G,SAAS;AACnH;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,4FAA2F;AAC3F;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,8DAA6D,wBAAwB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,sCAAsC,0GAA0G,OAAO;AAClL;AACA;AACA;AACA;AACA,sEAAqE,OAAO;AAC5E;AACA;AACA;AACA;AACA,wEAAuE,sBAAsB;AAC7F;AACA,yDAAwD,gDAAgD,wBAAwB,8EAA8E,2BAA2B,KAAK,UAAU;AACxP;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,8CAA6C,yFAAyF;AACtI;AACA;AACA;AACA,sFAAqF,aAAa;AAClG,mHAAkH,kBAAkB,KAAK,iBAAiB;AAC1J,wFAAuF,WAAW;AAClG;AACA,0GAAyG,WAAW;AACpH;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,qDAAoD,YAAY,eAAe,2BAA2B;AAC1G,EAAC;;AAED;AACA;AACA,gDAA+C,eAAe,eAAe,YAAY,eAAe,6CAA6C;AACrJ;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,oDAAmD,kEAAkE,6CAA6C,WAAW;AAC7K;AACA,EAAC;;AAED;AACA;AACA;AACA,oDAAmD,6CAA6C,6CAA6C,WAAW;AACxJ;AACA,EAAC;;AAED;AACA;AACA,6BAA4B,WAAW,eAAe,kCAAkC;AACxF;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,6BAA4B,WAAW,eAAe,kCAAkC;AACxF;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,6BAA4B,WAAW,eAAe,kCAAkC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,sBAAqB,mCAAmC;AACxD,0DAAyD,SAAS;AAClE;AACA;AACA,EAAC;;AAED;AACA;AACA,wBAAuB,uBAAuB,eAAe,wBAAwB;AACrF;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,0BAAyB,uBAAuB,eAAe,oDAAoD;AACnH;AACA;AACA;AACA,2BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA,gCAA+B,oCAAoC,0BAA0B;AAC7F;AACA;AACA;AACA,gCAA+B,oCAAoC,4BAA4B;AAC/F;AACA;AACA,oIAAmI,UAAU;AAC7I;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,8CAA6C,uFAAuF;AACpI,yDAAwD,0BAA0B;AAClF;AACA;AACA;AACA,EAAC;;;;;;;AChmHD,4HAA2H,6BAA6B,mCAAmC,oBAAoB,yBAAyB,w5BAAw5B,4BAA4B,6BAA6B,wBAAwB,wIAAwI,iCAAiC,6BAA6B,wBAAwB,gVAAgV,qBAAqB,+BAA+B,sCAAsC,mBAAmB,aAAa,0bAA0b,uCAAuC,6aAA6a,oCAAoC,sFAAsF,oCAAoC,g9B;;;;;;ACAr6F,8N;;;;;;ACAA,gO;;;;;;ACAA,qGAAoG,eAAe,sJ;;;;;;ACAnH,4QAA2Q,iBAAiB,id;;;;;;ACA5R,4WAA2W,mBAAmB,IAAI,qBAAqB,6PAA6P,6BAA6B,8GAA8G,sIAAsI,6DAA6D,8MAA8M,mBAAmB,0BAA0B,qBAAqB,svCAAsvC,yEAAyE,ytC;;;;;;ACAjjF,+bAA8b,0EAA0E,Y;;;;;;ACAxgB,2RAA0R,kGAAkG,wBAAwB,2BAA2B,0BAA0B,8I;;;;;;ACAzc,oRAAmR,eAAe,+EAA+E,aAAa,yCAAyC,eAAe,klC;;;;;;ACAtb,sRAAqR,kDAAkD,gM;;;;;;ACAvU,kY;;;;;;ACAA,s3BAAq3B,MAAM,EAAE,MAAM,yIAAyI,0FAA0F,oYAAoY,MAAM,MAAM,MAAM,6KAA6K,MAAM,MAAM,MAAM,6KAA6K,MAAM,SAAS,MAAM,g6BAAg6B,MAAM,EAAE,MAAM,yIAAyI,gFAAgF,yaAAya,MAAM,MAAM,MAAM,4BAA4B,MAAM,MAAM,MAAM,yNAAyN,MAAM,SAAS,MAAM,kZ;;;;;;ACA3tH,mGAAkG,oFAAoF,EAAE,a;;;;;;ACAxL,wCAAuC,yCAAyC,0BAA0B,GAAG,+BAA+B,oCAAoC,GAAG,C;;;;;;ACAnL,oGAAmG,2BAA2B,OAAO,6BAA6B,mCAAmC,OAAO,+BAA+B,oBAAoB,0BAA0B,OAAO,4BAA4B,oBAAoB,0BAA0B,OAAO,6BAA6B,qBAAqB,OAAO,+UAA+U,0BAA0B,8GAA8G,6BAA6B,oHAAoH,6BAA6B,yhCAAyhC,kBAAkB,gvCAAgvC,sBAAsB,0gBAA0gB,sxBAAsxB,QAAQ,mqBAAmqB,QAAQ,oWAAoW,w6BAAw6B,4DAA4D,4DAA4D,eAAe,iG;;;;;;ACAtsN,wCAAuC,MAAM,4BAA4B,WAAW,8BAA8B,OAAO,iCAAiC,cAAc,4B;;;;;;ACAxK,6GAA4G,oDAAoD,gHAAgH,kCAAkC,sDAAsD,qDAAqD,+CAA+C,MAAM,qB;;;;;;ACAld,qCAAoC,MAAM,gDAAgD,MAAM,8BAA8B,WAAW,yC;;;;;;ACAzI,4aAA2a,uCAAuC,sDAAsD,cAAc,yHAAyH,YAAY,ia;;;;;;ACA3pB,8LAA6L,MAAM,+JAA+J,MAAM,uIAAuI,UAAU,YAAY,MAAM,8OAA8O,gBAAgB,wJAAwJ,WAAW,+M;;;;;;ACA56B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;mCCVA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCCpBD;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA,EAAC;;;;;;;mCCzCD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,EAAC;;;;;;;mCClCD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,WAAW;AAC7B,mBAAkB,WAAW;AAC7B,mBAAkB,MAAM;AACxB,mBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAqC,qBAAqB;AAC1D,uCAAsC,+BAA+B;AACrE,sCAAqC,uBAAuB;AAC5D,uCAAsC,uCAAuC;;AAE7E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,UAAS;AACT;;AAEA;AACA,MAAK;AACL,IAAG;AACH,EAAC;;;;;;;mCC/ED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,uCAAsC,iBAAiB,EAAE;AACzD,UAAS;AACT,uCAAsC,eAAe,EAAE;AACvD,UAAS;AACT;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCClFD;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,cAAc;AAC9B;AACA,iBAAgB,SAAS;AACzB;AACA;AACA;AACA,oBAAmB;AACnB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCrCD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,QAAQ;AACxB;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW;;AAEX;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCCjFD;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB;AACjB;AACA;AACA;;AAEA,sBAAqB,QAAQ,gBAAgB,SAAS;AACtD;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,QAAO,oBAAoB,OAAO,aAAa;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,wBAAuB;AACvB;AACA,kCAAiC;AACjC;;AAEA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;mCCnDD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA,EAAC;;;;;;;mCClHD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCC1BD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCCnED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iCAAgC,cAAc;AAC9C;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCCtBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCC3BD;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCC1BD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,iBAAiB;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC3BD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCzCD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB;;AAEvB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;AAEL;AACA;AACA,EAAC;;;;;;;mCCzOD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,EAAC;;;;;;;mCChBD;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA8B,4BAA4B;;AAE1D;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCzBD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAkB;AAClB,qBAAoB;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS,IAAI;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAkB;AAClB,qBAAoB,OAAO;AAC3B;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCrSD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA;AACA;;;AAGA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCC5CD;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA,EAAC;;;;;;;mCC7ED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA,EAAC;;;;;;;mCCtID;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCXD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCChHD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCZD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA,EAAC;;;;;;;mCCpBD;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;mCCLD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;AACL;AACA,EAAC;;;;;;;mCCdD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCCvBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCdD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCZD;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCC9DD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCCdD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB,UAAS;AACT;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCpBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCZD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCZD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB,UAAS;AACT;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCtBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB,UAAS;AACT;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCClBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB,UAAS;AACT;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCnBD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,KAAK;AACpB;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCChBD;AACA;AACA;AACA,yBAAwB;;AAExB;AACA;AACA,gBAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCjBD;AACA;AACA;AACA,mBAAkB,QAAQ,wBAAwB;;AAElD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;;AAEP,wBAAuB;AACvB;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCjCD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;;AAEX;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCjED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE;AACA,MAAK;AACL;AACA,EAAC;;;;;;;ACxBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,EAAC;;;;;;;AC7DD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,8EAA6E;AAC7E;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,EAAC;;;;;;;AC/CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,mCAAkC;AAClC,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCCtBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;;AAEA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAqC,kBAAkB;AACvD;;AAEA;AACA,sCAAqC,iBAAiB;AACtD;;AAEA;AACA,wDAAuD,0BAA0B;AACjF;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kCAAiC,IAAI;AACrC,sCAAqC,IAAI;AACzC,2CAA0C,IAAI;AAC9C,4CAA2C,IAAI;AAC/C;;AAEA;AACA;AACA,EAAC;;;;;;;mCC9QD;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAAyC,eAAe;AACxD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,EAAC,uJ;;;;;;mCCpCD;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAkB,kBAAkB;AACpC,kBAAiB,iBAAiB;AAClC,iBAAgB,iBAAiB;AACjC,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;;;;;;mCClDD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCvBD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT,QAAO;;AAEP;AACA;;AAEA,sBAAqB,YAAY;AACjC;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCCpDD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCC7CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAqB,gCAAgC;AACrD;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCCpBD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,aAAa;AAC7B,iBAAgB,OAAO;AACvB,iBAAgB,SAAS;AACzB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA,IAAG;AACH,EAAC,uJ;;;;;;mCCvBD;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCC5BD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCC/CD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCC1CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCVD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCTD;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCvDD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCvBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCXD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCvBD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET,0BAAyB,+CAA+C;AACxE;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCxCD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,QAAO,8BAA8B;AACrC,QAAO,kCAAkC;AACzC,QAAO,kCAAkC;AACzC,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC1DD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yDAAwD,OAAO;;AAE/D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA,8BAA6B,YAAY;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO,wBAAwB;AAC/B,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCChID;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA,MAAK;AACL,IAAG;AACH,EAAC;;;;;;;mCC/BD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCpBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCChBD;AACA;;AAEA;AACA,MAAK,uCAAuC;;AAE5C,MAAK,gDAAgD;AACrD,MAAK,kDAAkD;AACvD,MAAK,kDAAkD;AACvD,MAAK,kDAAkD;;AAEvD,MAAK,gDAAgD;AACrD,MAAK,kDAAkD;AACvD,MAAK,mDAAmD;AACxD,MAAK,oDAAoD;;AAEzD,MAAK,gDAAgD;AACrD,MAAK,gDAAgD;AACrD,MAAK,kDAAkD;AACvD,MAAK;AACL;;AAEA,EAAC;;;;;;;mCCtBD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC3BD;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCjDD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCnBD;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,KAAK;AACpB,kBAAiB;AACjB;AACA;AACA;AACA,+BAA8B,eAAe,aAAa;AAC1D;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yBAAwB;AACxB;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,EAAC;;;;;;;;mCCzCD;AACA;AACA;;AAEA;AACA;AACA,cAAa,KAAK;AAClB,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCjBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;;AAEA;;AAEA;;AAEA,yCAAwC;AACxC;AACA,4BAA2B,YAAY,EAAE;AACzC;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,QAAO;;AAEP;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,EAAE;AACnB;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAsB,MAAM;AAC5B,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,MAAM;AAC3B,sBAAqB,OAAO;AAC5B,wBAAuB,OAAO;AAC9B,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA,qBAAoB,8BAA8B;;AAElD;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,wBAAuB,OAAO;AAC9B,kBAAiB,MAAM;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,MAAM;AAC5B,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC;;;;;;;mCCnpBD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCChCD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,2BAA2B;AAC7C,mBAAkB,SAAS;AAC3B,mBAAkB,SAAS;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,wDAAuD,YAAY;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA,gCAA+B,YAAY;AAC3C;;AAEA;AACA,MAAK;AACL,IAAG;AACH,EAAC,uJ;;;;;;mCCpHD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCtBD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,EAAC;;;;;;;mCClBD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA,YAAW,yBAAyB;AACpC,YAAW,yBAAyB;AACpC,YAAW,2BAA2B;AACtC,YAAW;AACX;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,YAAW;;AAEX;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAA4B,YAAY;AACxC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;;AAGH,EAAC;;;;;;;mCCrMD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH,EAAC,uJ;;;;;;mCC1ED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD;AAClD,6BAA4B,SAAS,mCAAmC,EAAE;AAC1E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA,iCAAgC;AAChC,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC,kBAAkB,EAAE;AAC7D;AACA,qDAAoD,qBAAqB,EAAE;AAC3E;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCrGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,EAAC,uJ;;;;;;mCCXD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,QAAQ;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,IAAG;AACH,EAAC;;;;;;;mCCzBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCCvCD;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;;AAEA;AACA,EAAC;;;;;;;mCCnDD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,MAAM;AACxB,mBAAkB,WAAW;AAC7B,mBAAkB,eAAe;AACjC,mBAAkB,SAAS;AAC3B,mBAAkB,MAAM;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,yBAAwB,eAAe,GAAG,qBAAqB;AAC/D,qBAAoB;AACpB;AACA,sBAAqB,eAAe,GAAG,qBAAqB;AAC5D,qBAAoB;AACpB;AACA,mBAAkB,MAAM;AACxB,mBAAkB,SAAS;AAC3B,mBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,mBAAkB,MAAM;AACxB,mBAAkB,IAAI;AACtB,mBAAkB,MAAM;AACxB;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,mBAAkB,MAAM;AACxB,mBAAkB,MAAM;AACxB,mBAAkB,MAAM;AACxB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,QAAO;;;AAGP,MAAK;AACL;AACA,EAAC;;;;;;;mCCrID;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,SAAS;AAC3B;AACA,mBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA,YAAW;;AAEX;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;;AAGP;AACA;AACA;AACA,mBAAkB,iBAAiB;AACnC,mBAAkB;AAClB;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA,MAAK;AACL;AACA,EAAC;;;;;;;mCClED;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,IAAI;AACtB,mBAAkB;AAClB;AACA;AACA;AACA,QAAO;;AAEP,MAAK;AACL;AACA,EAAC;;;;;;;mCCpBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB,OAAO;AACzB,mBAAkB,QAAQ;AAC1B,mBAAkB;AAClB;AACA;AACA,wBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA;;AAEA,MAAK;AACL;AACA,EAAC;;;;;;;mCCvCD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA,mBAAkB,YAAY;AAC9B,mBAAkB,YAAY;AAC9B;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCC7CD;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,mBAAkB,IAAI;AACtB,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,mBAAkB;AAClB;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,kBAAiB,aAAa;AAC9B,mBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,MAAK;AACL;AACA,EAAC;;;;;;;mCCtDD;AACA;;AAEA;AACA,cAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA,IAAG;;AAEH;AACA;AACA;AACA,eAAc,IAAI;AAClB,eAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc,IAAI;AAClB,eAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc,IAAI;AAClB,eAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,IAAI;AACb;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCC1ID;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCnBD;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAA+B,iCAAiC;;AAEhE;AACA;;AAEA,uCAAsC;AACtC;AACA,QAAO;;AAEP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,iBAAiB;AAChC,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA;AACA,gBAAe;AACf,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCtGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA,iBAAgB;AAChB;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCC3DD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAkB,YAAY;AAC9B,0BAAyB,SAAS;AAClC,uBAAsB,YAAY;AAClC;AACA;AACA;AACA;AACA;;AAEA,oBAAmB;AACnB;AACA,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAa;;AAEb,yCAAwC,mCAAmC;;AAE3E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;;AAEX;AACA;AACA,YAAW;;AAEX,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC;;;;;;;mCCpMD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,uBAAsB,OAAO;AAC7B,kBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCClCD;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCND;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;ACdD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC;AACnC;AACA,MAAK,OAAO;AACZ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D;AAC5D,wCAAuC,gBAAgB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR,QAAO;AACP;AACA,yBAAwB,cAAc;AACtC;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,QAAO;AACP;AACA;AACA,OAAM;AACN,MAAK;AACL,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;AACD;AACA;AACA,IAAG;AACH;;AAEA;AACA,wB;;;;;;AC/PA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wCAAuC;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,oCAAoC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,oCAAoC;AAC5C;AACA;AACA,kBAAiB,wBAAwB;AACzC;AACA;AACA;AACA,4DAA2D,GAAG,iBAAiB;AAC/E;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,4BAA2B,oBAAoB;AAC/C,iDAAgD;AAChD,sBAAqB;AACrB,8BAA6B,QAAQ;AACrC;AACA,0BAAyB,oBAAoB;AAC7C,yEAAwE;AACxE,2CAA0C,KAAK,uCAAuC;AACtF;AACA;AACA;AACA;AACA,eAAc,eAAe;AAC7B;AACA;AACA,6BAA4B,oBAAoB;AAChD,4CAA2C,sCAAsC;AACjF;AACA;AACA;AACA,eAAc,eAAe;AAC7B;AACA;AACA,yBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA,yBAAwB,6DAA6D;AACrF;AACA,YAAW,yDAAyD;AACpE;AACA;AACA,uBAAsB,OAAO;AAC7B,2BAA0B,gBAAgB;AAC1C,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA,2BAA0B,qBAAqB;AAC/C,YAAW,6BAA6B;AACxC;AACA;AACA;AACA,eAAc,gBAAgB;AAC9B;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,sCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA,6CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO,qBAAqB;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAS,iBAAiB;AAC1B;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,kCAAkC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB;AACA;AACA;AACA,wDAAuD,iCAAiC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA,sBAAqB,wBAAwB;AAC7C;AACA,uCAAsC,4CAA4C;AAClF;AACA;AACA,SAAQ,wCAAwC;AAChD,SAAQ,0CAA0C;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC,kBAAkB;AACzD,kDAAiD,4BAA4B;AAC7E,6CAA4C,uBAAuB;AACnE,iDAAgD,2BAA2B;AAC3E,oCAAmC,cAAc;AACjD;AACA;AACA;AACA;AACA,0BAAyB,MAAM;AAC/B,uBAAsB,eAAe;AACrC;AACA;AACA;AACA,0BAAyB,MAAM;AAC/B,uBAAsB,eAAe;AACrC,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,sCAAsC;AAC9C;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,gBAAgB;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,6BAA6B;AAC3C;AACA,oCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,mBAAkB,OAAO;AACzB,sBAAqB,OAAO;AAC5B,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,sCAAqC,SAAS;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6CAA4C;AAC5C;;AAEA;AACA;AACA;AACA,gBAAe;;AAEf;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,sDAAqD,sBAAsB;AAC3E,gDAA+C,sBAAsB,EAAE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,YAAW;AACX;AACA;;;AAGA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC;AACrC,gCAA+B;AAC/B;AACA;AACA,QAAO;AACP,2BAA0B;AAC1B,8DAA6D,UAAU,gBAAgB;AACvF;;AAEA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,IAAG;AACH;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,wBAAwB;AACzC;AACA,+CAA8C,+BAA+B;AAC7E,KAAI,qCAAqC,MAAM,iCAAiC;AAChF,kDAAiD,8BAA8B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA,2BAA0B,WAAW;AACrC;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD,4BAA4B;AAC7E;AACA;AACA;AACA;AACA,kBAAiB,wBAAwB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,QAAQ,0CAA0C;AAC7D,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAoC,uBAAuB;AAC3D,+CAA8C,iCAAiC;AAC/E,0CAAyC,4BAA4B;AACrE,8CAA6C,gCAAgC;AAC7E,iCAAgC,mBAAmB;AACnD;AACA;;AAEA;AACA;AACA,yBAAwB,WAAW;AACnC,sBAAqB,oBAAoB;AACzC;AACA;;AAEA;AACA;AACA,yBAAwB,cAAc;AACtC,sBAAqB,uBAAuB;AAC5C,yBAAwB;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,kBAAiB;;AAEjB;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,YAAW;;AAEX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA,EAAC;;;;;;;AC55BD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB,eAAe,+fAAqK,kBAAkB,eAAe,mBAAmB,sDAAsD,mBAAmB,IAAI,KAAK,WAAW,4CAA4C,SAAS,oBAAoB,sEAAsE,kBAAkB,gCAAgC,kBAAkB,wBAAwB,mBAAmB,4BAA4B,8BAA8B,QAAQ,uBAAuB,0CAA0C,yCAAyC,SAAS,SAAS,qCAAqC,QAAQ,oBAAoB,gBAAgB,gDAAgD,4BAA4B,wBAAwB,oBAAoB,SAAS,yBAAyB,wBAAwB,yBAAyB,kBAAkB,kDAAkD,wBAAwB,mCAAmC,0BAA0B,4BAA4B,wBAAwB,gCAAgC,SAAS,4FAA4F,mDAAmD,wBAAwB,oBAAoB,cAAc,iBAAiB,WAAW,8DAA8D,uCAAuC,EAAE,oCAAoC,2DAA2D,+BAA+B,6CAA6C,YAAY,cAAc,oCAAoC,QAAQ,eAAe,gBAAgB,SAAS,cAAc,uCAAuC,+BAA+B,oKAAoK,mBAAmB,0CAA0C,qDAAqD,oCAAoC,gBAAgB,qHAAqH,4BAA4B,iBAAiB,6FAA6F,gBAAgB,2BAA2B,YAAY,8BAA8B,0EAA0E,iLAAiL,qDAAqD,WAAW,0DAA0D,2BAA2B,yFAAyF,kCAAkC,IAAI,gCAAgC,GAAG,6BAA6B,2BAA2B,kCAAkC,mCAAmC,iCAAiC,kFAAkF,uBAAuB,2FAA2F,wBAAwB,UAAU,iBAAiB,iCAAiC,mEAAmE,uCAAuC,2BAA2B,0CAA0C,IAAI,OAAO,yBAAyB,gDAAgD,6EAA6E,YAAY,+BAA+B,cAAc,oEAAoE,qCAAqC,wBAAwB,2CAA2C,sEAAsE,0DAA0D,0CAA0C,IAAI,8CAA8C,qBAAqB,iBAAiB,KAAK,uFAAuF,0CAA0C,yCAAyC,YAAY,mCAAmC,2BAA2B,yBAAyB,0CAA0C,gCAAgC,IAAI,mBAAmB,YAAY,0CAA0C,IAAI,qCAAqC,cAAc,gDAAgD,IAAI,qCAAqC,YAAY,yCAAyC,0EAA0E,wBAAwB,2DAA2D,OAAO,6DAA6D,4NAA4N,k0BAAk0B,qBAAqB,sBAAsB,kCAAkC,gDAAgD,qEAAqE,GAAG,WAAW,2OAA2O,2BAA2B,kDAAkD,oBAAoB,iBAAiB,kCAAkC,iBAAiB,qCAAqC,kBAAkB,oCAAoC,sBAAsB,0CAA0C,uBAAuB,oCAAoC,sBAAsB,iCAAiC,uBAAuB,gCAAgC,wBAAwB,mCAAmC,yBAAyB,gCAAgC,kBAAkB,6BAA6B,mBAAmB,gEAAgE,kBAAkB,6BAA6B,mBAAmB,gEAAgE,wBAAwB,aAAa,8BAA8B,0BAA0B,oBAAoB,+CAA+C,sBAAsB,qFAAqF,qBAAqB,2EAA2E,yBAAyB,4GAA4G,wBAAwB,wCAAwC,IAAI,sBAAsB,qBAAqB,mBAAmB,sOAAsO,uBAAuB,0EAA0E,0BAA0B,0CAA0C,wBAAwB,0CAA0C,oBAAoB,mCAAmC,sBAAsB,QAAQ,6LAA6L,wBAAwB,cAAc,oFAAoF,YAAY,oBAAoB,+BAA+B,wBAAwB,oDAAoD,oCAAoC,wCAAwC,6BAA6B,wBAAwB,oCAAoC,0BAA0B,wEAAwE,2BAA2B,4EAA4E,YAAY,gBAAgB,+CAA+C,wBAAwB,iBAAiB,8EAA8E,6CAA6C,cAAc,wBAAwB,+BAA+B,+CAA+C,GAAG,yOAAyO,gBAAgB,gEAAgE,MAAM,kCAAkC,oGAAoG,0FAA0F,MAAM,iBAAiB,SAAS,IAAI,GAAG,eAAe,oDAAoD,SAAS,wBAAwB,0BAA0B,wJAAwJ,wBAAwB,yBAAyB,2CAA2C,wBAAwB,kDAAkD,6BAA6B,6DAA6D,wBAAwB,iEAAiE,IAAI,0BAA0B,kCAAkC,6BAA6B,uCAAuC,2BAA2B,kIAAkI,yBAAyB,4DAA4D,uBAAuB,+DAA+D,0BAA0B,yCAAyC,4BAA4B,8CAA8C,IAAI,oBAAoB,SAAS,gBAAgB,sGAAsG,sBAAsB,sCAAsC,WAAW,4BAA4B,SAAS,gCAAgC,yEAAyE,8BAA8B,8BAA8B,iFAAiF,WAAW,6BAA6B,+IAA+I,yBAAyB,uBAAuB,0YAA0Y,2CAA2C,gCAAgC,yDAAyD,gCAAgC,2DAA2D,EAAE,KAAK,yGAAyG,oBAAoB,gCAAgC,MAAM,8BAA8B,mCAAmC,gCAAgC,0EAA0E,EAAE,oBAAoB,4BAA4B,uDAAuD,4BAA4B,yDAAyD,EAAE,4BAA4B,+GAA+G,sDAAsD,oBAAoB,8DAA8D,sBAAsB,mBAAmB,eAAe,cAAc,kEAAkE,8BAA8B,sBAAsB,mFAAmF,wBAAwB,cAAc,uKAAuK,mDAAmD,oBAAoB,eAAe,mFAAmF,wBAAwB,uPAAuP,8BAA8B,wCAAwC,IAAI,sBAAsB,2BAA2B,mBAAmB,kBAAkB,kBAAkB,6eAA6e,iBAAiB,4FAA4F,uFAAuF,sBAAsB,6GAA6G,yBAAyB,uBAAuB,yBAAyB,uBAAuB,yBAAyB,oDAAoD,yBAAyB,oDAAoD,oBAAoB,2BAA2B,qBAAqB,2BAA2B,oBAAoB,2BAA2B,qBAAqB,2BAA2B,sBAAsB,6EAA6E,4CAA4C,wIAAwI,wBAAwB,oBAAoB,wIAAwI,YAAY,yBAAyB,gFAAgF,oBAAoB,qHAAqH,oBAAoB,6CAA6C,8BAA8B,gEAAgE,gBAAgB,iCAAiC,+CAA+C,+FAA+F,4DAA4D,uBAAuB,6EAA6E,0BAA0B,sBAAsB,oBAAoB,gCAAgC,uBAAuB,8BAA8B,QAAQ,4BAA4B,iDAAiD,2CAA2C,6BAA6B,2DAA2D,oCAAoC,qBAAqB,kCAAkC,mBAAmB,yBAAyB,qBAAqB,oBAAoB,qBAAqB,yBAAyB,QAAQ,+FAA+F,sBAAsB,4BAA4B,QAAQ,iJAAiJ,2CAA2C,wBAAwB,8BAA8B,iBAAiB,mBAAmB,4BAA4B,QAAQ,wGAAwG,wBAAwB,iCAAiC,qJAAqJ,0BAA0B,yOAAyO,SAAS,mCAAmC,yBAAyB,sEAAsE,uBAAuB,qFAAqF,uBAAuB,qDAAqD,OAAO,uCAAuC,sBAAsB,yCAAyC,uBAAuB,yCAAyC,+BAA+B,0LAA0L,yBAAyB,OAAO,EAAE,yBAAyB,OAAO,+CAA+C,0RAA0R,kEAAkE,sBAAsB,+CAA+C,qBAAqB,kCAAkC,MAAM,EAAE,mBAAmB,gGAAgG,0BAA0B,oMAAoM,+BAA+B,2DAA2D,wCAAwC,sBAAsB,iBAAiB,uWAAuW,yBAAyB,iBAAiB,qHAAqH,QAAQ,+PAA+P,sBAAsB,sCAAsC,yBAAyB,oDAAoD,YAAY,4BAA4B,6BAA6B,YAAY,kBAAkB,SAAS,WAAW,IAAI,qBAAqB,8CAA8C,qFAAqF,yPAAyP,oBAAoB,QAAQ,0BAA0B,kBAAkB,0BAA0B,+DAA+D,mBAAmB,0DAA0D,IAAI,gCAAgC,SAAS,2BAA2B,oGAAoG,sBAAsB,0IAA0I,oBAAoB,kBAAkB,sBAAsB,kGAAkG,+BAA+B,uBAAuB,mGAAmG,uBAAuB,qGAAqG,+BAA+B,oBAAoB,kHAAkH,oBAAoB,iGAAiG,eAAe,yBAAyB,oBAAoB,mKAAmK,2BAA2B,8BAA8B,6CAA6C,2BAA2B,uDAAuD,qBAAqB,mBAAmB,yBAAyB,uBAAuB,0BAA0B,uBAAuB,sCAAsC,0BAA0B,uCAAuC,uBAAuB,0EAA0E,yBAAyB,yEAAyE,gCAAgC,4CAA4C,yBAAyB,gCAAgC,yCAAyC,0CAA0C,wCAAwC,kDAAkD,wCAAwC,6CAA6C,oCAAoC,kDAAkD,kCAAkC,oCAAoC,6EAA6E,wCAAwC,sDAAsD,oCAAoC,2EAA2E,gCAAgC,+DAA+D,4BAA4B,uCAAuC,kDAAkD,uEAAuE,cAAc,wBAAwB,sBAAsB,mNAAmN,uCAAuC,0IAA0I,uBAAuB,qBAAqB,obAAob,2BAA2B,4IAA4I,2BAA2B,4DAA4D,wBAAwB,2CAA2C,wBAAwB,+BAA+B,uBAAuB,IAAI,wBAAwB,8BAA8B,qBAAqB,wSAAwS,oBAAoB,uCAAuC,QAAQ,iIAAiI,QAAQ,EAAE,uBAAuB,uEAAuE,yBAAyB,2CAA2C,8BAA8B,yCAAyC,gCAAgC,+BAA+B,wHAAwH,qJAAqJ,gCAAgC,6CAA6C,2BAA2B,mEAAmE,yBAAyB,eAAe,yEAAyE,iGAAiG,mBAAmB,IAAI,kEAAkE,yEAAyE,sBAAsB,mGAAmG,qBAAqB,mBAAmB,EAAE,0BAA0B,2BAA2B,kLAAkL,6BAA6B,0CAA0C,aAAa,2FAA2F,gDAAgD,2GAA2G,aAAa,uDAAuD,IAAI,6BAA6B,mGAAmG,2BAA2B,oCAAoC,IAAI,gCAAgC,yBAAyB,kEAAkE,uBAAuB,oCAAoC,QAAQ,EAAE,2BAA2B,4CAA4C,mBAAmB,4BAA4B,2BAA2B,6BAA6B,6DAA6D,mCAAmC,kCAAkC,+CAA+C,wCAAwC,+DAA+D,sCAAsC,iCAAiC,oEAAoE,8BAA8B,wEAAwE,8BAA8B,eAAe,2HAA2H,kCAAkC,4BAA4B,eAAe,sEAAsE,yCAAyC,kCAAkC,8JAA8J,wBAAwB,wBAAwB,kFAAkF,wBAAwB,4CAA4C,kCAAkC,sBAAsB,sBAAsB,wBAAwB,yFAAyF,wKAAwK,6BAA6B,oCAAoC,yCAAyC,uBAAuB,oKAAoK,qBAAqB;AAChz+B,6BAA4B,2BAA2B,QAAQ,4EAA4E,yDAAyD,wCAAwC,GAAG,8BAA8B,iCAAiC,+KAA+K,0BAA0B,qOAAqO,8BAA8B,0DAA0D,mBAAmB,uEAAuE,2CAA2C,6BAA6B,qDAAqD,+KAA+K,mBAAmB,6BAA6B,sBAAsB,+DAA+D,2CAA2C,8BAA8B,qDAAqD,+GAA+G,yBAAyB,gCAAgC,8FAA8F,wBAAwB,gCAAgC,4GAA4G,2BAA2B,gCAAgC,yBAAyB,uBAAuB,wBAAwB,oEAAoE,uBAAuB,uDAAuD,sBAAsB,yCAAyC,mBAAmB,gCAAgC,QAAQ,uBAAuB,0BAA0B,6FAA6F,8BAA8B,sCAAsC,mBAAmB,IAAI,oFAAoF,2EAA2E,2BAA2B,oBAAoB,8EAA8E,gEAAgE,2BAA2B,gCAAgC,qBAAqB,gGAAgG,+BAA+B,uHAAuH,yCAAyC,8EAA8E,oBAAoB,iDAAiD,oBAAoB,EAAE,cAAc,6KAA6K,yBAAyB,2GAA2G,uEAAuE,oBAAoB,cAAc,yEAAyE,sDAAsD,sEAAsE,yHAAyH,oCAAoC,+BAA+B,cAAc,WAAW,kBAAkB,WAAW,8DAA8D,eAAe,UAAU,qBAAqB,uCAAuC,EAAE,iCAAiC,qEAAqE,IAAI,0BAA0B,oCAAoC,iCAAiC,uCAAuC,mBAAmB,uBAAuB,6BAA6B,yDAAyD,aAAa,oGAAoG,6FAA6F,SAAS,+BAA+B,YAAY,8IAA8I,yBAAyB,qBAAqB,wBAAwB,iBAAiB,gQAAgQ,wBAAwB,4CAA4C,gJAAgJ,2BAA2B,yCAAyC,oGAAoG,yBAAyB,uDAAuD,mCAAmC,wBAAwB,2CAA2C,0CAA0C,gBAAgB,4BAA4B,6DAA6D,gDAAgD,8BAA8B,6BAA6B,uIAAuI,2BAA2B,uDAAuD,kCAAkC,qBAAqB,wDAAwD,8BAA8B,4BAA4B,0BAA0B,wBAAwB,wBAAwB,6CAA6C,4RAA4R,yBAAyB,iJAAiJ,iBAAiB,EAAE,wBAAwB,8QAA8Q,wBAAwB,kBAAkB,oGAAoG,uBAAuB,mBAAmB,yBAAyB,kBAAkB,oBAAoB,uBAAuB,EAAE,6BAA6B,iCAAiC,4BAA4B,4BAA4B,qCAAqC,kBAAkB,sGAAsG,0BAA0B,YAAY,iBAAiB,4DAA4D,wDAAwD,sEAAsE,sCAAsC,mBAAmB,8FAA8F,wCAAwC,0EAA0E,wBAAwB,kSAAkS,wBAAwB,EAAE,+DAA+D,yBAAyB,yDAAyD,gCAAgC,gCAAgC,wCAAwC,SAAS,SAAS,wBAAwB,qBAAqB,mBAAmB,yBAAyB,QAAQ,kBAAkB,0DAA0D,YAAY,yBAAyB,8CAA8C,wBAAwB,gDAAgD,6FAA6F,yBAAyB,uFAAuF,sBAAsB,uBAAuB,0BAA0B,iCAAiC,iCAAiC,gCAAgC,iCAAiC,UAAU,4BAA4B,gEAAgE,mBAAmB,4NAA4N,sBAAsB,wJAAwJ,mBAAmB,6BAA6B,wBAAwB,yDAAyD,yBAAyB,+EAA+E,wBAAwB,mCAAmC,kEAAkE,oBAAoB,sCAAsC,2BAA2B,gCAAgC,uBAAuB,mQAAmQ,4HAA4H,EAAE,0BAA0B,gQAAgQ,8EAA8E,mBAAmB,uJAAuJ,0EAA0E,yBAAyB,kBAAkB,2BAA2B,wDAAwD,iCAAiC,iCAAiC,wBAAwB,SAAS,aAAa,wBAAwB,qBAAqB,wBAAwB,kCAAkC,0BAA0B,oCAAoC,2BAA2B,0BAA0B,OAAO,iFAAiF,YAAY,MAAM,iGAAiG,8BAA8B,4CAA4C,gQAAgQ,0BAA0B,6CAA6C,yBAAyB,wGAAwG,qBAAqB,qBAAqB,+BAA+B,SAAS,2EAA2E,yBAAyB,cAAc,0CAA0C,yCAAyC,+BAA+B,wFAAwF,8BAA8B,sCAAsC,6FAA6F,mBAAmB,IAAI,4EAA4E,4BAA4B,iCAAiC,qIAAqI,0BAA0B,8CAA8C,mBAAmB,+LAA+L,mBAAmB,6BAA6B,sBAAsB,0GAA0G,iDAAiD,sBAAsB,sBAAsB,oBAAoB,uBAAuB,gEAAgE,oBAAoB,EAAE,6BAA6B,sDAAsD,qBAAqB,qHAAqH,mBAAmB,eAAe,yDAAyD,gBAAgB,YAAY,sBAAsB,6KAA6K,4SAA4S,6CAA6C,2HAA2H,uBAAuB,qFAAqF,wBAAwB,qMAAqM,0BAA0B,sFAAsF,qBAAqB,uJAAuJ,2BAA2B,uCAAuC,0BAA0B,6EAA6E,gBAAgB,6BAA6B,2BAA2B,iFAAiF,6IAA6I,YAAY,WAAW,oDAAoD,qHAAqH,2BAA2B,2CAA2C,mLAAmL,oCAAoC,EAAE,yBAAyB,mCAAmC,oCAAoC,EAAE,6BAA6B,kBAAkB,oCAAoC,uKAAuK,wBAAwB,oEAAoE,2BAA2B,4HAA4H,0BAA0B,4CAA4C,yBAAyB,uBAAuB,yBAAyB,yBAAyB,0BAA0B,SAAS,sDAAsD,wBAAwB,mEAAmE,gJAAgJ,yBAAyB,aAAa,wBAAwB,wBAAwB,qBAAqB,qBAAqB,0BAA0B,iCAAiC,iIAAiI,0BAA0B,+GAA+G,mBAAmB,gDAAgD,8BAA8B,uNAAuN,WAAW,+CAA+C,WAAW,EAAE,mBAAmB,6BAA6B,oBAAoB,8BAA8B,sBAAsB,kPAAkP,WAAW,gDAAgD,WAAW,EAAE,sBAAsB,oBAAoB,uBAAuB,2FAA2F,uBAAuB,qBAAqB,wBAAwB,0CAA0C,mBAAmB,+KAA+K,uBAAuB,OAAO,gCAAgC,uOAAuO,mBAAmB,sCAAsC,wBAAwB,uJAAuJ,4HAA4H,gGAAgG,mEAAmE,8UAA8U,2BAA2B,kBAAkB,4EAA4E,KAAK,KAAK,kCAAkC,6DAA6D,6CAA6C,4BAA4B,0BAA0B,kCAAkC,iCAAiC,oBAAoB,qHAAqH,yEAAyE,6HAA6H,4BAA4B,cAAc,iGAAiG,oQAAoQ,4BAA4B,qEAAqE,yCAAyC,uBAAuB,yBAAyB,kIAAkI,+DAA+D,yMAAyM,iKAAiK,iCAAiC,kCAAkC,wBAAwB,wBAAwB,gBAAgB,0BAA0B,8CAA8C,QAAQ,4CAA4C,mDAAmD,wBAAwB,wGAAwG,oBAAoB,qBAAqB,6IAA6I,uBAAuB,8CAA8C,wBAAwB,kFAAkF,yBAAyB,4DAA4D,8FAA8F,SAAS,+QAA+Q,6BAA6B,mDAAmD,wBAAwB,oLAAoL,qBAAqB,mBAAmB,wBAAwB,iCAAiC,+BAA+B,uBAAuB,gBAAgB,QAAQ,wBAAwB,IAAI,wBAAwB,sBAAsB,yBAAyB,+DAA+D,yBAAyB,6CAA6C,sGAAsG,sBAAsB,iEAAiE,wBAAwB,kDAAkD,oBAAoB,kDAAkD,8DAA8D,YAAY,mBAAmB,yCAAyC,sBAAsB,+CAA+C,mBAAmB,6BAA6B,yBAAyB,oDAAoD,YAAY,sBAAsB,uBAAuB,sBAAsB,SAAS,kDAAkD,SAAS,uBAAuB,kCAAkC,wBAAwB,mBAAmB,2BAA2B,2BAA2B,qCAAqC,iCAAiC,sFAAsF,sBAAsB,qPAAqP,QAAQ,GAAG,yBAAyB,+OAA+O,QAAQ,QAAQ,yBAAyB,8EAA8E,uBAAuB,2BAA2B,6BAA6B,MAAM,YAAY,sBAAsB,iCAAiC,yBAAyB,mCAAmC,wBAAwB,kCAAkC,sBAAsB,yBAAyB,kCAAkC,4DAA4D,IAAI,6BAA6B,YAAY,2BAA2B,yBAAyB,6BAA6B,6BAA6B,wBAAwB,mCAAmC,wBAAwB,+EAA+E,kCAAkC,GAAG,UAAU,2IAA2I,wBAAwB,qBAAqB,mBAAmB,yMAAyM,uDAAuD,OAAO,mBAAmB,6BAA6B,sBAAsB,2JAA2J,uDAAuD,OAAO,4BAA4B,sBAAsB,sEAAsE,mBAAmB,mEAAmE,iBAAiB,+BAA+B,+KAA+K,sCAAsC,8JAA8J,SAAS,kBAAkB,yBAAyB,4CAA4C,iDAAiD,wBAAwB,2DAA2D,0CAA0C,2BAA2B,4BAA4B,0CAA0C,0BAA0B,6DAA6D,sBAAsB,sMAAsM,uBAAuB,wZAAwZ,yBAAyB,4uBAA4uB,wBAAwB,2BAA2B,6CAA6C,wBAAwB,2BAA2B,mJAAmJ,wFAAwF,WAAW,mEAAmE,2BAA2B,wEAAwE,6BAA6B,mCAAmC,8GAA8G,kBAAkB,uDAAuD,6GAA6G,iBAAiB,yBAAyB,4OAA4O,yDAAyD;AAC73+B,EAAC,8BAA8B,+GAA+G,gHAAgH,yBAAyB,qBAAqB,+BAA+B,uBAAuB,2BAA2B,wGAAwG,sNAAsN,kBAAkB,wBAAwB,gQAAgQ,wBAAwB,wIAAwI,uBAAuB,2GAA2G,SAAS,QAAQ,uBAAuB,8CAA8C,wBAAwB,kEAAkE,2CAA2C,IAAI,6BAA6B,iCAAiC,mBAAmB,sEAAsE,SAAS,UAAU,8DAA8D,SAAS,wBAAwB,2BAA2B,IAAI,4EAA4E,qDAAqD,SAAS,mBAAmB,uFAAuF,wBAAwB,mDAAmD,yRAAyR,uBAAuB,oBAAoB,yBAAyB,iEAAiE,qlBAAqlB,wBAAwB,4BAA4B,qEAAqE,gDAAgD,EAAE,yBAAyB,oBAAoB,4CAA4C,oJAAoJ,8BAA8B,6CAA6C,kFAAkF,SAAS,iBAAiB,mBAAmB,qEAAqE,sBAAsB,wFAAwF,sBAAsB,gQAAgQ,2BAA2B,mHAAmH,4BAA4B,gDAAgD,0BAA0B,yDAAyD,yBAAyB,mBAAmB,0HAA0H,sBAAsB,gBAAgB,mDAAmD,IAAI,KAAK,gCAAgC,IAAI,2EAA2E,kDAAkD,0BAA0B,0BAA0B,wBAAwB,0BAA0B,+BAA+B,yJAAyJ,wBAAwB,oHAAoH,sBAAsB,wDAAwD,0BAA0B,sQAAsQ,oEAAoE,EAAE,yBAAyB,uBAAuB,saAAsa,kCAAkC,uBAAuB,2BAA2B,sEAAsE,8FAA8F,cAAc,uBAAuB,kCAAkC,UAAU,yDAAyD,wCAAwC,0DAA0D,uCAAuC,4CAA4C,2BAA2B,qEAAqE,gDAAgD,WAAW,QAAQ,IAAI,uBAAuB,SAAS,qCAAqC,cAAc,UAAU,OAAO,sEAAsE,8EAA8E,6BAA6B,oCAAoC,IAAI,kDAAkD,+BAA+B,+BAA+B,2EAA2E,sBAAsB,EAAE,sBAAsB,gBAAgB,+FAA+F,wCAAwC,wCAAwC,0KAA0K,2BAA2B,QAAQ,mFAAmF,uBAAuB,wBAAwB,eAAe,4CAA4C,4CAA4C,2HAA2H,2BAA2B,yBAAyB,+EAA+E,UAAU,yBAAyB,2BAA2B,wBAAwB,mCAAmC,IAAI,2EAA2E,0BAA0B,sCAAsC,IAAI,4CAA4C,SAAS,uBAAuB,qBAAqB,wBAAwB,2DAA2D,uBAAuB,qDAAqD,0BAA0B,+CAA+C,8DAA8D,+BAA+B,sDAAsD,IAAI,kCAAkC,IAAI,KAAK,gBAAgB,oDAAoD,wDAAwD,sCAAsC,sBAAsB,6CAA6C,+BAA+B,iBAAiB,mBAAmB,IAAI,KAAK,yDAAyD,oBAAoB,SAAS,wBAAwB,wCAAwC,6BAA6B,2CAA2C,IAAI,oDAAoD,SAAS,wBAAwB,4CAA4C,oDAAoD,eAAe,yDAAyD,YAAY,MAAM,wHAAwH,4BAA4B,kDAAkD,IAAI,oDAAoD,wBAAwB,gGAAgG,2BAA2B,2BAA2B,cAAc,sCAAsC,+CAA+C,mBAAmB,IAAI,qCAAqC,QAAQ,IAAI,KAAK,qCAAqC,IAAI,kNAAkN,IAAI,SAAS,8BAA8B,SAAS,QAAQ,0BAA0B,sEAAsE,4BAA4B,UAAU,kJAAkJ,IAAI,8FAA8F,iEAAiE,2BAA2B,mFAAmF,YAAY,6BAA6B,IAAI,2DAA2D,IAAI,4EAA4E,wBAAwB,6IAA6I,wBAAwB,gCAAgC,kEAAkE,iCAAiC,IAAI,KAAK,qEAAqE,oBAAoB,eAAe,6BAA6B,wDAAwD,kCAAkC,0BAA0B,0BAA0B,YAAY,cAAc,8BAA8B,yBAAyB,eAAe,oCAAoC,wBAAwB,mBAAmB,+BAA+B,6CAA6C,OAAO,IAAI,4CAA4C,YAAY,uBAAuB,SAAS,kCAAkC,uBAAuB,KAAK,EAAE,wFAAwF,gCAAgC,8BAA8B,gCAAgC,iCAAiC,yBAAyB,qEAAqE,uBAAuB,0CAA0C,8BAA8B,kGAAkG,4BAA4B,4BAA4B,yBAAyB,2BAA2B,kFAAkF,UAAU,QAAQ,uBAAuB,8CAA8C,uBAAuB,qCAAqC,2BAA2B,0FAA0F,uFAAuF,sBAAsB,uEAAuE,+DAA+D,sBAAsB,oBAAoB,0BAA0B,iCAAiC,0LAA0L,sBAAsB,qBAAqB,0BAA0B,kCAAkC,0BAA0B,2EAA2E,0BAA0B,uBAAuB,2DAA2D,mEAAmE,2BAA2B,2BAA2B,iCAAiC,SAAS,mBAAmB,0BAA0B,mFAAmF,2BAA2B,uDAAuD,yBAAyB,+EAA+E,uBAAuB,iHAAiH,uBAAuB,wDAAwD,sBAAsB,qBAAqB,+BAA+B,+BAA+B,mCAAmC,6BAA6B,0CAA0C,sDAAsD,IAAI,8CAA8C,IAAI,sFAAsF,UAAU,GAAG,mCAAmC,2BAA2B,yBAAyB,gEAAgE,6BAA6B,IAAI,8CAA8C,IAAI,oFAAoF,UAAU,GAAG,kCAAkC,qBAAqB,kBAAkB,yEAAyE,4BAA4B,gEAAgE,wCAAwC,GAAG,wCAAwC,wBAAwB,0CAA0C,GAAG,mCAAmC,yBAAyB,oCAAoC,oBAAoB,qBAAqB,2CAA2C,MAAM,mBAAmB,IAAI,qFAAqF,YAAY,mBAAmB,2BAA2B,qEAAqE,8IAA8I,wBAAwB,yBAAyB,wEAAwE,sBAAsB,2BAA2B,yBAAyB,OAAO,8BAA8B,kEAAkE,sBAAsB,kCAAkC,mEAAmE,wCAAwC,mDAAmD,oCAAoC,IAAI,+CAA+C,6BAA6B,0EAA0E,uFAAuF,wDAAwD,oFAAoF,gFAAgF,uDAAuD,IAAI,iCAAiC,gEAAgE,SAAS,6BAA6B,oDAAoD,4BAA4B,oCAAoC,iCAAiC,eAAe,mBAAmB,IAAI,kFAAkF,SAAS,4BAA4B,oBAAoB,kCAAkC,6BAA6B,4BAA4B,IAAI,2CAA2C,SAAS,0BAA0B,4BAA4B,YAAY,WAAW,yBAAyB,uBAAuB,4BAA4B,4BAA4B,cAAc,EAAE,OAAO,qBAAqB,kCAAkC,oEAAoE,IAAI,sFAAsF,qBAAqB,kCAAkC,2EAA2E,GAAG,qBAAqB,qBAAqB,2DAA2D,+DAA+D,IAAI,uEAAuE,kCAAkC,6BAA6B,GAAG,aAAa,cAAc,kBAAkB,SAAS,kCAAkC,2CAA2C,6BAA6B,qBAAqB,GAAG,yBAAyB,+BAA+B,0BAA0B,4BAA4B,wBAAwB,qBAAqB,iDAAiD,8DAA8D,uCAAuC,kCAAkC,2EAA2E,+BAA+B,uCAAuC,GAAG,sCAAsC,EAAE,2BAA2B,0BAA0B,aAAa,8BAA8B,yCAAyC,gCAAgC,8CAA8C,yXAAyX,+CAA+C,+EAA+E,oCAAoC,iHAAiH,gCAAgC,0CAA0C,mfAAmf,6BAA6B,2FAA2F,sCAAsC,iCAAiC,qEAAqE,qCAAqC,kEAAkE,KAAK,4CAA4C,wEAAwE,4BAA4B,iEAAiE,kBAAkB,uDAAuD,gCAAgC,8CAA8C,gCAAgC,8EAA8E,2BAA2B,QAAQ,sEAAsE,eAAe,uBAAuB,kCAAkC,sBAAsB,+BAA+B,qCAAqC,2BAA2B,sBAAsB,eAAe,IAAI,KAAK,SAAS,gBAAgB,SAAS,SAAS,aAAa,sBAAsB,cAAc,wCAAwC,kDAAkD,YAAY,SAAS,4BAA4B,8FAA8F,wHAAwH,2GAA2G,iCAAiC,oEAAoE,0FAA0F,OAAO,gGAAgG,0BAA0B,2CAA2C,mBAAmB,mBAAmB,qCAAqC,KAAK,gFAAgF,kBAAkB,oBAAoB,kBAAkB,qCAAqC,KAAK,iFAAiF,iCAAiC,qBAAqB,6MAA6M,+BAA+B,8NAA8N,qBAAqB,6DAA6D,uHAAuH,8hBAA8hB,4BAA4B,yFAAyF,kBAAkB,yJAAyJ,sHAAsH,uJAAuJ,iDAAiD,oBAAoB,4BAA4B,uBAAuB,YAAY,mBAAmB,kDAAkD,oBAAoB,qDAAqD,oBAAoB,uBAAuB,sBAAsB,gKAAgK,+BAA+B,oBAAoB,qBAAqB,gBAAgB,6EAA6E,sEAAsE,kKAAkK,yBAAyB,wBAAwB,0BAA0B,kBAAkB,+CAA+C,yBAAyB,gBAAgB,2HAA2H,oBAAoB,8BAA8B,uEAAuE,gHAAgH,oCAAoC,yBAAyB,6EAA6E,uFAAuF,uBAAuB,kKAAkK,4BAA4B,wBAAwB,+GAA+G,2CAA2C,KAAK,oQAAoQ,qFAAqF,WAAW,0CAA0C,EAAE,uBAAuB,4EAA4E,mBAAmB,0CAA0C,oBAAoB,kDAAkD,wBAAwB,mDAAmD,4BAA4B,8DAA8D,uFAAuF,8FAA8F,mBAAmB,0CAA0C,oBAAoB,4KAA4K,wBAAwB,2JAA2J,4BAA4B,kCAAkC,uHAAuH,iDAAiD,8IAA8I,yBAAyB,4CAA4C,yNAAyN,+FAA+F,uNAAuN,cAAc,MAAM,iFAAiF,4BAA4B,4CAA4C,cAAc,sBAAsB,6BAA6B,iBAAiB,cAAc,MAAM,sBAAsB,WAAW,4DAA4D,IAAI,+BAA+B,0EAA0E,sBAAsB,4CAA4C,wIAAwI,uCAAuC,kBAAkB,kSAAkS,uBAAuB,0UAA0U,UAAU,8DAA8D,0DAA0D,4DAA4D,yCAAyC,2CAA2C,iDAAiD,6BAA6B,iBAAiB,WAAW,qCAAqC;AACny+B,OAAM,4DAA4D,oGAAoG,kBAAkB,YAAY,WAAW,qCAAqC,cAAc,QAAQ,uJAAuJ,YAAY,0CAA0C,cAAc,mFAAmF,YAAY,WAAW,qCAAqC,OAAO,MAAM,+CAA+C,mCAAmC,4EAA4E,yCAAyC,iDAAiD,YAAY,WAAW,qCAAqC,cAAc,MAAM,+CAA+C,sHAAsH,uCAAuC,6BAA6B,UAAU,+DAA+D,MAAM,8DAA8D,MAAM,2GAA2G,aAAa,sBAAsB,sEAAsE,oCAAoC,oBAAoB,yEAAyE,wBAAwB,0EAA0E,2BAA2B,gBAAgB,uEAAuE,iHAAiH,gTAAgT,0BAA0B,gBAAgB,mDAAmD,sFAAsF,qhBAAqhB,0BAA0B,iGAAiG,oEAAoE,wBAAwB,8DAA8D,gBAAgB,mMAAmM,0LAA0L,wBAAwB,4BAA4B,qEAAqE,iCAAiC,kFAAkF,uBAAuB,8BAA8B,oBAAoB,mEAAmE,wBAAwB,oEAAoE,qBAAqB,cAAc,qIAAqI,8BAA8B,6LAA6L,2FAA2F,6FAA6F,mBAAmB,2JAA2J,qCAAqC,2IAA2I,wBAAwB,+EAA+E,qBAAqB,mBAAmB,8CAA8C,8BAA8B,mCAAmC,gKAAgK,2GAA2G,WAAW,kCAAkC,uBAAuB,wFAAwF,qBAAqB,kEAAkE,wBAAwB,6EAA6E,kBAAkB,mBAAmB,0BAA0B,6TAA6T,0BAA0B,8MAA8M,iJAAiJ,yIAAyI,oBAAoB,+PAA+P,wBAAwB,eAAe,8CAA8C,qCAAqC,8FAA8F,oCAAoC,gBAAgB,GAAG,wBAAwB,gCAAgC,8EAA8E,sDAAsD,mCAAmC,UAAU,qFAAqF,wBAAwB,8GAA8G,qBAAqB,2BAA2B,kOAAkO,wBAAwB,oBAAoB,2BAA2B,qMAAqM,yBAAyB,mBAAmB,yFAAyF,8CAA8C,qBAAqB,yCAAyC,oBAAoB,wCAAwC,2BAA2B,0BAA0B,iBAAiB,wBAAwB,IAAI,0BAA0B,yBAAyB,IAAI,wBAAwB,wBAAwB,IAAI,uBAAuB,sBAAsB,IAAI,wBAAwB,4BAA4B,2BAA2B,iBAAiB,0BAA0B,IAAI,qBAAqB,2BAA2B,IAAI,uBAAuB,sBAAsB,gDAAgD,yBAAyB,iDAAiD,wBAAwB,4BAA4B,uBAAuB,6CAA6C,sFAAsF,KAAK,iCAAiC,yCAAyC,oBAAoB,mGAAmG,uBAAuB,eAAe,qBAAqB,yBAAyB,0QAA0Q,wBAAwB,yNAAyN,kBAAkB,+CAA+C,yBAAyB,8DAA8D,oBAAoB,+FAA+F,yDAAyD,SAAS,eAAe,wBAAwB,gDAAgD,4BAA4B,SAAS,oBAAoB,wBAAwB,qBAAqB,wBAAwB,6BAA6B,yBAAyB,gBAAgB,mFAAmF,yBAAyB,uBAAuB,mBAAmB,YAAY,gFAAgF,6HAA6H,wBAAwB,gDAAgD,0FAA0F,0BAA0B,6CAA6C,wBAAwB,wBAAwB,gBAAgB,uBAAuB,0BAA0B,2BAA2B,+BAA+B,4BAA4B,gBAAgB,kBAAkB,mCAAmC,6BAA6B,qGAAqG,wEAAwE,6BAA6B,qDAAqD,mCAAmC,SAAS,gGAAgG,mBAAmB,wEAAwE,oVAAoV,sBAAsB,4DAA4D,qBAAqB,iCAAiC,sBAAsB,kCAAkC,qCAAqC,gCAAgC,mCAAmC,iCAAiC,wKAAwK,4BAA4B,qCAAqC,iOAAiO,sBAAsB,eAAe,+BAA+B,kGAAkG,6BAA6B,6BAA6B,yCAAyC,SAAS,qHAAqH,wBAAwB,2CAA2C,mBAAmB,0HAA0H,uGAAuG,wHAAwH,sBAAsB,0EAA0E,uBAAuB,iDAAiD,4BAA4B,+GAA+G,+BAA+B,uFAAuF,oBAAoB,cAAc,SAAS,iEAAiE,SAAS,yHAAyH,yBAAyB,sEAAsE,4BAA4B,0EAA0E,sBAAsB,sBAAsB,+BAA+B,mGAAmG,oCAAoC,oCAAoC,mCAAmC,SAAS,2EAA2E,mBAAmB,YAAY,yEAAyE,yHAAyH,sBAAsB,sEAAsE,4BAA4B,4HAA4H,oBAAoB,uLAAuL,sDAAsD,6BAA6B,0EAA0E,2BAA2B,2BAA2B,uGAAuG,6BAA6B,uCAAuC,kMAAkM,4BAA4B,8CAA8C,0BAA0B,qDAAqD,8CAA8C,8BAA8B,8BAA8B,oCAAoC,SAAS,+CAA+C,4BAA4B,oCAAoC,2CAA2C,sCAAsC,qCAAqC,mBAAmB,8IAA8I,sBAAsB,uFAAuF,4BAA4B,+CAA+C,0BAA0B,kDAAkD,yBAAyB,iBAAiB,kDAAkD,wBAAwB,2EAA2E,yKAAyK,oDAAoD,2BAA2B,uGAAuG,2DAA2D,mMAAmM,8CAA8C,iDAAiD,oBAAoB,8LAA8L,2BAA2B,iBAAiB,iBAAiB,yBAAyB,0FAA0F,oBAAoB,oBAAoB,kEAAkE,kBAAkB,wFAAwF,8CAA8C,4BAA4B,qCAAqC,MAAM,oCAAoC,4GAA4G,wBAAwB,mCAAmC,iFAAiF,qCAAqC,6BAA6B,kCAAkC,sBAAsB,+DAA+D,0PAA0P,8BAA8B,yDAAyD,wDAAwD,0BAA0B,0BAA0B,gEAAgE,+BAA+B,IAAI,iLAAiL,4CAA4C,oBAAoB,sEAAsE,sBAAsB,oGAAoG,mCAAmC,mCAAmC,gCAAgC,8CAA8C,uVAAuV,iBAAiB,gIAAgI,oBAAoB,qBAAqB,uFAAuF,sFAAsF,6CAA6C,oBAAoB,+DAA+D,sCAAsC,8CAA8C,2BAA2B,6BAA6B,8PAA8P,iBAAiB,wBAAwB,0GAA0G,qEAAqE,iCAAiC,kBAAkB,yBAAyB,kBAAkB,SAAS,4GAA4G,+CAA+C,iCAAiC,qBAAqB,+BAA+B,wBAAwB,sEAAsE,4DAA4D,8DAA8D,qDAAqD,wCAAwC,mEAAmE,yDAAyD,YAAY,iCAAiC,kBAAkB,gCAAgC,6EAA6E,+BAA+B,wCAAwC,+EAA+E,4EAA4E,sBAAsB,sPAAsP,iBAAiB,kDAAkD,qBAAqB,sEAAsE,kBAAkB,qDAAqD,4EAA4E,uBAAuB,qDAAqD,oDAAoD,sBAAsB,0EAA0E,sBAAsB,2CAA2C,sBAAsB,0CAA0C,qDAAqD,2OAA2O,sCAAsC,gCAAgC,yFAAyF,8BAA8B,8EAA8E,kCAAkC,gCAAgC,UAAU,oIAAoI,6GAA6G,sIAAsI,sCAAsC,2MAA2M,sBAAsB,qDAAqD,EAAE,OAAO,iCAAiC,0LAA0L,GAAG,uBAAuB,yBAAyB,8DAA8D,mJAAmJ,uCAAuC,yBAAyB,2CAA2C,mGAAmG,2BAA2B,gBAAgB,uHAAuH,6BAA6B,mHAAmH,iQAAiQ,uCAAuC,4CAA4C,mBAAmB,IAAI,uBAAuB,WAAW,gCAAgC,sEAAsE,mBAAmB,IAAI,kIAAkI,iBAAiB,uBAAuB,+EAA+E,oBAAoB,4HAA4H,4CAA4C,OAAO,+FAA+F,qIAAqI,uBAAuB,iJAAiJ,qCAAqC,6FAA6F,uFAAuF,2CAA2C,EAAE,wCAAwC,kMAAkM,cAAc,gDAAgD,kBAAkB,OAAO,yCAAyC,uEAAuE,8BAA8B,EAAE,kB;;;;;;mCCX9o4B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP,MAAK;AACL;AACA;AACA;AACA,EAAC;;;;;;;mCCdD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wDAAuD,qBAAqB;AAC5E;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA,YAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCnGD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB,UAAU;AAC3B,oBAAmB,OAAO;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;;AAEA;AACA;AACA,kBAAiB,OAAO;AACxB,kBAAiB,MAAM;AACvB,oBAAmB,OAAO;AAC1B;AACA;;AAEA;AACA,2BAA0B,0BAA0B,YAAY;AAChE;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB,IAAI;AACpB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC5ID;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,UAAU;AAC1B,iBAAgB,OAAO;AACvB,iBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,cAAc;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCClDD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCpDD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCrFD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA,YAAW;AACX,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCChED;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCCnDD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCCrDD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCtBD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,8CAA6C;AAC7C,qBAAoB;AACpB,QAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA,QAAO;AACP;;;AAGA;AACA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,OAAO;AAC5B,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,OAAO;AAC5B,kBAAiB;AACjB;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAkB,YAAY;AAC9B;AACA,kBAAiB,sCAAsC;AACvD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,kBAAiB,YAAY;AAC7B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCChND;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCC9GD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,mBAAkB,YAAY;AAC9B,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kDAAiD,IAAI;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,YAAY;AAC7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC3FD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA;AACA,uBAAsB,SAAS;AAC/B,oBAAmB,YAAY;AAC/B;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC9KD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC;;;;;;;mCCzED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,mBAAkB;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uBAAsB;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,YAAW;;AAEX;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;AC5ID;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAsE;AACtE,MAAK;AACL,yFAAwF;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD;AACnD;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA8E,SAAS;AACvF,wDAAuD,SAAS;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA,yEAAwE;AACxE,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD,EAAE;AACpD,uBAAsB;AACtB;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,SAAS;AAC9C;AACA;AACA,yCAAwC,SAAS;AACjD;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,SAAS;AAC9C,0DAAyD,SAAS;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAgD;AAChD;AACA;AACA;AACA,qEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,SAAS;AAC7B;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,qBAAoB,SAAS;AAC7B;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,qBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA,QAAO;AACP,qBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,OAAO;AAC3C;AACA;AACA,wCAAuC,OAAO;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,SAAS;AAC9C,6EAA4E,UAAU;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,uCAAsC,OAAO;AAC7C,iEAAgE,OAAO;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,OAAO;AAC3C,yDAAwD,OAAO;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,SAAS;AAC9C;AACA;AACA;AACA,yCAAwC,SAAS;AACjD;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,mEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA2D,OAAO;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAAyD;AACzD;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAsD,wCAAwC;AAC9F;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,iFAAiF;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C;AAC3C;AACA,UAAS,gBAAgB;AACzB;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,mBAAkB,UAAU;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC;AACnC;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iDAAgD;AAChD,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,6BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,qDAAoD;AACpD;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,EAAE;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C;AAC3C,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,uEAAsE,6BAA6B;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAAyD,OAAO;AAChE;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,iEAAgE,QAAQ;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,8DAA6D,OAAO;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C,OAAO;AACrD,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,4CAA2C,QAAQ;AACnD,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC,OAAO;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B;AAC5B,6BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,qEAAoE,OAAO;AAC3E;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,6CAA4C;AAC5C;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,gCAA+B,iCAAiC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA,iCAAgC,QAAQ;AACxC,0BAAyB,8BAA8B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,cAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC;AAClC;AACA;AACA;AACA,QAAO;AACP,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,+BAA8B,8BAA8B;AAC5D;AACA,gDAA+C;AAC/C,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC;AACvC,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC;AACvC,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,gCAA+B,OAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,iBAAiB,OAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B,4BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA,+CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD,OAAO;AACxD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,QAAQ;AACtB;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA,8BAA6B;AAC7B,QAAO;AACP;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL,yBAAwB,OAAO;AAC/B;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,WAAU,OAAO;AACjB,WAAU,OAAO;AACjB;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAqD,8BAA8B;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAqD,8BAA8B;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA,oCAAmC;AACnC;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B,QAAO;AACP;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAAyD,OAAO,2DAA2D,iBAAiB,OAAO;AACnJ;AACA,0DAAyD,OAAO,2DAA2D,iBAAiB,OAAO;AACnJ;AACA,oDAAmD,OAAO,mDAAmD,iBAAiB,OAAO;AACrI;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA,IAAG;AACH;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,2BAA0B,OAAO;AACjC;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,4BAA2B,OAAO;AAClC,wDAAuD,OAAO;AAC9D,2EAA0E,OAAO;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA,MAAK;AACL;AACA;AACA,kBAAiB,OAAO;AACxB,2BAA0B,OAAO;AACjC,2BAA0B,OAAO,yBAAyB,iBAAiB,OAAO;AAClF;AACA,kBAAiB,OAAO;AACxB;AACA,MAAK;AACL;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,MAAM;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA,iCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,oBAAoB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,kFAAiF;AACjF;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,+EAA8E,OAAO;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,+BAA8B,OAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,gCAAgC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,MAAM,qBAAqB,OAAO;AAClD;AACA,UAAS;AACT;AACA,iBAAgB,QAAQ,sBAAsB,OAAO;AACrD;AACA,oBAAmB,cAAc;AACjC,+BAA8B,kBAAkB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,SAAS;AAC9C;AACA,0DAAyD,SAAS;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,SAAS;AAC9C;AACA,0DAAyD,SAAS;AAClE;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,SAAS;AAC9C,0DAAyD,SAAS;AAClE;AACA;AACA;AACA;AACA,gDAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,OAAO;AAC3C;AACA,yDAAwD,OAAO;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,qCAAoC,OAAO;AAC3C;AACA,yDAAwD,OAAO;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C;AAC5C;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,uCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD,0BAA0B;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,uWAA6D;AAC7D;AACA,EAAC,G;;;;;;AC/xSD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,SAAS;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,uCAAsC,SAAS;AAC/C;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,SAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,KAAK;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B,KAAK;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,SAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,wDAAuD,SAAS;AAChE;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,SAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,2BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAwC,SAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAoC;AACpC;AACA;AACA;AACA,YAAW;AACX;AACA,mCAAkC;AAClC;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAoC;AACpC;AACA;AACA;AACA,YAAW;AACX;AACA,mCAAkC;AAClC;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,mCAAkC;AAClC;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,mCAAkC;AAClC;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,mCAAkC;AAClC;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,mCAAkC;AAClC;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ysBAAwsB;AACxsB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAwD,SAAS;AACjE;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAqD,KAAK,gBAAgB,KAAK;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,wCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,QAAQ;AACnD;AACA;AACA,QAAO;AACP;AACA,4CAA2C,QAAQ;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,QAAQ;AACnD;AACA;AACA,QAAO;AACP;AACA,4CAA2C,QAAQ;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,UAAS;AACT,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD,4EAA4E;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAA+E;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAkF;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC;AACrC,sCAAqC;AACrC,sCAAqC;AACrC,sCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,SAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,wDAAuD,SAAS;AAChE;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,SAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B;AAC1B;AACA,iCAAgC;AAChC;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,kCAAiC,KAAK;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAwC,SAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD,4EAA4E;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAA+E;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA,EAAC;AACD;AACA,EAAC,I;;;;;;ACphFD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,2BAA0B,aAAa,EAAE;AACzC,8DAA6D;;;AAG7D;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,2CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC,0BAA0B;AAC7D;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,gCAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oEAAmE;AACnE;AACA;;AAEA;AACA;AACA;AACA,gCAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;;AAEA;;AAEA;AACA,oDAAmD;AACnD;AACA;AACA;AACA;AACA,6CAA4C;AAC5C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qCAAoC;AACpC,mCAAkC;;AAElC;;AAEA;AACA,yBAAwB;AACxB;AACA,MAAK,KAAK;AACV;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,MAAK,OAAO;AACZ;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qC;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA,+CAA8C;AAC9C,oCAAmC,eAAe;AAClD;AACA;AACA,kBAAiB,oCAAoC;AACrD,wCAAuC,KAAK;AAC5C;AACA;AACA,kBAAiB;;AAEjB;AACA,qDAAoD;AACpD;AACA,kBAAiB;AACjB,2DAA0D;AAC1D,gCAA+B,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA,eAAc,YAAY;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qDAAoD;AACpD;AACA,MAAK;AACL;AACA;AACA;AACA,gEAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC,EAAC;AACD;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAqB,iBAAiB;AACtC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kDAAiD,QAAQ;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAkB;AAClB;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;;AAEA,EAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,uCAAsC;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,0DAAyD;AACzD;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA8C,KAAK,G;AACnD;AACA;AACA,cAAa;AACb;AACA,MAAK;;AAEL;AACA;;AAEA;AACA,EAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA6D;AAC7D,wDAAuD,kCAAkC;;AAEzF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,cAAc;AAC9B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT,MAAK;AACL;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,+B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,aAAa;;AAExD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,4CAA2C,aAAa;AACxD;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAiC,KAAK;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB,cAAc;AAC/B;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAkC;AAClC;;AAEA;AACA,oCAAmC,uBAAuB,uBAAuB,uBAAuB;AACxG;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS,iDAAiD,EAAE;;AAE5D;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,6BAA4B,aAAa;AACzC;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA,0CAAyC;AACzC,wCAAuC;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,0CAAyC,cAAc;AACvD;AACA,gDAA+C,cAAc;AAC7D,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA,oDAAmD,2BAA2B;AAC9E,MAAK;AACL,qDAAoD,2BAA2B;AAC/E,uDAAsD,2BAA2B;AACjF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAAyC,0BAA0B;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8DAA6D;AAC7D,iDAAgD;AAChD,8CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,W;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA,qBAAoB;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAgB;AAChB;AACA,iBAAgB;AAChB;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;;AAGL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;;;AAID;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,c;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAsB,8BAA8B;AACpD,uBAAsB,8BAA8B;;AAEpD,EAAC;;AAED,EAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,sCAAqC;AACrC;AACA,+CAA8C,WAAW,eAAe,MAAM,OAAO,mBAAmB,UAAU;;AAElH;;AAEA;AACA;AACA,MAAK;AACL;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC;AACvC,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;;AAGD;AACA;AACA;;AAEA;;AAEA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA,mCAAkC,gCAAgC;AAClE,kCAAiC,8BAA8B;;AAE/D;AACA;AACA,qDAAoD;AACpD,yDAAwD;;AAExD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA,+CAA8C;AAC9C;AACA;AACA;AACA,kBAAiB,oBAAoB;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;;AAGA;AACA;AACA;AACA,6CAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;AACL;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA2B,SAAS,EAAE;AACtC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB;;AAEvB;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA,kFAAiF;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA,EAAC;;AAED;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,2CAA0C,iCAAiC;AAC3E;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,YAAW;;AAEX;;AAEA;AACA;;AAEA;AACA;AACA,8EAA6E;AAC7E;;AAEA;AACA,kBAAiB,kBAAkB;AACnC;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,kDAAiD,yBAAyB,EAAE;AAC5E;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,2CAA0C,kBAAkB;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;AAED;AACA,mBAAkB,gBAAgB;AAClC,iBAAgB,0CAA0C;AAC1D,mBAAkB,mBAAmB;AACrC,mBAAkB,gBAAgB;AAClC,2BAA0B;AAC1B,EAAC;;;AAGD;AACA,EAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA,2DAA0D,gCAAgC;AAC1F;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA,4CAA2C,KAAK;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,6F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA,wBAAuB;;AAEvB;AACA,0BAAyB;AACzB;AACA,0BAAyB;;AAEzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAAyB;AACzB;AACA,wBAAuB;;AAEvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0CAAyC,KAAK;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yCAAwC,KAAK;AAC7C;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD;AACjD;;AAEA;AACA,wBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,4F;AACA;AACA;AACA,sBAAqB;AACrB;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB;AACrB,kBAAiB;AACjB;AACA;AACA;AACA;AACA,+CAA8C;AAC9C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,wBAAwB;;AAE7C;AACA,0CAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA4B;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAqB;;AAErB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,8BAA6B;AAC7B;AACA;;AAEA,4BAA2B,oBAAoB;AAC/C;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA,kCAAiC;AACjC;AACA,kBAAiB;AACjB;AACA;AACA,8BAA6B;AAC7B,oCAAmC,iBAAiB;AACpD;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,EAAC;;AAED;AACA,EAAC;;AAED;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA2B,mBAAmB;AAC9C;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,4BAA2B,mBAAmB;AAC9C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA,yDAAwD,gBAAgB;AACxE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,KAAK;AAC1C;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B,gCAA+B;AAC/B;;AAEA;AACA;AACA;;AAEA,EAAC;;AAED;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA,4BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA,yBAAwB,EAAE;AAC1B;AACA;AACA;;AAEA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,c;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,O;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,O;AACA;AACA;AACA,O;AACA;AACA;AACA,O;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,uB;AACA;;AAEA,EAAC;;AAED;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uCAAsC,4BAA4B;AAClE,uCAAsC,0BAA0B;AAChE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,0BAA0B;AACpE;AACA,2CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAkC,aAAa;AAC/C;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,wBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAuB,yBAAyB;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,2EAA0E,aAAa,O;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA,EAAC;;AAED;AACA,EAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,kBAAiB;AACjB;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,EAAC;;AAED,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL,sBAAqB,iBAAiB;AACtC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,oBAAoB;AACpD;AACA;AACA;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,cAAc;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAgC,cAAc;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAgC,cAAc;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAgC,cAAc;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,cAAc;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAgC,cAAc;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAqB,iBAAiB;AACtC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC,MAAM;AACzC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAqD,OAAO;AAC5D;AACA;AACA,yBAAwB;AACxB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC,SAAS;AAC5C;;AAEA;AACA;;AAEA,EAAC;;AAED;AACA,EAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6BAA4B,QAAQ;;AAEpC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,iF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,WAAW;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA,EAAC;;AAED;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4BAA2B,UAAU;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA,wCAAuC,MAAM;AAC7C;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAuB,kBAAkB;AACzC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,wBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA,wBAAuB,uBAAuB;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,sCAAqC,iBAAiB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAiC,KAAK;AACtC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA,wBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,iCAAgC,yBAAyB;AACzD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA,2CAA0C,yBAAyB;AACnE;AACA;AACA,yCAAwC,uBAAuB;AAC/D;AACA;;AAEA;AACA,iCAAgC,cAAc;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,2CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,wBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAuB,sBAAsB;AAC7C,4BAA2B,+BAA+B;AAC1D;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAkB;AAClB;AACA;AACA,wBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,qBAAqB;AACpC;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,qBAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC;AACrC;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA,wBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAkC,4BAA4B;;AAE9D;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,+BAA+B;AACjE;;AAEA;AACA;AACA,wBAAuB,kBAAkB;AACzC;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,cAAa,iDAAiD,2CAA2C;AACzG;AACA;AACA;AACA;;AAEA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA,oBAAmB;AACnB;AACA;AACA,iCAAgC,cAAc;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA,mDAAkD;;AAElD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;;AAEA;AACA;;AAEA,qDAAoD,WAAW;AAC/D;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+CAA8C,WAAW;AACzD;AACA;AACA,oBAAmB;AACnB,+CAA8C,WAAW;AACzD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAU,KAAK;AACf,WAAU,KAAK;AACf;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,4BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA2B;AAC3B,4BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C;AAC3C;AACA;AACA;AACA,4CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,eAAe;AACpC;AACA;AACA,4CAA2C;AAC3C;AACA;AACA;AACA,4CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C;AAC3C;AACA;AACA;AACA,4CAA2C;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C,wCAAwC;AACrF,qCAAoC,wBAAwB;AAC5D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA,wBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,+BAA8B,aAAa;AAC3C,0BAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;;AAEA,yCAAwC,uBAAuB;AAC/D;;AAEA;AACA;AACA,4BAA2B,UAAU;AACrC;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAAyB,wBAAwB;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAAyB,wBAAwB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,uBAAuB;AAClE;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,wBAAwB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA;AACA,2BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA,gCAA+B,aAAa;AAC5C;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,qBAAoB;;AAEpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,qBAAqB;AAChD;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA,0BAAyB,kCAAkC;AAC3D;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL,mBAAkB,mBAAmB;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA,6BAA4B,iCAAiC;AAC7D;AACA,MAAK;AACL;AACA,6BAA4B,6BAA6B;AACzD,0BAAyB,iCAAiC;AAC1D;AACA,MAAK;AACL;AACA,6BAA4B,oBAAoB;AAChD,0BAAyB;AACzB;AACA,EAAC;;AAED;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD,eAAe;AAChE,gCAA+B,SAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,4BAA2B,kBAAkB;AAC7C;AACA,gCAA+B,oBAAoB;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2CAA0C,OAAO;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,+DAA8D,KAAK;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,SAAS;AACxC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,+CAA8C,QAAQ;AACtD;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,gCAA+B,oBAAoB;AACnD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,kBAAkB;AACzC;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA2B,iBAAiB;AAC5C;AACA;;AAEA;AACA;;AAEA,0DAAyD,iBAAiB;AAC1E;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;;AAEA,kCAAiC,gBAAgB;AACjD;AACA;;AAEA;AACA;;AAEA,0DAAyD,gBAAgB;AACzE;AACA;AACA;;AAEA,iBAAgB;AAChB;;AAEA,EAAC;;AAED;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,uDAAuD;;AAE3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,4BAA2B;;AAE3B;AACA;;AAEA;AACA;;AAEA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,oFAAmF,SAAS;AAC5F;;AAEA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;AACA,qBAAoB;;AAEpB;AACA,mCAAkC,KAAK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;;AAEA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAoD;AACpD,MAAK;AACL;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,yCAAwC,KAAK;AAC7C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,kBAAiB;AACjB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA,EAAC;;AAED;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;AACL;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;AACL;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;AACL;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,oBAAoB,EAAE;AAClD;AACA,EAAC;AACD;AACA;AACA,6BAA4B,0BAA0B,EAAE;AACxD;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;AACD;AACA;AACA,6BAA4B,kCAAkC,EAAE;AAChE;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,iCAAiC,EAAE;AAC/D;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,mCAAmC,EAAE;AACjE;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,uCAAuC,EAAE;AACrE;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,0BAA0B,EAAE;AACxD;AACA;AACA,EAAC;AACD;AACA;AACA,6B;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,yBAAyB,EAAE;AACvD;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,mBAAmB,EAAE;AACjD;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,uBAAuB,EAAE;AACrD;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,+B;AACA,MAAK;AACL;AACA,EAAC;AACD;AACA;AACA,6B;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;AACD;AACA;AACA;AACA,6DAA4D,iBAAiB;AAC7E,MAAK;AACL;AACA,EAAC;AACD;AACA;AACA,6BAA4B,0BAA0B,EAAE;AACxD;AACA,EAAC;AACD;AACA;AACA,6BAA4B,yCAAyC,EAAE;AACvE;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,4BAA4B,EAAE;AAC1D;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,kCAAkC,EAAE;AAChE;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,mCAAkC,+BAA+B,EAAE;AACnE;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,uCAAuC,EAAE;AACrE;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,0BAA0B,EAAE;AACxD;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,oCAAoC,EAAE;AAClE;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,mCAAkC,iCAAiC,EAAE;AACrE;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,wCAAwC,EAAE;AACtE;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,2BAA2B,EAAE;AACzD;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,yCAAyC,EAAE;AACvE;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,4BAA4B,EAAE;AAC1D;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,oCAAoC,EAAE;AAClE;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,mCAAkC,iCAAiC,EAAE;AACrE;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,yCAAyC,EAAE;AACvE;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,4BAA4B,EAAE;AAC1D;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,uCAAuC,EAAE;AACrE;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,0BAA0B,EAAE;AACxD;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,qCAAqC,EAAE;AACnE;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,mCAAkC,kCAAkC,EAAE;AACtE;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,yBAAyB,EAAE;AACvD;AACA,EAAC;AACD;AACA;AACA,6BAA4B,yBAAyB,EAAE;AACvD;AACA,EAAC;AACD;AACA;AACA,6BAA4B,uBAAuB,EAAE;AACrD;AACA,EAAC;AACD;AACA;AACA,6BAA4B,uBAAuB,EAAE;AACrD;AACA,EAAC;AACD;AACA;AACA,6BAA4B,uBAAuB,EAAE;AACrD;AACA,EAAC;AACD;AACA;AACA,6BAA4B,qBAAqB,EAAE;AACnD;AACA,EAAC;AACD;AACA;AACA,wBAAuB,gEAAgE,EAAE;AACzF;AACA,EAAC;AACD;AACA;AACA,wBAAuB,+DAA+D,EAAE;AACxF;AACA,EAAC;AACD;AACA;AACA,6BAA4B,yCAAyC,EAAE;AACvE;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,uCAAuC,EAAE;AACrE;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,yCAAyC,EAAE;AACvE;AACA,EAAC;AACD;AACA;AACA,6BAA4B,gCAAgC,EAAE;AAC9D;AACA,EAAC;AACD;AACA;AACA,6BAA4B,yBAAyB,EAAE;AACvD;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,6BAA6B,EAAE;AAC3D;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,mCAAmC,EAAE;AACjE;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,wBAAuB;AACvB;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,sBAAsB,EAAE;AACpD;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,6BAA6B,EAAE;AAC3D;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,oBAAoB,EAAE;AAClD;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,6BAA6B,EAAE;AAC3D;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,6BAA6B,EAAE;AAC3D;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,wBAAwB,EAAE;AACtD;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,yBAAyB,EAAE;AACvD;AACA;AACA,EAAC;AACD;AACA;AACA;AACA,6DAA4D,uBAAuB;AACnF;AACA,EAAC;AACD;AACA;AACA,6BAA4B,eAAe;AAC3C,EAAC;AACD;AACA;AACA,6BAA4B,eAAe;AAC3C,EAAC;AACD;AACA;AACA,6BAA4B,sBAAsB,EAAE;AACpD;AACA,EAAC;AACD;AACA;AACA,6BAA4B,sBAAsB,EAAE;AACpD;AACA,EAAC;AACD;AACA;AACA,6BAA4B,wBAAwB,EAAE;AACtD;AACA,EAAC;AACD;AACA;AACA,6BAA4B,wBAAwB,EAAE;AACtD;AACA,EAAC;AACD;AACA;AACA,6BAA4B,wBAAwB,EAAE;AACtD;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA,6BAA4B,uBAAuB,EAAE;AACrD;AACA;AACA,EAAC;AACD;AACA;AACA,6B;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,4BAA4B,EAAE;AAC1D;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,0BAA0B,EAAE;AACxD;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,yBAAyB,EAAE;AACvD;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,0BAA0B,EAAE;AACxD;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,uBAAuB,EAAE;AACrD;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,iBAAiB,EAAE;AAC/C;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,uBAAuB,EAAE;AACrD;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,sBAAsB,EAAE;AACpD;AACA;AACA,EAAC;AACD;AACA,kCAAiC,oBAAoB,EAAE;AACvD;AACA;AACA,EAAC;AACD;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,oBAAoB,EAAE;AAClD;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,2BAA2B,EAAE;AACzD,0CAAyC,8BAA8B,EAAE;AACzE;AACA,EAAC;AACD;AACA;AACA,6BAA4B,sBAAsB,EAAE;AACpD;AACA;AACA,EAAC;AACD;AACA;AACA,6BAA4B,sBAAsB,EAAE;AACpD;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6CAA4C,2BAA2B;AACvE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA,uBAAsB,sBAAsB;AAC5C;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;;AAED,EAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;;AAEA;AACA,iCAAgC;AAChC;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,2BAA0B;;AAE1B;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+DAA8D;;AAE9D;AACA,UAAS;AACT;AACA,qEAAoE;AACpE;;AAEA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET,2DAA0D,gBAAgB;AAC1E,qDAAoD,aAAa;AACjE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;;AAEA,kBAAiB;AACjB,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA,wCAAuC,KAAK;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAkD;AAClD;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6BAA4B,6BAA6B;AACzD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA4B,gBAAgB;AAC5C;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,iCAAgC,gBAAgB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA2B,OAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,KAAK;AACnB,eAAc,KAAK;AACnB;;AAEA;AACA,uCAAsC;AACtC,uBAAsB,kCAAkC;AACxD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,kBAAiB;AACjB;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,yCAAyC;;AAEtE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,wCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,eAAe;AAC7C;;AAEA;AACA;AACA,+BAA8B,aAAa;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,oCAAoC;AACvD;AACA;AACA,6BAA4B,mCAAmC;AAC/D;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;;;AAID;AACA;AACA;AACA;AACA,mDAAkD,YAAY;AAC9D,UAAS;AACT;AACA,MAAK;AACL;AACA,0BAAyB,mCAAmC;AAC5D;AACA,MAAK;AACL;AACA,yCAAwC,2BAA2B;AACnE;AACA,MAAK;AACL;AACA;AACA,sC;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA,6BAA4B,0BAA0B,EAAE;AACxD;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL,yBAAwB,mBAAmB;AAC3C,6BAA4B,mBAAmB;AAC/C;AACA,6BAA4B;AAC5B,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA,qDAAoD;;AAEpD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,mCAAkC,UAAU;AAC5C,kCAAiC;AACjC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wCAAuC,qBAAqB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAmC;AACnC,sBAAqB;AACrB,8BAA6B;AAC7B,gCAA+B;AAC/B;AACA;AACA;;AAEA;AACA;AACA,oCAAmC;AACnC,kCAAiC;AACjC,8BAA6B;AAC7B,mCAAkC;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAmC;AACnC,sBAAqB;AACrB,8BAA6B;AAC7B,mCAAkC;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oCAAmC;AACnC,kCAAiC;AACjC,8BAA6B;AAC7B,gCAA+B;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAmC;AACnC,8BAA6B;AAC7B,qBAAoB,QAAQ;AAC5B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oCAAmC;AACnC,8BAA6B;AAC7B,qBAAoB,QAAQ;AAC5B;AACA;;AAEA,EAAC;;AAED;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,wCAAuC,aAAa;AACpD;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kGAAiG,OAAO;AACxG;;AAEA;AACA,gGAA+F,OAAO;AACtG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,qCAAoC;;AAEpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,8BAA6B;AAC7B,cAAa;AACb,8BAA6B;AAC7B,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,oGAAmG;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qCAAoC,KAAK;AACzC;AACA;AACA;AACA;AACA,qCAAoC,KAAK;AACzC;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA,qBAAoB;;AAEpB;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAgB;AAChB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,4BAA2B,aAAa;AACxC;;AAEA,+CAA8C,OAAO;AACrD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,mCAAkC,qBAAqB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,mCAAkC,sBAAsB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;;AAGD,gCAA+B;AAC/B,iCAAgC;AAChC,iCAAgC;;AAEhC;AACA;AACA,EAAC;;AAED;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA,EAAC;;AAED;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA2B;AAC3B;AACA;;AAEA;;AAEA;;AAEA,4BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C,WAAW;AAC1D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kB;AACA;AACA,cAAa;AACb,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B;AAC9B,oBAAmB;AACnB,kBAAiB;AACjB,8FAA6F;AAC7F,gBAAe;AACf,EAAC;AACD,gBAAe;AACf,oBAAmB;AACnB,kBAAiB;AACjB,QAAO;AACP,WAAU;AACV,2BAA0B;AAC1B,uBAAsB;AACtB,wBAAuB;AACvB,2BAA0B;AAC1B,mBAAkB;AAClB,cAAa;AACb,EAAC;AACD,eAAc;AACd,oBAAmB;AACnB,6BAA4B;AAC5B,gCAA+B;AAC/B,wBAAuB;AACvB,iBAAgB;AAChB,EAAC;AACD,oCAAmC;AACnC,oBAAmB;AACnB,QAAO;AACP,SAAQ;AACR,UAAS;AACT,WAAU;AACV,aAAY;AACZ,uCAAsC;AACtC,eAAc;AACd,EAAC;AACD,6CAA4C;AAC5C,iCAAgC;AAChC,EAAC;AACD,mCAAkC;AAClC,yBAAwB;AACxB,EAAC;AACD,cAAa;AACb,oBAAmB;AACnB,mBAAkB;AAClB,aAAY;AACZ,QAAO;AACP,WAAU;AACV,SAAQ;AACR,iBAAgB;AAChB,YAAW;AACX,uBAAsB;AACtB,wBAAuB;AACvB,2BAA0B;AAC1B,mBAAkB;AAClB,EAAC;AACD,0BAAyB;AACzB,oBAAmB;AACnB,SAAQ;AACR,UAAS;AACT,EAAC;AACD,gCAA+B;AAC/B,wDAAuD;AACvD,EAAC;AACD,mBAAkB;AAClB,oBAAmB;AACnB,oBAAmB;AACnB,8BAA6B;AAC7B,EAAC;AACD,6BAA4B;AAC5B,wCAAuC,26BAA26B;AACl9B,8BAA6B;AAC7B,iCAAgC;AAChC,EAAC;AACD,+BAA8B;AAC9B,wCAAuC,ukBAAukB;AAC9mB,iCAAgC;AAChC,EAAC;AACD,4BAA2B;AAC3B,wCAAuC,+OAA+O;AACtR,iCAAgC;AAChC,EAAC;AACD,sCAAqC;AACrC,wCAAuC,+NAA+N;AACtQ,EAAC;AACD,iBAAgB;AAChB,oBAAmB;AACnB,UAAS;AACT,WAAU;AACV,YAAW;AACX,EAAC;AACD,uBAAsB;AACtB,oBAAmB;AACnB,cAAa;AACb,SAAQ;AACR,QAAO;AACP,EAAC;AACD,kBAAiB;AACjB,oBAAmB;AACnB,oBAAmB;AACnB,QAAO;AACP,EAAC;AACD,mBAAkB;AAClB,oBAAmB;AACnB,oBAAmB;AACnB,SAAQ;AACR,EAAC;AACD,oBAAmB;AACnB,oBAAmB;AACnB,cAAa;AACb,EAAC;AACD,kBAAiB;AACjB,oBAAmB;AACnB,YAAW;AACX,cAAa;AACb,aAAY;AACZ,YAAW;AACX,yBAAwB;AACxB,uBAAsB;AACtB,kBAAiB;AACjB,cAAa;AACb,cAAa;AACb,eAAc;AACd,kBAAiB;AACjB,eAAc;AACd,gBAAe;AACf,gBAAe;AACf,mBAAkB;AAClB,uBAAsB;AACtB,wBAAuB;AACvB,2BAA0B;AAC1B,mBAAkB;AAClB,EAAC;AACD,kCAAiC;AACjC,qBAAoB;AACpB,gBAAe;AACf,eAAc;AACd,YAAW;AACX,gBAAe;AACf,EAAC;AACD,aAAY;AACZ,YAAW;AACX,oBAAmB;AACnB,kBAAiB;AACjB,mBAAkB;AAClB,kBAAiB;AACjB,cAAa;AACb,aAAY;AACZ,6BAA4B;AAC5B,gCAA+B;AAC/B,wBAAuB;AACvB,sBAAqB;AACrB,EAAC;AACD,oBAAmB;AACnB,oBAAmB;AACnB,aAAY;AACZ,mBAAkB;AAClB,sBAAqB;AACrB,EAAC;AACD,kBAAiB;AACjB,0BAAyB;AACzB,EAAC;AACD,WAAU;AACV,uBAAsB;AACtB,oBAAmB;AACnB,EAAC;AACD,oBAAmB;AACnB,YAAW;AACX,EAAC;AACD,cAAa;AACb,YAAW;AACX,oBAAmB;AACnB,6BAA4B;AAC5B,gCAA+B;AAC/B,wBAAuB;AACvB;AACA,EAAC;AACD,gCAA+B;AAC/B,wBAAuB;AACvB,EAAC;AACD,qCAAoC;AACpC,sBAAqB;AACrB,0BAAyB;AACzB,EAAC;AACD,kCAAiC;AACjC,cAAa;AACb,EAAC;AACD,mCAAkC;AAClC,mCAAkC;AAClC,2BAA0B;AAC1B,EAAC;AACD,0CAAyC;AACzC,wBAAuB;AACvB,EAAC;AACD,4DAA2D;AAC3D,oBAAmB;AACnB,YAAW;AACX,EAAC;AACD,mCAAkC;AAClC,oBAAmB;AACnB,YAAW;AACX,EAAC;AACD,iCAAgC;AAChC,oBAAmB;AACnB,YAAW;AACX,EAAC;AACD,qCAAoC;AACpC,oBAAmB;AACnB,YAAW;AACX,EAAC;AACD,uCAAsC;AACtC,oBAAmB;AACnB,YAAW;AACX,6BAA4B;AAC5B,gCAA+B;AAC/B,wBAAuB;AACvB,EAAC;AACD,sBAAqB;AACrB,6BAA4B;AAC5B,gCAA+B;AAC/B,wBAAuB;AACvB,uBAAsB;AACtB,cAAa;AACb,kBAAiB;AACjB,wBAAuB;AACvB;AACA,sBAAqB;AACrB,sBAAqB,uLAAuL;AAC5M,wCAAuC;AACvC,8CAA6C;AAC7C,oBAAmB;AACnB,yBAAwB;AACxB,oBAAmB;AACnB,iBAAgB;AAChB,sBAAqB;AACrB,EAAC;AACD,sBAAqB;AACrB,EAAC;AACD,iBAAgB;AAChB;AACA,sBAAqB;AACrB,sBAAqB,mLAAmL;AACxM,EAAC;AACD,eAAc;AACd,wBAAuB;AACvB,iFAAgF;AAChF,+EAA8E;AAC9E,wBAAuB;AACvB,oBAAmB;AACnB,0CAAyC;AACzC,cAAa;AACb,iBAAgB;AAChB,kBAAiB;AACjB,iBAAgB;AAChB,iBAAgB;AAChB,6BAA4B;AAC5B,gCAA+B;AAC/B,wBAAuB;AACvB,iBAAgB;AAChB,kBAAiB;AACjB,uBAAsB;AACtB,qBAAoB;AACpB,oBAAmB;AACnB,qBAAoB;AACpB,wBAAuB;AACvB,sBAAqB;AACrB,EAAC;AACD,0CAAyC;AACzC,qBAAoB;AACpB,EAAC;AACD,mBAAkB;AAClB,6BAA4B;AAC5B,gCAA+B;AAC/B,wBAAuB;AACvB,uBAAsB;AACtB,eAAc;AACd,aAAY;AACZ,qBAAoB;AACpB,wCAAuC,+JAA+J;AACtM,8BAA6B;AAC7B,6BAA4B;AAC5B,oBAAmB;AACnB,+BAA8B;AAC9B,iBAAgB;AAChB,EAAC;AACD,wCAAuC;AACvC,uBAAsB;AACtB,EAAC;AACD,2BAA0B;AAC1B,wCAAuC,+JAA+J;AACtM,EAAC;AACD,8BAA6B;AAC7B,wCAAuC,uKAAuK;AAC9M,EAAC;AACD,yBAAwB;AACxB,sCAAqC;AACrC,4CAA2C;AAC3C,gDAA+C;AAC/C,EAAC;AACD,0BAAyB;AACzB,sCAAqC;AACrC,uCAAsC;AACtC,gDAA+C;AAC/C,EAAC;AACD,6BAA4B;AAC5B,wCAAuC,+HAA+H;AACtK,EAAC;AACD,qCAAoC;AACpC,wCAAuC,mIAAmI;AAC1K,EAAC;AACD,wCAAuC;AACvC,wCAAuC,+HAA+H;AACtK,EAAC;AACD,mCAAkC;AAClC,gDAA+C;AAC/C,4CAA2C;AAC3C,EAAC;AACD,oCAAmC;AACnC,gDAA+C;AAC/C,EAAC;AACD,+BAA8B;AAC9B,2BAA0B;AAC1B,uBAAsB;AACtB,EAAC;AACD,0CAAyC;AACzC,6CAA4C;AAC5C,qCAAoC;AACpC,YAAW;AACX,EAAC;AACD,gDAA+C;AAC/C,8CAA6C;AAC7C,sCAAqC;AACrC,WAAU;AACV,EAAC;AACD,iBAAgB;AAChB,4BAA2B;AAC3B,EAAC;AACD,YAAW;AACX,mBAAkB;AAClB,EAAC;AACD,wBAAuB;AACvB,qBAAoB;AACpB,EAAC;AACD,cAAa;AACb,oBAAmB;AACnB,EAAC;AACD,oBAAmB;AACnB,uCAAsC;AACtC,oBAAmB;AACnB,YAAW;AACX,EAAC;AACD,wBAAuB;AACvB,yCAAwC;AACxC,oBAAmB;AACnB,YAAW;AACX,EAAC;AACD;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,gG;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oB;AACA,U;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,kDAAiD,QAAQ;AACzD,8CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAsB;;AAEtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA;AACA,uDAAsD,qBAAqB;AAC3E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAiC;;AAEjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAgB;AAChB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C,YAAY;;AAExD;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kDAAiD;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kDAAiD,aAAa;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;;AAGD;AACA,sBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA,0BAAyB,2BAA2B,EAAE;AACtD;AACA,MAAK;AACL;AACA,0BAAyB,2BAA2B,EAAE;AACtD;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,qE;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA,8BAA6B,2CAA2C;AACxE;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,6BAA4B,qBAAqB;AACjD,0BAAyB,oCAAoC,EAAE;AAC/D;AACA;AACA;AACA,EAAC;;AAED;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,yCAAwC,eAAe;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAkC,yBAAyB;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uCAAsC,qBAAqB,iBAAiB;AAC5E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,kCAAiC,QAAQ;AACzC;;AAEA;AACA,0EAAyE;AACzE;AACA,wCAAuC,iCAAiC;AACxE,UAAS,YAAY;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAAyB,UAAU;AACnC;AACA;AACA,2BAA0B,yCAAyC;AACnE;AACA;AACA,2BAA0B,sCAAsC;AAChE;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;;AAEA;AACA;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA,oGAAmG;AACnG;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA,wBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yDAAwD,QAAQ;AAChE;AACA,uCAAsC;AACtC;AACA;AACA;AACA;AACA,kBAAiB;AACjB,yDAAwD,QAAQ;AAChE;AACA,uCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC,wBAAwB;AAC/D;AACA,2CAA0C;AAC1C;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,wCAAuC,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA,uCAAsC,gBAAgB;AACtD,4BAA2B,wBAAwB;AACnD,iDAAgD,sBAAsB;AACtE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,O;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB;;AAEnB;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET,MAAK;AACL;AACA,8C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA,6E;AACA;AACA;AACA;;AAEA,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,oBAAoB;AAC/C;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,+CAA8C,uBAAuB;;AAErE;AACA;AACA;;;AAGA;;AAEA,EAAC;;AAED;AACA;AACA;AACA,6BAA4B,4BAA4B,EAAE;AAC1D,eAAc,uCAAuC;AACrD;AACA;AACA,EAAC;AACD;AACA,6BAA4B,2BAA2B,EAAE;AACzD,eAAc,2CAA2C;AACzD;AACA;AACA,EAAC;AACD;AACA,6BAA4B,kCAAkC,EAAE;AAChE,eAAc,mDAAmD;AACjE;AACA;AACA,EAAC;AACD;AACA,6BAA4B,iCAAiC,EAAE;AAC/D,eAAc,uDAAuD;AACrE;AACA;AACA,EAAC;AACD;AACA,6BAA4B,uBAAuB,EAAE;AACrD,eAAc,2CAA2C;AACzD;AACA;AACA,EAAC;AACD;AACA,6BAA4B,sBAAsB,EAAE;AACpD,eAAc,6CAA6C;AAC3D;AACA;AACA,EAAC;AACD;AACA,6BAA4B,6BAA6B,EAAE;AAC3D,eAAc,uDAAuD;AACrE;AACA;AACA,EAAC;AACD;AACA,6BAA4B,4BAA4B,EAAE;AAC1D,eAAc,yDAAyD;AACvE;AACA;AACA,EAAC;AACD;AACA,6BAA4B,qCAAqC,EAAE;AACnE,eAAc,qCAAqC;AACnD;AACA,EAAC;AACD;AACA,6BAA4B,uBAAuB,EAAE;AACrD,eAAc,qCAAqC;AACnD;AACA,EAAC;AACD;AACA,6BAA4B,kBAAkB,EAAE;AAChD,eAAc,qCAAqC;AACnD;AACA;AACA,EAAC;AACD;AACA;AACA;AACA,6BAA4B,8BAA8B,EAAE;AAC5D;AACA;AACA,oCAAmC;AACnC,EAAC;;AAED;AACA;;AAEA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAkC,aAAa;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAoC,KAAK;AACzC;AACA;AACA;;AAEA,sCAAqC,gBAAgB;;AAErD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uCAAsC,YAAY;AAClD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iCAAgC,eAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,YAAY;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAmC,KAAK;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA0D;AAC1D;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,uDAAsD;AACtD,UAAS;AACT,oEAAmE;AACnE;AACA;AACA,O;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wDAAuD,wBAAwB;;AAE/E;AACA;;AAEA;AACA;AACA,oCAAmC,KAAK;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAgE,wBAAwB;AACxF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,U;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,oCAAmC,KAAK;AACxC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAgC,KAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC,KAAK;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iCAAgC,KAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,sCAAqC,mBAAmB;AACxD;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,EAAC;;;;AAID,EAAC;;AAED;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAmB;AACnB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAC;;AAED,EAAC;;AAED;AACA;;AAEA;AACA;AACA,yCAAwC;AACxC,qBAAoB;AACpB,aAAY;AACZ,EAAC;AACD,4BAA2B;AAC3B,YAAW;AACX,qBAAoB;AACpB,EAAC;AACD,oBAAmB;AACnB,2BAA0B;AAC1B,EAAC;AACD,UAAS;AACT,2BAA0B;AAC1B,cAAa;AACb,EAAC;AACD,sBAAqB;AACrB,cAAa;AACb,EAAC;AACD,yBAAwB;AACxB,2BAA0B;AAC1B,EAAC;AACD;AACA,uBAAsB;AACtB,aAAY;AACZ,EAAC;AACD,wBAAuB;AACvB,wBAAuB;AACvB,EAAC;AACD,oCAAmC;AACnC,yBAAwB;AACxB,EAAC;AACD,qCAAoC;AACpC,yBAAwB;AACxB,EAAC;AACD,oCAAmC;AACnC,wBAAuB;AACvB,EAAC;AACD,uBAAsB;AACtB,wCAAuC;AACvC,YAAW;AACX,EAAC;AACD,oCAAmC;AACnC,yBAAwB;AACxB,EAAC;AACD,oCAAmC;AACnC,wBAAuB;AACvB,EAAC;AACD;AACA,iCAAgC;AAChC,2BAA0B;AAC1B,EAAC;AACD,oCAAmC;AACnC,2BAA0B;AAC1B,EAAC;AACD,sBAAqB;AACrB,uBAAsB;AACtB,EAAC;AACD,uBAAsB;AACtB,0BAAyB;AACzB,EAAC;AACD,+BAA8B;AAC9B,yBAAwB;AACxB,EAAC;AACD,uCAAsC;AACtC,2BAA0B;AAC1B,EAAC;AACD,oCAAmC;AACnC,uBAAsB;AACtB,EAAC;AACD,wBAAuB;AACvB,0BAAyB;AACzB,EAAC;AACD,sBAAqB;AACrB,0BAAyB;AACzB,EAAC;AACD,4CAA2C;AAC3C,gBAAe;AACf,EAAC;AACD,uBAAsB;AACtB,wBAAuB;AACvB,EAAC;AACD,oBAAmB;AACnB,wBAAuB;AACvB,EAAC;AACD,4BAA2B;AAC3B,uBAAsB;AACtB,EAAC;AACD,gCAA+B;AAC/B;AACA,EAAC;AACD,2CAA0C;AAC1C,gCAA+B;AAC/B,EAAC;AACD,mDAAkD;AAClD,+BAA8B;AAC9B,oBAAmB;AACnB,EAAC;AACD,sCAAqC;AACrC,8BAA6B;AAC7B,EAAC;AACD,uCAAsC;AACtC,gCAA+B;AAC/B,EAAC;AACD,yCAAwC;AACxC,uBAAsB;AACtB,sCAAqC;AACrC,EAAC;AACD,6CAA4C;AAC5C,iCAAgC;AAChC,EAAC;AACD,kCAAiC;AACjC,4BAA2B;AAC3B,EAAC;AACD,+CAA8C;AAC9C,gCAA+B;AAC/B,sCAAqC;AACrC,EAAC;AACD,4BAA2B;AAC3B,kCAAiC,kIAAkI;AACnK,EAAC;AACD;;AAEA;AACA;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,O;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2CAA0C,MAAM,OAAO,aAAa;;AAEpE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,2CAA0C,MAAM,OAAO,aAAa;AACpE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C,MAAM,OAAO,WAAW;AACtE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,4BAA2B,WAAW;AACtC;AACA;;AAEA;AACA;AACA;AACA;AACA,+DAA8D,iBAAiB;AAC/E;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA,EAAC;;;AAGD;;AAEA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wCAAuC,qBAAqB;AAC5D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,qBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,sDAAqD,0BAA0B;AAC/E;;;AAGA;AACA,4BAA2B;AAC3B,6BAA4B;AAC5B,wBAAuB;AACvB;AACA,MAAK;AACL,oBAAmB;AACnB,+BAA8B;AAC9B,kCAAiC;AACjC,uBAAsB;AACtB,4BAA2B;AAC3B,+BAA8B;AAC9B,MAAK;AACL,4DAA2D;AAC3D;AACA,MAAK;AACL,gEAA+D;AAC/D;AACA,MAAK;AACL,0DAAyD;AACzD;AACA,MAAK;AACL,sDAAqD;AACrD;AACA,MAAK;AACL,0BAAyB;AACzB,4BAA2B;AAC3B,2BAA0B;AAC1B,iDAAgD;AAChD,mDAAkD;AAClD,kDAAiD;AACjD,mBAAkB;AAClB,MAAK;AACL;;AAEA,EAAC;;AAED;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAwC;AACxC,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,cAAa;;;AAGb;AACA,qB;;;;;;AC32jBA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAoC;;AAEpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB,MAAM;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA,+BAA8B;AAC9B,qBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+BAA8B;AAC9B,qBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAkC;;AAElC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;;AAET;AACA;AACA,IAAG;;;;;;;;;AC7UH,oNAAmN,YAAY,83CAA83C,6BAA6B,0BAA0B,kCAAkC,uDAAuD,sUAAsU,6BAA6B,0BAA0B,kCAAkC,uDAAuD,2TAA2T,8BAA8B,0BAA0B,mCAAmC,wDAAwD,yUAAyU,gCAAgC,0BAA0B,qCAAqC,0DAA0D,geAAge,qb;;;;;;ACAnlH,6DAA4D,sCAAsC,sSAAsS,YAAY,kL;;;;;;ACApZ,oMAAmM,oEAAoE,sC;;;;;;ACAvQ,kFAAiF,iBAAiB,4ZAA4Z,wEAAwE,8BAA8B,msEAAmsE,kCAAkC,8HAA8H,6BAA6B,ukBAAukB,kCAAkC,wHAAwH,6BAA6B,0SAA0S,mCAAmC,yHAAyH,8BAA8B,4zBAA4zB,4BAA4B,4V;;;;;;ACA9hK,yOAAwO,2FAA2F,gEAAgE,yCAAyC,+3B;;;;;;ACA5a,4lB;;;;;;ACAA;;;;;;;;mCCAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;;;AAGA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wCAAuC,IAAI,IAAI,OAAO;AACtD;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,iBAAgB,SAAS;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;AACA,IAAG;AACH,EAAC;;;;;;;mCC9ED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCrBD;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCCRD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCC3BD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8CAA6C,IAAI,IAAI,OAAO;AAC5D;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,iBAAgB,SAAS;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB,6CAA6C;AAChE,0BAAyB;AACzB;;AAEA;AACA;AACA;AACA,+EAA8E,IAAI,IAAI,cAAc;AACpG;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;AACA,IAAG;AACH,EAAC;;;;;;;mCCxFD;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCC3CD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCC/BD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA0B;AAC1B;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA,EAAC,uJ;;;;;;mCCvCD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAAyB,yBAAyB,YAAY,SAAS,eAAe,wBAAwB;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,UAAU;AAC1B;AACA,iBAAgB,OAAO;AACvB;AACA;AACA,iBAAgB,OAAO;AACvB,sFAAqF;AACrF;AACA;AACA;AACA;AACA,qBAAoB,WAAW;AAC/B;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCvED;AACA;AACA;AACA;;AAEA;AACA,+BAA8B,kDAAkD;;AAEhF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCpDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCPD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCrDD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,UAAS;;;AAGT;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,YAAW;;AAEX;AACA,UAAS;;AAET;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCClHD;AACA;;AAEA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCC1CD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCxCD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;;AAEX;AACA;AACA,uBAAsB,OAAO;AAC7B,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH,EAAC;;;;;;;mCC3GD;AACA;;AAEA;;AAEA;AACA;AACA;AACA,gBAAe,IAAI;AACnB,gBAAe,mBAAmB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCClDD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAqF;AACrF;;AAEA;AACA;AACA,EAAC;;;;;;;mCCpBD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,mCAAkC;AAClC,kCAAiC,gCAAgC,kCAAkC;;AAEnG;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC;;;;;;;mCC1HD;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA,sBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,QAAO;;AAEP;;AAEA;;AAEA;AACA,EAAC,uJ;;;;;;mCC3DD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;AACA;AACA,EAAC;;;;;;;mCChDD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCC7DD;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCCdD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAkB,YAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,sCAAsC;AACvD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,kBAAiB,SAAS;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAsB,YAAY;AAClC,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,+BAA8B,gBAAgB,EAAE;;AAEhD;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCzID;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B,mBAAkB,YAAY;AAC9B,uBAAsB,MAAM;AAC5B,sBAAqB,SAAS;AAC9B,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0CAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,mBAAkB,YAAY;AAC9B,qBAAoB,SAAS;AAC7B,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,mBAAkB,YAAY;AAC9B,4BAA2B,MAAM;AACjC,qBAAoB,SAAS;AAC7B,kBAAiB,aAAa;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,iBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC;;;;;;;mCCzLD;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA,wCAAuC;;AAEvC;AACA,wCAAuC;;AAEvC;AACA,wCAAuC;;AAEvC;AACA;AACA;AACA,EAAC;;;;;;;AC1BD;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA,cAAa,EAAE;AACf;AACA,mBAAkB,GAAG;AACrB,mBAAkB,IAAI;AACtB;AACA,iCAAgC,GAAG;AACnC;AACA,2CAA0C,GAAG;AAC7C,mDAAkD,GAAG,sBAAsB,GAAG;AAC9E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAiC,GAAG;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAuB;;AAEvB;AACA;AACA;;AAEA,qBAAoB;AACpB,kBAAiB,GAAG,GAAG,GAAG;AAC1B;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAuB;AACvB;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,gCAA+B,EAAE;AACjC;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAiB,uBAAuB;AACxC;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;;AAEA,kBAAiB,uBAAuB;AACxC;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA,aAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2CAA0C,gBAAgB;AAC1D,gCAA+B,IAAI;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAiB,uBAAuB;AACxC;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;;AAEA,kBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,GAAG;AACb;AACA,oCAAmC,GAAG;AACtC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yBAAwB;;AAExB;AACA;AACA;;AAEA,2BAA0B;AAC1B;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA,sBAAqB;AACrB;AACA,oCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA,yBAAwB;AACxB,4BAA2B,GAAG;AAC9B,oCAAmC,GAAG;AACtC,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B;AAC9B;AACA;AACA;AACA,+BAA8B;AAC9B;AACA;AACA;AACA,kBAAiB,EAAE;AACnB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAQ,OAAO;AACf;AACA;AACA;AACA;AACA,0BAAyB;AACzB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB,8BAA8B;AAC/C,kBAAiB;AACjB;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA,kBAAiB,6BAA6B;AAC9C;;AAEA;AACA,oBAAmB,gBAAgB;AACnC;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mCAAkC,kBAAkB;AACpD,yBAAwB;AACxB,yBAAwB;AACxB,2BAA0B;AAC1B,0BAAyB;AACzB;;AAEA;AACA,kCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAkB,4BAA4B;;AAE9C;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA,WAAU,mBAAmB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA;AACA,4BAA2B;AAC3B;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,EAAC;AACD,sBAAqB,eAAe,EAAE;AACtC,EAAC;AACD;AACA;;AAEA,EAAC;AACD;AACA,EAAC;;;;;;;;ACvvCD,8F;;;;;;ACAA,+F;;;;;;ACAA,qF;;;;;;;ACAA,gG;;;;;;ACAA,+F;;;;;;ACAA,+F;;;;;;ACAA,gG;;;;;;ACAA,6F;;;;;;ACAA,yF;;;;;;ACAA,uF;;;;;;ACAA,sF;;;;;;ACAA,0G;;;;;;ACAA,sF;;;;;;ACAA,wF;;;;;;ACAA,qF;;;;;;ACAA,sF;;;;;;ACAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;AACA,qDAAoD,aAAa,aAAa,cAAc;AAC5F,0CAAyC,kBAAkB,iCAAiC;AAC5F,+DAA8D,yBAAyB;AACvF,2DAA0D,sBAAsB,YAAY;AAC5F,wDAAuD,WAAW;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC,oBAAoB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4EAA2E;AAC3E,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gDAA+C;AAC/C;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;;AAEf;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;;AAEA;AACA;AACA,YAAW;AACX;AACA,YAAW;;AAEX;AACA;AACA;AACA,YAAW;;AAEX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;;;;;;AC1NA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAoE;AACpE,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf,cAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA,MAAK;AACL,EAAC;;;;;;;ACxFD;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,8BAA6B;AAC7B,cAAa;AACb;AACA,gCAA+B;AAC/B,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,EAAE,cAAc,EAAE;AAC7D,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,EAAC;;AAED;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,uBAAsB;AACtB;;AAEA;AACA;AACA,wCAAuC;;AAEvC;;AAEA;AACA,qDAAoD,yBAAyB;;AAE7E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,EAAC;;AAED;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA,mDAAkD;AAClD,0DAAyD,KAAK;AAC9D,cAAa;AACb,2BAA0B;AAC1B,yEAAwE;AACxE;AACA,kCAAiC;AACjC;AACA;AACA,kBAAiB;AACjB,0EAAyE;AACzE;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA,UAAS,oBAAoB;AAC7B;AACA;AACA,gCAA+B;AAC/B,8DAA6D,IAAI,2CAA2C;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,+CAA8C;AAC9C;AACA;AACA;AACA,iCAAgC;AAChC,iEAAgE,yCAAyC,IAAI;AAC7G;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA,mDAAkD;AAClD;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,kEAAiE,2CAA2C;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,kEAAiE,2CAA2C;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,qCAAoC;AACpC;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC;AACpC,4CAA2C,GAAG;AAC9C,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,mCAAkC,QAAQ;AAC1C,sCAAqC,KAAK;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,4BAA2B;;AAE3B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,2CAA0C;AAC1C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA;;;AAGA;AACA,EAAC;;AAED;AACA,EAAC;;;;;;;wRC/pBD;AACA;AACA;;AAEA;AACA;AACA,iCAAgC;;AAEhC,EAAC;;AAED;AACA;AACA,MAAK;AACL;AACA;;AAEA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,mBAAmB;AACjC;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA,uCAAsC;AACtC;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,EAAC;;AAED,EAAC;;AAED;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA,EAAC;;AAED;AACA;AACA;AACA,kDAAiD;AACjD,wDAAuD;AACvD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,YAAY;AAC1B,eAAc,kBAAkB;AAChC;AACA,eAAc,OAAO;AACrB;AACA,iBAAgB,OAAO;AACvB;AACA;AACA,iBAAgB,SAAS;AACzB;AACA,iBAAgB,SAAS;AACzB;AACA,iBAAgB,SAAS;AACzB;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,UAAU;;AAErB;AACA;AACA;AACA,YAAW,UAAU;;AAErB;AACA;;;AAGA;AACA;AACA;;AAEA,0CAAyC,eAAe;AACxD,0CAAyC,eAAe;AACxD,0CAAyC,eAAe;AACxD,0CAAyC,eAAe;;AAExD;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;;AAGA;AACA;AACA;;;AAGA;AACA;;AAEA,0CAAyC,QAAQ;AACjD;AACA;AACA;AACA;;AAEA,0DAAyD,QAAQ;AACjE;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;;;AAGA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA,EAAC;;AAED,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sCAAqC,+BAA+B,EAAE;AACtE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,2BAA2B,EAAE;AACpD;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED,EAAC;;AAED;AACA;AACA,MAAK;AACL;AACA;;AAEA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B,sCAAqC;AACrC;AACA;;AAEA;AACA,oBAAmB;AACnB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc,YAAY;AAC1B;AACA,eAAc,OAAO;AACrB;AACA,kBAAiB,mBAAmB;AACpC;AACA;AACA,kBAAiB,OAAO;AACxB;AACA,kBAAiB,QAAQ;AACzB;AACA,kBAAiB,gBAAgB;AACjC;AACA;AACA,kBAAiB,YAAY;AAC7B;AACA,kBAAiB,OAAO;AACxB;AACA,kBAAiB,OAAO;AACxB;AACA,kBAAiB,OAAO;AACxB,gBAAe,OAAO;AACtB;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0DAAyD;AACzD,0DAAyD;;AAEzD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAS;;AAET,wBAAuB,cAAc;AACrC;;;AAGA;AACA;;AAEA,gCAA+B,aAAa;;AAE5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,6BAA4B,QAAQ;;AAEpC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,EAAC;;AAED,EAAC;;AAED;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,sBAAqB;AACrB;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc,YAAY;AAC1B,eAAc,OAAO;AACrB;AACA,kBAAiB,mBAAmB;AACpC;AACA;AACA,kBAAiB,MAAM;AACvB;AACA;AACA,kBAAiB,MAAM;AACvB;AACA;AACA,kBAAiB,OAAO;AACxB;AACA,kBAAiB,OAAO;AACxB;AACA,kBAAiB,OAAO;AACxB,kBAAiB,OAAO;AACxB;AACA,kBAAiB,OAAO;AACxB,kBAAiB,OAAO;AACxB;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,4BAA2B,YAAY,EAAE;AACzC,kBAAiB,QAAQ;AACzB;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA,qBAAoB,gBAAgB;AACpC;AACA;AACA,kBAAiB,OAAO;AACxB,qBAAoB,QAAQ;AAC5B;AACA,qBAAoB,MAAM;AAC1B;AACA,qBAAoB,OAAO;AAC3B;AACA,qBAAoB,OAAO;AAC3B;AACA,qBAAoB,MAAM;AAC1B;AACA;AACA,qBAAoB,MAAM;AAC1B;AACA;AACA,qBAAoB,SAAS;AAC7B;AACA,qBAAoB,SAAS;AAC7B;AACA,qBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA,yCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;;;AAIA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,mBAAmB;AACjC;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,eAAc,MAAM;AACpB,eAAc,MAAM;AACpB,gBAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,mBAAmB;AACjC;AACA,eAAc,MAAM;AACpB,gBAAe,YAAY;AAC3B;AACA;AACA;AACA;;AAEA,+BAA8B,aAAa;;AAE3C;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,mBAAmB;AACjC;AACA,eAAc,MAAM;AACpB,gBAAe,YAAY;AAC3B;AACA;AACA;AACA;;AAEA,+BAA8B,aAAa;;AAE3C;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,YAAY;AAC1B;AACA,gBAAe,YAAY;AAC3B;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,YAAY;AAC1B;AACA,eAAc,OAAO;AACrB;AACA;AACA,eAAc,OAAO;AACrB,eAAc,SAAS;AACvB,gBAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,YAAY;AAC1B;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,gBAAe,YAAY;AAC3B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA,eAAc,OAAO;AACrB;AACA,eAAc,YAAY;AAC1B,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA,qDAAoD,QAAQ;AAC5D;AACA;AACA,UAAS;;AAET;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA,eAAc,OAAO;AACrB;AACA,eAAc,YAAY;AAC1B,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAuB,YAAY;AACnC;AACA,4BAA2B,aAAa;AACxC;AACA;AACA;AACA,kBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,YAAY;AAC1B,eAAc,iBAAiB;AAC/B;AACA,eAAc,SAAS;AACvB,gBAAe,MAAM;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,SAAS;AACvB,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,YAAY;AAC1B;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;;;AAGA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,eAAc,mBAAmB;AACjC;AACA,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc,uCAAuC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA,eAAc,oBAAoB;AAClC;AACA;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA,sCAAqC,aAAa;AAClD;AACA,UAAS;AACT;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA,eAAc,oBAAoB;AAClC;AACA,gBAAe,MAAM;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA,kDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb,YAAW;;AAEX;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,cAAa;AACb;AACA,UAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA,2CAA0C,KAAK;;AAE/C;AACA,yCAAwC,KAAK;AAC7C,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB,eAAc,OAAO;AACrB;AACA;AACA;;AAEA;;AAEA;AACA;AACA,iDAAgD;;AAEhD;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB,eAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;;AAEb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,SAAS;AACvB;AACA,eAAc,SAAS;AACvB;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA,oBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,SAAS;AACvB;AACA,eAAc,SAAS;AACvB;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA,oBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,eAAc,QAAQ;AACtB;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,mEAAkE;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc,mBAAmB;AACjC;AACA,eAAc,OAAO;AACrB,gBAAe,QAAQ;AACvB;AACA;AACA,+CAA8C,cAAc;AAC5D;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,gBAAe,oBAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,gBAAe,YAAY;AAC3B;AACA;AACA,6DAA4D,mBAAmB;AAC/E;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA,eAAc,OAAO;AACrB;AACA,gBAAe,MAAM;AACrB;AACA;AACA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA,gBAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA,6BAA4B;AAC5B;;AAEA;AACA;AACA,cAAa;AACb,UAAS;;AAET,uBAAsB,cAAc;;AAEpC;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA,gBAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B;AAC5B;;AAEA;AACA;AACA,cAAa;AACb,UAAS;;AAET,uBAAsB,cAAc;;AAEpC;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA,eAAc,MAAM;AACpB;AACA,eAAc,OAAO;AACrB,gBAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,uBAAsB;;AAEtB,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAAyC,aAAa,EAAE;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAa;AACb,UAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,gBAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,gBAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA,0CAAyC,QAAQ;AACjD;AACA;AACA,cAAa;AACb;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,YAAY;AAC1B;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,YAAY;AAC1B,eAAc,OAAO;AACrB,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wCAAuC,cAAc,EAAE;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA,UAAS;;AAET;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA,eAAc,OAAO;AACrB,gBAAe,MAAM;AACrB;AACA;AACA;;AAEA,4BAA2B,cAAc;;AAEzC;AACA;AACA;AACA;;AAEA,wBAAuB,cAAc;;AAErC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,gBAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,UAAS;;AAET,uBAAsB,cAAc;;AAEpC;AACA;AACA;AACA,oBAAmB,gBAAgB;AACnC;;AAEA,+CAA8C,UAAU;AACxD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uCAAsC,gBAAgB;AACtD;AACA;AACA;AACA;;AAEA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,YAAY;AAC1B,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA,cAAa;AACb,UAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC,cAAc;;AAE9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B;AAC5B;AACA,UAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA,iCAAgC,YAAY;AAC5C;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA,iCAAgC,YAAY;AAC5C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,gBAAe,OAAO,0BAA0B,oBAAoB;AACpE;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;;AAEA,oBAAmB,yBAAyB;AAC5C;AACA;AACA;;AAEA,oBAAmB,yBAAyB;AAC5C;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA,eAAc,SAAS;AACvB;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA,eAAc,SAAS;AACvB;AACA,gBAAe,MAAM;AACrB;AACA;AACA,wBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA,eAAc,SAAS;AACvB;AACA,gBAAe,MAAM;AACrB;AACA;AACA,wBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;;;;AAIA;AACA;AACA,wBAAuB,QAAQ;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC,OAAO;AACxC;AACA;AACA,cAAa;AACb;AACA,2DAA0D,YAAY;AACtE;AACA;AACA;AACA;AACA;AACA,kCAAiC,OAAO;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,eAAc,SAAS;AACvB;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,eAAc,SAAS;AACvB;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC,QAAQ;AAC3C,6BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,4BAA2B,QAAQ;AACnC,wEAAuE;AACvE;AACA;AACA,2DAA0D,EAAE;AAC5D;;AAEA;AACA,4BAA2B,QAAQ;AACnC,yEAAwE;AACxE;AACA;AACA,4DAA2D,EAAE;AAC7D;;AAEA,wBAAuB,gBAAgB;AACvC,qEAAoE;AACpE;AACA,+DAA8D,EAAE;AAChE;;AAEA,wBAAuB,iBAAiB;AACxC,qEAAoE;AACpE;AACA,+DAA8D,EAAE;AAChE;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,mDAAkD,UAAU;AAC5D,UAAS;AACT;;;AAGA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,SAAS;AACjC;AACA,6BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;;AAErB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA,+BAA8B,iBAAiB;AAC/C,oCAAmC,QAAQ;AAC3C;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA,sCAAqC,eAAe;AACpD,oCAAmC,QAAQ;AAC3C;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;;AAEA,EAAC;;;;;;;ACt5HD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAY,aAAa,cAAc,wMAAwM,aAAa,kCAAkC,kDAAkD,kBAAkB,yBAAyB,iBAAiB,wBAAwB,iBAAiB,+BAA+B,kBAAkB,0BAA0B,sBAAsB,QAAQ,uFAAuF,mLAAmL,sBAAsB,gGAAgG,uBAAuB,sCAAsC,0FAA0F,kBAAkB,8FAA8F,gBAAgB,0CAA0C,kCAAkC,IAAI,sHAAsH,mDAAmD,oEAAoE,yBAAyB,yBAAyB,IAAI,4DAA4D,qBAAqB;AACznD;AACA;AACA;AACA;AACA,+CAA8C,yBAAyB,qCAAqC,wBAAwB,qCAAqC,uBAAuB,2CAA2C,wBAAwB,4EAA4E,mBAAmB,oHAAoH,mBAAmB,6NAA6N,sBAAsB,uJAAuJ,mBAAmB,6BAA6B,wBAAwB,0GAA0G,yBAAyB,uDAAuD,2GAA2G,2BAA2B,wMAAwM,mBAAmB,kDAAkD,sCAAsC,0BAA0B,0JAA0J,oBAAoB,4XAA4X,+BAA+B,IAAI,qCAAqC,yGAAyG,6GAA6G,8HAA8H,mBAAmB,IAAI,kCAAkC,IAAI,8EAA8E,kEAAkE,0BAA0B,iIAAiI,yJAAyJ,4BAA4B,6B;;;;;;ACb3iG;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,uCAAuC,MAAM,SAAS,SAAS,qCAAqC,OAAO,yDAAyD,UAAU,gIAAgI,WAAW,QAAQ,SAAS,uCAAuC,iBAAiB,SAAS,SAAS,oCAAoC,UAAU,SAAS,4HAA4H,WAAW,mEAAmE,oHAAoH,YAAY,SAAS,2CAA2C,cAAc,SAAS,0CAA0C,OAAO,SAAS,SAAS,MAAM,kCAAkC,SAAS,6DAA6D,UAAU,qHAAqH,WAAW,MAAM,SAAS,yFAAyF,SAAS,SAAS,wCAAwC,UAAU,kCAAkC,iDAAiD,sKAAsK,iEAAiE,mBAAmB,2EAA2E,kBAAkB,mCAAmC,oBAAoB,GAAG,oBAAoB,uFAAuF,oBAAoB,wBAAwB,kBAAkB,GAAG,qBAAqB,gBAAgB,sKAAsK,wBAAwB,yJAAyJ,wBAAwB,qBAAqB,+BAA+B,+BAA+B,4BAA4B,EAAE,4BAA4B,gCAAgC,yCAAyC,SAAS,gBAAgB,0BAA0B,8CAA8C,6BAA6B,qBAAqB,4EAA4E,4DAA4D,mEAAmE,0CAA0C,0BAA0B,qHAAqH,wHAAwH,qBAAqB,qUAAqU,gBAAgB,qEAAqE,mDAAmD,qMAAqM,wBAAwB,wfAAwf,6BAA6B,+BAA+B,gGAAgG,8GAA8G,uBAAuB,2BAA2B,oUAAoU,yBAAyB,oEAAoE,0LAA0L,0BAA0B,SAAS,uBAAuB,oBAAoB,0BAA0B,8BAA8B,4IAA4I,8BAA8B,sGAAsG,0BAA0B,sBAAsB,mDAAmD,wBAAwB,0BAA0B,iGAAiG,gEAAgE,2BAA2B,iCAAiC,2BAA2B,uHAAuH,2BAA2B,sBAAsB,gEAAgE,EAAE,uCAAuC,0BAA0B,2BAA2B,kKAAkK,4BAA4B,6BAA6B,oFAAoF,0BAA0B,0JAA0J,mHAAmH,IAAI,2CAA2C,4DAA4D,4MAA4M,+BAA+B,+EAA+E,IAAI,gEAAgE,yBAAyB,8BAA8B,iCAAiC,qEAAqE,4BAA4B,kCAAkC,mCAAmC,sDAAsD,kEAAkE,+DAA+D,EAAE,8DAA8D,IAAI,qCAAqC,+BAA+B,8JAA8J,kCAAkC,gFAAgF,8GAA8G,8BAA8B,+DAA+D,oCAAoC,4EAA4E,mCAAmC,2IAA2I,8BAA8B,iMAAiM,sCAAsC,EAAE,mCAAmC,2FAA2F,0BAA0B,kGAAkG,8BAA8B,uEAAuE,yDAAyD,yCAAyC,SAAS,eAAe,yBAAyB,0BAA0B,kGAAkG,0BAA0B,kFAAkF,iCAAiC,2BAA2B,0LAA0L,4BAA4B,QAAQ,4OAA4O,kBAAkB,kCAAkC,iBAAiB,iEAAiE,0BAA0B,+BAA+B,8BAA8B,MAAM,sLAAsL,0BAA0B,2BAA2B,4HAA4H,kBAAkB,2CAA2C,SAAS,cAAc,0BAA0B,wHAAwH,qBAAqB,gOAAgO,4BAA4B,2FAA2F,wBAAwB,gXAAgX,4BAA4B,OAAO,yBAAyB,0BAA0B,8HAA8H,0BAA0B,eAAe,0HAA0H,uBAAuB,6FAA6F,8CAA8C,SAAS,iBAAiB,UAAU,cAAc,iGAAiG,WAAW,0BAA0B,gKAAgK,wBAAwB,4MAA4M,8BAA8B,yEAAyE,4DAA4D,4BAA4B,kFAAkF,8HAA8H,wBAAwB,2CAA2C,SAAS,cAAc,UAAU,cAAc,iGAAiG,yBAAyB,0BAA0B,0JAA0J,wBAAwB,2MAA2M,8BAA8B,wFAAwF,4DAA4D,0BAA0B,iEAAiE,uIAAuI,uHAAuH,IAAI,uCAAuC,SAAS,cAAc,UAAU,uDAAuD,0BAA0B,gFAAgF,qBAAqB,sFAAsF,oDAAoD,wEAAwE,gBAAgB,qEAAqE,mDAAmD,uHAAuH,wBAAwB,wXAAwX,0BAA0B,eAAe,sKAAsK,8DAA8D,+GAA+G,qBAAqB,+EAA+E,8BAA8B,6CAA6C,uBAAuB,EAAE,yDAAyD,mBAAmB,iCAAiC,yBAAyB,oCAAoC,qBAAqB,mBAAmB,oFAAoF,wBAAwB,mBAAmB,sFAAsF,wBAAwB,eAAe,YAAY,mCAAmC,eAAe,iBAAiB,kQAAkQ,6BAA6B,2EAA2E,oDAAoD,kCAAkC,mGAAmG,mBAAmB,+BAA+B,SAAS,oBAAoB,4EAA4E,EAAE,0BAA0B,kCAAkC,qBAAqB,iBAAiB,wLAAwL,wBAAwB,iBAAiB,6HAA6H,0BAA0B,oDAAoD,yBAAyB,yEAAyE,kCAAkC,mBAAmB,IAAI,8FAA8F,QAAQ,cAAc,IAAI,2JAA2J,6BAA6B,sBAAsB,oCAAoC,EAAE,2IAA2I,2BAA2B,eAAe,kOAAkO,sBAAsB,6CAA6C,2BAA2B,eAAe,0MAA0M,4BAA4B,gEAAgE,wWAAwW,8BAA8B,wCAAwC,0BAA0B,EAAE,mCAAmC,+DAA+D,6DAA6D,eAAe,uTAAuT,cAAc,8GAA8G,cAAc,2CAA2C,gGAAgG,+BAA+B,8BAA8B,gCAAgC,4EAA4E,4CAA4C,oCAAoC,uIAAuI,8DAA8D,8BAA8B,iEAAiE,GAAG,mBAAmB,sCAAsC,SAAS,wBAAwB,8FAA8F,4BAA4B,gGAAgG,EAAE,0BAA0B,wCAAwC,qBAAqB,kBAAkB,sIAAsI,wBAAwB,kBAAkB,0CAA0C,qCAAqC,yCAAyC,IAAI,+CAA+C,2FAA2F,eAAe,0BAA0B,oDAAoD,yBAAyB,4GAA4G,+BAA+B,iCAAiC,6BAA6B,sBAAsB,oCAAoC,EAAE,2DAA2D,yBAAyB,2HAA2H,2BAA2B,8HAA8H,gCAAgC,eAAe,8CAA8C,sBAAsB,+CAA+C,2BAA2B,+BAA+B,wEAAwE,8BAA8B,eAAe,iCAAiC,mBAAmB,sBAAsB,mBAAmB,6CAA6C,6BAA6B,8CAA8C,6DAA6D,gCAAgC,yBAAyB,uBAAuB,uBAAuB,IAAI,qHAAqH,gCAAgC,6DAA6D,qDAAqD,+DAA+D,8BAA8B,mBAAmB,yMAAyM,mBAAmB,mGAAmG,IAAI,sEAAsE,0DAA0D,qBAAqB,MAAM,kIAAkI,wBAAwB,0GAA0G,gBAAgB,kCAAkC,yCAAyC,IAAI,yCAAyC,qCAAqC,8DAA8D,IAAI,4CAA4C,qCAAqC,yGAAyG,mBAAmB,0CAA0C,6BAA6B,8BAA8B,6DAA6D,gCAAgC,8DAA8D,+FAA+F,mCAAmC,qEAAqE,0CAA0C,mBAAmB,oCAAoC,6DAA6D,qBAAqB,qDAAqD,0BAA0B,kCAAkC,4HAA4H,8DAA8D,8BAA8B,iEAAiE,EAAE,gBAAgB,yBAAyB,4BAA4B,IAAI,mCAAmC,SAAS,yBAAyB,8BAA8B,2CAA2C,EAAE,yBAAyB,6CAA6C,QAAQ,YAAY,IAAI,mFAAmF,sBAAsB,mBAAmB,4BAA4B,MAAM,kEAAkE,4DAA4D,8DAA8D,KAAK,gCAAgC,MAAM,qIAAqI,4BAA4B,oCAAoC,wJAAwJ,wCAAwC,+CAA+C,sBAAsB,sBAAsB,gDAAgD,gDAAgD,UAAU,KAAK,2EAA2E,SAAS,mCAAmC,+EAA+E,kCAAkC,gEAAgE,8FAA8F,0CAA0C,0CAA0C,2CAA2C,gDAAgD,+BAA+B,OAAO,YAAY,IAAI,sEAAsE,UAAU,qBAAqB,sBAAsB,qCAAqC,+KAA+K,mCAAmC,SAAS,0BAA0B,SAAS,wBAAwB,4IAA4I,4CAA4C,MAAM,iBAAiB,qXAAqX,mBAAmB,iFAAiF,iMAAiM,SAAS,qBAAqB,gGAAgG,+BAA+B,uGAAuG,6BAA6B,eAAe,gFAAgF,sBAAsB,sCAAsC,+BAA+B,kGAAkG,4BAA4B,iDAAiD,mCAAmC,8CAA8C,oBAAoB,+BAA+B,oBAAoB,mDAAmD,wBAAwB,8GAA8G,sGAAsG,WAAW,8FAA8F,+LAA+L,0BAA0B,2SAA2S,eAAe,yCAAyC,IAAI,4FAA4F,mDAAmD,sCAAsC,aAAa,iBAAiB,oEAAoE,4GAA4G,6IAA6I,2BAA2B,wDAAwD;AAClj+B,EAAC,8BAA8B,0MAA0M,+BAA+B,wLAAwL,gCAAgC,2JAA2J,4BAA4B,qEAAqE,qCAAqC,IAAI,uFAAuF,2BAA2B,aAAa,6BAA6B,YAAY,IAAI,0FAA0F,wFAAwF,4BAA4B,gCAAgC,GAAG,gCAAgC,iGAAiG,ubAAub,gCAAgC,2VAA2V,4BAA4B,uBAAuB,0LAA0L,oBAAoB,qFAAqF,2BAA2B,meAAme,4BAA4B,wDAAwD,uFAAuF,wBAAwB,8FAA8F,wBAAwB,kGAAkG,kCAAkC,SAAS,YAAY,UAAU,WAAW,WAAW,aAAa,UAAU,WAAW,wBAAwB,iFAAiF,wBAAwB,mFAAmF,6BAA6B,QAAQ,mIAAmI,EAAE,+HAA+H,EAAE,uIAAuI,EAAE,2HAA2H,EAAE,2HAA2H,EAAE,wBAAwB,QAAQ,mJAAmJ,EAAE,2HAA2H,EAAE,wBAAwB,qBAAqB,sHAAsH,kCAAkC,SAAS,YAAY,UAAU,MAAM,qBAAqB,2GAA2G,UAAU,mBAAmB,wBAAwB,kKAAkK,mGAAmG,gJAAgJ,6BAA6B,gCAAgC,QAAQ,4DAA4D,yEAAyE,8CAA8C,EAAE,gEAAgE,eAAe,gDAAgD,EAAE,uBAAuB,QAAQ,mIAAmI,EAAE,yIAAyI,EAAE,wBAAwB,kDAAkD,6GAA6G,0BAA0B,4HAA4H,oBAAoB,iGAAiG,kBAAkB,mEAAmE,2BAA2B,6DAA6D,yhBAAyhB,uCAAuC,SAAS,YAAY,kDAAkD,uNAAuN,2BAA2B,mCAAmC,mBAAmB,kEAAkE,kBAAkB,mCAAmC,kBAAkB,oJAAoJ,oBAAoB,oMAAoM,kBAAkB,wBAAwB,kBAAkB,GAAG,qBAAqB,gBAAgB,0JAA0J,wGAAwG,oDAAoD,wBAAwB,iGAAiG,+FAA+F,yBAAyB,yCAAyC,qBAAqB,OAAO,iBAAiB,uBAAuB,yCAAyC,sCAAsC,gCAAgC,SAAS,EAAE,0BAA0B,sBAAsB,qIAAqI,kDAAkD,oDAAoD,oEAAoE,sDAAsD,+CAA+C,GAAG,0BAA0B,sBAAsB,4YAA4Y,QAAQ,GAAG,8BAA8B,6BAA6B,0EAA0E,4IAA4I,oDAAoD,+BAA+B,2BAA2B,mFAAmF,0BAA0B,uCAAuC,gCAAgC,kDAAkD,yCAAyC,SAAS,cAAc,kDAAkD,6OAA6O,oCAAoC,mBAAmB,kEAAkE,kBAAkB,qCAAqC,kBAAkB,2JAA2J,oBAAoB,6MAA6M,kBAAkB,wBAAwB,kBAAkB,GAAG,qBAAqB,gBAAgB,oMAAoM,mDAAmD,oDAAoD,wBAAwB,kMAAkM,yBAAyB,0CAA0C,2DAA2D,QAAQ,EAAE,OAAO,iBAAiB,+BAA+B,2BAA2B,EAAE,gCAAgC,2BAA2B,qCAAqC,iCAAiC,2BAA2B,yEAAyE,0BAA0B,2BAA2B,uFAAuF,0BAA0B,uCAAuC,gCAAgC,qDAAqD,EAAE,kB;;;;;;;ACblrZ,4EAA2E,aAAa,uJ;;;;;;ACAxF,+qBAA8qB,sBAAsB,kdAAkd,sBAAsB,oCAAoC,qCAAqC,klB;;;;;;ACArvC,8V;;;;;;ACAA,2a;;;;;;ACAA,iW;;;;;;ACAA,mZ;;;;;;ACAA,8W;;;;;;ACAA,iYAAgY,wBAAwB,iSAAiS,aAAa,2S;;;;;;ACAtsB,gHAA+G,SAAS,wK;;;;;;ACAxH,gfAA+e,8bAA8b,uBAAuB,oFAAoF,ocAAoc,qBAAqB,4FAA4F,2dAA2d,wBAAwB,+FAA+F,mcAAmc,2BAA2B,okB;;;;;;ACA7nF,mLAAkL,gBAAgB,yHAAyH,SAAS,g1B;;;;;;ACApU,mF;;;;;;ACAA,uKAAsK,gCAAgC,8GAA8G,yBAAyB,0e;;;;;;ACA7U,syB;;;;;;ACAA,iYAAgY,wBAAwB,gPAAgP,uBAAuB,oC;;;;;;ACA/pB,qgB;;;;;;ACAA,2OAA0O,iBAAiB,KAAK,iBAAiB,4WAA4W,IAAI,uHAAuH,IAAI,0UAA0U,mBAAmB,qOAAqO,aAAa,mJAAmJ,iEAAiE,uMAAuM,kHAAkH,sOAAsO,YAAY,03DAA03D,qDAAqD,0TAA0T,sDAAsD,2M;;;;;;ACAz2I,ocAAmc,sBAAsB,uDAAuD,sBAAsB,0BAA0B,qBAAqB,qMAAqM,qBAAqB,oyBAAoyB,gBAAgB,gMAAgM,gBAAgB,4VAA4V,oBAAoB,mBAAmB,iBAAiB,iDAAiD,kCAAkC,4W;;;;;;ACA1xE,mjDAAkjD,0BAA0B,kCAAkC,kEAAkE,6BAA6B,0TAA0T,6BAA6B,uDAAuD,0BAA0B,kCAAkC,kvCAAkvC,0GAA0G,wBAAwB,0DAA0D,0BAA0B,43BAA43B,eAAe,2BAA2B,eAAe,4BAA4B,gBAAgB,m2BAAm2B,4DAA4D,mBAAmB,ykDAAykD,sBAAsB,GAAG,mBAAmB,kYAAkY,yBAAyB,KAAK,uBAAuB,oCAAoC,wLAAwL,gBAAgB,ssCAAssC,iBAAiB,6T;;;;;;ACAj+R,oK;;;;;;ACAA,mtB;;;;;;ACAA,09CAAy9C,sBAAsB,GAAG,mBAAmB,uJAAuJ,YAAY,GAAG,WAAW,GAAG,qBAAqB,oI;;;;;;ACA9sD,wTAAuT,aAAa,KAAK,iBAAiB,oHAAoH,cAAc,2C;;;;;;ACA5d,khBAAihB,YAAY,gGAAgG,UAAU,qGAAqG,uBAAuB,8L;;;;;;ACAnwB,sHAAqH,WAAW,8FAA8F,iDAAiD,4DAA4D,kBAAkB,+WAA+W,2BAA2B,ilBAAilB,wCAAwC,ylBAAylB,2BAA2B,8CAA8C,wCAAwC,6CAA6C,qDAAqD,82C;;;;;;ACA5oE,gqC;;;;;;ACAA,iuCAAguC,w7BAAw7B,+OAA+O,mBAAmB,sCAAsC,sCAAsC,2BAA2B,EAAE,4sBAA4sB,KAAK,mPAAmP,QAAQ,kPAAkP,sBAAsB,8DAA8D,6BAA6B,6KAA6K,OAAO,umBAAumB,OAAO,ycAAyc,yIAAyI,0EAA0E,usBAAusB,uCAAuC,4N;;;;;;ACA99L,6fAA4f,iBAAiB,o2BAAo2B,yDAAyD,QAAQ,sCAAsC,GAAG,0CAA0C,uaAAua,wCAAwC,0GAA0G,mBAAmB,wBAAwB,mBAAmB,gW;;;;;;ACA5nE,2SAA0S,mDAAmD,oFAAoF,4BAA4B,8L;;;;;;ACA7c,2BAA0B,mBAAmB,eAAe,wO;;;;;;ACA5D,2BAA0B,YAAY,sU;;;;;;ACAtC,oMAAmM,iBAAiB,+mC;;;;;;ACApN,2H;;;;;;ACAA,qfAAof,iDAAiD,iV;;;;;;ACAriB,8MAA6M,knC;;;;;;ACA7M,+mCAA8mC,sCAAsC,4DAA4D,iBAAiB,qCAAqC,iBAAiB,kCAAkC,qBAAqB,4DAA4D,eAAe,ggBAAggB,kBAAkB,scAAsc,sCAAsC,ymCAAymC,cAAc,+GAA+G,eAAe,4G;;;;;;ACA5oH,qKAAoK,uBAAuB,QAAQ,oCAAoC,SAAS,4GAA4G,SAAS,wCAAwC,SAAS,onCAAonC,cAAc,gWAAgW,kCAAkC,UAAU,YAAY,uXAAuX,SAAS,sIAAsI,SAAS,kF;;;;;;ACA/7E,yIAAwI,+CAA+C,gLAAgL,6DAA6D,6GAA6G,oBAAoB,2IAA2I,cAAc,8IAA8I,4BAA4B,qRAAqR,mBAAmB,+XAA+X,kBAAkB,+8B;;;;;;ACAjiD,sGAAqG,aAAa,qSAAqS,cAAc,uZAAuZ,aAAa,2LAA2L,aAAa,uH;;;;;;ACAjhC,6FAA4F,aAAa,ooB;;;;;;ACAzG,mHAAkH,oBAAoB,4IAA4I,mCAAmC,8BAA8B,sG;;;;;;ACAnV,0f;;;;;;ACAA,uF;;;;;;ACAA,wW;;;;;;ACAA,oYAAmY,wBAAwB,+OAA+O,uBAAuB,sC;;;;;;ACAjqB,mSAAkS,iBAAiB,uEAAuE,mBAAmB,mMAAmM,kCAAkC,+KAA+K,qCAAqC,2TAA2T,oCAAoC,ihD;;;;;;ACArqC,8M;;;;;;ACAA,yWAAwW,oBAAoB,4IAA4I,YAAY,kEAAkE,kBAAkB,4L;;;;;;ACAxmB,oUAAmU,6BAA6B,kiBAAkiB,+BAA+B,6W;;;;;;ACAj6B,0I;;;;;;ACAA,sZ;;;;;;ACAA,8MAA6M,sCAAsC,KAAK,cAAc,uBAAuB,cAAc,6B;;;;;;ACA3S,sEAAqE,uBAAuB,8H;;;;;;ACA5F,8d;;;;;;ACAA,gqB;;;;;;ACAA,yPAAwP,cAAc,mRAAmR,eAAe,8JAA8J,sBAAsB,mG;;;;;;ACA5tB,iGAAgG,cAAc,uBAAuB,cAAc,yC;;;;;;ACAnJ,yGAAwG,iBAAiB,kJAAkJ,WAAW,wCAAwC,YAAY,mBAAmB,YAAY,uC;;;;;;ACAzW,iGAAgG,cAAc,mCAAmC,cAAc,+CAA+C,gBAAgB,uD;;;;;;ACA9N,gNAA+M,MAAM,mJAAmJ,MAAM,MAAM,gO;;;;;;ACApX,sNAAqN,eAAe,miBAAmiB,eAAe,gX;;;;;;ACAtxB,ixDAAgxD,iG;;;;;;ACAhxD,6yB;;;;;;ACAA,o9BAAm9B,gCAAgC,olBAAolB,uBAAuB,sEAAsE,mEAAmE,iC;;;;;;ACAvuD,gLAA+K,YAAY,6CAA6C,gBAAgB,iqBAAiqB,QAAQ,gGAAgG,YAAY,6KAA6K,QAAQ,0dAA0d,SAAS,sE;;;;;;ACArqD,q4DAAo4D,y2CAAy2C,iG;;;;;;ACA7uG,kKAAiK,wJ;;;;;;ACAjK,+VAA8V,YAAY,kFAAkF,wBAAwB,ohB;;;;;;ACApd,mO;;;;;;ACAA,4N;;;;;;ACAA,ycAAwc,kDAAkD,qFAAqF,sBAAsB,2P;;;;;;ACArmB,+vCAA8vC,mE;;;;;;ACA9vC,2pB;;;;;;ACAA,6GAA4G,yBAAyB,gPAAgP,yBAAyB,qZ;;;;;;ACA9Y,0DAAyD,yBAAyB,6H;;;;;;ACAlF,0EAAyE,WAAW,8BAA8B,cAAc,6L;;;;;;ACAhI,sUAAqU,kBAAkB,uEAAuE,eAAe,mkB;;;;;;ACA7a,2CAA0C,kBAAkB,iEAAiE,GAAG,wBAAwB,sDAAsD,GAAG,OAAO,oDAAoD,GAAG,0D;;;;;;ACA/Q,mCAAkC,sBAAsB,iDAAiD,iBAAiB,GAAG,YAAY,GAAG,WAAW,OAAO,qBAAqB,2BAA2B,YAAY,GAAG,WAAW,GAAG,qBAAqB,0I;;;;;;ACAhQ,mHAAkH,iDAAiD,mB;;;;;;ACAnK,mJAAkJ,6CAA6C,08C;;;;;;ACA/L,kGAAiG,wBAAwB,oEAAoE,uBAAuB,2sFAA2sF,iDAAiD,iDAAiD,6BAA6B,8EAA8E,gCAAgC,8B;;;;;;ACA5oG,+jBAA8jB,qBAAqB,6iBAA6iB,oCAAoC,k9EAAk9E,qBAAqB,kOAAkO,yCAAyC,oDAAoD,yCAAyC,2C;;;;;;ACAn/H,8pD;;;;;;ACAA,k6B;;;;;;ACAA,wlBAAulB,8BAA8B,8LAA8L,8BAA8B,0JAA0J,8BAA8B,c;;;;;;ACAzgC,8YAA6Y,aAAa,wGAAwG,YAAY,wJAAwJ,kXAAkX,ohB;;;;;;ACAxhC,sS;;;;;;ACAA,2U;;;;;;ACAA,kKAAiK,mUAAmU,uBAAuB,6BAA6B,mHAAmH,uBAAuB,iBAAiB,4IAA4I,SAAS,mBAAmB,SAAS,qC;;;;;;ACAp2B,keAAie,sCAAsC,sDAAsD,cAAc,gU;;;;;;ACA3kB,gH;;;;;;ACAA,ujBAAsjB,wEAAwE,oDAAoD,kBAAkB,8E;;;;;;ACApsB,6E;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA,8BAA6B,mDAAmD;;;;;;;;mCCAhF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCtED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCZD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCbD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCZD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCClED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCPD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCC5ED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCxDD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAwB;AACxB;;AAEA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCC1HD;AACA;AACA,+CAA8C;AAC9C,sCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCjBD;AACA,yDAAwD;AACxD,sCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;;AAEX;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,EAAC;;;;;;;mCCxBD;AACA,sEAAqE;AACrE;AACA;;AAEA,sCAAqC;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,EAAC;;;;;;;mCCpBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA4C,aAAa;AACzD;;AAEA;AACA,YAAW;;AAEX,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCvED;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,sBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,YAAW;;AAEX;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA,kCAAiC,yBAAyB;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH,EAAC;;;;;;;mCCtOD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kFAAiF,eAAe,YAAY;AAC5G;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA,yCAAwC;AACxC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C,IAAI,IAAI,YAAY;AAChE;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,+BAA8B,oCAAoC;AAClE;;AAEA;AACA;AACA,+BAA8B,6BAA6B;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC9MD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAG;AACH,EAAC;;;;;;;mCC1DD;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yCAAwC,IAAI,IAAI,OAAO;AACvD;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,iBAAgB,SAAS;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;AACA,IAAG;AACH,EAAC;;;;;;;mCC1ED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,wBAAuB,mBAAmB;AAC1C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCCjED;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC7FD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,cAAa,gCAAgC;AAC7C,cAAa,2BAA2B;AACxC,cAAa;AACb;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA,cAAa;AACb,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;;AAEX;;AAEA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCjQD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,eAAc;AACd;;AAEA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCvGD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,kCAAkC,EAAE;AACnD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA,yCAAwC,SAAS;AACjD;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAAyC,IAAI,IAAI,qBAAqB;AACtE,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET,QAAO;;AAEP;AACA;AACA;;AAEA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAiC,IAAI,IAAI,+BAA+B;AACxE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA,QAAO;AACP;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,UAAS;AACT;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH,EAAC;;;;;;;mCCxhBD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA,YAAW;;AAEX;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH,EAAC,uJ;;;;;;mCClCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCPD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAG;AACH,EAAC;;;;;;;mCC7CD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,MAAK;;AAEL,IAAG;AACH,EAAC;;;;;;;mCC1ED;AACA;AACA,EAAC;;;;;;;mCCFD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH,EAAC;;;;;;;mCCxCD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,mDAAkD,2BAA2B;;AAE7E;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC/BD;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCrBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCtED;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCxED;AACA;;AAEA;AACA,cAAa,OAAO;AACpB,cAAa,EAAE;AACf,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAC;;;;;;;mCCrBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCTD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6DAA4D,gBAAgB;AAC5E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;;AAET;AACA,+BAA8B,qBAAqB,EAAE;AACrD,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCxRD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA,EAAC,uJ;;;;;;mCC3BD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA,qEAAoE,iBAAiB;AACrF,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCChFD;AACA;AACA;;AAEA;AACA,gEAA+D,eAAe;AAC9E,6DAA4D,iBAAiB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,kCAAiC,2BAA2B;AAC5D;;;AAGA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,EAAC;;;;;;;mCCtDD;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC,uJ;;;;;;mCCzBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA,YAAW,gBAAgB;AAC3B,YAAW,gBAAgB;AAC3B,YAAW,kBAAkB;AAC7B,YAAW,mFAAmF;AAC9F,YAAW,mFAAmF;AAC9F,YAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA,uDAAsD,eAAe;AACrE;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCClED;AACA;AACA;;AAEA;AACA;AACA,wBAAuB;AACvB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,qDAAoD,gBAAgB;AACpE,sDAAqD,aAAa;;AAElE;AACA;AACA,YAAW,gBAAgB;AAC3B,YAAW,kBAAkB;AAC7B,YAAW,kBAAkB;AAC7B,YAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC9FD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sDAAqD,IAAI,IAAI,OAAO;AACpE;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCClDD;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,oCAAmC,4BAA4B;;AAE/D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;;AAEX;AACA;AACA;AACA,4DAA2D,kBAAkB;AAC7E;AACA,YAAW;AACX;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,8CAA6C,WAAW,GAAG,MAAM;AACjE;;AAEA;AACA;AACA;;AAEA;AACA,yEAAwE,6BAA6B;AACrG;AACA;;AAEA;AACA;AACA,+DAA8D,mBAAmB;AACjF,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,oBAAmB;AACnB,YAAW;AACX;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA,mBAAkB;AAClB;;AAEA;AACA,iEAAgE,yBAAyB;AACzF;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA,oBAAmB;AACnB,YAAW;AACX;AACA,wDAAuD,YAAY;AACnE;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA,cAAa,mCAAmC;AAChD;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC/KD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,oCAAmC,+BAA+B;AAClE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,MAAM;AACzB,oBAAmB,MAAM;AACzB,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B,oBAAmB,MAAM;AACzB,sBAAqB;AACrB;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA,wBAAuB;;AAEvB;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf,cAAa;AACb,YAAW;;AAEX;AACA;AACA;AACA;AACA,yBAAwB;AACxB,cAAa;AACb;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,sCAAqC,eAAe;AACpD;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB,KAAK;AACxB,sBAAqB,KAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf,cAAa;AACb;AACA,YAAW;AACX;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC1ND;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCChBD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC3FD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCTD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA,YAAW;AACX,UAAS;AACT;AACA;;AAEA,IAAG;AACH,EAAC,uJ;;;;;;mCCnDD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCC9BD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uDAAsD;AACtD;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA,YAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iDAAgD,mBAAmB;AACnE;AACA;;AAEA;;AAEA;AACA,uBAAsB;AACtB;AACA;;AAEA;AACA;AACA,uBAAsB;AACtB;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCpKD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAwC,iCAAiC;AACzE;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iDAAgD,eAAe,YAAY;AAC3E;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uEAAsE;;AAEtE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,qCAAoC;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA2C,IAAI,IAAI,gBAAgB;AACnE;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;AACH,EAAC;;;;;;;mCCjSD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCC/BD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCrBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCxBD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCVD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,6CAA4C;;AAE5C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;;AAET;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;AACH,EAAC;;;;;;;mCCtHD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA,sDAAqD,MAAM,iBAAiB,IAAI,IAAI,uBAAuB;AAC3G;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,+CAA8C,MAAM,gBAAgB,SAAS,IAAI,6BAA6B;AAC9G,MAAK;AACL,IAAG;AACH,EAAC,uJ;;;;;;mCCtED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;AACL;;AAEA;AACA;AACA,EAAC;;;;;;;mCC9BD;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH,EAAC,uJ;;;;;;mCCdD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,EAAC;;;;;;;mCC7CD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH,EAAC;;;;;;;;mCC7BD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA,EAAC;;;;;;;mCCtED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA,MAAK;AACL,IAAG;;AAEH,EAAC;;;;;;;mCCtCD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCzBD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCCrBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAC;;;;;;;mCCxCD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;;AAEA;AACA,EAAC;;;;;;;mCCjDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;;;;;;;mCCbD;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,qBAAqB,eAAe;;AAEvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCChBD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCpCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCXD;AACA;AACA;AACA;;AAEA;AACA,oBAAmB;;AAEnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,UAAU;AACzB,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC7FD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,oEAAmE,yBAAyB;;AAE5F;AACA;AACA,yDAAwD;;AAExD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;;AAEA;AACA,EAAC;;;;;;;mCC7CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCCxCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,wBAAuB;AACvB;AACA;AACA,UAAS;AACT;AACA,QAAO;;AAEP,qBAAoB;AACpB;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,EAAC;;;;;;;mCC/FD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCTD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCChBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCC5BD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,MAAM;AACtB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA,oCAAmC;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;;;;;;mCC1DD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;;;;;;mCCtCD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAS;;AAET,QAAO,IAAI;AACX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,EAAC;;;;;;;mCCvDD;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCChBD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA8B;AAC9B,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCrBD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCC5BD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qBAAoB;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCC5CD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCCjCD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,mBAAkB;AAClB,UAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,mBAAkB;AAClB,UAAS;AACT;;AAEA;AACA;AACA,uBAAsB,iBAAiB;AACvC;AACA,yBAAwB,oBAAoB;AAC5C,UAAS;AACT,QAAO;;AAEP;AACA;AACA;AACA,EAAC,uJ;;;;;;mCClDD;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,IAAI;AACnB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,QAAQ;AACxB,iBAAgB,UAAU;AAC1B,iBAAgB,IAAI;AACpB,iBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,UAAU;AAC1B,iBAAgB,QAAQ;AACxB,iBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,6DAA4D,2BAA2B;AACvF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,UAAU;AACzB,gBAAe,IAAI;AACnB,iBAAgB,SAAS;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,IAAI;AACpB,iBAAgB,SAAS;AACzB,iBAAgB,IAAI;AACpB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB,MAAM;AACtB,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCzRD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCCzBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCrCD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,UAAU;AAC1B,iBAAgB,UAAU;AAC1B,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCC3CD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA,EAAC;;;;;;;mCChBD;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAC;;;;;;;mCClBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCdD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCCbD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA,wDAAuD,+BAA+B;AACtF;AACA;AACA,EAAC,uJ;;;;;;mCCnBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCCbD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,qDAAoD,WAAW;AAC/D;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,sBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCzJD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;AACP,MAAK;AACL;AACA,EAAC,uJ;;;;;;mCC9CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,0BAA0B;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,SAAS,YAAY;AAC3C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,cAAa,IAAI;;AAEjB;;AAEA,8DAA6D;AAC7D;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCC5CD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCChED;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,sBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCvED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,gBAAe,uCAAuC;AACtD,gBAAe;AACf;AACA;AACA,gBAAe,kBAAkB;AACjC,gBAAe;AACf;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC,uJ;;;;;;mCC7CD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa,oBAAoB;AACjC,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCnCD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCnCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA,2BAA0B;AAC1B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yEAAwE,eAAe;AACvF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wDAAuD,cAAc;AACrE;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,qCAAqC;AAClD,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCChLD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCClBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCrBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCpBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC,uJ;;;;;;mCClBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC,uJ;;;;;;mCClBD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCzDD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCpDD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC,uJ;;;;;;mCC5DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC,uJ;;;;;;mCClBD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,MAAM;AACtB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,UAAU;AAC1B,iBAAgB,OAAO;AACvB;AACA,iBAAgB,OAAO;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCnED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,IAAI;AACpB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,UAAU;AAC1B,iBAAgB,OAAO;AACvB;AACA,iBAAgB,OAAO;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCCtDD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oCAAmC,eAAe;AAClD;AACA;;AAEA;;AAEA;AACA;AACA;AACA,iBAAgB,UAAU;AAC1B,iBAAgB,OAAO;AACvB;AACA,iBAAgB,OAAO;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,IAAI;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC7ED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA0B,4BAA4B;AACtD;AACA;;AAEA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,UAAU;AAC1B,iBAAgB,OAAO;AACvB;AACA,iBAAgB,OAAO;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCCtED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,iBAAgB,UAAU;AAC1B,iBAAgB,OAAO;AACvB;AACA,iBAAgB,OAAO;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCC/BD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,wDAAuD,sBAAsB,EAAE;;AAE/E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCnCD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC/ED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC7KD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,oCAAmC,2BAA2B;;AAE9D;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAA4B,mBAAmB;AAC/C;;AAEA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;;AAEA,0CAAyC,mBAAmB;AAC5D;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,0CAAyC;AACzC,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAiE;AACjE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH,EAAC;;;;;;;mCC5ID;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,gBAAgB;AACpC,qBAAoB,OAAO;AAC3B,qBAAoB;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;;AAET,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCzHD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCClBD;AACA;AACA;AACA,mBAAkB,QAAQ,wBAAwB;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,uBAAsB,UAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCvBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCVD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,MAAM;AAC1B,qBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAAyB,mBAAmB;AAC5C;AACA;;AAEA;AACA;AACA,mBAAkB;AAClB;AACA;;AAEA;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAoB;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iCAAgC,+CAA+C;AAC/E;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wBAAuB,gCAAgC,EAAE;AACzD,wBAAuB,oBAAoB;AAC3C;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCjHD;AACA;AACA;AACA;;AAEA,oBAAmB;AACnB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,EAAC;;;;;;;mCCxLD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCCnED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCzBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAuB,kBAAkB;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC,uJ;;;;;;mCCvED;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB,gBAAgB;AAChC,iBAAgB;AAChB;AACA;AACA,sBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,EAAC,uJ;;;;;;mCCjDD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,8BAA8B;AAC7C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA,qCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCnXD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,uCAAsC,6BAA6B;AACnE;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,+CAA8C;AAC9C;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;;AAGA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,gDAA+C,SAAS;AACxD;;AAEA;AACA;AACA,EAAC;;;;;;;mCCnJD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCChCD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCnBD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCtBD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCtBD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;;;;;;mCCvBD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCpBD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCCnJD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCC7BD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAa,gBAAgB,6BAA6B;AAC1D;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,EAAC;;;;;;;mCC3DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCChCD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;AACA;AACA,EAAC;;;;;;;mCC3BD;AACA;;AAEA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCtBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAkB,YAAY;AAC9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,sCAAsC;AACvD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC1FD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAkB,YAAY;AAC9B,uBAAsB,OAAO;AAC7B,uBAAsB,OAAO;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,kBAAiB,SAAS;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC3ED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,kBAAiB,OAAO;AACxB,mBAAkB;AAClB;AACA,8CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sCAAqC,mBAAmB;AACxD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB;AACrB,yBAAwB;AACxB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAsB,SAAS;AAC/B,oBAAmB,YAAY;AAC/B,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC;AACpC;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA,EAAC;;;;;;;mCC3TD;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCjBD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCCpBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCCnFD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,EAAC;;;;;;;;mCCvBD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,YAAY;AAC9B,qBAAoB,OAAO;AAC3B,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,MAAM;AACzB,kBAAiB,EAAE;AACnB;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAkB,YAAY;AAC9B,qBAAoB,OAAO;AAC3B,0BAAyB,OAAO;AAChC,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAkB,YAAY;AAC9B,kBAAiB,sCAAsC;AACvD;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCxJD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAuB,QAAQ;AAC/B,iBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCnBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC,uJ;;;;;;mCC/CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA,QAAO;AACP;AACA;AACA,EAAC,uJ;;;;;;mCCpCD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC,uJ;;;;;;mCCxBD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yCAAwC,YAAY;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCC7CD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCCjDD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCCtCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCCjDD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCClDD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCChED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,YAAY;AAC3B;AACA;AACA;AACA;;AAEA;AACA,mCAAkC,mDAAmD;;AAErF;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,QAAQ;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,QAAQ;AACxB,iBAAgB,QAAQ;AACxB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,UAAU;AAC1B;AACA,iBAAgB,QAAQ;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,QAAQ;AACxB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,8BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC9MD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+CAA8C;AAC9C;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB,EAAE;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,SAAS;AAC9B,kBAAiB,EAAE;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,SAAS;AAC9B,qBAAoB;AACpB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,SAAS;AAC9B,wBAAuB,MAAM;AAC7B,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAqB,SAAS;AAC9B,sBAAqB,OAAO;AAC5B,kBAAiB,EAAE;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,kBAAiB,EAAE;AACnB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;;AAET;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB;AACpB,qBAAoB;AACpB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA,EAAC;;;;;;;mCC3gBD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,mBAAmB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wEAAuE;AACvE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAsB,OAAO;AAC7B,kBAAiB;AACjB;AACA;AACA,qDAAoD;AACpD;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAsB,OAAO;AAC7B,kBAAiB,2BAA2B;AAC5C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sDAAqD;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAsB,OAAO;AAC7B,kBAAiB,cAAc;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,OAAO;AAC7B,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC1OD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,YAAY;AAC/B,uBAAsB,OAAO;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,cAAc,IAAI;;AAElD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,oBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAqB;AACrB,wBAAuB;AACvB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,sBAAqB;AACrB,wBAAuB;AACvB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCChLD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,mBAAkB,YAAY;AAC9B,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA,kDAAiD;AACjD,+BAA8B,YAAY,EAAE;AAC5C,+BAA8B,YAAY;AAC1C,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,oBAAmB,YAAY;AAC/B,uBAAsB,MAAM;AAC5B,kBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAuB,mBAAmB;AAC1C,kBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAmB,YAAY;AAC/B,qBAAoB,MAAM;AAC1B,kBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAmB,YAAY;AAC/B,sBAAqB,OAAO;AAC5B,uBAAsB,OAAO;AAC7B,kBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC1WD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,mBAAkB,YAAY;AAC9B,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,kDAAiD;AACjD,+BAA8B,YAAY,EAAE;AAC5C,+BAA8B,YAAY;AAC1C,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,oBAAmB,YAAY;AAC/B,uBAAsB,MAAM;AAC5B,kBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAoB,mBAAmB;AACvC,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB,mBAAmB;AACvC,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB,mBAAmB;AACvC,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,mBAAmB;AAC1C,oBAAmB,mBAAmB;AACtC,kBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCvUD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,mBAAkB,YAAY;AAC9B,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,kDAAiD;AACjD;AACA,+BAA8B,YAAY,EAAE;AAC5C,+BAA8B,YAAY;AAC1C,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,uBAAsB,mBAAmB;AACzC,kBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAmB,YAAY;AAC/B,qBAAoB,MAAM;AAC1B,kBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAmB,YAAY;AAC/B,qBAAoB,MAAM;AAC1B,kBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAmB,YAAY;AAC/B,sBAAqB,OAAO;AAC5B,uBAAsB,OAAO;AAC7B,kBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;;AAEX;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCjWD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,mBAAkB,YAAY;AAC9B,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kDAAiD;AACjD;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP,wBAAuB,wCAAwC;AAC/D;;AAEA;AACA;AACA;AACA;AACA,wBAAuB,aAAa;AACpC,kBAAiB,aAAa;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,uBAAsB,OAAO;AAC7B,oBAAmB,YAAY;AAC/B,uBAAsB,OAAO;AAC7B,kBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,QAAQ;AACtC;AACA,UAAS;AACT;AACA;AACA;AACA,+BAA8B,eAAe;AAC7C;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCjND;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA2C,2BAA2B,EAAE;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,wBAAuB,YAAY;AACnC,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,SAAS;AACzB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sDAAqD,EAAE,8BAA8B,EAAE,EAAE,EAAE,EAAE,EAAE;AAC/F,2FAA0F;AAC1F,+BAA8B;AAC9B;AACA;AACA,YAAW;;AAEX,8BAA6B;AAC7B;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;;AAEb;;AAEA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;;AAEX;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA,kBAAiB;;AAEjB;AACA,gBAAe;AACf;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAmB;AACnB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB;AACpB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,oBAAmB;AACnB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB;AACrB,8BAA6B;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAqB,6BAA6B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAsB;AACtB,qBAAoB;AACpB,wBAAuB;AACvB,oBAAmB;AACnB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB,wBAAuB;AACvB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAe,eAAe;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB,wBAAuB;AACvB,iBAAgB,eAAe;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB,wBAAuB;AACvB,iBAAgB,eAAe;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA,QAAO;;AAEP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB,wBAAuB;AACvB,iBAAgB,eAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA,QAAO;;AAEP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB,wBAAuB;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA,QAAO;;AAEP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB,wBAAuB;AACvB,8BAA6B;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAwB;AACxB,oBAAmB;AACnB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;;AAEA,4BAA2B;;AAE3B;AACA,+BAA8B,wBAAwB;;AAEtD;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAuB;AACvB,oBAAmB;AACnB,oBAAmB;AACnB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,wBAAuB;AACvB,sBAAqB;AACrB,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB,oBAAmB;AACnB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB,oBAAmB;AACnB,qBAAoB;AACpB,0BAAyB;AACzB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB,oBAAmB;AACnB,oBAAmB;AACnB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;;AAEA;AACA,EAAC;;;;;;;mCC95BD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,iBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC,uJ;;;;;;mCCpBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA,WAAU;AACV;AACA,UAAS,2BAA2B;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCpED;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,sBAAqB;AACrB;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCnED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCxDD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCCvCD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,EAAC;;;;;;;mCChED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAsC,SAAS;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCChDD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,MAAM;AAC5B,iBAAgB;AAChB,mBAAkB;AAClB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,oBAAoB;AACvC;AACA;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCC3DD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCvGD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCnBD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,EAAC;;;;;;;mCCnED;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,SAAS;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC,uJ;;;;;;mCC9FD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,sBAAsB,EAAE;;AAE7D;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;;AAEA,EAAC;;;;;;;;ACtBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E","file":"kibana.js","sourcesContent":[" \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\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n \t__webpack_require__.p = \"/bundles/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap d26167e4f671993c83a6\n **/","/**\n * Optimized application entry file\n *\n * This is programatically created and updated, do not modify\n *\n * built using: Kibana 4.2.0-snapshot\n * includes code from:\n * - kbn_vislib_vis_types@1.0.0\n * - kibana@1.0.0\n * - markdown_vis@1.0.0\n * - metric_vis@1.0.0\n * - table_vis@1.0.0\n * - vis_debug_spy@1.0.0\n *\n */\n\nrequire('chrome');\nrequire('angular-bindonce');\nrequire('chrome/context');\nrequire('components/bind');\nrequire('components/bound_to_config_obj');\nrequire('components/config/config');\nrequire('components/courier/courier');\nrequire('components/debounce');\nrequire('components/doc_title/doc_title');\nrequire('components/elastic_textarea');\nrequire('components/es');\nrequire('components/events');\nrequire('components/fancy_forms/fancy_forms');\nrequire('components/filter_bar/filter_bar');\nrequire('components/filter_manager/filter_manager');\nrequire('components/index_patterns/index_patterns');\nrequire('components/listen');\nrequire('components/notify/notify');\nrequire('components/persisted_log/persisted_log');\nrequire('components/private');\nrequire('components/promises');\nrequire('components/state_management/app_state');\nrequire('components/state_management/global_state');\nrequire('components/storage/storage');\nrequire('components/stringify/register');\nrequire('components/style_compile/style_compile');\nrequire('components/timefilter/timefilter');\nrequire('components/timepicker/timepicker');\nrequire('components/tooltip/tooltip');\nrequire('components/typeahead/typeahead');\nrequire('components/ui-bootstrap/index');\nrequire('components/url/url');\nrequire('components/validateDateInterval');\nrequire('components/validate_query/validate_query');\nrequire('components/watch_multi');\nrequire('directives/auto_select_if_only_one');\nrequire('directives/click_focus');\nrequire('directives/config');\nrequire('directives/confirm_click');\nrequire('directives/css_truncate');\nrequire('directives/field_name');\nrequire('directives/file_upload');\nrequire('directives/inequality');\nrequire('directives/infinite_scroll');\nrequire('directives/info');\nrequire('directives/input_datetime');\nrequire('directives/input_focus');\nrequire('directives/input_whole_number');\nrequire('directives/paginate');\nrequire('directives/pretty_duration');\nrequire('directives/rows');\nrequire('directives/saved_object_finder');\nrequire('directives/spinner');\nrequire('directives/truncated');\nrequire('directives/validate_cidr_mask');\nrequire('directives/validate_date_math');\nrequire('directives/validate_index_name');\nrequire('directives/validate_ip');\nrequire('directives/validate_json');\nrequire('elasticsearch');\nrequire('filters/commaList');\nrequire('filters/field_type');\nrequire('filters/label');\nrequire('filters/match_any');\nrequire('filters/moment');\nrequire('filters/rison');\nrequire('filters/short_dots');\nrequire('filters/start_from');\nrequire('filters/trust_as_html');\nrequire('filters/unique');\nrequire('filters/uriescape');\nrequire('plugins/kbn_vislib_vis_types/kbn_vislib_vis_types');\nrequire('plugins/markdown_vis/markdown_vis');\nrequire('plugins/metric_vis/metric_vis');\nrequire('plugins/table_vis/table_vis');\nrequire('plugins/vis_debug_spy/vis_debug_spy');\nrequire('ui-styles/base.less');\nrequire('ui-styles/callout.less');\nrequire('ui-styles/config.less');\nrequire('ui-styles/control_group.less');\nrequire('ui-styles/hintbox.less');\nrequire('ui-styles/input.less');\nrequire('ui-styles/list-group-menu.less');\nrequire('ui-styles/navbar.less');\nrequire('ui-styles/notify.less');\nrequire('ui-styles/pagination.less');\nrequire('ui-styles/sidebar.less');\nrequire('ui-styles/spinner.less');\nrequire('ui-styles/table.less');\nrequire('ui-styles/truncate.less');\nrequire('plugins/kibana/kibana');\nrequire('chrome').bootstrap([\"elasticsearch\",\"pasvaz.bindonce\"]);\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./bundles/kibana.entry.js\n ** module id = 0\n ** module chunks = 0\n **/","define(function (require) {\n /**\n * THESE ARE AUTOMATICALLY INCLUDED IN LODASH\n *\n * use:\n * var _ = require('lodash');\n *\n * require.js config points the 'lodash' id to\n * this module, which provides a modified version\n * of lodash.\n */\n var _ = require('lodash_src').runInContext();\n require('utils/lodash-mixins/string')(_);\n require('utils/lodash-mixins/lang')(_);\n require('utils/lodash-mixins/object')(_);\n require('utils/lodash-mixins/collection')(_);\n require('utils/lodash-mixins/function')(_);\n require('utils/lodash-mixins/oop')(_);\n return _;\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/utils/lodash-mixins/index.js\n ** module id = 1\n ** module chunks = 0 1 2\n **/","//! moment.js\n//! version : 2.10.3\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\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 utils_hooks__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 Object.prototype.toString.call(input) === '[object Array]';\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 create_utc__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 };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n function valid__isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n m._isValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated;\n\n if (m._strict) {\n m._isValid = m._isValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n return m._isValid;\n }\n\n function valid__createInvalid (flags) {\n var m = create_utc__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 var momentProperties = utils_hooks__hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (typeof from._isAMomentObject !== 'undefined') {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (typeof from._i !== 'undefined') {\n to._i = from._i;\n }\n if (typeof from._f !== 'undefined') {\n to._f = from._f;\n }\n if (typeof from._l !== 'undefined') {\n to._l = from._l;\n }\n if (typeof from._strict !== 'undefined') {\n to._strict = from._strict;\n }\n if (typeof from._tzm !== 'undefined') {\n to._tzm = from._tzm;\n }\n if (typeof from._isUTC !== 'undefined') {\n to._isUTC = from._isUTC;\n }\n if (typeof from._offset !== 'undefined') {\n to._offset = from._offset;\n }\n if (typeof from._pf !== 'undefined') {\n to._pf = getParsingFlags(from);\n }\n if (typeof from._locale !== 'undefined') {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i in momentProperties) {\n prop = momentProperties[i];\n val = from[prop];\n if (typeof val !== 'undefined') {\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);\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n utils_hooks__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 toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n if (coercedNumber >= 0) {\n value = Math.floor(coercedNumber);\n } else {\n value = Math.ceil(coercedNumber);\n }\n }\n\n return value;\n }\n\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 Locale() {\n }\n\n var locales = {};\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 null;\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 require('./locale/' + name);\n // because defineLocale currently also sets the global locale, we\n // want to undo that for lazy loaded locales\n locale_locales__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 locale_locales__getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (typeof values === 'undefined') {\n data = locale_locales__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 }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, values) {\n if (values !== null) {\n values.abbr = name;\n if (!locales[name]) {\n locales[name] = new Locale();\n }\n locales[name].set(values);\n\n // backwards compat for now: also set the locale\n locale_locales__getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n // returns locale data\n function locale_locales__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 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 function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n get_set__set(this, unit, value);\n utils_hooks__hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get_set__get(this, unit);\n }\n };\n }\n\n function get_set__get (mom, unit) {\n return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]();\n }\n\n function get_set__set (mom, unit, value) {\n return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n\n // MOMENTS\n\n function getSet (units, value) {\n var unit;\n if (typeof units === 'object') {\n for (unit in units) {\n this.set(unit, units[unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (typeof this[units] === 'function') {\n return this[units](value);\n }\n }\n return this;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var output = '' + Math.abs(number),\n sign = number >= 0;\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return (sign ? (forceSign ? '+' : '') : '-') + output;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|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 = '';\n for (i = 0; i < length; i++) {\n output += array[i] instanceof Function ? 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\n if (!formatFunctions[format]) {\n formatFunctions[format] = makeFormatFunction(format);\n }\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 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\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 var matchWord = /[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = typeof regex === 'function' ? regex : function (isStrict) {\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 s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }).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 (typeof callback === 'number') {\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\n function daysInMonth(year, month) {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\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 // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', matchWord);\n addRegexToken('MMMM', matchWord);\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 defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m) {\n return this._months[m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m) {\n return this._monthsShort[m.month()];\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = create_utc__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 // TODO: Move this out of here!\n if (typeof value === 'string') {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (typeof value !== 'number') {\n return mom;\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 utils_hooks__hooks.updateOffset(this, true);\n return this;\n } else {\n return get_set__get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\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\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n function warn(msg) {\n if (utils_hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true,\n msgWithStack = msg + '\\n' + (new Error()).stack;\n\n return extend(function () {\n if (firstTime) {\n warn(msgWithStack);\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 (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n utils_hooks__hooks.suppressDeprecationWarnings = false;\n\n var from_string__isoRegex = /^\\s*(?:[+-]\\d{6}|\\d{4})-(?:(\\d\\d-\\d\\d)|(W\\d\\d$)|(W\\d\\d-\\d)|(\\d\\d\\d))((T| )(\\d\\d(:\\d\\d(:\\d\\d(\\.\\d+)?)?)?)?([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d{2}-\\d{2}/],\n ['YYYY-MM-DD', /\\d{4}-\\d{2}-\\d{2}/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d{2}-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d{2}/],\n ['YYYY-DDD', /\\d{4}-\\d{3}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /(T| )\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss', /(T| )\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /(T| )\\d\\d:\\d\\d/],\n ['HH', /(T| )\\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 = from_string__isoRegex.exec(string);\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(string)) {\n // match[5] should be 'T' or undefined\n config._f = isoDates[i][0] + (match[6] || ' ');\n break;\n }\n }\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(string)) {\n config._f += isoTimes[i][0];\n break;\n }\n }\n if (string.match(matchOffset)) {\n config._f += 'Z';\n }\n configFromStringAndFormat(config);\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 utils_hooks__hooks.createFromInputFallback(config);\n }\n }\n\n utils_hooks__hooks.createFromInputFallback = deprecate(\n 'moment construction falls back to js Date. This is ' +\n 'discouraged and will be removed in upcoming major ' +\n 'release. Please refer to ' +\n 'https://github.com/moment/moment/issues/1407 for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n function createDate (y, m, d, h, M, s, ms) {\n //can't just apply() to create a date:\n //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply\n var date = new Date(y, m, d, h, M, s, ms);\n\n //the date constructor doesn't accept years < 1970\n if (y < 1970) {\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 if (y < 1970) {\n date.setUTCFullYear(y);\n }\n return date;\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 // 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(['YYYY', 'YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YY', function (input, array) {\n array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input);\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 utils_hooks__hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', false);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\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 // 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 // firstDayOfWeek 0 = sun, 6 = sat\n // the day of the week that starts the week\n // (usually sunday or monday)\n // firstDayOfWeekOfYear 0 = sun, 6 = sat\n // the first week is the week that contains the first\n // of this day of the week\n // (eg. ISO weeks use thursday (4))\n function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {\n var end = firstDayOfWeekOfYear - firstDayOfWeek,\n daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(),\n adjustedMoment;\n\n\n if (daysToDayOfWeek > end) {\n daysToDayOfWeek -= 7;\n }\n\n if (daysToDayOfWeek < end - 7) {\n daysToDayOfWeek += 7;\n }\n\n adjustedMoment = local__createLocal(mom).add(daysToDayOfWeek, 'd');\n return {\n week: Math.ceil(adjustedMoment.dayOfYear() / 7),\n year: adjustedMoment.year()\n };\n }\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 addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\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 //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {\n var d = createUTCDate(year, 0, 1).getUTCDay();\n var daysToAdd;\n var dayOfYear;\n\n d = d === 0 ? 7 : d;\n weekday = weekday != null ? weekday : firstDayOfWeek;\n daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0);\n dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1;\n\n return {\n year : dayOfYear > 0 ? year : year - 1,\n dayOfYear : dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear\n };\n }\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 // 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 var now = new Date();\n if (config._useUTC) {\n return [now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()];\n }\n return [now.getFullYear(), now.getMonth(), now.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, 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) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse)) {\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 // 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\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp;\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(local__createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year);\n week = defaults(w.w, 1);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < dow) {\n ++week;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow);\n\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n\n utils_hooks__hooks.ISO_8601 = 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 === utils_hooks__hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\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 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 (getParsingFlags(config).bigHour === true &&\n config._a[HOUR] <= 12 &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\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 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 (!valid__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 = [i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond];\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var input = config._i,\n format = config._f,\n res;\n\n config._locale = config._locale || locale_locales__getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return valid__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 (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else if (isDate(input)) {\n config._d = input;\n } else {\n configFromInput(config);\n }\n\n res = new Moment(checkOverflow(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 configFromInput(config) {\n var input = config._i;\n if (input === undefined) {\n config._d = new Date();\n } else if (isDate(input)) {\n config._d = new Date(+input);\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 (typeof(input) === 'object') {\n configFromObject(config);\n } else if (typeof(input) === 'number') {\n // from milliseconds\n config._d = new Date(input);\n } else {\n utils_hooks__hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (typeof(locale) === 'boolean') {\n strict = locale;\n locale = 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 local__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.min instead. https://github.com/moment/moment/issues/1548',\n function () {\n var other = local__createLocal.apply(null, arguments);\n return other < this ? this : other;\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548',\n function () {\n var other = local__createLocal.apply(null, arguments);\n return other > this ? this : other;\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 local__createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (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 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 // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 36e5; // 1000 * 60 * 60\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 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 = locale_locales__getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\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', matchOffset);\n addRegexToken('ZZ', matchOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(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(string) {\n var matches = ((string || '').match(matchOffset) || []);\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 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 : +local__createLocal(input)) - (+res);\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(+res._d + diff);\n utils_hooks__hooks.updateOffset(res, false);\n return res;\n } else {\n return local__createLocal(input).local();\n }\n return model._isUTC ? local__createLocal(input).zone(model._offset || 0) : local__createLocal(input).local();\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 utils_hooks__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) {\n var offset = this._offset || 0,\n localAdjust;\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(input);\n }\n if (Math.abs(input) < 16) {\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 add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n utils_hooks__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) {\n this.utcOffset(this._tzm);\n } else if (typeof this._i === 'string') {\n this.utcOffset(offsetFromString(this._i));\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!input) {\n input = 0;\n }\n else {\n input = local__createLocal(input).utcOffset();\n }\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 (this._a) {\n var other = this._isUTC ? create_utc__createUTC(this._a) : local__createLocal(this._a);\n return this.isValid() && compareArrays(this._a, other.toArray()) > 0;\n }\n\n return false;\n }\n\n function isLocal () {\n return !this._isUTC;\n }\n\n function isUtcOffset () {\n return this._isUTC;\n }\n\n function isUtc () {\n return this._isUTC && this._offset === 0;\n }\n\n var aspNetRegex = /(\\-)?(?:(\\d*)\\.)?(\\d+)\\:(\\d+)(?:\\:(\\d+)\\.?(\\d{3})?)?/;\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 var create__isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;\n\n function create__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 (typeof input === 'number') {\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(match[MILLISECOND]) * sign\n };\n } else if (!!(match = create__isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n d : parseIso(match[4], sign),\n h : parseIso(match[5], sign),\n m : parseIso(match[6], sign),\n s : parseIso(match[7], sign),\n w : 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(local__createLocal(duration.from), local__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 create__createDuration.fn = Duration.prototype;\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 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 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 tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = create__createDuration(val, period);\n add_subtract__addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = duration._days,\n months = duration._months;\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (milliseconds) {\n mom._d.setTime(+mom._d + milliseconds * isAdding);\n }\n if (days) {\n get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding);\n }\n if (months) {\n setMonth(mom, get_set__get(mom, 'Month') + months * isAdding);\n }\n if (updateOffset) {\n utils_hooks__hooks.updateOffset(mom, days || months);\n }\n }\n\n var add_subtract__add = createAdder(1, 'add');\n var add_subtract__subtract = createAdder(-1, 'subtract');\n\n function moment_calendar__calendar (time) {\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 || local__createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n diff = this.diff(sod, 'days', true),\n format = 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 return this.format(this.localeData().calendar(format, this, local__createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var inputMs;\n units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');\n if (units === 'millisecond') {\n input = isMoment(input) ? input : local__createLocal(input);\n return +this > +input;\n } else {\n inputMs = isMoment(input) ? +input : +local__createLocal(input);\n return inputMs < +this.clone().startOf(units);\n }\n }\n\n function isBefore (input, units) {\n var inputMs;\n units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');\n if (units === 'millisecond') {\n input = isMoment(input) ? input : local__createLocal(input);\n return +this < +input;\n } else {\n inputMs = isMoment(input) ? +input : +local__createLocal(input);\n return +this.clone().endOf(units) < inputMs;\n }\n }\n\n function isBetween (from, to, units) {\n return this.isAfter(from, units) && this.isBefore(to, units);\n }\n\n function isSame (input, units) {\n var inputMs;\n units = normalizeUnits(units || 'millisecond');\n if (units === 'millisecond') {\n input = isMoment(input) ? input : local__createLocal(input);\n return +this === +input;\n } else {\n inputMs = +local__createLocal(input);\n return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units));\n }\n }\n\n function absFloor (number) {\n if (number < 0) {\n return Math.ceil(number);\n } else {\n return Math.floor(number);\n }\n }\n\n function diff (input, units, asFloat) {\n var that = cloneWithOffset(input, this),\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4,\n delta, output;\n\n units = normalizeUnits(units);\n\n if (units === 'year' || units === 'month' || units === 'quarter') {\n output = monthDiff(this, that);\n if (units === 'quarter') {\n output = output / 3;\n } else if (units === 'year') {\n output = output / 12;\n }\n } else {\n delta = this - that;\n output = units === 'second' ? delta / 1e3 : // 1000\n units === 'minute' ? delta / 6e4 : // 1000 * 60\n units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60\n units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst\n units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst\n delta;\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 return -(wholeMonthDiff + adjust);\n }\n\n utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function moment_format__toISOString () {\n var m = this.clone().utc();\n if (0 < m.year() && m.year() <= 9999) {\n if ('function' === typeof Date.prototype.toISOString) {\n // native implementation is ~50x faster, use it when we can\n return this.toDate().toISOString();\n } else {\n return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n } else {\n return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n }\n\n function format (inputString) {\n var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n }\n\n function fromNow (withoutSuffix) {\n return this.from(local__createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n }\n\n function toNow (withoutSuffix) {\n return this.to(local__createLocal(), withoutSuffix);\n }\n\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = locale_locales__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 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 return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n }\n\n function to_type__valueOf () {\n return +this._d - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(+this / 1000);\n }\n\n function toDate () {\n return this._offset ? new Date(+this) : this._d;\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 moment_valid__isValid () {\n return valid__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 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 // 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] = utils_hooks__hooks.parseTwoDigitYear(input);\n });\n\n // HELPERS\n\n function weeksInYear(year, dow, doy) {\n return weekOfYear(local__createLocal([year, 11, 31 + dow - doy]), dow, doy).week;\n }\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year;\n return input == null ? year : this.add((input - year), 'y');\n }\n\n function getSetISOWeekYear (input) {\n var year = weekOfYear(this, 1, 4).year;\n return input == null ? year : this.add((input - year), 'y');\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 addFormatToken('Q', 0, 0, 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\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 addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0], 10);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\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 // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', matchWord);\n addRegexToken('ddd', matchWord);\n addRegexToken('dddd', matchWord);\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config) {\n var weekday = config._locale.weekdaysParse(input);\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 if (!isNaN(input)) {\n input = parseInt(input, 10);\n }\n else {\n input = locale.weekdaysParse(input);\n if (typeof input !== 'number') {\n return null;\n }\n }\n }\n return input;\n }\n\n // LOCALES\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m) {\n return this._weekdays[m.day()];\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return this._weekdaysShort[m.day()];\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return this._weekdaysMin[m.day()];\n }\n\n function localeWeekdaysParse (weekdayName) {\n var i, mom, regex;\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n if (!this._weekdaysParse[i]) {\n mom = local__createLocal([2000, 1]).day(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 (this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\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 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 // 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 return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, function () {\n return this.hours() % 12 || 12;\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 // 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('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n\n addParseToken(['H', 'HH'], HOUR);\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\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 he wants. 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 addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\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 addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\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 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 function millisecond__milliseconds (token) {\n addFormatToken(0, [token, 3], 0, 'millisecond');\n }\n\n millisecond__milliseconds('SSS');\n millisecond__milliseconds('SSSS');\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n addRegexToken('SSSS', matchUnsigned);\n addParseToken(['S', 'SS', 'SSS', 'SSSS'], function (input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n });\n\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\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 momentPrototype__proto = Moment.prototype;\n\n momentPrototype__proto.add = add_subtract__add;\n momentPrototype__proto.calendar = moment_calendar__calendar;\n momentPrototype__proto.clone = clone;\n momentPrototype__proto.diff = diff;\n momentPrototype__proto.endOf = endOf;\n momentPrototype__proto.format = format;\n momentPrototype__proto.from = from;\n momentPrototype__proto.fromNow = fromNow;\n momentPrototype__proto.to = to;\n momentPrototype__proto.toNow = toNow;\n momentPrototype__proto.get = getSet;\n momentPrototype__proto.invalidAt = invalidAt;\n momentPrototype__proto.isAfter = isAfter;\n momentPrototype__proto.isBefore = isBefore;\n momentPrototype__proto.isBetween = isBetween;\n momentPrototype__proto.isSame = isSame;\n momentPrototype__proto.isValid = moment_valid__isValid;\n momentPrototype__proto.lang = lang;\n momentPrototype__proto.locale = locale;\n momentPrototype__proto.localeData = localeData;\n momentPrototype__proto.max = prototypeMax;\n momentPrototype__proto.min = prototypeMin;\n momentPrototype__proto.parsingFlags = parsingFlags;\n momentPrototype__proto.set = getSet;\n momentPrototype__proto.startOf = startOf;\n momentPrototype__proto.subtract = add_subtract__subtract;\n momentPrototype__proto.toArray = toArray;\n momentPrototype__proto.toDate = toDate;\n momentPrototype__proto.toISOString = moment_format__toISOString;\n momentPrototype__proto.toJSON = moment_format__toISOString;\n momentPrototype__proto.toString = toString;\n momentPrototype__proto.unix = unix;\n momentPrototype__proto.valueOf = to_type__valueOf;\n\n // Year\n momentPrototype__proto.year = getSetYear;\n momentPrototype__proto.isLeapYear = getIsLeapYear;\n\n // Week Year\n momentPrototype__proto.weekYear = getSetWeekYear;\n momentPrototype__proto.isoWeekYear = getSetISOWeekYear;\n\n // Quarter\n momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter;\n\n // Month\n momentPrototype__proto.month = getSetMonth;\n momentPrototype__proto.daysInMonth = getDaysInMonth;\n\n // Week\n momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek;\n momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek;\n momentPrototype__proto.weeksInYear = getWeeksInYear;\n momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear;\n\n // Day\n momentPrototype__proto.date = getSetDayOfMonth;\n momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek;\n momentPrototype__proto.weekday = getSetLocaleDayOfWeek;\n momentPrototype__proto.isoWeekday = getSetISODayOfWeek;\n momentPrototype__proto.dayOfYear = getSetDayOfYear;\n\n // Hour\n momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour;\n\n // Minute\n momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute;\n\n // Second\n momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond;\n\n // Millisecond\n momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond;\n\n // Offset\n momentPrototype__proto.utcOffset = getSetOffset;\n momentPrototype__proto.utc = setOffsetToUTC;\n momentPrototype__proto.local = setOffsetToLocal;\n momentPrototype__proto.parseZone = setOffsetToParsedOffset;\n momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset;\n momentPrototype__proto.isDST = isDaylightSavingTime;\n momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted;\n momentPrototype__proto.isLocal = isLocal;\n momentPrototype__proto.isUtcOffset = isUtcOffset;\n momentPrototype__proto.isUtc = isUtc;\n momentPrototype__proto.isUTC = isUtc;\n\n // Timezone\n momentPrototype__proto.zoneAbbr = getZoneAbbr;\n momentPrototype__proto.zoneName = getZoneName;\n\n // Deprecations\n momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone);\n\n var momentPrototype = momentPrototype__proto;\n\n function moment__createUnix (input) {\n return local__createLocal(input * 1000);\n }\n\n function moment__createInZone () {\n return local__createLocal.apply(null, arguments).parseZone();\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 locale_calendar__calendar (key, mom, now) {\n var output = this._calendar[key];\n return typeof output === 'function' ? 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 LT',\n LLLL : 'dddd, MMMM D, YYYY LT'\n };\n\n function longDateFormat (key) {\n var output = this._longDateFormat[key];\n if (!output && this._longDateFormat[key.toUpperCase()]) {\n output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n this._longDateFormat[key] = output;\n }\n return output;\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var defaultRelativeTime = {\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\n function relative__relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (typeof output === 'function') ?\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 typeof format === 'function' ? format(output) : format.replace(/%s/i, output);\n }\n\n function locale_set__set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (typeof prop === 'function') {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _ordinalParseLenient.\n this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\\d{1,2}/).source);\n }\n\n var prototype__proto = Locale.prototype;\n\n prototype__proto._calendar = defaultCalendar;\n prototype__proto.calendar = locale_calendar__calendar;\n prototype__proto._longDateFormat = defaultLongDateFormat;\n prototype__proto.longDateFormat = longDateFormat;\n prototype__proto._invalidDate = defaultInvalidDate;\n prototype__proto.invalidDate = invalidDate;\n prototype__proto._ordinal = defaultOrdinal;\n prototype__proto.ordinal = ordinal;\n prototype__proto._ordinalParse = defaultOrdinalParse;\n prototype__proto.preparse = preParsePostFormat;\n prototype__proto.postformat = preParsePostFormat;\n prototype__proto._relativeTime = defaultRelativeTime;\n prototype__proto.relativeTime = relative__relativeTime;\n prototype__proto.pastFuture = pastFuture;\n prototype__proto.set = locale_set__set;\n\n // Month\n prototype__proto.months = localeMonths;\n prototype__proto._months = defaultLocaleMonths;\n prototype__proto.monthsShort = localeMonthsShort;\n prototype__proto._monthsShort = defaultLocaleMonthsShort;\n prototype__proto.monthsParse = localeMonthsParse;\n\n // Week\n prototype__proto.week = localeWeek;\n prototype__proto._week = defaultLocaleWeek;\n prototype__proto.firstDayOfYear = localeFirstDayOfYear;\n prototype__proto.firstDayOfWeek = localeFirstDayOfWeek;\n\n // Day of Week\n prototype__proto.weekdays = localeWeekdays;\n prototype__proto._weekdays = defaultLocaleWeekdays;\n prototype__proto.weekdaysMin = localeWeekdaysMin;\n prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin;\n prototype__proto.weekdaysShort = localeWeekdaysShort;\n prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort;\n prototype__proto.weekdaysParse = localeWeekdaysParse;\n\n // Hours\n prototype__proto.isPM = localeIsPM;\n prototype__proto._meridiemParse = defaultLocaleMeridiemParse;\n prototype__proto.meridiem = localeMeridiem;\n\n function lists__get (format, index, field, setter) {\n var locale = locale_locales__getLocale();\n var utc = create_utc__createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function list (format, index, field, count, setter) {\n if (typeof format === 'number') {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return lists__get(format, index, field, setter);\n }\n\n var i;\n var out = [];\n for (i = 0; i < count; i++) {\n out[i] = lists__get(format, i, field, setter);\n }\n return out;\n }\n\n function lists__listMonths (format, index) {\n return list(format, index, 'months', 12, 'month');\n }\n\n function lists__listMonthsShort (format, index) {\n return list(format, index, 'monthsShort', 12, 'month');\n }\n\n function lists__listWeekdays (format, index) {\n return list(format, index, 'weekdays', 7, 'day');\n }\n\n function lists__listWeekdaysShort (format, index) {\n return list(format, index, 'weekdaysShort', 7, 'day');\n }\n\n function lists__listWeekdaysMin (format, index) {\n return list(format, index, 'weekdaysMin', 7, 'day');\n }\n\n locale_locales__getSetGlobalLocale('en', {\n ordinalParse: /\\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 utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale);\n utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale);\n\n var mathAbs = Math.abs;\n\n function duration_abs__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 duration_add_subtract__addSubtract (duration, input, value, direction) {\n var other = create__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 duration_add_subtract__add (input, value) {\n return duration_add_subtract__addSubtract(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function duration_add_subtract__subtract (input, value) {\n return duration_add_subtract__addSubtract(this, input, value, -1);\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 = 0;\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 // Accurately convert days to years, assume start from year 0.\n years = absFloor(daysToYears(days));\n days -= absFloor(yearsToDays(years));\n\n // 30 days to a month\n // TODO (iskren): Use anchor date (like 1st Jan) to compute this.\n months += absFloor(days / 30);\n days %= 30;\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 daysToYears (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n return days * 400 / 146097;\n }\n\n function yearsToDays (years) {\n // years * 365 + absFloor(years / 4) -\n // absFloor(years / 100) + absFloor(years / 400);\n return years * 146097 / 400;\n }\n\n function as (units) {\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 + daysToYears(days) * 12;\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(yearsToDays(this._months / 12));\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 duration_as__valueOf () {\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 duration_get__get (units) {\n units = normalizeUnits(units);\n return this[units + 's']();\n }\n\n function makeGetter(name) {\n return function () {\n return this._data[name];\n };\n }\n\n var duration_get__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 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 duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) {\n var duration = create__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.s && ['s', 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 a threshold for relative time strings\n function duration_humanize__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 return true;\n }\n\n function humanize (withSuffix) {\n var locale = this.localeData();\n var output = duration_humanize__relativeTime(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var iso_string__abs = Math.abs;\n\n function iso_string__toISOString() {\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = iso_string__abs(this.years());\n var M = iso_string__abs(this.months());\n var D = iso_string__abs(this.days());\n var h = iso_string__abs(this.hours());\n var m = iso_string__abs(this.minutes());\n var s = iso_string__abs(this.seconds() + this.milliseconds() / 1000);\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 return (total < 0 ? '-' : '') +\n 'P' +\n (Y ? Y + 'Y' : '') +\n (M ? M + 'M' : '') +\n (D ? D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? h + 'H' : '') +\n (m ? m + 'M' : '') +\n (s ? s + 'S' : '');\n }\n\n var duration_prototype__proto = Duration.prototype;\n\n duration_prototype__proto.abs = duration_abs__abs;\n duration_prototype__proto.add = duration_add_subtract__add;\n duration_prototype__proto.subtract = duration_add_subtract__subtract;\n duration_prototype__proto.as = as;\n duration_prototype__proto.asMilliseconds = asMilliseconds;\n duration_prototype__proto.asSeconds = asSeconds;\n duration_prototype__proto.asMinutes = asMinutes;\n duration_prototype__proto.asHours = asHours;\n duration_prototype__proto.asDays = asDays;\n duration_prototype__proto.asWeeks = asWeeks;\n duration_prototype__proto.asMonths = asMonths;\n duration_prototype__proto.asYears = asYears;\n duration_prototype__proto.valueOf = duration_as__valueOf;\n duration_prototype__proto._bubble = bubble;\n duration_prototype__proto.get = duration_get__get;\n duration_prototype__proto.milliseconds = duration_get__milliseconds;\n duration_prototype__proto.seconds = seconds;\n duration_prototype__proto.minutes = minutes;\n duration_prototype__proto.hours = hours;\n duration_prototype__proto.days = days;\n duration_prototype__proto.weeks = weeks;\n duration_prototype__proto.months = months;\n duration_prototype__proto.years = years;\n duration_prototype__proto.humanize = humanize;\n duration_prototype__proto.toISOString = iso_string__toISOString;\n duration_prototype__proto.toString = iso_string__toISOString;\n duration_prototype__proto.toJSON = iso_string__toISOString;\n duration_prototype__proto.locale = locale;\n duration_prototype__proto.localeData = localeData;\n\n // Deprecations\n duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString);\n duration_prototype__proto.lang = lang;\n\n // Side effect imports\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 utils_hooks__hooks.version = '2.10.3';\n\n setHookCallback(local__createLocal);\n\n utils_hooks__hooks.fn = momentPrototype;\n utils_hooks__hooks.min = min;\n utils_hooks__hooks.max = max;\n utils_hooks__hooks.utc = create_utc__createUTC;\n utils_hooks__hooks.unix = moment__createUnix;\n utils_hooks__hooks.months = lists__listMonths;\n utils_hooks__hooks.isDate = isDate;\n utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale;\n utils_hooks__hooks.invalid = valid__createInvalid;\n utils_hooks__hooks.duration = create__createDuration;\n utils_hooks__hooks.isMoment = isMoment;\n utils_hooks__hooks.weekdays = lists__listWeekdays;\n utils_hooks__hooks.parseZone = moment__createInZone;\n utils_hooks__hooks.localeData = locale_locales__getLocale;\n utils_hooks__hooks.isDuration = isDuration;\n utils_hooks__hooks.monthsShort = lists__listMonthsShort;\n utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin;\n utils_hooks__hooks.defineLocale = defineLocale;\n utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort;\n utils_hooks__hooks.normalizeUnits = normalizeUnits;\n utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold;\n\n var _moment = utils_hooks__hooks;\n\n return _moment;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./bower_components/moment/moment.js\n ** module id = 2\n ** module chunks = 0 1 2\n **/","define(function (require) {\n var angular = require('angular');\n var existingModules = {};\n var _ = require('lodash');\n var links = [];\n\n function link(module) {\n // as modules are defined they will be set as requirements for this app\n links.push(module);\n\n // merge in the existing modules\n module.requires = _.union(module.requires, _.keys(existingModules));\n }\n\n function get(moduleName, requires) {\n var module = existingModules[moduleName];\n\n if (module === void 0) {\n // create the module\n module = existingModules[moduleName] = angular.module(moduleName, []);\n\n module.close = _.partial(close, moduleName);\n\n // ensure that it is required by linked modules\n _.each(links, function (app) {\n if (!~app.requires.indexOf(moduleName)) app.requires.push(moduleName);\n });\n }\n\n if (requires) {\n // update requires list with possibly new requirements\n module.requires = _.union(module.requires, requires);\n }\n\n return module;\n }\n\n function close(moduleName) {\n var module = existingModules[moduleName];\n\n // already closed\n if (!module) return;\n\n // if the module is currently linked, unlink it\n var i = links.indexOf(module);\n if (i > -1) links.splice(i, 1);\n\n // remove from linked modules list of required modules\n _.each(links, function (app) {\n _.pull(app.requires, moduleName);\n });\n\n // remove module from existingModules\n delete existingModules[moduleName];\n }\n\n return {\n link: link,\n get: get,\n close: close\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/modules.js\n ** module id = 3\n ** module chunks = 0 1 2\n **/","/*** IMPORTS FROM imports-loader ***/\nvar $ = require(\"jquery\");\n\n/**\n * @license AngularJS v1.2.28\n * (c) 2010-2014 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(window, document, undefined) {'use strict';\n\n/**\n * @description\n *\n * This object provides a utility for producing rich Error messages within\n * Angular. It can be called as follows:\n *\n * var exampleMinErr = minErr('example');\n * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);\n *\n * The above creates an instance of minErr in the example namespace. The\n * resulting error will have a namespaced error code of example.one. The\n * resulting error will replace {0} with the value of foo, and {1} with the\n * value of bar. The object is not restricted in the number of arguments it can\n * take.\n *\n * If fewer arguments are specified than necessary for interpolation, the extra\n * interpolation markers will be preserved in the final string.\n *\n * Since data will be parsed statically during a build step, some restrictions\n * are applied with respect to how minErr instances are created and called.\n * Instances should have names of the form namespaceMinErr for a minErr created\n * using minErr('namespace') . Error codes, namespaces and template strings\n * should all be static strings, not variables or general expressions.\n *\n * @param {string} module The namespace to use for the new minErr instance.\n * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance\n */\n\nfunction minErr(module) {\n return function () {\n var code = arguments[0],\n prefix = '[' + (module ? module + ':' : '') + code + '] ',\n template = arguments[1],\n templateArgs = arguments,\n stringify = function (obj) {\n if (typeof obj === 'function') {\n return obj.toString().replace(/ \\{[\\s\\S]*$/, '');\n } else if (typeof obj === 'undefined') {\n return 'undefined';\n } else if (typeof obj !== 'string') {\n return JSON.stringify(obj);\n }\n return obj;\n },\n message, i;\n\n message = prefix + template.replace(/\\{\\d+\\}/g, function (match) {\n var index = +match.slice(1, -1), arg;\n\n if (index + 2 < templateArgs.length) {\n arg = templateArgs[index + 2];\n if (typeof arg === 'function') {\n return arg.toString().replace(/ ?\\{[\\s\\S]*$/, '');\n } else if (typeof arg === 'undefined') {\n return 'undefined';\n } else if (typeof arg !== 'string') {\n return toJson(arg);\n }\n return arg;\n }\n return match;\n });\n\n message = message + '\\nhttp://errors.angularjs.org/1.2.28/' +\n (module ? module + '/' : '') + code;\n for (i = 2; i < arguments.length; i++) {\n message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +\n encodeURIComponent(stringify(arguments[i]));\n }\n\n return new Error(message);\n };\n}\n\n/* We need to tell jshint what variables are being exported */\n/* global angular: true,\n msie: true,\n jqLite: true,\n jQuery: true,\n slice: true,\n push: true,\n toString: true,\n ngMinErr: true,\n angularModule: true,\n nodeName_: true,\n uid: true,\n VALIDITY_STATE_PROPERTY: true,\n\n lowercase: true,\n uppercase: true,\n manualLowercase: true,\n manualUppercase: true,\n nodeName_: true,\n isArrayLike: true,\n forEach: true,\n sortedKeys: true,\n forEachSorted: true,\n reverseParams: true,\n nextUid: true,\n setHashKey: true,\n extend: true,\n int: true,\n inherit: true,\n noop: true,\n identity: true,\n valueFn: true,\n isUndefined: true,\n isDefined: true,\n isObject: true,\n isString: true,\n isNumber: true,\n isDate: true,\n isArray: true,\n isFunction: true,\n isRegExp: true,\n isWindow: true,\n isScope: true,\n isFile: true,\n isBlob: true,\n isBoolean: true,\n isPromiseLike: true,\n trim: true,\n isElement: true,\n makeMap: true,\n map: true,\n size: true,\n includes: true,\n indexOf: true,\n arrayRemove: true,\n isLeafNode: true,\n copy: true,\n shallowCopy: true,\n equals: true,\n csp: true,\n concat: true,\n sliceArgs: true,\n bind: true,\n toJsonReplacer: true,\n toJson: true,\n fromJson: true,\n toBoolean: true,\n startingTag: true,\n tryDecodeURIComponent: true,\n parseKeyValue: true,\n toKeyValue: true,\n encodeUriSegment: true,\n encodeUriQuery: true,\n angularInit: true,\n bootstrap: true,\n snake_case: true,\n bindJQuery: true,\n assertArg: true,\n assertArgFn: true,\n assertNotHasOwnProperty: true,\n getter: true,\n getBlockElements: true,\n hasOwnProperty: true,\n*/\n\n////////////////////////////////////\n\n/**\n * @ngdoc module\n * @name ng\n * @module ng\n * @description\n *\n * # ng (core module)\n * The ng module is loaded by default when an AngularJS application is started. The module itself\n * contains the essential components for an AngularJS application to function. The table below\n * lists a high level breakdown of each of the services/factories, filters, directives and testing\n * components available within this core module.\n *\n *
\n */\n\n// The name of a form control's ValidityState property.\n// This is used so that it's possible for internal tests to create mock ValidityStates.\nvar VALIDITY_STATE_PROPERTY = 'validity';\n\n/**\n * @ngdoc function\n * @name angular.lowercase\n * @module ng\n * @kind function\n *\n * @description Converts the specified string to lowercase.\n * @param {string} string String to be converted to lowercase.\n * @returns {string} Lowercased string.\n */\nvar lowercase = function(string){return isString(string) ? string.toLowerCase() : string;};\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * @ngdoc function\n * @name angular.uppercase\n * @module ng\n * @kind function\n *\n * @description Converts the specified string to uppercase.\n * @param {string} string String to be converted to uppercase.\n * @returns {string} Uppercased string.\n */\nvar uppercase = function(string){return isString(string) ? string.toUpperCase() : string;};\n\n\nvar manualLowercase = function(s) {\n /* jshint bitwise: false */\n return isString(s)\n ? s.replace(/[A-Z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) | 32);})\n : s;\n};\nvar manualUppercase = function(s) {\n /* jshint bitwise: false */\n return isString(s)\n ? s.replace(/[a-z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) & ~32);})\n : s;\n};\n\n\n// String#toLowerCase and String#toUpperCase don't produce correct results in browsers with Turkish\n// locale, for this reason we need to detect this case and redefine lowercase/uppercase methods\n// with correct but slower alternatives.\nif ('i' !== 'I'.toLowerCase()) {\n lowercase = manualLowercase;\n uppercase = manualUppercase;\n}\n\n\nvar\n msie, // holds major version number for IE, or NaN if UA is not IE.\n jqLite, // delay binding since jQuery could be loaded after us.\n jQuery, // delay binding\n slice = [].slice,\n push = [].push,\n toString = Object.prototype.toString,\n ngMinErr = minErr('ng'),\n\n /** @name angular */\n angular = window.angular || (window.angular = {}),\n angularModule,\n nodeName_,\n uid = ['0', '0', '0'];\n\n/**\n * IE 11 changed the format of the UserAgent string.\n * See http://msdn.microsoft.com/en-us/library/ms537503.aspx\n */\nmsie = int((/msie (\\d+)/.exec(lowercase(navigator.userAgent)) || [])[1]);\nif (isNaN(msie)) {\n msie = int((/trident\\/.*; rv:(\\d+)/.exec(lowercase(navigator.userAgent)) || [])[1]);\n}\n\n\n/**\n * @private\n * @param {*} obj\n * @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments,\n * String ...)\n */\nfunction isArrayLike(obj) {\n if (obj == null || isWindow(obj)) {\n return false;\n }\n\n var length = obj.length;\n\n if (obj.nodeType === 1 && length) {\n return true;\n }\n\n return isString(obj) || isArray(obj) || length === 0 ||\n typeof length === 'number' && length > 0 && (length - 1) in obj;\n}\n\n/**\n * @ngdoc function\n * @name angular.forEach\n * @module ng\n * @kind function\n *\n * @description\n * Invokes the `iterator` function once for each item in `obj` collection, which can be either an\n * object or an array. The `iterator` function is invoked with `iterator(value, key)`, where `value`\n * is the value of an object property or an array element and `key` is the object property key or\n * array element index. Specifying a `context` for the function is optional.\n *\n * It is worth noting that `.forEach` does not iterate over inherited properties because it filters\n * using the `hasOwnProperty` method.\n *\n ```js\n var values = {name: 'misko', gender: 'male'};\n var log = [];\n angular.forEach(values, function(value, key) {\n this.push(key + ': ' + value);\n }, log);\n expect(log).toEqual(['name: misko', 'gender: male']);\n ```\n *\n * @param {Object|Array} obj Object to iterate over.\n * @param {Function} iterator Iterator function.\n * @param {Object=} context Object to become context (`this`) for the iterator function.\n * @returns {Object|Array} Reference to `obj`.\n */\nfunction forEach(obj, iterator, context) {\n var key;\n if (obj) {\n if (isFunction(obj)) {\n for (key in obj) {\n // Need to check if hasOwnProperty exists,\n // as on IE8 the result of querySelectorAll is an object without a hasOwnProperty function\n if (key != 'prototype' && key != 'length' && key != 'name' && (!obj.hasOwnProperty || obj.hasOwnProperty(key))) {\n iterator.call(context, obj[key], key);\n }\n }\n } else if (isArray(obj) || isArrayLike(obj)) {\n for (key = 0; key < obj.length; key++) {\n iterator.call(context, obj[key], key);\n }\n } else if (obj.forEach && obj.forEach !== forEach) {\n obj.forEach(iterator, context);\n } else {\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n iterator.call(context, obj[key], key);\n }\n }\n }\n }\n return obj;\n}\n\nfunction sortedKeys(obj) {\n var keys = [];\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n keys.push(key);\n }\n }\n return keys.sort();\n}\n\nfunction forEachSorted(obj, iterator, context) {\n var keys = sortedKeys(obj);\n for ( var i = 0; i < keys.length; i++) {\n iterator.call(context, obj[keys[i]], keys[i]);\n }\n return keys;\n}\n\n\n/**\n * when using forEach the params are value, key, but it is often useful to have key, value.\n * @param {function(string, *)} iteratorFn\n * @returns {function(*, string)}\n */\nfunction reverseParams(iteratorFn) {\n return function(value, key) { iteratorFn(key, value); };\n}\n\n/**\n * A consistent way of creating unique IDs in angular. The ID is a sequence of alpha numeric\n * characters such as '012ABC'. The reason why we are not using simply a number counter is that\n * the number string gets longer over time, and it can also overflow, where as the nextId\n * will grow much slower, it is a string, and it will never overflow.\n *\n * @returns {string} an unique alpha-numeric string\n */\nfunction nextUid() {\n var index = uid.length;\n var digit;\n\n while(index) {\n index--;\n digit = uid[index].charCodeAt(0);\n if (digit == 57 /*'9'*/) {\n uid[index] = 'A';\n return uid.join('');\n }\n if (digit == 90 /*'Z'*/) {\n uid[index] = '0';\n } else {\n uid[index] = String.fromCharCode(digit + 1);\n return uid.join('');\n }\n }\n uid.unshift('0');\n return uid.join('');\n}\n\n\n/**\n * Set or clear the hashkey for an object.\n * @param obj object\n * @param h the hashkey (!truthy to delete the hashkey)\n */\nfunction setHashKey(obj, h) {\n if (h) {\n obj.$$hashKey = h;\n }\n else {\n delete obj.$$hashKey;\n }\n}\n\n/**\n * @ngdoc function\n * @name angular.extend\n * @module ng\n * @kind function\n *\n * @description\n * Extends the destination object `dst` by copying own enumerable properties from the `src` object(s)\n * to `dst`. You can specify multiple `src` objects.\n *\n * @param {Object} dst Destination object.\n * @param {...Object} src Source object(s).\n * @returns {Object} Reference to `dst`.\n */\nfunction extend(dst) {\n var h = dst.$$hashKey;\n forEach(arguments, function(obj) {\n if (obj !== dst) {\n forEach(obj, function(value, key) {\n dst[key] = value;\n });\n }\n });\n\n setHashKey(dst,h);\n return dst;\n}\n\nfunction int(str) {\n return parseInt(str, 10);\n}\n\n\nfunction inherit(parent, extra) {\n return extend(new (extend(function() {}, {prototype:parent}))(), extra);\n}\n\n/**\n * @ngdoc function\n * @name angular.noop\n * @module ng\n * @kind function\n *\n * @description\n * A function that performs no operations. This function can be useful when writing code in the\n * functional style.\n ```js\n function foo(callback) {\n var result = calculateResult();\n (callback || angular.noop)(result);\n }\n ```\n */\nfunction noop() {}\nnoop.$inject = [];\n\n\n/**\n * @ngdoc function\n * @name angular.identity\n * @module ng\n * @kind function\n *\n * @description\n * A function that returns its first argument. This function is useful when writing code in the\n * functional style.\n *\n ```js\n function transformer(transformationFn, value) {\n return (transformationFn || angular.identity)(value);\n };\n ```\n */\nfunction identity($) {return $;}\nidentity.$inject = [];\n\n\nfunction valueFn(value) {return function() {return value;};}\n\n/**\n * @ngdoc function\n * @name angular.isUndefined\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is undefined.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is undefined.\n */\nfunction isUndefined(value){return typeof value === 'undefined';}\n\n\n/**\n * @ngdoc function\n * @name angular.isDefined\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is defined.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is defined.\n */\nfunction isDefined(value){return typeof value !== 'undefined';}\n\n\n/**\n * @ngdoc function\n * @name angular.isObject\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is an `Object`. Unlike `typeof` in JavaScript, `null`s are not\n * considered to be objects. Note that JavaScript arrays are objects.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is an `Object` but not `null`.\n */\nfunction isObject(value){return value != null && typeof value === 'object';}\n\n\n/**\n * @ngdoc function\n * @name angular.isString\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `String`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `String`.\n */\nfunction isString(value){return typeof value === 'string';}\n\n\n/**\n * @ngdoc function\n * @name angular.isNumber\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `Number`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Number`.\n */\nfunction isNumber(value){return typeof value === 'number';}\n\n\n/**\n * @ngdoc function\n * @name angular.isDate\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a value is a date.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Date`.\n */\nfunction isDate(value) {\n return toString.call(value) === '[object Date]';\n}\n\n\n/**\n * @ngdoc function\n * @name angular.isArray\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is an `Array`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is an `Array`.\n */\nvar isArray = (function() {\n if (!isFunction(Array.isArray)) {\n return function(value) {\n return toString.call(value) === '[object Array]';\n };\n }\n return Array.isArray;\n})();\n\n/**\n * @ngdoc function\n * @name angular.isFunction\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `Function`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Function`.\n */\nfunction isFunction(value){return typeof value === 'function';}\n\n\n/**\n * Determines if a value is a regular expression object.\n *\n * @private\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `RegExp`.\n */\nfunction isRegExp(value) {\n return toString.call(value) === '[object RegExp]';\n}\n\n\n/**\n * Checks if `obj` is a window object.\n *\n * @private\n * @param {*} obj Object to check\n * @returns {boolean} True if `obj` is a window obj.\n */\nfunction isWindow(obj) {\n return obj && obj.document && obj.location && obj.alert && obj.setInterval;\n}\n\n\nfunction isScope(obj) {\n return obj && obj.$evalAsync && obj.$watch;\n}\n\n\nfunction isFile(obj) {\n return toString.call(obj) === '[object File]';\n}\n\n\nfunction isBlob(obj) {\n return toString.call(obj) === '[object Blob]';\n}\n\n\nfunction isBoolean(value) {\n return typeof value === 'boolean';\n}\n\n\nfunction isPromiseLike(obj) {\n return obj && isFunction(obj.then);\n}\n\n\nvar trim = (function() {\n // native trim is way faster: http://jsperf.com/angular-trim-test\n // but IE doesn't have it... :-(\n // TODO: we should move this into IE/ES5 polyfill\n if (!String.prototype.trim) {\n return function(value) {\n return isString(value) ? value.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '') : value;\n };\n }\n return function(value) {\n return isString(value) ? value.trim() : value;\n };\n})();\n\n\n/**\n * @ngdoc function\n * @name angular.isElement\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a DOM element (or wrapped jQuery element).\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a DOM element (or wrapped jQuery element).\n */\nfunction isElement(node) {\n return !!(node &&\n (node.nodeName // we are a direct element\n || (node.prop && node.attr && node.find))); // we have an on and find method part of jQuery API\n}\n\n/**\n * @param str 'key1,key2,...'\n * @returns {object} in the form of {key1:true, key2:true, ...}\n */\nfunction makeMap(str) {\n var obj = {}, items = str.split(\",\"), i;\n for ( i = 0; i < items.length; i++ )\n obj[ items[i] ] = true;\n return obj;\n}\n\n\nif (msie < 9) {\n nodeName_ = function(element) {\n element = element.nodeName ? element : element[0];\n return (element.scopeName && element.scopeName != 'HTML')\n ? uppercase(element.scopeName + ':' + element.nodeName) : element.nodeName;\n };\n} else {\n nodeName_ = function(element) {\n return element.nodeName ? element.nodeName : element[0].nodeName;\n };\n}\n\n\nfunction map(obj, iterator, context) {\n var results = [];\n forEach(obj, function(value, index, list) {\n results.push(iterator.call(context, value, index, list));\n });\n return results;\n}\n\n\n/**\n * @description\n * Determines the number of elements in an array, the number of properties an object has, or\n * the length of a string.\n *\n * Note: This function is used to augment the Object type in Angular expressions. See\n * {@link angular.Object} for more information about Angular arrays.\n *\n * @param {Object|Array|string} obj Object, array, or string to inspect.\n * @param {boolean} [ownPropsOnly=false] Count only \"own\" properties in an object\n * @returns {number} The size of `obj` or `0` if `obj` is neither an object nor an array.\n */\nfunction size(obj, ownPropsOnly) {\n var count = 0, key;\n\n if (isArray(obj) || isString(obj)) {\n return obj.length;\n } else if (isObject(obj)) {\n for (key in obj)\n if (!ownPropsOnly || obj.hasOwnProperty(key))\n count++;\n }\n\n return count;\n}\n\n\nfunction includes(array, obj) {\n return indexOf(array, obj) != -1;\n}\n\nfunction indexOf(array, obj) {\n if (array.indexOf) return array.indexOf(obj);\n\n for (var i = 0; i < array.length; i++) {\n if (obj === array[i]) return i;\n }\n return -1;\n}\n\nfunction arrayRemove(array, value) {\n var index = indexOf(array, value);\n if (index >=0)\n array.splice(index, 1);\n return value;\n}\n\nfunction isLeafNode (node) {\n if (node) {\n switch (node.nodeName) {\n case \"OPTION\":\n case \"PRE\":\n case \"TITLE\":\n return true;\n }\n }\n return false;\n}\n\n/**\n * @ngdoc function\n * @name angular.copy\n * @module ng\n * @kind function\n *\n * @description\n * Creates a deep copy of `source`, which should be an object or an array.\n *\n * * If no destination is supplied, a copy of the object or array is created.\n * * If a destination is provided, all of its elements (for array) or properties (for objects)\n * are deleted and then all elements/properties from the source are copied to it.\n * * If `source` is not an object or array (inc. `null` and `undefined`), `source` is returned.\n * * If `source` is identical to 'destination' an exception will be thrown.\n *\n * @param {*} source The source that will be used to make a copy.\n * Can be any type, including primitives, `null`, and `undefined`.\n * @param {(Object|Array)=} destination Destination into which the source is copied. If\n * provided, must be of the same type as `source`.\n * @returns {*} The copy or updated `destination`, if `destination` was specified.\n *\n * @example\n \n \n
\n \n Name:
\n E-mail:
\n Gender: male\n female
\n \n \n \n
form = {{user | json}}
\n
master = {{master | json}}
\n
\n\n \n
\n
\n */\nfunction copy(source, destination, stackSource, stackDest) {\n if (isWindow(source) || isScope(source)) {\n throw ngMinErr('cpws',\n \"Can't copy! Making copies of Window or Scope instances is not supported.\");\n }\n\n if (!destination) {\n destination = source;\n if (source) {\n if (isArray(source)) {\n destination = copy(source, [], stackSource, stackDest);\n } else if (isDate(source)) {\n destination = new Date(source.getTime());\n } else if (isRegExp(source)) {\n destination = new RegExp(source.source, source.toString().match(/[^\\/]*$/)[0]);\n destination.lastIndex = source.lastIndex;\n } else if (isObject(source)) {\n destination = copy(source, {}, stackSource, stackDest);\n }\n }\n } else {\n if (source === destination) throw ngMinErr('cpi',\n \"Can't copy! Source and destination are identical.\");\n\n stackSource = stackSource || [];\n stackDest = stackDest || [];\n\n if (isObject(source)) {\n var index = indexOf(stackSource, source);\n if (index !== -1) return stackDest[index];\n\n stackSource.push(source);\n stackDest.push(destination);\n }\n\n var result;\n if (isArray(source)) {\n destination.length = 0;\n for ( var i = 0; i < source.length; i++) {\n result = copy(source[i], null, stackSource, stackDest);\n if (isObject(source[i])) {\n stackSource.push(source[i]);\n stackDest.push(result);\n }\n destination.push(result);\n }\n } else {\n var h = destination.$$hashKey;\n if (isArray(destination)) {\n destination.length = 0;\n } else {\n forEach(destination, function(value, key) {\n delete destination[key];\n });\n }\n for ( var key in source) {\n result = copy(source[key], null, stackSource, stackDest);\n if (isObject(source[key])) {\n stackSource.push(source[key]);\n stackDest.push(result);\n }\n destination[key] = result;\n }\n setHashKey(destination,h);\n }\n\n }\n return destination;\n}\n\n/**\n * Creates a shallow copy of an object, an array or a primitive\n */\nfunction shallowCopy(src, dst) {\n if (isArray(src)) {\n dst = dst || [];\n\n for ( var i = 0; i < src.length; i++) {\n dst[i] = src[i];\n }\n } else if (isObject(src)) {\n dst = dst || {};\n\n for (var key in src) {\n if (hasOwnProperty.call(src, key) && !(key.charAt(0) === '$' && key.charAt(1) === '$')) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst || src;\n}\n\n\n/**\n * @ngdoc function\n * @name angular.equals\n * @module ng\n * @kind function\n *\n * @description\n * Determines if two objects or two values are equivalent. Supports value types, regular\n * expressions, arrays and objects.\n *\n * Two objects or values are considered equivalent if at least one of the following is true:\n *\n * * Both objects or values pass `===` comparison.\n * * Both objects or values are of the same type and all of their properties are equal by\n * comparing them with `angular.equals`.\n * * Both values are NaN. (In JavaScript, NaN == NaN => false. But we consider two NaN as equal)\n * * Both values represent the same regular expression (In JavaScript,\n * /abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual\n * representation matches).\n *\n * During a property comparison, properties of `function` type and properties with names\n * that begin with `$` are ignored.\n *\n * Scope and DOMWindow objects are being compared only by identify (`===`).\n *\n * @param {*} o1 Object or value to compare.\n * @param {*} o2 Object or value to compare.\n * @returns {boolean} True if arguments are equal.\n */\nfunction equals(o1, o2) {\n if (o1 === o2) return true;\n if (o1 === null || o2 === null) return false;\n if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN\n var t1 = typeof o1, t2 = typeof o2, length, key, keySet;\n if (t1 == t2) {\n if (t1 == 'object') {\n if (isArray(o1)) {\n if (!isArray(o2)) return false;\n if ((length = o1.length) == o2.length) {\n for(key=0; key 2 ? sliceArgs(arguments, 2) : [];\n if (isFunction(fn) && !(fn instanceof RegExp)) {\n return curryArgs.length\n ? function() {\n return arguments.length\n ? fn.apply(self, curryArgs.concat(slice.call(arguments, 0)))\n : fn.apply(self, curryArgs);\n }\n : function() {\n return arguments.length\n ? fn.apply(self, arguments)\n : fn.call(self);\n };\n } else {\n // in IE, native methods are not functions so they cannot be bound (note: they don't need to be)\n return fn;\n }\n}\n\n\nfunction toJsonReplacer(key, value) {\n var val = value;\n\n if (typeof key === 'string' && key.charAt(0) === '$') {\n val = undefined;\n } else if (isWindow(value)) {\n val = '$WINDOW';\n } else if (value && document === value) {\n val = '$DOCUMENT';\n } else if (isScope(value)) {\n val = '$SCOPE';\n }\n\n return val;\n}\n\n\n/**\n * @ngdoc function\n * @name angular.toJson\n * @module ng\n * @kind function\n *\n * @description\n * Serializes input into a JSON-formatted string. Properties with leading $ characters will be\n * stripped since angular uses this notation internally.\n *\n * @param {Object|Array|Date|string|number} obj Input to be serialized into JSON.\n * @param {boolean=} pretty If set to true, the JSON output will contain newlines and whitespace.\n * @returns {string|undefined} JSON-ified string representing `obj`.\n */\nfunction toJson(obj, pretty) {\n if (typeof obj === 'undefined') return undefined;\n return JSON.stringify(obj, toJsonReplacer, pretty ? ' ' : null);\n}\n\n\n/**\n * @ngdoc function\n * @name angular.fromJson\n * @module ng\n * @kind function\n *\n * @description\n * Deserializes a JSON string.\n *\n * @param {string} json JSON string to deserialize.\n * @returns {Object|Array|string|number} Deserialized thingy.\n */\nfunction fromJson(json) {\n return isString(json)\n ? JSON.parse(json)\n : json;\n}\n\n\nfunction toBoolean(value) {\n if (typeof value === 'function') {\n value = true;\n } else if (value && value.length !== 0) {\n var v = lowercase(\"\" + value);\n value = !(v == 'f' || v == '0' || v == 'false' || v == 'no' || v == 'n' || v == '[]');\n } else {\n value = false;\n }\n return value;\n}\n\n/**\n * @returns {string} Returns the string representation of the element.\n */\nfunction startingTag(element) {\n element = jqLite(element).clone();\n try {\n // turns out IE does not let you set .html() on elements which\n // are not allowed to have children. So we just ignore it.\n element.empty();\n } catch(e) {}\n // As Per DOM Standards\n var TEXT_NODE = 3;\n var elemHtml = jqLite('
').append(element).html();\n try {\n return element[0].nodeType === TEXT_NODE ? lowercase(elemHtml) :\n elemHtml.\n match(/^(<[^>]+>)/)[1].\n replace(/^<([\\w\\-]+)/, function(match, nodeName) { return '<' + lowercase(nodeName); });\n } catch(e) {\n return lowercase(elemHtml);\n }\n\n}\n\n\n/////////////////////////////////////////////////\n\n/**\n * Tries to decode the URI component without throwing an exception.\n *\n * @private\n * @param str value potential URI component to check.\n * @returns {boolean} True if `value` can be decoded\n * with the decodeURIComponent function.\n */\nfunction tryDecodeURIComponent(value) {\n try {\n return decodeURIComponent(value);\n } catch(e) {\n // Ignore any invalid uri component\n }\n}\n\n\n/**\n * Parses an escaped url query string into key-value pairs.\n * @returns {Object.}\n */\nfunction parseKeyValue(/**string*/keyValue) {\n var obj = {}, key_value, key;\n forEach((keyValue || \"\").split('&'), function(keyValue) {\n if ( keyValue ) {\n key_value = keyValue.replace(/\\+/g,'%20').split('=');\n key = tryDecodeURIComponent(key_value[0]);\n if ( isDefined(key) ) {\n var val = isDefined(key_value[1]) ? tryDecodeURIComponent(key_value[1]) : true;\n if (!hasOwnProperty.call(obj, key)) {\n obj[key] = val;\n } else if(isArray(obj[key])) {\n obj[key].push(val);\n } else {\n obj[key] = [obj[key],val];\n }\n }\n }\n });\n return obj;\n}\n\nfunction toKeyValue(obj) {\n var parts = [];\n forEach(obj, function(value, key) {\n if (isArray(value)) {\n forEach(value, function(arrayValue) {\n parts.push(encodeUriQuery(key, true) +\n (arrayValue === true ? '' : '=' + encodeUriQuery(arrayValue, true)));\n });\n } else {\n parts.push(encodeUriQuery(key, true) +\n (value === true ? '' : '=' + encodeUriQuery(value, true)));\n }\n });\n return parts.length ? parts.join('&') : '';\n}\n\n\n/**\n * We need our custom method because encodeURIComponent is too aggressive and doesn't follow\n * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set (pchar) allowed in path\n * segments:\n * segment = *pchar\n * pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n * pct-encoded = \"%\" HEXDIG HEXDIG\n * unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\n * / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n */\nfunction encodeUriSegment(val) {\n return encodeUriQuery(val, true).\n replace(/%26/gi, '&').\n replace(/%3D/gi, '=').\n replace(/%2B/gi, '+');\n}\n\n\n/**\n * This method is intended for encoding *key* or *value* parts of query component. We need a custom\n * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be\n * encoded per http://tools.ietf.org/html/rfc3986:\n * query = *( pchar / \"/\" / \"?\" )\n * pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n * unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * pct-encoded = \"%\" HEXDIG HEXDIG\n * sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\n * / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n */\nfunction encodeUriQuery(val, pctEncodeSpaces) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));\n}\n\n\n/**\n * @ngdoc directive\n * @name ngApp\n * @module ng\n *\n * @element ANY\n * @param {angular.Module} ngApp an optional application\n * {@link angular.module module} name to load.\n *\n * @description\n *\n * Use this directive to **auto-bootstrap** an AngularJS application. The `ngApp` directive\n * designates the **root element** of the application and is typically placed near the root element\n * of the page - e.g. on the `` or `` tags.\n *\n * Only one AngularJS application can be auto-bootstrapped per HTML document. The first `ngApp`\n * found in the document will be used to define the root element to auto-bootstrap as an\n * application. To run multiple applications in an HTML document you must manually bootstrap them using\n * {@link angular.bootstrap} instead. AngularJS applications cannot be nested within each other.\n *\n * You can specify an **AngularJS module** to be used as the root module for the application. This\n * module will be loaded into the {@link auto.$injector} when the application is bootstrapped and\n * should contain the application code needed or have dependencies on other modules that will\n * contain the code. See {@link angular.module} for more information.\n *\n * In the example below if the `ngApp` directive were not placed on the `html` element then the\n * document would not be compiled, the `AppController` would not be instantiated and the `{{ a+b }}`\n * would not be resolved to `3`.\n *\n * `ngApp` is the easiest, and most common, way to bootstrap an application.\n *\n \n \n
\n I can add: {{a}} + {{b}} = {{ a+b }}\n
\n
\n \n angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) {\n $scope.a = 1;\n $scope.b = 2;\n });\n \n
\n *\n */\nfunction angularInit(element, bootstrap) {\n var elements = [element],\n appElement,\n module,\n names = ['ng:app', 'ng-app', 'x-ng-app', 'data-ng-app'],\n NG_APP_CLASS_REGEXP = /\\sng[:\\-]app(:\\s*([\\w\\d_]+);?)?\\s/;\n\n function append(element) {\n element && elements.push(element);\n }\n\n forEach(names, function(name) {\n names[name] = true;\n append(document.getElementById(name));\n name = name.replace(':', '\\\\:');\n if (element.querySelectorAll) {\n forEach(element.querySelectorAll('.' + name), append);\n forEach(element.querySelectorAll('.' + name + '\\\\:'), append);\n forEach(element.querySelectorAll('[' + name + ']'), append);\n }\n });\n\n forEach(elements, function(element) {\n if (!appElement) {\n var className = ' ' + element.className + ' ';\n var match = NG_APP_CLASS_REGEXP.exec(className);\n if (match) {\n appElement = element;\n module = (match[2] || '').replace(/\\s+/g, ',');\n } else {\n forEach(element.attributes, function(attr) {\n if (!appElement && names[attr.name]) {\n appElement = element;\n module = attr.value;\n }\n });\n }\n }\n });\n if (appElement) {\n bootstrap(appElement, module ? [module] : []);\n }\n}\n\n/**\n * @ngdoc function\n * @name angular.bootstrap\n * @module ng\n * @description\n * Use this function to manually start up angular application.\n *\n * See: {@link guide/bootstrap Bootstrap}\n *\n * Note that ngScenario-based end-to-end tests cannot use this function to bootstrap manually.\n * They must use {@link ng.directive:ngApp ngApp}.\n *\n * Angular will detect if it has been loaded into the browser more than once and only allow the\n * first loaded script to be bootstrapped and will report a warning to the browser console for\n * each of the subsequent scripts. This prevents strange results in applications, where otherwise\n * multiple instances of Angular try to work on the DOM.\n *\n * \n * \n * \n *
\n * \n * \n * \n * \n * \n * \n * \n *
{{heading}}
{{fill}}
\n *
\n *
\n * \n * var app = angular.module('multi-bootstrap', [])\n *\n * .controller('BrokenTable', function($scope) {\n * $scope.headings = ['One', 'Two', 'Three'];\n * $scope.fillings = [[1, 2, 3], ['A', 'B', 'C'], [7, 8, 9]];\n * });\n * \n * \n * it('should only insert one table cell for each item in $scope.fillings', function() {\n * expect(element.all(by.css('td')).count())\n * .toBe(9);\n * });\n * \n *
\n *\n * @param {DOMElement} element DOM element which is the root of angular application.\n * @param {Array=} modules an array of modules to load into the application.\n * Each item in the array should be the name of a predefined module or a (DI annotated)\n * function that will be invoked by the injector as a run block.\n * See: {@link angular.module modules}\n * @returns {auto.$injector} Returns the newly created injector for this app.\n */\nfunction bootstrap(element, modules) {\n var doBootstrap = function() {\n element = jqLite(element);\n\n if (element.injector()) {\n var tag = (element[0] === document) ? 'document' : startingTag(element);\n //Encode angle brackets to prevent input from being sanitized to empty string #8683\n throw ngMinErr(\n 'btstrpd',\n \"App Already Bootstrapped with this Element '{0}'\",\n tag.replace(//,'>'));\n }\n\n modules = modules || [];\n modules.unshift(['$provide', function($provide) {\n $provide.value('$rootElement', element);\n }]);\n modules.unshift('ng');\n var injector = createInjector(modules);\n injector.invoke(['$rootScope', '$rootElement', '$compile', '$injector', '$animate',\n function(scope, element, compile, injector, animate) {\n scope.$apply(function() {\n element.data('$injector', injector);\n compile(element)(scope);\n });\n }]\n );\n return injector;\n };\n\n var NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/;\n\n if (window && !NG_DEFER_BOOTSTRAP.test(window.name)) {\n return doBootstrap();\n }\n\n window.name = window.name.replace(NG_DEFER_BOOTSTRAP, '');\n angular.resumeBootstrap = function(extraModules) {\n forEach(extraModules, function(module) {\n modules.push(module);\n });\n doBootstrap();\n };\n}\n\nvar SNAKE_CASE_REGEXP = /[A-Z]/g;\nfunction snake_case(name, separator) {\n separator = separator || '_';\n return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {\n return (pos ? separator : '') + letter.toLowerCase();\n });\n}\n\nfunction bindJQuery() {\n // bind to jQuery if present;\n jQuery = window.jQuery;\n // Use jQuery if it exists with proper functionality, otherwise default to us.\n // Angular 1.2+ requires jQuery 1.7.1+ for on()/off() support.\n if (jQuery && jQuery.fn.on) {\n jqLite = jQuery;\n extend(jQuery.fn, {\n scope: JQLitePrototype.scope,\n isolateScope: JQLitePrototype.isolateScope,\n controller: JQLitePrototype.controller,\n injector: JQLitePrototype.injector,\n inheritedData: JQLitePrototype.inheritedData\n });\n // Method signature:\n // jqLitePatchJQueryRemove(name, dispatchThis, filterElems, getterIfNoArguments)\n jqLitePatchJQueryRemove('remove', true, true, false);\n jqLitePatchJQueryRemove('empty', false, false, false);\n jqLitePatchJQueryRemove('html', false, false, true);\n } else {\n jqLite = JQLite;\n }\n angular.element = jqLite;\n}\n\n/**\n * throw error if the argument is falsy.\n */\nfunction assertArg(arg, name, reason) {\n if (!arg) {\n throw ngMinErr('areq', \"Argument '{0}' is {1}\", (name || '?'), (reason || \"required\"));\n }\n return arg;\n}\n\nfunction assertArgFn(arg, name, acceptArrayAnnotation) {\n if (acceptArrayAnnotation && isArray(arg)) {\n arg = arg[arg.length - 1];\n }\n\n assertArg(isFunction(arg), name, 'not a function, got ' +\n (arg && typeof arg === 'object' ? arg.constructor.name || 'Object' : typeof arg));\n return arg;\n}\n\n/**\n * throw error if the name given is hasOwnProperty\n * @param {String} name the name to test\n * @param {String} context the context in which the name is used, such as module or directive\n */\nfunction assertNotHasOwnProperty(name, context) {\n if (name === 'hasOwnProperty') {\n throw ngMinErr('badname', \"hasOwnProperty is not a valid {0} name\", context);\n }\n}\n\n/**\n * Return the value accessible from the object by path. Any undefined traversals are ignored\n * @param {Object} obj starting object\n * @param {String} path path to traverse\n * @param {boolean} [bindFnToScope=true]\n * @returns {Object} value as accessible by path\n */\n//TODO(misko): this function needs to be removed\nfunction getter(obj, path, bindFnToScope) {\n if (!path) return obj;\n var keys = path.split('.');\n var key;\n var lastInstance = obj;\n var len = keys.length;\n\n for (var i = 0; i < len; i++) {\n key = keys[i];\n if (obj) {\n obj = (lastInstance = obj)[key];\n }\n }\n if (!bindFnToScope && isFunction(obj)) {\n return bind(lastInstance, obj);\n }\n return obj;\n}\n\n/**\n * Return the DOM siblings between the first and last node in the given array.\n * @param {Array} array like object\n * @returns {DOMElement} object containing the elements\n */\nfunction getBlockElements(nodes) {\n var startNode = nodes[0],\n endNode = nodes[nodes.length - 1];\n if (startNode === endNode) {\n return jqLite(startNode);\n }\n\n var element = startNode;\n var elements = [element];\n\n do {\n element = element.nextSibling;\n if (!element) break;\n elements.push(element);\n } while (element !== endNode);\n\n return jqLite(elements);\n}\n\n/**\n * @ngdoc type\n * @name angular.Module\n * @module ng\n * @description\n *\n * Interface for configuring angular {@link angular.module modules}.\n */\n\nfunction setupModuleLoader(window) {\n\n var $injectorMinErr = minErr('$injector');\n var ngMinErr = minErr('ng');\n\n function ensure(obj, name, factory) {\n return obj[name] || (obj[name] = factory());\n }\n\n var angular = ensure(window, 'angular', Object);\n\n // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap\n angular.$$minErr = angular.$$minErr || minErr;\n\n return ensure(angular, 'module', function() {\n /** @type {Object.} */\n var modules = {};\n\n /**\n * @ngdoc function\n * @name angular.module\n * @module ng\n * @description\n *\n * The `angular.module` is a global place for creating, registering and retrieving Angular\n * modules.\n * All modules (angular core or 3rd party) that should be available to an application must be\n * registered using this mechanism.\n *\n * When passed two or more arguments, a new module is created. If passed only one argument, an\n * existing module (the name passed as the first argument to `module`) is retrieved.\n *\n *\n * # Module\n *\n * A module is a collection of services, directives, controllers, filters, and configuration information.\n * `angular.module` is used to configure the {@link auto.$injector $injector}.\n *\n * ```js\n * // Create a new module\n * var myModule = angular.module('myModule', []);\n *\n * // register a new service\n * myModule.value('appName', 'MyCoolApp');\n *\n * // configure existing services inside initialization blocks.\n * myModule.config(['$locationProvider', function($locationProvider) {\n * // Configure existing providers\n * $locationProvider.hashPrefix('!');\n * }]);\n * ```\n *\n * Then you can create an injector and load your modules like this:\n *\n * ```js\n * var injector = angular.injector(['ng', 'myModule'])\n * ```\n *\n * However it's more likely that you'll just use\n * {@link ng.directive:ngApp ngApp} or\n * {@link angular.bootstrap} to simplify this process for you.\n *\n * @param {!string} name The name of the module to create or retrieve.\n * @param {!Array.=} requires If specified then new module is being created. If\n * unspecified then the module is being retrieved for further configuration.\n * @param {Function=} configFn Optional configuration function for the module. Same as\n * {@link angular.Module#config Module#config()}.\n * @returns {module} new module with the {@link angular.Module} api.\n */\n return function module(name, requires, configFn) {\n var assertNotHasOwnProperty = function(name, context) {\n if (name === 'hasOwnProperty') {\n throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);\n }\n };\n\n assertNotHasOwnProperty(name, 'module');\n if (requires && modules.hasOwnProperty(name)) {\n modules[name] = null;\n }\n return ensure(modules, name, function() {\n if (!requires) {\n throw $injectorMinErr('nomod', \"Module '{0}' is not available! You either misspelled \" +\n \"the module name or forgot to load it. If registering a module ensure that you \" +\n \"specify the dependencies as the second argument.\", name);\n }\n\n /** @type {!Array.>} */\n var invokeQueue = [];\n\n /** @type {!Array.} */\n var runBlocks = [];\n\n var config = invokeLater('$injector', 'invoke');\n\n /** @type {angular.Module} */\n var moduleInstance = {\n // Private state\n _invokeQueue: invokeQueue,\n _runBlocks: runBlocks,\n\n /**\n * @ngdoc property\n * @name angular.Module#requires\n * @module ng\n *\n * @description\n * Holds the list of modules which the injector will load before the current module is\n * loaded.\n */\n requires: requires,\n\n /**\n * @ngdoc property\n * @name angular.Module#name\n * @module ng\n *\n * @description\n * Name of the module.\n */\n name: name,\n\n\n /**\n * @ngdoc method\n * @name angular.Module#provider\n * @module ng\n * @param {string} name service name\n * @param {Function} providerType Construction function for creating new instance of the\n * service.\n * @description\n * See {@link auto.$provide#provider $provide.provider()}.\n */\n provider: invokeLater('$provide', 'provider'),\n\n /**\n * @ngdoc method\n * @name angular.Module#factory\n * @module ng\n * @param {string} name service name\n * @param {Function} providerFunction Function for creating new instance of the service.\n * @description\n * See {@link auto.$provide#factory $provide.factory()}.\n */\n factory: invokeLater('$provide', 'factory'),\n\n /**\n * @ngdoc method\n * @name angular.Module#service\n * @module ng\n * @param {string} name service name\n * @param {Function} constructor A constructor function that will be instantiated.\n * @description\n * See {@link auto.$provide#service $provide.service()}.\n */\n service: invokeLater('$provide', 'service'),\n\n /**\n * @ngdoc method\n * @name angular.Module#value\n * @module ng\n * @param {string} name service name\n * @param {*} object Service instance object.\n * @description\n * See {@link auto.$provide#value $provide.value()}.\n */\n value: invokeLater('$provide', 'value'),\n\n /**\n * @ngdoc method\n * @name angular.Module#constant\n * @module ng\n * @param {string} name constant name\n * @param {*} object Constant value.\n * @description\n * Because the constant are fixed, they get applied before other provide methods.\n * See {@link auto.$provide#constant $provide.constant()}.\n */\n constant: invokeLater('$provide', 'constant', 'unshift'),\n\n /**\n * @ngdoc method\n * @name angular.Module#animation\n * @module ng\n * @param {string} name animation name\n * @param {Function} animationFactory Factory function for creating new instance of an\n * animation.\n * @description\n *\n * **NOTE**: animations take effect only if the **ngAnimate** module is loaded.\n *\n *\n * Defines an animation hook that can be later used with\n * {@link ngAnimate.$animate $animate} service and directives that use this service.\n *\n * ```js\n * module.animation('.animation-name', function($inject1, $inject2) {\n * return {\n * eventName : function(element, done) {\n * //code to run the animation\n * //once complete, then run done()\n * return function cancellationFunction(element) {\n * //code to cancel the animation\n * }\n * }\n * }\n * })\n * ```\n *\n * See {@link ngAnimate.$animateProvider#register $animateProvider.register()} and\n * {@link ngAnimate ngAnimate module} for more information.\n */\n animation: invokeLater('$animateProvider', 'register'),\n\n /**\n * @ngdoc method\n * @name angular.Module#filter\n * @module ng\n * @param {string} name Filter name.\n * @param {Function} filterFactory Factory function for creating new instance of filter.\n * @description\n * See {@link ng.$filterProvider#register $filterProvider.register()}.\n */\n filter: invokeLater('$filterProvider', 'register'),\n\n /**\n * @ngdoc method\n * @name angular.Module#controller\n * @module ng\n * @param {string|Object} name Controller name, or an object map of controllers where the\n * keys are the names and the values are the constructors.\n * @param {Function} constructor Controller constructor function.\n * @description\n * See {@link ng.$controllerProvider#register $controllerProvider.register()}.\n */\n controller: invokeLater('$controllerProvider', 'register'),\n\n /**\n * @ngdoc method\n * @name angular.Module#directive\n * @module ng\n * @param {string|Object} name Directive name, or an object map of directives where the\n * keys are the names and the values are the factories.\n * @param {Function} directiveFactory Factory function for creating new instance of\n * directives.\n * @description\n * See {@link ng.$compileProvider#directive $compileProvider.directive()}.\n */\n directive: invokeLater('$compileProvider', 'directive'),\n\n /**\n * @ngdoc method\n * @name angular.Module#config\n * @module ng\n * @param {Function} configFn Execute this function on module load. Useful for service\n * configuration.\n * @description\n * Use this method to register work which needs to be performed on module loading.\n * For more about how to configure services, see\n * {@link providers#providers_provider-recipe Provider Recipe}.\n */\n config: config,\n\n /**\n * @ngdoc method\n * @name angular.Module#run\n * @module ng\n * @param {Function} initializationFn Execute this function after injector creation.\n * Useful for application initialization.\n * @description\n * Use this method to register work which should be performed when the injector is done\n * loading all modules.\n */\n run: function(block) {\n runBlocks.push(block);\n return this;\n }\n };\n\n if (configFn) {\n config(configFn);\n }\n\n return moduleInstance;\n\n /**\n * @param {string} provider\n * @param {string} method\n * @param {String=} insertMethod\n * @returns {angular.Module}\n */\n function invokeLater(provider, method, insertMethod) {\n return function() {\n invokeQueue[insertMethod || 'push']([provider, method, arguments]);\n return moduleInstance;\n };\n }\n });\n };\n });\n\n}\n\n/* global angularModule: true,\n version: true,\n\n $LocaleProvider,\n $CompileProvider,\n\n htmlAnchorDirective,\n inputDirective,\n inputDirective,\n formDirective,\n scriptDirective,\n selectDirective,\n styleDirective,\n optionDirective,\n ngBindDirective,\n ngBindHtmlDirective,\n ngBindTemplateDirective,\n ngClassDirective,\n ngClassEvenDirective,\n ngClassOddDirective,\n ngCspDirective,\n ngCloakDirective,\n ngControllerDirective,\n ngFormDirective,\n ngHideDirective,\n ngIfDirective,\n ngIncludeDirective,\n ngIncludeFillContentDirective,\n ngInitDirective,\n ngNonBindableDirective,\n ngPluralizeDirective,\n ngRepeatDirective,\n ngShowDirective,\n ngStyleDirective,\n ngSwitchDirective,\n ngSwitchWhenDirective,\n ngSwitchDefaultDirective,\n ngOptionsDirective,\n ngTranscludeDirective,\n ngModelDirective,\n ngListDirective,\n ngChangeDirective,\n requiredDirective,\n requiredDirective,\n ngValueDirective,\n ngAttributeAliasDirectives,\n ngEventDirectives,\n\n $AnchorScrollProvider,\n $AnimateProvider,\n $BrowserProvider,\n $CacheFactoryProvider,\n $ControllerProvider,\n $DocumentProvider,\n $ExceptionHandlerProvider,\n $FilterProvider,\n $InterpolateProvider,\n $IntervalProvider,\n $HttpProvider,\n $HttpBackendProvider,\n $LocationProvider,\n $LogProvider,\n $ParseProvider,\n $RootScopeProvider,\n $QProvider,\n $$SanitizeUriProvider,\n $SceProvider,\n $SceDelegateProvider,\n $SnifferProvider,\n $TemplateCacheProvider,\n $TimeoutProvider,\n $$RAFProvider,\n $$AsyncCallbackProvider,\n $WindowProvider\n*/\n\n\n/**\n * @ngdoc object\n * @name angular.version\n * @module ng\n * @description\n * An object that contains information about the current AngularJS version. This object has the\n * following properties:\n *\n * - `full` – `{string}` – Full version string, such as \"0.9.18\".\n * - `major` – `{number}` – Major version number, such as \"0\".\n * - `minor` – `{number}` – Minor version number, such as \"9\".\n * - `dot` – `{number}` – Dot version number, such as \"18\".\n * - `codeName` – `{string}` – Code name of the release, such as \"jiggling-armfat\".\n */\nvar version = {\n full: '1.2.28', // all of these placeholder strings will be replaced by grunt's\n major: 1, // package task\n minor: 2,\n dot: 28,\n codeName: 'finnish-disembarkation'\n};\n\n\nfunction publishExternalAPI(angular){\n extend(angular, {\n 'bootstrap': bootstrap,\n 'copy': copy,\n 'extend': extend,\n 'equals': equals,\n 'element': jqLite,\n 'forEach': forEach,\n 'injector': createInjector,\n 'noop': noop,\n 'bind': bind,\n 'toJson': toJson,\n 'fromJson': fromJson,\n 'identity': identity,\n 'isUndefined': isUndefined,\n 'isDefined': isDefined,\n 'isString': isString,\n 'isFunction': isFunction,\n 'isObject': isObject,\n 'isNumber': isNumber,\n 'isElement': isElement,\n 'isArray': isArray,\n 'version': version,\n 'isDate': isDate,\n 'lowercase': lowercase,\n 'uppercase': uppercase,\n 'callbacks': {counter: 0},\n '$$minErr': minErr,\n '$$csp': csp\n });\n\n angularModule = setupModuleLoader(window);\n try {\n angularModule('ngLocale');\n } catch (e) {\n angularModule('ngLocale', []).provider('$locale', $LocaleProvider);\n }\n\n angularModule('ng', ['ngLocale'], ['$provide',\n function ngModule($provide) {\n // $$sanitizeUriProvider needs to be before $compileProvider as it is used by it.\n $provide.provider({\n $$sanitizeUri: $$SanitizeUriProvider\n });\n $provide.provider('$compile', $CompileProvider).\n directive({\n a: htmlAnchorDirective,\n input: inputDirective,\n textarea: inputDirective,\n form: formDirective,\n script: scriptDirective,\n select: selectDirective,\n style: styleDirective,\n option: optionDirective,\n ngBind: ngBindDirective,\n ngBindHtml: ngBindHtmlDirective,\n ngBindTemplate: ngBindTemplateDirective,\n ngClass: ngClassDirective,\n ngClassEven: ngClassEvenDirective,\n ngClassOdd: ngClassOddDirective,\n ngCloak: ngCloakDirective,\n ngController: ngControllerDirective,\n ngForm: ngFormDirective,\n ngHide: ngHideDirective,\n ngIf: ngIfDirective,\n ngInclude: ngIncludeDirective,\n ngInit: ngInitDirective,\n ngNonBindable: ngNonBindableDirective,\n ngPluralize: ngPluralizeDirective,\n ngRepeat: ngRepeatDirective,\n ngShow: ngShowDirective,\n ngStyle: ngStyleDirective,\n ngSwitch: ngSwitchDirective,\n ngSwitchWhen: ngSwitchWhenDirective,\n ngSwitchDefault: ngSwitchDefaultDirective,\n ngOptions: ngOptionsDirective,\n ngTransclude: ngTranscludeDirective,\n ngModel: ngModelDirective,\n ngList: ngListDirective,\n ngChange: ngChangeDirective,\n required: requiredDirective,\n ngRequired: requiredDirective,\n ngValue: ngValueDirective\n }).\n directive({\n ngInclude: ngIncludeFillContentDirective\n }).\n directive(ngAttributeAliasDirectives).\n directive(ngEventDirectives);\n $provide.provider({\n $anchorScroll: $AnchorScrollProvider,\n $animate: $AnimateProvider,\n $browser: $BrowserProvider,\n $cacheFactory: $CacheFactoryProvider,\n $controller: $ControllerProvider,\n $document: $DocumentProvider,\n $exceptionHandler: $ExceptionHandlerProvider,\n $filter: $FilterProvider,\n $interpolate: $InterpolateProvider,\n $interval: $IntervalProvider,\n $http: $HttpProvider,\n $httpBackend: $HttpBackendProvider,\n $location: $LocationProvider,\n $log: $LogProvider,\n $parse: $ParseProvider,\n $rootScope: $RootScopeProvider,\n $q: $QProvider,\n $sce: $SceProvider,\n $sceDelegate: $SceDelegateProvider,\n $sniffer: $SnifferProvider,\n $templateCache: $TemplateCacheProvider,\n $timeout: $TimeoutProvider,\n $window: $WindowProvider,\n $$rAF: $$RAFProvider,\n $$asyncCallback : $$AsyncCallbackProvider\n });\n }\n ]);\n}\n\n/* global JQLitePrototype: true,\n addEventListenerFn: true,\n removeEventListenerFn: true,\n BOOLEAN_ATTR: true\n*/\n\n//////////////////////////////////\n//JQLite\n//////////////////////////////////\n\n/**\n * @ngdoc function\n * @name angular.element\n * @module ng\n * @kind function\n *\n * @description\n * Wraps a raw DOM element or HTML string as a [jQuery](http://jquery.com) element.\n *\n * If jQuery is available, `angular.element` is an alias for the\n * [jQuery](http://api.jquery.com/jQuery/) function. If jQuery is not available, `angular.element`\n * delegates to Angular's built-in subset of jQuery, called \"jQuery lite\" or \"jqLite.\"\n *\n *
jqLite is a tiny, API-compatible subset of jQuery that allows\n * Angular to manipulate the DOM in a cross-browser compatible way. **jqLite** implements only the most\n * commonly needed functionality with the goal of having a very small footprint.
\n *\n * To use jQuery, simply load it before `DOMContentLoaded` event fired.\n *\n *
**Note:** all element references in Angular are always wrapped with jQuery or\n * jqLite; they are never raw DOM references.
\n *\n * ## Angular's jqLite\n * jqLite provides only the following jQuery methods:\n *\n * - [`addClass()`](http://api.jquery.com/addClass/)\n * - [`after()`](http://api.jquery.com/after/)\n * - [`append()`](http://api.jquery.com/append/)\n * - [`attr()`](http://api.jquery.com/attr/)\n * - [`bind()`](http://api.jquery.com/bind/) - Does not support namespaces, selectors or eventData\n * - [`children()`](http://api.jquery.com/children/) - Does not support selectors\n * - [`clone()`](http://api.jquery.com/clone/)\n * - [`contents()`](http://api.jquery.com/contents/)\n * - [`css()`](http://api.jquery.com/css/) - Only retrieves inline-styles, does not call `getComputedStyles()`\n * - [`data()`](http://api.jquery.com/data/)\n * - [`empty()`](http://api.jquery.com/empty/)\n * - [`eq()`](http://api.jquery.com/eq/)\n * - [`find()`](http://api.jquery.com/find/) - Limited to lookups by tag name\n * - [`hasClass()`](http://api.jquery.com/hasClass/)\n * - [`html()`](http://api.jquery.com/html/)\n * - [`next()`](http://api.jquery.com/next/) - Does not support selectors\n * - [`on()`](http://api.jquery.com/on/) - Does not support namespaces, selectors or eventData\n * - [`off()`](http://api.jquery.com/off/) - Does not support namespaces or selectors\n * - [`one()`](http://api.jquery.com/one/) - Does not support namespaces or selectors\n * - [`parent()`](http://api.jquery.com/parent/) - Does not support selectors\n * - [`prepend()`](http://api.jquery.com/prepend/)\n * - [`prop()`](http://api.jquery.com/prop/)\n * - [`ready()`](http://api.jquery.com/ready/)\n * - [`remove()`](http://api.jquery.com/remove/)\n * - [`removeAttr()`](http://api.jquery.com/removeAttr/)\n * - [`removeClass()`](http://api.jquery.com/removeClass/)\n * - [`removeData()`](http://api.jquery.com/removeData/)\n * - [`replaceWith()`](http://api.jquery.com/replaceWith/)\n * - [`text()`](http://api.jquery.com/text/)\n * - [`toggleClass()`](http://api.jquery.com/toggleClass/)\n * - [`triggerHandler()`](http://api.jquery.com/triggerHandler/) - Passes a dummy event object to handlers.\n * - [`unbind()`](http://api.jquery.com/unbind/) - Does not support namespaces\n * - [`val()`](http://api.jquery.com/val/)\n * - [`wrap()`](http://api.jquery.com/wrap/)\n *\n * ## jQuery/jqLite Extras\n * Angular also provides the following additional methods and events to both jQuery and jqLite:\n *\n * ### Events\n * - `$destroy` - AngularJS intercepts all jqLite/jQuery's DOM destruction apis and fires this event\n * on all DOM nodes being removed. This can be used to clean up any 3rd party bindings to the DOM\n * element before it is removed.\n *\n * ### Methods\n * - `controller(name)` - retrieves the controller of the current element or its parent. By default\n * retrieves controller associated with the `ngController` directive. If `name` is provided as\n * camelCase directive name, then the controller for this directive will be retrieved (e.g.\n * `'ngModel'`).\n * - `injector()` - retrieves the injector of the current element or its parent.\n * - `scope()` - retrieves the {@link ng.$rootScope.Scope scope} of the current\n * element or its parent.\n * - `isolateScope()` - retrieves an isolate {@link ng.$rootScope.Scope scope} if one is attached directly to the\n * current element. This getter should be used only on elements that contain a directive which starts a new isolate\n * scope. Calling `scope()` on this element always returns the original non-isolate scope.\n * - `inheritedData()` - same as `data()`, but walks up the DOM until a value is found or the top\n * parent element is reached.\n *\n * @param {string|DOMElement} element HTML string or DOMElement to be wrapped into jQuery.\n * @returns {Object} jQuery object.\n */\n\nJQLite.expando = 'ng339';\n\nvar jqCache = JQLite.cache = {},\n jqId = 1,\n addEventListenerFn = (window.document.addEventListener\n ? function(element, type, fn) {element.addEventListener(type, fn, false);}\n : function(element, type, fn) {element.attachEvent('on' + type, fn);}),\n removeEventListenerFn = (window.document.removeEventListener\n ? function(element, type, fn) {element.removeEventListener(type, fn, false); }\n : function(element, type, fn) {element.detachEvent('on' + type, fn); });\n\n/*\n * !!! This is an undocumented \"private\" function !!!\n */\nvar jqData = JQLite._data = function(node) {\n //jQuery always returns an object on cache miss\n return this.cache[node[this.expando]] || {};\n};\n\nfunction jqNextId() { return ++jqId; }\n\n\nvar SPECIAL_CHARS_REGEXP = /([\\:\\-\\_]+(.))/g;\nvar MOZ_HACK_REGEXP = /^moz([A-Z])/;\nvar jqLiteMinErr = minErr('jqLite');\n\n/**\n * Converts snake_case to camelCase.\n * Also there is special case for Moz prefix starting with upper case letter.\n * @param name Name to normalize\n */\nfunction camelCase(name) {\n return name.\n replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {\n return offset ? letter.toUpperCase() : letter;\n }).\n replace(MOZ_HACK_REGEXP, 'Moz$1');\n}\n\n/////////////////////////////////////////////\n// jQuery mutation patch\n//\n// In conjunction with bindJQuery intercepts all jQuery's DOM destruction apis and fires a\n// $destroy event on all DOM nodes being removed.\n//\n/////////////////////////////////////////////\n\nfunction jqLitePatchJQueryRemove(name, dispatchThis, filterElems, getterIfNoArguments) {\n var originalJqFn = jQuery.fn[name];\n originalJqFn = originalJqFn.$original || originalJqFn;\n removePatch.$original = originalJqFn;\n jQuery.fn[name] = removePatch;\n\n function removePatch(param) {\n // jshint -W040\n var list = filterElems && param ? [this.filter(param)] : [this],\n fireEvent = dispatchThis,\n set, setIndex, setLength,\n element, childIndex, childLength, children;\n\n if (!getterIfNoArguments || param != null) {\n while(list.length) {\n set = list.shift();\n for(setIndex = 0, setLength = set.length; setIndex < setLength; setIndex++) {\n element = jqLite(set[setIndex]);\n if (fireEvent) {\n element.triggerHandler('$destroy');\n } else {\n fireEvent = !fireEvent;\n }\n for(childIndex = 0, childLength = (children = element.children()).length;\n childIndex < childLength;\n childIndex++) {\n list.push(jQuery(children[childIndex]));\n }\n }\n }\n }\n return originalJqFn.apply(this, arguments);\n }\n}\n\nvar SINGLE_TAG_REGEXP = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/;\nvar HTML_REGEXP = /<|&#?\\w+;/;\nvar TAG_NAME_REGEXP = /<([\\w:]+)/;\nvar XHTML_TAG_REGEXP = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi;\n\nvar wrapMap = {\n 'option': [1, ''],\n\n 'thead': [1, '', '
'],\n 'col': [2, '', '
'],\n 'tr': [2, '', '
'],\n 'td': [3, '', '
'],\n '_default': [0, \"\", \"\"]\n};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\nfunction jqLiteIsTextNode(html) {\n return !HTML_REGEXP.test(html);\n}\n\nfunction jqLiteBuildFragment(html, context) {\n var elem, tmp, tag, wrap,\n fragment = context.createDocumentFragment(),\n nodes = [], i, j, jj;\n\n if (jqLiteIsTextNode(html)) {\n // Convert non-html into a text node\n nodes.push(context.createTextNode(html));\n } else {\n tmp = fragment.appendChild(context.createElement('div'));\n // Convert html into DOM nodes\n tag = (TAG_NAME_REGEXP.exec(html) || [\"\", \"\"])[1].toLowerCase();\n wrap = wrapMap[tag] || wrapMap._default;\n tmp.innerHTML = '
 
' +\n wrap[1] + html.replace(XHTML_TAG_REGEXP, \"<$1>\") + wrap[2];\n tmp.removeChild(tmp.firstChild);\n\n // Descend through wrappers to the right content\n i = wrap[0];\n while (i--) {\n tmp = tmp.lastChild;\n }\n\n for (j=0, jj=tmp.childNodes.length; j -1);\n}\n\nfunction jqLiteRemoveClass(element, cssClasses) {\n if (cssClasses && element.setAttribute) {\n forEach(cssClasses.split(' '), function(cssClass) {\n element.setAttribute('class', trim(\n (\" \" + (element.getAttribute('class') || '') + \" \")\n .replace(/[\\n\\t]/g, \" \")\n .replace(\" \" + trim(cssClass) + \" \", \" \"))\n );\n });\n }\n}\n\nfunction jqLiteAddClass(element, cssClasses) {\n if (cssClasses && element.setAttribute) {\n var existingClasses = (' ' + (element.getAttribute('class') || '') + ' ')\n .replace(/[\\n\\t]/g, \" \");\n\n forEach(cssClasses.split(' '), function(cssClass) {\n cssClass = trim(cssClass);\n if (existingClasses.indexOf(' ' + cssClass + ' ') === -1) {\n existingClasses += cssClass + ' ';\n }\n });\n\n element.setAttribute('class', trim(existingClasses));\n }\n}\n\nfunction jqLiteAddNodes(root, elements) {\n if (elements) {\n elements = (!elements.nodeName && isDefined(elements.length) && !isWindow(elements))\n ? elements\n : [ elements ];\n for(var i=0; i < elements.length; i++) {\n root.push(elements[i]);\n }\n }\n}\n\nfunction jqLiteController(element, name) {\n return jqLiteInheritedData(element, '$' + (name || 'ngController' ) + 'Controller');\n}\n\nfunction jqLiteInheritedData(element, name, value) {\n // if element is the document object work with the html element instead\n // this makes $(document).scope() possible\n if(element.nodeType == 9) {\n element = element.documentElement;\n }\n var names = isArray(name) ? name : [name];\n\n while (element) {\n for (var i = 0, ii = names.length; i < ii; i++) {\n if ((value = jqLite.data(element, names[i])) !== undefined) return value;\n }\n\n // If dealing with a document fragment node with a host element, and no parent, use the host\n // element as the parent. This enables directives within a Shadow DOM or polyfilled Shadow DOM\n // to lookup parent controllers.\n element = element.parentNode || (element.nodeType === 11 && element.host);\n }\n}\n\nfunction jqLiteEmpty(element) {\n for (var i = 0, childNodes = element.childNodes; i < childNodes.length; i++) {\n jqLiteDealoc(childNodes[i]);\n }\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n}\n\n//////////////////////////////////////////\n// Functions which are declared directly.\n//////////////////////////////////////////\nvar JQLitePrototype = JQLite.prototype = {\n ready: function(fn) {\n var fired = false;\n\n function trigger() {\n if (fired) return;\n fired = true;\n fn();\n }\n\n // check if document already is loaded\n if (document.readyState === 'complete'){\n setTimeout(trigger);\n } else {\n this.on('DOMContentLoaded', trigger); // works for modern browsers and IE9\n // we can not use jqLite since we are not done loading and jQuery could be loaded later.\n // jshint -W064\n JQLite(window).on('load', trigger); // fallback to window.onload for others\n // jshint +W064\n }\n },\n toString: function() {\n var value = [];\n forEach(this, function(e){ value.push('' + e);});\n return '[' + value.join(', ') + ']';\n },\n\n eq: function(index) {\n return (index >= 0) ? jqLite(this[index]) : jqLite(this[this.length + index]);\n },\n\n length: 0,\n push: push,\n sort: [].sort,\n splice: [].splice\n};\n\n//////////////////////////////////////////\n// Functions iterating getter/setters.\n// these functions return self on setter and\n// value on get.\n//////////////////////////////////////////\nvar BOOLEAN_ATTR = {};\nforEach('multiple,selected,checked,disabled,readOnly,required,open'.split(','), function(value) {\n BOOLEAN_ATTR[lowercase(value)] = value;\n});\nvar BOOLEAN_ELEMENTS = {};\nforEach('input,select,option,textarea,button,form,details'.split(','), function(value) {\n BOOLEAN_ELEMENTS[uppercase(value)] = true;\n});\n\nfunction getBooleanAttrName(element, name) {\n // check dom last since we will most likely fail on name\n var booleanAttr = BOOLEAN_ATTR[name.toLowerCase()];\n\n // booleanAttr is here twice to minimize DOM access\n return booleanAttr && BOOLEAN_ELEMENTS[element.nodeName] && booleanAttr;\n}\n\nforEach({\n data: jqLiteData,\n removeData: jqLiteRemoveData\n}, function(fn, name) {\n JQLite[name] = fn;\n});\n\nforEach({\n data: jqLiteData,\n inheritedData: jqLiteInheritedData,\n\n scope: function(element) {\n // Can't use jqLiteData here directly so we stay compatible with jQuery!\n return jqLite.data(element, '$scope') || jqLiteInheritedData(element.parentNode || element, ['$isolateScope', '$scope']);\n },\n\n isolateScope: function(element) {\n // Can't use jqLiteData here directly so we stay compatible with jQuery!\n return jqLite.data(element, '$isolateScope') || jqLite.data(element, '$isolateScopeNoTemplate');\n },\n\n controller: jqLiteController,\n\n injector: function(element) {\n return jqLiteInheritedData(element, '$injector');\n },\n\n removeAttr: function(element,name) {\n element.removeAttribute(name);\n },\n\n hasClass: jqLiteHasClass,\n\n css: function(element, name, value) {\n name = camelCase(name);\n\n if (isDefined(value)) {\n element.style[name] = value;\n } else {\n var val;\n\n if (msie <= 8) {\n // this is some IE specific weirdness that jQuery 1.6.4 does not sure why\n val = element.currentStyle && element.currentStyle[name];\n if (val === '') val = 'auto';\n }\n\n val = val || element.style[name];\n\n if (msie <= 8) {\n // jquery weirdness :-/\n val = (val === '') ? undefined : val;\n }\n\n return val;\n }\n },\n\n attr: function(element, name, value){\n var lowercasedName = lowercase(name);\n if (BOOLEAN_ATTR[lowercasedName]) {\n if (isDefined(value)) {\n if (!!value) {\n element[name] = true;\n element.setAttribute(name, lowercasedName);\n } else {\n element[name] = false;\n element.removeAttribute(lowercasedName);\n }\n } else {\n return (element[name] ||\n (element.attributes.getNamedItem(name)|| noop).specified)\n ? lowercasedName\n : undefined;\n }\n } else if (isDefined(value)) {\n element.setAttribute(name, value);\n } else if (element.getAttribute) {\n // the extra argument \"2\" is to get the right thing for a.href in IE, see jQuery code\n // some elements (e.g. Document) don't have get attribute, so return undefined\n var ret = element.getAttribute(name, 2);\n // normalize non-existing attributes to undefined (as jQuery)\n return ret === null ? undefined : ret;\n }\n },\n\n prop: function(element, name, value) {\n if (isDefined(value)) {\n element[name] = value;\n } else {\n return element[name];\n }\n },\n\n text: (function() {\n var NODE_TYPE_TEXT_PROPERTY = [];\n if (msie < 9) {\n NODE_TYPE_TEXT_PROPERTY[1] = 'innerText'; /** Element **/\n NODE_TYPE_TEXT_PROPERTY[3] = 'nodeValue'; /** Text **/\n } else {\n NODE_TYPE_TEXT_PROPERTY[1] = /** Element **/\n NODE_TYPE_TEXT_PROPERTY[3] = 'textContent'; /** Text **/\n }\n getText.$dv = '';\n return getText;\n\n function getText(element, value) {\n var textProp = NODE_TYPE_TEXT_PROPERTY[element.nodeType];\n if (isUndefined(value)) {\n return textProp ? element[textProp] : '';\n }\n element[textProp] = value;\n }\n })(),\n\n val: function(element, value) {\n if (isUndefined(value)) {\n if (nodeName_(element) === 'SELECT' && element.multiple) {\n var result = [];\n forEach(element.options, function (option) {\n if (option.selected) {\n result.push(option.value || option.text);\n }\n });\n return result.length === 0 ? null : result;\n }\n return element.value;\n }\n element.value = value;\n },\n\n html: function(element, value) {\n if (isUndefined(value)) {\n return element.innerHTML;\n }\n for (var i = 0, childNodes = element.childNodes; i < childNodes.length; i++) {\n jqLiteDealoc(childNodes[i]);\n }\n element.innerHTML = value;\n },\n\n empty: jqLiteEmpty\n}, function(fn, name){\n /**\n * Properties: writes return selection, reads return first value\n */\n JQLite.prototype[name] = function(arg1, arg2) {\n var i, key;\n var nodeCount = this.length;\n\n // jqLiteHasClass has only two arguments, but is a getter-only fn, so we need to special-case it\n // in a way that survives minification.\n // jqLiteEmpty takes no arguments but is a setter.\n if (fn !== jqLiteEmpty &&\n (((fn.length == 2 && (fn !== jqLiteHasClass && fn !== jqLiteController)) ? arg1 : arg2) === undefined)) {\n if (isObject(arg1)) {\n\n // we are a write, but the object properties are the key/values\n for (i = 0; i < nodeCount; i++) {\n if (fn === jqLiteData) {\n // data() takes the whole object in jQuery\n fn(this[i], arg1);\n } else {\n for (key in arg1) {\n fn(this[i], key, arg1[key]);\n }\n }\n }\n // return self for chaining\n return this;\n } else {\n // we are a read, so read the first child.\n // TODO: do we still need this?\n var value = fn.$dv;\n // Only if we have $dv do we iterate over all, otherwise it is just the first element.\n var jj = (value === undefined) ? Math.min(nodeCount, 1) : nodeCount;\n for (var j = 0; j < jj; j++) {\n var nodeValue = fn(this[j], arg1, arg2);\n value = value ? value + nodeValue : nodeValue;\n }\n return value;\n }\n } else {\n // we are a write, so apply to all children\n for (i = 0; i < nodeCount; i++) {\n fn(this[i], arg1, arg2);\n }\n // return self for chaining\n return this;\n }\n };\n});\n\nfunction createEventHandler(element, events) {\n var eventHandler = function (event, type) {\n if (!event.preventDefault) {\n event.preventDefault = function() {\n event.returnValue = false; //ie\n };\n }\n\n if (!event.stopPropagation) {\n event.stopPropagation = function() {\n event.cancelBubble = true; //ie\n };\n }\n\n if (!event.target) {\n event.target = event.srcElement || document;\n }\n\n if (isUndefined(event.defaultPrevented)) {\n var prevent = event.preventDefault;\n event.preventDefault = function() {\n event.defaultPrevented = true;\n prevent.call(event);\n };\n event.defaultPrevented = false;\n }\n\n event.isDefaultPrevented = function() {\n return event.defaultPrevented || event.returnValue === false;\n };\n\n // Copy event handlers in case event handlers array is modified during execution.\n var eventHandlersCopy = shallowCopy(events[type || event.type] || []);\n\n forEach(eventHandlersCopy, function(fn) {\n fn.call(element, event);\n });\n\n // Remove monkey-patched methods (IE),\n // as they would cause memory leaks in IE8.\n if (msie <= 8) {\n // IE7/8 does not allow to delete property on native object\n event.preventDefault = null;\n event.stopPropagation = null;\n event.isDefaultPrevented = null;\n } else {\n // It shouldn't affect normal browsers (native methods are defined on prototype).\n delete event.preventDefault;\n delete event.stopPropagation;\n delete event.isDefaultPrevented;\n }\n };\n eventHandler.elem = element;\n return eventHandler;\n}\n\n//////////////////////////////////////////\n// Functions iterating traversal.\n// These functions chain results into a single\n// selector.\n//////////////////////////////////////////\nforEach({\n removeData: jqLiteRemoveData,\n\n dealoc: jqLiteDealoc,\n\n on: function onFn(element, type, fn, unsupported){\n if (isDefined(unsupported)) throw jqLiteMinErr('onargs', 'jqLite#on() does not support the `selector` or `eventData` parameters');\n\n var events = jqLiteExpandoStore(element, 'events'),\n handle = jqLiteExpandoStore(element, 'handle');\n\n if (!events) jqLiteExpandoStore(element, 'events', events = {});\n if (!handle) jqLiteExpandoStore(element, 'handle', handle = createEventHandler(element, events));\n\n forEach(type.split(' '), function(type){\n var eventFns = events[type];\n\n if (!eventFns) {\n if (type == 'mouseenter' || type == 'mouseleave') {\n var contains = document.body.contains || document.body.compareDocumentPosition ?\n function( a, b ) {\n // jshint bitwise: false\n var adown = a.nodeType === 9 ? a.documentElement : a,\n bup = b && b.parentNode;\n return a === bup || !!( bup && bup.nodeType === 1 && (\n adown.contains ?\n adown.contains( bup ) :\n a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n ));\n } :\n function( a, b ) {\n if ( b ) {\n while ( (b = b.parentNode) ) {\n if ( b === a ) {\n return true;\n }\n }\n }\n return false;\n };\n\n events[type] = [];\n\n // Refer to jQuery's implementation of mouseenter & mouseleave\n // Read about mouseenter and mouseleave:\n // http://www.quirksmode.org/js/events_mouse.html#link8\n var eventmap = { mouseleave : \"mouseout\", mouseenter : \"mouseover\"};\n\n onFn(element, eventmap[type], function(event) {\n var target = this, related = event.relatedTarget;\n // For mousenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n if ( !related || (related !== target && !contains(target, related)) ){\n handle(event, type);\n }\n });\n\n } else {\n addEventListenerFn(element, type, handle);\n events[type] = [];\n }\n eventFns = events[type];\n }\n eventFns.push(fn);\n });\n },\n\n off: jqLiteOff,\n\n one: function(element, type, fn) {\n element = jqLite(element);\n\n //add the listener twice so that when it is called\n //you can remove the original function and still be\n //able to call element.off(ev, fn) normally\n element.on(type, function onFn() {\n element.off(type, fn);\n element.off(type, onFn);\n });\n element.on(type, fn);\n },\n\n replaceWith: function(element, replaceNode) {\n var index, parent = element.parentNode;\n jqLiteDealoc(element);\n forEach(new JQLite(replaceNode), function(node){\n if (index) {\n parent.insertBefore(node, index.nextSibling);\n } else {\n parent.replaceChild(node, element);\n }\n index = node;\n });\n },\n\n children: function(element) {\n var children = [];\n forEach(element.childNodes, function(element){\n if (element.nodeType === 1)\n children.push(element);\n });\n return children;\n },\n\n contents: function(element) {\n return element.contentDocument || element.childNodes || [];\n },\n\n append: function(element, node) {\n forEach(new JQLite(node), function(child){\n if (element.nodeType === 1 || element.nodeType === 11) {\n element.appendChild(child);\n }\n });\n },\n\n prepend: function(element, node) {\n if (element.nodeType === 1) {\n var index = element.firstChild;\n forEach(new JQLite(node), function(child){\n element.insertBefore(child, index);\n });\n }\n },\n\n wrap: function(element, wrapNode) {\n wrapNode = jqLite(wrapNode)[0];\n var parent = element.parentNode;\n if (parent) {\n parent.replaceChild(wrapNode, element);\n }\n wrapNode.appendChild(element);\n },\n\n remove: function(element) {\n jqLiteDealoc(element);\n var parent = element.parentNode;\n if (parent) parent.removeChild(element);\n },\n\n after: function(element, newElement) {\n var index = element, parent = element.parentNode;\n forEach(new JQLite(newElement), function(node){\n parent.insertBefore(node, index.nextSibling);\n index = node;\n });\n },\n\n addClass: jqLiteAddClass,\n removeClass: jqLiteRemoveClass,\n\n toggleClass: function(element, selector, condition) {\n if (selector) {\n forEach(selector.split(' '), function(className){\n var classCondition = condition;\n if (isUndefined(classCondition)) {\n classCondition = !jqLiteHasClass(element, className);\n }\n (classCondition ? jqLiteAddClass : jqLiteRemoveClass)(element, className);\n });\n }\n },\n\n parent: function(element) {\n var parent = element.parentNode;\n return parent && parent.nodeType !== 11 ? parent : null;\n },\n\n next: function(element) {\n if (element.nextElementSibling) {\n return element.nextElementSibling;\n }\n\n // IE8 doesn't have nextElementSibling\n var elm = element.nextSibling;\n while (elm != null && elm.nodeType !== 1) {\n elm = elm.nextSibling;\n }\n return elm;\n },\n\n find: function(element, selector) {\n if (element.getElementsByTagName) {\n return element.getElementsByTagName(selector);\n } else {\n return [];\n }\n },\n\n clone: jqLiteClone,\n\n triggerHandler: function(element, event, extraParameters) {\n\n var dummyEvent, eventFnsCopy, handlerArgs;\n var eventName = event.type || event;\n var eventFns = (jqLiteExpandoStore(element, 'events') || {})[eventName];\n\n if (eventFns) {\n\n // Create a dummy event to pass to the handlers\n dummyEvent = {\n preventDefault: function() { this.defaultPrevented = true; },\n isDefaultPrevented: function() { return this.defaultPrevented === true; },\n stopPropagation: noop,\n type: eventName,\n target: element\n };\n\n // If a custom event was provided then extend our dummy event with it\n if (event.type) {\n dummyEvent = extend(dummyEvent, event);\n }\n\n // Copy event handlers in case event handlers array is modified during execution.\n eventFnsCopy = shallowCopy(eventFns);\n handlerArgs = extraParameters ? [dummyEvent].concat(extraParameters) : [dummyEvent];\n\n forEach(eventFnsCopy, function(fn) {\n fn.apply(element, handlerArgs);\n });\n\n }\n }\n}, function(fn, name){\n /**\n * chaining functions\n */\n JQLite.prototype[name] = function(arg1, arg2, arg3) {\n var value;\n for(var i=0; i < this.length; i++) {\n if (isUndefined(value)) {\n value = fn(this[i], arg1, arg2, arg3);\n if (isDefined(value)) {\n // any function which returns a value needs to be wrapped\n value = jqLite(value);\n }\n } else {\n jqLiteAddNodes(value, fn(this[i], arg1, arg2, arg3));\n }\n }\n return isDefined(value) ? value : this;\n };\n\n // bind legacy bind/unbind to on/off\n JQLite.prototype.bind = JQLite.prototype.on;\n JQLite.prototype.unbind = JQLite.prototype.off;\n});\n\n/**\n * Computes a hash of an 'obj'.\n * Hash of a:\n * string is string\n * number is number as string\n * object is either result of calling $$hashKey function on the object or uniquely generated id,\n * that is also assigned to the $$hashKey property of the object.\n *\n * @param obj\n * @returns {string} hash string such that the same input will have the same hash string.\n * The resulting string key is in 'type:hashKey' format.\n */\nfunction hashKey(obj, nextUidFn) {\n var objType = typeof obj,\n key;\n\n if (objType == 'function' || (objType == 'object' && obj !== null)) {\n if (typeof (key = obj.$$hashKey) == 'function') {\n // must invoke on object to keep the right this\n key = obj.$$hashKey();\n } else if (key === undefined) {\n key = obj.$$hashKey = (nextUidFn || nextUid)();\n }\n } else {\n key = obj;\n }\n\n return objType + ':' + key;\n}\n\n/**\n * HashMap which can use objects as keys\n */\nfunction HashMap(array, isolatedUid) {\n if (isolatedUid) {\n var uid = 0;\n this.nextUid = function() {\n return ++uid;\n };\n }\n forEach(array, this.put, this);\n}\nHashMap.prototype = {\n /**\n * Store key value pair\n * @param key key to store can be any type\n * @param value value to store can be any type\n */\n put: function(key, value) {\n this[hashKey(key, this.nextUid)] = value;\n },\n\n /**\n * @param key\n * @returns {Object} the value for the key\n */\n get: function(key) {\n return this[hashKey(key, this.nextUid)];\n },\n\n /**\n * Remove the key/value pair\n * @param key\n */\n remove: function(key) {\n var value = this[key = hashKey(key, this.nextUid)];\n delete this[key];\n return value;\n }\n};\n\n/**\n * @ngdoc function\n * @module ng\n * @name angular.injector\n * @kind function\n *\n * @description\n * Creates an injector object that can be used for retrieving services as well as for\n * dependency injection (see {@link guide/di dependency injection}).\n *\n\n * @param {Array.} modules A list of module functions or their aliases. See\n * {@link angular.module}. The `ng` module must be explicitly added.\n * @returns {injector} Injector object. See {@link auto.$injector $injector}.\n *\n * @example\n * Typical usage\n * ```js\n * // create an injector\n * var $injector = angular.injector(['ng']);\n *\n * // use the injector to kick off your application\n * // use the type inference to auto inject arguments, or use implicit injection\n * $injector.invoke(function($rootScope, $compile, $document){\n * $compile($document)($rootScope);\n * $rootScope.$digest();\n * });\n * ```\n *\n * Sometimes you want to get access to the injector of a currently running Angular app\n * from outside Angular. Perhaps, you want to inject and compile some markup after the\n * application has been bootstrapped. You can do this using the extra `injector()` added\n * to JQuery/jqLite elements. See {@link angular.element}.\n *\n * *This is fairly rare but could be the case if a third party library is injecting the\n * markup.*\n *\n * In the following example a new block of HTML containing a `ng-controller`\n * directive is added to the end of the document body by JQuery. We then compile and link\n * it into the current AngularJS scope.\n *\n * ```js\n * var $div = $('
{{content.label}}
');\n * $(document.body).append($div);\n *\n * angular.element(document).injector().invoke(function($compile) {\n * var scope = angular.element($div).scope();\n * $compile($div)(scope);\n * });\n * ```\n */\n\n\n/**\n * @ngdoc module\n * @name auto\n * @description\n *\n * Implicit module which gets automatically added to each {@link auto.$injector $injector}.\n */\n\nvar FN_ARGS = /^function\\s*[^\\(]*\\(\\s*([^\\)]*)\\)/m;\nvar FN_ARG_SPLIT = /,/;\nvar FN_ARG = /^\\s*(_?)(\\S+?)\\1\\s*$/;\nvar STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/mg;\nvar $injectorMinErr = minErr('$injector');\nfunction annotate(fn) {\n var $inject,\n fnText,\n argDecl,\n last;\n\n if (typeof fn === 'function') {\n if (!($inject = fn.$inject)) {\n $inject = [];\n if (fn.length) {\n fnText = fn.toString().replace(STRIP_COMMENTS, '');\n argDecl = fnText.match(FN_ARGS);\n forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg){\n arg.replace(FN_ARG, function(all, underscore, name){\n $inject.push(name);\n });\n });\n }\n fn.$inject = $inject;\n }\n } else if (isArray(fn)) {\n last = fn.length - 1;\n assertArgFn(fn[last], 'fn');\n $inject = fn.slice(0, last);\n } else {\n assertArgFn(fn, 'fn', true);\n }\n return $inject;\n}\n\n///////////////////////////////////////\n\n/**\n * @ngdoc service\n * @name $injector\n *\n * @description\n *\n * `$injector` is used to retrieve object instances as defined by\n * {@link auto.$provide provider}, instantiate types, invoke methods,\n * and load modules.\n *\n * The following always holds true:\n *\n * ```js\n * var $injector = angular.injector();\n * expect($injector.get('$injector')).toBe($injector);\n * expect($injector.invoke(function($injector){\n * return $injector;\n * })).toBe($injector);\n * ```\n *\n * # Injection Function Annotation\n *\n * JavaScript does not have annotations, and annotations are needed for dependency injection. The\n * following are all valid ways of annotating function with injection arguments and are equivalent.\n *\n * ```js\n * // inferred (only works if code not minified/obfuscated)\n * $injector.invoke(function(serviceA){});\n *\n * // annotated\n * function explicit(serviceA) {};\n * explicit.$inject = ['serviceA'];\n * $injector.invoke(explicit);\n *\n * // inline\n * $injector.invoke(['serviceA', function(serviceA){}]);\n * ```\n *\n * ## Inference\n *\n * In JavaScript calling `toString()` on a function returns the function definition. The definition\n * can then be parsed and the function arguments can be extracted. *NOTE:* This does not work with\n * minification, and obfuscation tools since these tools change the argument names.\n *\n * ## `$inject` Annotation\n * By adding an `$inject` property onto a function the injection parameters can be specified.\n *\n * ## Inline\n * As an array of injection names, where the last item in the array is the function to call.\n */\n\n/**\n * @ngdoc method\n * @name $injector#get\n *\n * @description\n * Return an instance of the service.\n *\n * @param {string} name The name of the instance to retrieve.\n * @return {*} The instance.\n */\n\n/**\n * @ngdoc method\n * @name $injector#invoke\n *\n * @description\n * Invoke the method and supply the method arguments from the `$injector`.\n *\n * @param {!Function} fn The function to invoke. Function parameters are injected according to the\n * {@link guide/di $inject Annotation} rules.\n * @param {Object=} self The `this` for the invoked method.\n * @param {Object=} locals Optional object. If preset then any argument names are read from this\n * object first, before the `$injector` is consulted.\n * @returns {*} the value returned by the invoked `fn` function.\n */\n\n/**\n * @ngdoc method\n * @name $injector#has\n *\n * @description\n * Allows the user to query if the particular service exists.\n *\n * @param {string} name Name of the service to query.\n * @returns {boolean} `true` if injector has given service.\n */\n\n/**\n * @ngdoc method\n * @name $injector#instantiate\n * @description\n * Create a new instance of JS type. The method takes a constructor function, invokes the new\n * operator, and supplies all of the arguments to the constructor function as specified by the\n * constructor annotation.\n *\n * @param {Function} Type Annotated constructor function.\n * @param {Object=} locals Optional object. If preset then any argument names are read from this\n * object first, before the `$injector` is consulted.\n * @returns {Object} new instance of `Type`.\n */\n\n/**\n * @ngdoc method\n * @name $injector#annotate\n *\n * @description\n * Returns an array of service names which the function is requesting for injection. This API is\n * used by the injector to determine which services need to be injected into the function when the\n * function is invoked. There are three ways in which the function can be annotated with the needed\n * dependencies.\n *\n * # Argument names\n *\n * The simplest form is to extract the dependencies from the arguments of the function. This is done\n * by converting the function into a string using `toString()` method and extracting the argument\n * names.\n * ```js\n * // Given\n * function MyController($scope, $route) {\n * // ...\n * }\n *\n * // Then\n * expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);\n * ```\n *\n * This method does not work with code minification / obfuscation. For this reason the following\n * annotation strategies are supported.\n *\n * # The `$inject` property\n *\n * If a function has an `$inject` property and its value is an array of strings, then the strings\n * represent names of services to be injected into the function.\n * ```js\n * // Given\n * var MyController = function(obfuscatedScope, obfuscatedRoute) {\n * // ...\n * }\n * // Define function dependencies\n * MyController['$inject'] = ['$scope', '$route'];\n *\n * // Then\n * expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);\n * ```\n *\n * # The array notation\n *\n * It is often desirable to inline Injected functions and that's when setting the `$inject` property\n * is very inconvenient. In these situations using the array notation to specify the dependencies in\n * a way that survives minification is a better choice:\n *\n * ```js\n * // We wish to write this (not minification / obfuscation safe)\n * injector.invoke(function($compile, $rootScope) {\n * // ...\n * });\n *\n * // We are forced to write break inlining\n * var tmpFn = function(obfuscatedCompile, obfuscatedRootScope) {\n * // ...\n * };\n * tmpFn.$inject = ['$compile', '$rootScope'];\n * injector.invoke(tmpFn);\n *\n * // To better support inline function the inline annotation is supported\n * injector.invoke(['$compile', '$rootScope', function(obfCompile, obfRootScope) {\n * // ...\n * }]);\n *\n * // Therefore\n * expect(injector.annotate(\n * ['$compile', '$rootScope', function(obfus_$compile, obfus_$rootScope) {}])\n * ).toEqual(['$compile', '$rootScope']);\n * ```\n *\n * @param {Function|Array.} fn Function for which dependent service names need to\n * be retrieved as described above.\n *\n * @returns {Array.} The names of the services which the function requires.\n */\n\n\n\n\n/**\n * @ngdoc service\n * @name $provide\n *\n * @description\n *\n * The {@link auto.$provide $provide} service has a number of methods for registering components\n * with the {@link auto.$injector $injector}. Many of these functions are also exposed on\n * {@link angular.Module}.\n *\n * An Angular **service** is a singleton object created by a **service factory**. These **service\n * factories** are functions which, in turn, are created by a **service provider**.\n * The **service providers** are constructor functions. When instantiated they must contain a\n * property called `$get`, which holds the **service factory** function.\n *\n * When you request a service, the {@link auto.$injector $injector} is responsible for finding the\n * correct **service provider**, instantiating it and then calling its `$get` **service factory**\n * function to get the instance of the **service**.\n *\n * Often services have no configuration options and there is no need to add methods to the service\n * provider. The provider will be no more than a constructor function with a `$get` property. For\n * these cases the {@link auto.$provide $provide} service has additional helper methods to register\n * services without specifying a provider.\n *\n * * {@link auto.$provide#provider provider(provider)} - registers a **service provider** with the\n * {@link auto.$injector $injector}\n * * {@link auto.$provide#constant constant(obj)} - registers a value/object that can be accessed by\n * providers and services.\n * * {@link auto.$provide#value value(obj)} - registers a value/object that can only be accessed by\n * services, not providers.\n * * {@link auto.$provide#factory factory(fn)} - registers a service **factory function**, `fn`,\n * that will be wrapped in a **service provider** object, whose `$get` property will contain the\n * given factory function.\n * * {@link auto.$provide#service service(class)} - registers a **constructor function**, `class`\n * that will be wrapped in a **service provider** object, whose `$get` property will instantiate\n * a new object using the given constructor function.\n *\n * See the individual methods for more information and examples.\n */\n\n/**\n * @ngdoc method\n * @name $provide#provider\n * @description\n *\n * Register a **provider function** with the {@link auto.$injector $injector}. Provider functions\n * are constructor functions, whose instances are responsible for \"providing\" a factory for a\n * service.\n *\n * Service provider names start with the name of the service they provide followed by `Provider`.\n * For example, the {@link ng.$log $log} service has a provider called\n * {@link ng.$logProvider $logProvider}.\n *\n * Service provider objects can have additional methods which allow configuration of the provider\n * and its service. Importantly, you can configure what kind of service is created by the `$get`\n * method, or how that service will act. For example, the {@link ng.$logProvider $logProvider} has a\n * method {@link ng.$logProvider#debugEnabled debugEnabled}\n * which lets you specify whether the {@link ng.$log $log} service will log debug messages to the\n * console or not.\n *\n * @param {string} name The name of the instance. NOTE: the provider will be available under `name +\n 'Provider'` key.\n * @param {(Object|function())} provider If the provider is:\n *\n * - `Object`: then it should have a `$get` method. The `$get` method will be invoked using\n * {@link auto.$injector#invoke $injector.invoke()} when an instance needs to be created.\n * - `Constructor`: a new instance of the provider will be created using\n * {@link auto.$injector#instantiate $injector.instantiate()}, then treated as `object`.\n *\n * @returns {Object} registered provider instance\n\n * @example\n *\n * The following example shows how to create a simple event tracking service and register it using\n * {@link auto.$provide#provider $provide.provider()}.\n *\n * ```js\n * // Define the eventTracker provider\n * function EventTrackerProvider() {\n * var trackingUrl = '/track';\n *\n * // A provider method for configuring where the tracked events should been saved\n * this.setTrackingUrl = function(url) {\n * trackingUrl = url;\n * };\n *\n * // The service factory function\n * this.$get = ['$http', function($http) {\n * var trackedEvents = {};\n * return {\n * // Call this to track an event\n * event: function(event) {\n * var count = trackedEvents[event] || 0;\n * count += 1;\n * trackedEvents[event] = count;\n * return count;\n * },\n * // Call this to save the tracked events to the trackingUrl\n * save: function() {\n * $http.post(trackingUrl, trackedEvents);\n * }\n * };\n * }];\n * }\n *\n * describe('eventTracker', function() {\n * var postSpy;\n *\n * beforeEach(module(function($provide) {\n * // Register the eventTracker provider\n * $provide.provider('eventTracker', EventTrackerProvider);\n * }));\n *\n * beforeEach(module(function(eventTrackerProvider) {\n * // Configure eventTracker provider\n * eventTrackerProvider.setTrackingUrl('/custom-track');\n * }));\n *\n * it('tracks events', inject(function(eventTracker) {\n * expect(eventTracker.event('login')).toEqual(1);\n * expect(eventTracker.event('login')).toEqual(2);\n * }));\n *\n * it('saves to the tracking url', inject(function(eventTracker, $http) {\n * postSpy = spyOn($http, 'post');\n * eventTracker.event('login');\n * eventTracker.save();\n * expect(postSpy).toHaveBeenCalled();\n * expect(postSpy.mostRecentCall.args[0]).not.toEqual('/track');\n * expect(postSpy.mostRecentCall.args[0]).toEqual('/custom-track');\n * expect(postSpy.mostRecentCall.args[1]).toEqual({ 'login': 1 });\n * }));\n * });\n * ```\n */\n\n/**\n * @ngdoc method\n * @name $provide#factory\n * @description\n *\n * Register a **service factory**, which will be called to return the service instance.\n * This is short for registering a service where its provider consists of only a `$get` property,\n * which is the given service factory function.\n * You should use {@link auto.$provide#factory $provide.factory(getFn)} if you do not need to\n * configure your service in a provider.\n *\n * @param {string} name The name of the instance.\n * @param {function()} $getFn The $getFn for the instance creation. Internally this is a short hand\n * for `$provide.provider(name, {$get: $getFn})`.\n * @returns {Object} registered provider instance\n *\n * @example\n * Here is an example of registering a service\n * ```js\n * $provide.factory('ping', ['$http', function($http) {\n * return function ping() {\n * return $http.send('/ping');\n * };\n * }]);\n * ```\n * You would then inject and use this service like this:\n * ```js\n * someModule.controller('Ctrl', ['ping', function(ping) {\n * ping();\n * }]);\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#service\n * @description\n *\n * Register a **service constructor**, which will be invoked with `new` to create the service\n * instance.\n * This is short for registering a service where its provider's `$get` property is the service\n * constructor function that will be used to instantiate the service instance.\n *\n * You should use {@link auto.$provide#service $provide.service(class)} if you define your service\n * as a type/class.\n *\n * @param {string} name The name of the instance.\n * @param {Function} constructor A class (constructor function) that will be instantiated.\n * @returns {Object} registered provider instance\n *\n * @example\n * Here is an example of registering a service using\n * {@link auto.$provide#service $provide.service(class)}.\n * ```js\n * var Ping = function($http) {\n * this.$http = $http;\n * };\n *\n * Ping.$inject = ['$http'];\n *\n * Ping.prototype.send = function() {\n * return this.$http.get('/ping');\n * };\n * $provide.service('ping', Ping);\n * ```\n * You would then inject and use this service like this:\n * ```js\n * someModule.controller('Ctrl', ['ping', function(ping) {\n * ping.send();\n * }]);\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#value\n * @description\n *\n * Register a **value service** with the {@link auto.$injector $injector}, such as a string, a\n * number, an array, an object or a function. This is short for registering a service where its\n * provider's `$get` property is a factory function that takes no arguments and returns the **value\n * service**.\n *\n * Value services are similar to constant services, except that they cannot be injected into a\n * module configuration function (see {@link angular.Module#config}) but they can be overridden by\n * an Angular\n * {@link auto.$provide#decorator decorator}.\n *\n * @param {string} name The name of the instance.\n * @param {*} value The value.\n * @returns {Object} registered provider instance\n *\n * @example\n * Here are some examples of creating value services.\n * ```js\n * $provide.value('ADMIN_USER', 'admin');\n *\n * $provide.value('RoleLookup', { admin: 0, writer: 1, reader: 2 });\n *\n * $provide.value('halfOf', function(value) {\n * return value / 2;\n * });\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#constant\n * @description\n *\n * Register a **constant service**, such as a string, a number, an array, an object or a function,\n * with the {@link auto.$injector $injector}. Unlike {@link auto.$provide#value value} it can be\n * injected into a module configuration function (see {@link angular.Module#config}) and it cannot\n * be overridden by an Angular {@link auto.$provide#decorator decorator}.\n *\n * @param {string} name The name of the constant.\n * @param {*} value The constant value.\n * @returns {Object} registered instance\n *\n * @example\n * Here a some examples of creating constants:\n * ```js\n * $provide.constant('SHARD_HEIGHT', 306);\n *\n * $provide.constant('MY_COLOURS', ['red', 'blue', 'grey']);\n *\n * $provide.constant('double', function(value) {\n * return value * 2;\n * });\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#decorator\n * @description\n *\n * Register a **service decorator** with the {@link auto.$injector $injector}. A service decorator\n * intercepts the creation of a service, allowing it to override or modify the behaviour of the\n * service. The object returned by the decorator may be the original service, or a new service\n * object which replaces or wraps and delegates to the original service.\n *\n * @param {string} name The name of the service to decorate.\n * @param {function()} decorator This function will be invoked when the service needs to be\n * instantiated and should return the decorated service instance. The function is called using\n * the {@link auto.$injector#invoke injector.invoke} method and is therefore fully injectable.\n * Local injection arguments:\n *\n * * `$delegate` - The original service instance, which can be monkey patched, configured,\n * decorated or delegated to.\n *\n * @example\n * Here we decorate the {@link ng.$log $log} service to convert warnings to errors by intercepting\n * calls to {@link ng.$log#error $log.warn()}.\n * ```js\n * $provide.decorator('$log', ['$delegate', function($delegate) {\n * $delegate.warn = $delegate.error;\n * return $delegate;\n * }]);\n * ```\n */\n\n\nfunction createInjector(modulesToLoad) {\n var INSTANTIATING = {},\n providerSuffix = 'Provider',\n path = [],\n loadedModules = new HashMap([], true),\n providerCache = {\n $provide: {\n provider: supportObject(provider),\n factory: supportObject(factory),\n service: supportObject(service),\n value: supportObject(value),\n constant: supportObject(constant),\n decorator: decorator\n }\n },\n providerInjector = (providerCache.$injector =\n createInternalInjector(providerCache, function() {\n throw $injectorMinErr('unpr', \"Unknown provider: {0}\", path.join(' <- '));\n })),\n instanceCache = {},\n instanceInjector = (instanceCache.$injector =\n createInternalInjector(instanceCache, function(servicename) {\n var provider = providerInjector.get(servicename + providerSuffix);\n return instanceInjector.invoke(provider.$get, provider);\n }));\n\n\n forEach(loadModules(modulesToLoad), function(fn) { instanceInjector.invoke(fn || noop); });\n\n return instanceInjector;\n\n ////////////////////////////////////\n // $provider\n ////////////////////////////////////\n\n function supportObject(delegate) {\n return function(key, value) {\n if (isObject(key)) {\n forEach(key, reverseParams(delegate));\n } else {\n return delegate(key, value);\n }\n };\n }\n\n function provider(name, provider_) {\n assertNotHasOwnProperty(name, 'service');\n if (isFunction(provider_) || isArray(provider_)) {\n provider_ = providerInjector.instantiate(provider_);\n }\n if (!provider_.$get) {\n throw $injectorMinErr('pget', \"Provider '{0}' must define $get factory method.\", name);\n }\n return providerCache[name + providerSuffix] = provider_;\n }\n\n function factory(name, factoryFn) { return provider(name, { $get: factoryFn }); }\n\n function service(name, constructor) {\n return factory(name, ['$injector', function($injector) {\n return $injector.instantiate(constructor);\n }]);\n }\n\n function value(name, val) { return factory(name, valueFn(val)); }\n\n function constant(name, value) {\n assertNotHasOwnProperty(name, 'constant');\n providerCache[name] = value;\n instanceCache[name] = value;\n }\n\n function decorator(serviceName, decorFn) {\n var origProvider = providerInjector.get(serviceName + providerSuffix),\n orig$get = origProvider.$get;\n\n origProvider.$get = function() {\n var origInstance = instanceInjector.invoke(orig$get, origProvider);\n return instanceInjector.invoke(decorFn, null, {$delegate: origInstance});\n };\n }\n\n ////////////////////////////////////\n // Module Loading\n ////////////////////////////////////\n function loadModules(modulesToLoad){\n var runBlocks = [], moduleFn, invokeQueue, i, ii;\n forEach(modulesToLoad, function(module) {\n if (loadedModules.get(module)) return;\n loadedModules.put(module, true);\n\n try {\n if (isString(module)) {\n moduleFn = angularModule(module);\n runBlocks = runBlocks.concat(loadModules(moduleFn.requires)).concat(moduleFn._runBlocks);\n\n for(invokeQueue = moduleFn._invokeQueue, i = 0, ii = invokeQueue.length; i < ii; i++) {\n var invokeArgs = invokeQueue[i],\n provider = providerInjector.get(invokeArgs[0]);\n\n provider[invokeArgs[1]].apply(provider, invokeArgs[2]);\n }\n } else if (isFunction(module)) {\n runBlocks.push(providerInjector.invoke(module));\n } else if (isArray(module)) {\n runBlocks.push(providerInjector.invoke(module));\n } else {\n assertArgFn(module, 'module');\n }\n } catch (e) {\n if (isArray(module)) {\n module = module[module.length - 1];\n }\n if (e.message && e.stack && e.stack.indexOf(e.message) == -1) {\n // Safari & FF's stack traces don't contain error.message content\n // unlike those of Chrome and IE\n // So if stack doesn't contain message, we create a new string that contains both.\n // Since error.stack is read-only in Safari, I'm overriding e and not e.stack here.\n /* jshint -W022 */\n e = e.message + '\\n' + e.stack;\n }\n throw $injectorMinErr('modulerr', \"Failed to instantiate module {0} due to:\\n{1}\",\n module, e.stack || e.message || e);\n }\n });\n return runBlocks;\n }\n\n ////////////////////////////////////\n // internal Injector\n ////////////////////////////////////\n\n function createInternalInjector(cache, factory) {\n\n function getService(serviceName) {\n if (cache.hasOwnProperty(serviceName)) {\n if (cache[serviceName] === INSTANTIATING) {\n throw $injectorMinErr('cdep', 'Circular dependency found: {0}',\n serviceName + ' <- ' + path.join(' <- '));\n }\n return cache[serviceName];\n } else {\n try {\n path.unshift(serviceName);\n cache[serviceName] = INSTANTIATING;\n return cache[serviceName] = factory(serviceName);\n } catch (err) {\n if (cache[serviceName] === INSTANTIATING) {\n delete cache[serviceName];\n }\n throw err;\n } finally {\n path.shift();\n }\n }\n }\n\n function invoke(fn, self, locals){\n var args = [],\n $inject = annotate(fn),\n length, i,\n key;\n\n for(i = 0, length = $inject.length; i < length; i++) {\n key = $inject[i];\n if (typeof key !== 'string') {\n throw $injectorMinErr('itkn',\n 'Incorrect injection token! Expected service name as string, got {0}', key);\n }\n args.push(\n locals && locals.hasOwnProperty(key)\n ? locals[key]\n : getService(key)\n );\n }\n if (isArray(fn)) {\n fn = fn[length];\n }\n\n // http://jsperf.com/angularjs-invoke-apply-vs-switch\n // #5388\n return fn.apply(self, args);\n }\n\n function instantiate(Type, locals) {\n var Constructor = function() {},\n instance, returnedValue;\n\n // Check if Type is annotated and use just the given function at n-1 as parameter\n // e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]);\n Constructor.prototype = (isArray(Type) ? Type[Type.length - 1] : Type).prototype;\n instance = new Constructor();\n returnedValue = invoke(Type, instance, locals);\n\n return isObject(returnedValue) || isFunction(returnedValue) ? returnedValue : instance;\n }\n\n return {\n invoke: invoke,\n instantiate: instantiate,\n get: getService,\n annotate: annotate,\n has: function(name) {\n return providerCache.hasOwnProperty(name + providerSuffix) || cache.hasOwnProperty(name);\n }\n };\n }\n}\n\n/**\n * @ngdoc service\n * @name $anchorScroll\n * @kind function\n * @requires $window\n * @requires $location\n * @requires $rootScope\n *\n * @description\n * When called, it checks current value of `$location.hash()` and scrolls to the related element,\n * according to rules specified in\n * [Html5 spec](http://dev.w3.org/html5/spec/Overview.html#the-indicated-part-of-the-document).\n *\n * It also watches the `$location.hash()` and scrolls whenever it changes to match any anchor.\n * This can be disabled by calling `$anchorScrollProvider.disableAutoScrolling()`.\n *\n * @example\n \n \n
\n Go to bottom\n You're at the bottom!\n
\n \n \n function ScrollCtrl($scope, $location, $anchorScroll) {\n $scope.gotoBottom = function (){\n // set the location.hash to the id of\n // the element you wish to scroll to.\n $location.hash('bottom');\n\n // call $anchorScroll()\n $anchorScroll();\n };\n }\n \n \n #scrollArea {\n height: 350px;\n overflow: auto;\n }\n\n #bottom {\n display: block;\n margin-top: 2000px;\n }\n \n \n */\nfunction $AnchorScrollProvider() {\n\n var autoScrollingEnabled = true;\n\n /**\n * @ngdoc method\n * @name $anchorScrollProvider#disableAutoScrolling\n *\n * @description\n * By default, {@link ng.$anchorScroll $anchorScroll()} will automatically detect changes to\n * {@link ng.$location#hash $location.hash()} and scroll to the element matching the new hash.
\n * Use this method to disable automatic scrolling.\n *\n * If automatic scrolling is disabled, one must explicitly call\n * {@link ng.$anchorScroll $anchorScroll()} in order to scroll to the element related to the\n * current hash.\n */\n this.disableAutoScrolling = function() {\n autoScrollingEnabled = false;\n };\n\n this.$get = ['$window', '$location', '$rootScope', function($window, $location, $rootScope) {\n var document = $window.document;\n\n // helper function to get first anchor from a NodeList\n // can't use filter.filter, as it accepts only instances of Array\n // and IE can't convert NodeList to an array using [].slice\n // TODO(vojta): use filter if we change it to accept lists as well\n function getFirstAnchor(list) {\n var result = null;\n forEach(list, function(element) {\n if (!result && lowercase(element.nodeName) === 'a') result = element;\n });\n return result;\n }\n\n function scroll() {\n var hash = $location.hash(), elm;\n\n // empty hash, scroll to the top of the page\n if (!hash) $window.scrollTo(0, 0);\n\n // element with given id\n else if ((elm = document.getElementById(hash))) elm.scrollIntoView();\n\n // first anchor with given name :-D\n else if ((elm = getFirstAnchor(document.getElementsByName(hash)))) elm.scrollIntoView();\n\n // no element and hash == 'top', scroll to the top of the page\n else if (hash === 'top') $window.scrollTo(0, 0);\n }\n\n // does not scroll when user clicks on anchor link that is currently on\n // (no url change, no $location.hash() change), browser native does scroll\n if (autoScrollingEnabled) {\n $rootScope.$watch(function autoScrollWatch() {return $location.hash();},\n function autoScrollWatchAction() {\n $rootScope.$evalAsync(scroll);\n });\n }\n\n return scroll;\n }];\n}\n\nvar $animateMinErr = minErr('$animate');\n\n/**\n * @ngdoc provider\n * @name $animateProvider\n *\n * @description\n * Default implementation of $animate that doesn't perform any animations, instead just\n * synchronously performs DOM\n * updates and calls done() callbacks.\n *\n * In order to enable animations the ngAnimate module has to be loaded.\n *\n * To see the functional implementation check out src/ngAnimate/animate.js\n */\nvar $AnimateProvider = ['$provide', function($provide) {\n\n\n this.$$selectors = {};\n\n\n /**\n * @ngdoc method\n * @name $animateProvider#register\n *\n * @description\n * Registers a new injectable animation factory function. The factory function produces the\n * animation object which contains callback functions for each event that is expected to be\n * animated.\n *\n * * `eventFn`: `function(Element, doneFunction)` The element to animate, the `doneFunction`\n * must be called once the element animation is complete. If a function is returned then the\n * animation service will use this function to cancel the animation whenever a cancel event is\n * triggered.\n *\n *\n * ```js\n * return {\n * eventFn : function(element, done) {\n * //code to run the animation\n * //once complete, then run done()\n * return function cancellationFunction() {\n * //code to cancel the animation\n * }\n * }\n * }\n * ```\n *\n * @param {string} name The name of the animation.\n * @param {Function} factory The factory function that will be executed to return the animation\n * object.\n */\n this.register = function(name, factory) {\n var key = name + '-animation';\n if (name && name.charAt(0) != '.') throw $animateMinErr('notcsel',\n \"Expecting class selector starting with '.' got '{0}'.\", name);\n this.$$selectors[name.substr(1)] = key;\n $provide.factory(key, factory);\n };\n\n /**\n * @ngdoc method\n * @name $animateProvider#classNameFilter\n *\n * @description\n * Sets and/or returns the CSS class regular expression that is checked when performing\n * an animation. Upon bootstrap the classNameFilter value is not set at all and will\n * therefore enable $animate to attempt to perform an animation on any element.\n * When setting the classNameFilter value, animations will only be performed on elements\n * that successfully match the filter expression. This in turn can boost performance\n * for low-powered devices as well as applications containing a lot of structural operations.\n * @param {RegExp=} expression The className expression which will be checked against all animations\n * @return {RegExp} The current CSS className expression value. If null then there is no expression value\n */\n this.classNameFilter = function(expression) {\n if(arguments.length === 1) {\n this.$$classNameFilter = (expression instanceof RegExp) ? expression : null;\n }\n return this.$$classNameFilter;\n };\n\n this.$get = ['$timeout', '$$asyncCallback', function($timeout, $$asyncCallback) {\n\n function async(fn) {\n fn && $$asyncCallback(fn);\n }\n\n /**\n *\n * @ngdoc service\n * @name $animate\n * @description The $animate service provides rudimentary DOM manipulation functions to\n * insert, remove and move elements within the DOM, as well as adding and removing classes.\n * This service is the core service used by the ngAnimate $animator service which provides\n * high-level animation hooks for CSS and JavaScript.\n *\n * $animate is available in the AngularJS core, however, the ngAnimate module must be included\n * to enable full out animation support. Otherwise, $animate will only perform simple DOM\n * manipulation operations.\n *\n * To learn more about enabling animation support, click here to visit the {@link ngAnimate\n * ngAnimate module page} as well as the {@link ngAnimate.$animate ngAnimate $animate service\n * page}.\n */\n return {\n\n /**\n *\n * @ngdoc method\n * @name $animate#enter\n * @kind function\n * @description Inserts the element into the DOM either after the `after` element or within\n * the `parent` element. Once complete, the done() callback will be fired (if provided).\n * @param {DOMElement} element the element which will be inserted into the DOM\n * @param {DOMElement} parent the parent element which will append the element as\n * a child (if the after element is not present)\n * @param {DOMElement} after the sibling element which will append the element\n * after itself\n * @param {Function=} done callback function that will be called after the element has been\n * inserted into the DOM\n */\n enter : function(element, parent, after, done) {\n if (after) {\n after.after(element);\n } else {\n if (!parent || !parent[0]) {\n parent = after.parent();\n }\n parent.append(element);\n }\n async(done);\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#leave\n * @kind function\n * @description Removes the element from the DOM. Once complete, the done() callback will be\n * fired (if provided).\n * @param {DOMElement} element the element which will be removed from the DOM\n * @param {Function=} done callback function that will be called after the element has been\n * removed from the DOM\n */\n leave : function(element, done) {\n element.remove();\n async(done);\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#move\n * @kind function\n * @description Moves the position of the provided element within the DOM to be placed\n * either after the `after` element or inside of the `parent` element. Once complete, the\n * done() callback will be fired (if provided).\n *\n * @param {DOMElement} element the element which will be moved around within the\n * DOM\n * @param {DOMElement} parent the parent element where the element will be\n * inserted into (if the after element is not present)\n * @param {DOMElement} after the sibling element where the element will be\n * positioned next to\n * @param {Function=} done the callback function (if provided) that will be fired after the\n * element has been moved to its new position\n */\n move : function(element, parent, after, done) {\n // Do not remove element before insert. Removing will cause data associated with the\n // element to be dropped. Insert will implicitly do the remove.\n this.enter(element, parent, after, done);\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#addClass\n * @kind function\n * @description Adds the provided className CSS class value to the provided element. Once\n * complete, the done() callback will be fired (if provided).\n * @param {DOMElement} element the element which will have the className value\n * added to it\n * @param {string} className the CSS class which will be added to the element\n * @param {Function=} done the callback function (if provided) that will be fired after the\n * className value has been added to the element\n */\n addClass : function(element, className, done) {\n className = isString(className) ?\n className :\n isArray(className) ? className.join(' ') : '';\n forEach(element, function (element) {\n jqLiteAddClass(element, className);\n });\n async(done);\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#removeClass\n * @kind function\n * @description Removes the provided className CSS class value from the provided element.\n * Once complete, the done() callback will be fired (if provided).\n * @param {DOMElement} element the element which will have the className value\n * removed from it\n * @param {string} className the CSS class which will be removed from the element\n * @param {Function=} done the callback function (if provided) that will be fired after the\n * className value has been removed from the element\n */\n removeClass : function(element, className, done) {\n className = isString(className) ?\n className :\n isArray(className) ? className.join(' ') : '';\n forEach(element, function (element) {\n jqLiteRemoveClass(element, className);\n });\n async(done);\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#setClass\n * @kind function\n * @description Adds and/or removes the given CSS classes to and from the element.\n * Once complete, the done() callback will be fired (if provided).\n * @param {DOMElement} element the element which will have its CSS classes changed\n * removed from it\n * @param {string} add the CSS classes which will be added to the element\n * @param {string} remove the CSS class which will be removed from the element\n * @param {Function=} done the callback function (if provided) that will be fired after the\n * CSS classes have been set on the element\n */\n setClass : function(element, add, remove, done) {\n forEach(element, function (element) {\n jqLiteAddClass(element, add);\n jqLiteRemoveClass(element, remove);\n });\n async(done);\n },\n\n enabled : noop\n };\n }];\n}];\n\nfunction $$AsyncCallbackProvider(){\n this.$get = ['$$rAF', '$timeout', function($$rAF, $timeout) {\n return $$rAF.supported\n ? function(fn) { return $$rAF(fn); }\n : function(fn) {\n return $timeout(fn, 0, false);\n };\n }];\n}\n\n/* global stripHash: true */\n\n/**\n * ! This is a private undocumented service !\n *\n * @name $browser\n * @requires $log\n * @description\n * This object has two goals:\n *\n * - hide all the global state in the browser caused by the window object\n * - abstract away all the browser specific features and inconsistencies\n *\n * For tests we provide {@link ngMock.$browser mock implementation} of the `$browser`\n * service, which can be used for convenient testing of the application without the interaction with\n * the real browser apis.\n */\n/**\n * @param {object} window The global window object.\n * @param {object} document jQuery wrapped document.\n * @param {function()} XHR XMLHttpRequest constructor.\n * @param {object} $log console.log or an object with the same interface.\n * @param {object} $sniffer $sniffer service\n */\nfunction Browser(window, document, $log, $sniffer) {\n var self = this,\n rawDocument = document[0],\n location = window.location,\n history = window.history,\n setTimeout = window.setTimeout,\n clearTimeout = window.clearTimeout,\n pendingDeferIds = {};\n\n self.isMock = false;\n\n var outstandingRequestCount = 0;\n var outstandingRequestCallbacks = [];\n\n // TODO(vojta): remove this temporary api\n self.$$completeOutstandingRequest = completeOutstandingRequest;\n self.$$incOutstandingRequestCount = function() { outstandingRequestCount++; };\n\n /**\n * Executes the `fn` function(supports currying) and decrements the `outstandingRequestCallbacks`\n * counter. If the counter reaches 0, all the `outstandingRequestCallbacks` are executed.\n */\n function completeOutstandingRequest(fn) {\n try {\n fn.apply(null, sliceArgs(arguments, 1));\n } finally {\n outstandingRequestCount--;\n if (outstandingRequestCount === 0) {\n while(outstandingRequestCallbacks.length) {\n try {\n outstandingRequestCallbacks.pop()();\n } catch (e) {\n $log.error(e);\n }\n }\n }\n }\n }\n\n /**\n * @private\n * Note: this method is used only by scenario runner\n * TODO(vojta): prefix this method with $$ ?\n * @param {function()} callback Function that will be called when no outstanding request\n */\n self.notifyWhenNoOutstandingRequests = function(callback) {\n // force browser to execute all pollFns - this is needed so that cookies and other pollers fire\n // at some deterministic time in respect to the test runner's actions. Leaving things up to the\n // regular poller would result in flaky tests.\n forEach(pollFns, function(pollFn){ pollFn(); });\n\n if (outstandingRequestCount === 0) {\n callback();\n } else {\n outstandingRequestCallbacks.push(callback);\n }\n };\n\n //////////////////////////////////////////////////////////////\n // Poll Watcher API\n //////////////////////////////////////////////////////////////\n var pollFns = [],\n pollTimeout;\n\n /**\n * @name $browser#addPollFn\n *\n * @param {function()} fn Poll function to add\n *\n * @description\n * Adds a function to the list of functions that poller periodically executes,\n * and starts polling if not started yet.\n *\n * @returns {function()} the added function\n */\n self.addPollFn = function(fn) {\n if (isUndefined(pollTimeout)) startPoller(100, setTimeout);\n pollFns.push(fn);\n return fn;\n };\n\n /**\n * @param {number} interval How often should browser call poll functions (ms)\n * @param {function()} setTimeout Reference to a real or fake `setTimeout` function.\n *\n * @description\n * Configures the poller to run in the specified intervals, using the specified\n * setTimeout fn and kicks it off.\n */\n function startPoller(interval, setTimeout) {\n (function check() {\n forEach(pollFns, function(pollFn){ pollFn(); });\n pollTimeout = setTimeout(check, interval);\n })();\n }\n\n //////////////////////////////////////////////////////////////\n // URL API\n //////////////////////////////////////////////////////////////\n\n var lastBrowserUrl = location.href,\n baseElement = document.find('base'),\n reloadLocation = null;\n\n /**\n * @name $browser#url\n *\n * @description\n * GETTER:\n * Without any argument, this method just returns current value of location.href.\n *\n * SETTER:\n * With at least one argument, this method sets url to new value.\n * If html5 history api supported, pushState/replaceState is used, otherwise\n * location.href/location.replace is used.\n * Returns its own instance to allow chaining\n *\n * NOTE: this api is intended for use only by the $location service. Please use the\n * {@link ng.$location $location service} to change url.\n *\n * @param {string} url New url (when used as setter)\n * @param {boolean=} replace Should new url replace current history record ?\n */\n self.url = function(url, replace) {\n // Android Browser BFCache causes location, history reference to become stale.\n if (location !== window.location) location = window.location;\n if (history !== window.history) history = window.history;\n\n // setter\n if (url) {\n if (lastBrowserUrl == url) return;\n var sameBase = lastBrowserUrl && stripHash(lastBrowserUrl) === stripHash(url);\n lastBrowserUrl = url;\n // Don't use history API if only the hash changed\n // due to a bug in IE10/IE11 which leads\n // to not firing a `hashchange` nor `popstate` event\n // in some cases (see #9143).\n if (!sameBase && $sniffer.history) {\n if (replace) history.replaceState(null, '', url);\n else {\n history.pushState(null, '', url);\n // Crazy Opera Bug: http://my.opera.com/community/forums/topic.dml?id=1185462\n baseElement.attr('href', baseElement.attr('href'));\n }\n } else {\n if (!sameBase) {\n reloadLocation = url;\n }\n if (replace) {\n location.replace(url);\n } else {\n location.href = url;\n }\n }\n return self;\n // getter\n } else {\n // - reloadLocation is needed as browsers don't allow to read out\n // the new location.href if a reload happened.\n // - the replacement is a workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=407172\n return reloadLocation || location.href.replace(/%27/g,\"'\");\n }\n };\n\n var urlChangeListeners = [],\n urlChangeInit = false;\n\n function fireUrlChange() {\n if (lastBrowserUrl == self.url()) return;\n\n lastBrowserUrl = self.url();\n forEach(urlChangeListeners, function(listener) {\n listener(self.url());\n });\n }\n\n /**\n * @name $browser#onUrlChange\n *\n * @description\n * Register callback function that will be called, when url changes.\n *\n * It's only called when the url is changed from outside of angular:\n * - user types different url into address bar\n * - user clicks on history (forward/back) button\n * - user clicks on a link\n *\n * It's not called when url is changed by $browser.url() method\n *\n * The listener gets called with new url as parameter.\n *\n * NOTE: this api is intended for use only by the $location service. Please use the\n * {@link ng.$location $location service} to monitor url changes in angular apps.\n *\n * @param {function(string)} listener Listener function to be called when url changes.\n * @return {function(string)} Returns the registered listener fn - handy if the fn is anonymous.\n */\n self.onUrlChange = function(callback) {\n // TODO(vojta): refactor to use node's syntax for events\n if (!urlChangeInit) {\n // We listen on both (hashchange/popstate) when available, as some browsers (e.g. Opera)\n // don't fire popstate when user change the address bar and don't fire hashchange when url\n // changed by push/replaceState\n\n // html5 history api - popstate event\n if ($sniffer.history) jqLite(window).on('popstate', fireUrlChange);\n // hashchange event\n if ($sniffer.hashchange) jqLite(window).on('hashchange', fireUrlChange);\n // polling\n else self.addPollFn(fireUrlChange);\n\n urlChangeInit = true;\n }\n\n urlChangeListeners.push(callback);\n return callback;\n };\n\n /**\n * Checks whether the url has changed outside of Angular.\n * Needs to be exported to be able to check for changes that have been done in sync,\n * as hashchange/popstate events fire in async.\n */\n self.$$checkUrlChange = fireUrlChange;\n\n //////////////////////////////////////////////////////////////\n // Misc API\n //////////////////////////////////////////////////////////////\n\n /**\n * @name $browser#baseHref\n *\n * @description\n * Returns current \n * (always relative - without domain)\n *\n * @returns {string} The current base href\n */\n self.baseHref = function() {\n var href = baseElement.attr('href');\n return href ? href.replace(/^(https?\\:)?\\/\\/[^\\/]*/, '') : '';\n };\n\n //////////////////////////////////////////////////////////////\n // Cookies API\n //////////////////////////////////////////////////////////////\n var lastCookies = {};\n var lastCookieString = '';\n var cookiePath = self.baseHref();\n\n /**\n * @name $browser#cookies\n *\n * @param {string=} name Cookie name\n * @param {string=} value Cookie value\n *\n * @description\n * The cookies method provides a 'private' low level access to browser cookies.\n * It is not meant to be used directly, use the $cookie service instead.\n *\n * The return values vary depending on the arguments that the method was called with as follows:\n *\n * - cookies() -> hash of all cookies, this is NOT a copy of the internal state, so do not modify\n * it\n * - cookies(name, value) -> set name to value, if value is undefined delete the cookie\n * - cookies(name) -> the same as (name, undefined) == DELETES (no one calls it right now that\n * way)\n *\n * @returns {Object} Hash of all cookies (if called without any parameter)\n */\n self.cookies = function(name, value) {\n /* global escape: false, unescape: false */\n var cookieLength, cookieArray, cookie, i, index;\n\n if (name) {\n if (value === undefined) {\n rawDocument.cookie = escape(name) + \"=;path=\" + cookiePath +\n \";expires=Thu, 01 Jan 1970 00:00:00 GMT\";\n } else {\n if (isString(value)) {\n cookieLength = (rawDocument.cookie = escape(name) + '=' + escape(value) +\n ';path=' + cookiePath).length + 1;\n\n // per http://www.ietf.org/rfc/rfc2109.txt browser must allow at minimum:\n // - 300 cookies\n // - 20 cookies per unique domain\n // - 4096 bytes per cookie\n if (cookieLength > 4096) {\n $log.warn(\"Cookie '\"+ name +\n \"' possibly not set or overflowed because it was too large (\"+\n cookieLength + \" > 4096 bytes)!\");\n }\n }\n }\n } else {\n if (rawDocument.cookie !== lastCookieString) {\n lastCookieString = rawDocument.cookie;\n cookieArray = lastCookieString.split(\"; \");\n lastCookies = {};\n\n for (i = 0; i < cookieArray.length; i++) {\n cookie = cookieArray[i];\n index = cookie.indexOf('=');\n if (index > 0) { //ignore nameless cookies\n name = unescape(cookie.substring(0, index));\n // the first value that is seen for a cookie is the most\n // specific one. values for the same cookie name that\n // follow are for less specific paths.\n if (lastCookies[name] === undefined) {\n lastCookies[name] = unescape(cookie.substring(index + 1));\n }\n }\n }\n }\n return lastCookies;\n }\n };\n\n\n /**\n * @name $browser#defer\n * @param {function()} fn A function, who's execution should be deferred.\n * @param {number=} [delay=0] of milliseconds to defer the function execution.\n * @returns {*} DeferId that can be used to cancel the task via `$browser.defer.cancel()`.\n *\n * @description\n * Executes a fn asynchronously via `setTimeout(fn, delay)`.\n *\n * Unlike when calling `setTimeout` directly, in test this function is mocked and instead of using\n * `setTimeout` in tests, the fns are queued in an array, which can be programmatically flushed\n * via `$browser.defer.flush()`.\n *\n */\n self.defer = function(fn, delay) {\n var timeoutId;\n outstandingRequestCount++;\n timeoutId = setTimeout(function() {\n delete pendingDeferIds[timeoutId];\n completeOutstandingRequest(fn);\n }, delay || 0);\n pendingDeferIds[timeoutId] = true;\n return timeoutId;\n };\n\n\n /**\n * @name $browser#defer.cancel\n *\n * @description\n * Cancels a deferred task identified with `deferId`.\n *\n * @param {*} deferId Token returned by the `$browser.defer` function.\n * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully\n * canceled.\n */\n self.defer.cancel = function(deferId) {\n if (pendingDeferIds[deferId]) {\n delete pendingDeferIds[deferId];\n clearTimeout(deferId);\n completeOutstandingRequest(noop);\n return true;\n }\n return false;\n };\n\n}\n\nfunction $BrowserProvider(){\n this.$get = ['$window', '$log', '$sniffer', '$document',\n function( $window, $log, $sniffer, $document){\n return new Browser($window, $document, $log, $sniffer);\n }];\n}\n\n/**\n * @ngdoc service\n * @name $cacheFactory\n *\n * @description\n * Factory that constructs {@link $cacheFactory.Cache Cache} objects and gives access to\n * them.\n *\n * ```js\n *\n * var cache = $cacheFactory('cacheId');\n * expect($cacheFactory.get('cacheId')).toBe(cache);\n * expect($cacheFactory.get('noSuchCacheId')).not.toBeDefined();\n *\n * cache.put(\"key\", \"value\");\n * cache.put(\"another key\", \"another value\");\n *\n * // We've specified no options on creation\n * expect(cache.info()).toEqual({id: 'cacheId', size: 2});\n *\n * ```\n *\n *\n * @param {string} cacheId Name or id of the newly created cache.\n * @param {object=} options Options object that specifies the cache behavior. Properties:\n *\n * - `{number=}` `capacity` — turns the cache into LRU cache.\n *\n * @returns {object} Newly created cache object with the following set of methods:\n *\n * - `{object}` `info()` — Returns id, size, and options of cache.\n * - `{{*}}` `put({string} key, {*} value)` — Puts a new key-value pair into the cache and returns\n * it.\n * - `{{*}}` `get({string} key)` — Returns cached value for `key` or undefined for cache miss.\n * - `{void}` `remove({string} key)` — Removes a key-value pair from the cache.\n * - `{void}` `removeAll()` — Removes all cached values.\n * - `{void}` `destroy()` — Removes references to this cache from $cacheFactory.\n *\n * @example\n \n \n
\n \n \n \n\n

Cached Values

\n
\n \n : \n \n
\n\n

Cache Info

\n
\n \n : \n \n
\n
\n
\n \n angular.module('cacheExampleApp', []).\n controller('CacheController', ['$scope', '$cacheFactory', function($scope, $cacheFactory) {\n $scope.keys = [];\n $scope.cache = $cacheFactory('cacheId');\n $scope.put = function(key, value) {\n if ($scope.cache.get(key) === undefined) {\n $scope.keys.push(key);\n }\n $scope.cache.put(key, value === undefined ? null : value);\n };\n }]);\n \n \n p {\n margin: 10px 0 3px;\n }\n \n
\n */\nfunction $CacheFactoryProvider() {\n\n this.$get = function() {\n var caches = {};\n\n function cacheFactory(cacheId, options) {\n if (cacheId in caches) {\n throw minErr('$cacheFactory')('iid', \"CacheId '{0}' is already taken!\", cacheId);\n }\n\n var size = 0,\n stats = extend({}, options, {id: cacheId}),\n data = {},\n capacity = (options && options.capacity) || Number.MAX_VALUE,\n lruHash = {},\n freshEnd = null,\n staleEnd = null;\n\n /**\n * @ngdoc type\n * @name $cacheFactory.Cache\n *\n * @description\n * A cache object used to store and retrieve data, primarily used by\n * {@link $http $http} and the {@link ng.directive:script script} directive to cache\n * templates and other data.\n *\n * ```js\n * angular.module('superCache')\n * .factory('superCache', ['$cacheFactory', function($cacheFactory) {\n * return $cacheFactory('super-cache');\n * }]);\n * ```\n *\n * Example test:\n *\n * ```js\n * it('should behave like a cache', inject(function(superCache) {\n * superCache.put('key', 'value');\n * superCache.put('another key', 'another value');\n *\n * expect(superCache.info()).toEqual({\n * id: 'super-cache',\n * size: 2\n * });\n *\n * superCache.remove('another key');\n * expect(superCache.get('another key')).toBeUndefined();\n *\n * superCache.removeAll();\n * expect(superCache.info()).toEqual({\n * id: 'super-cache',\n * size: 0\n * });\n * }));\n * ```\n */\n return caches[cacheId] = {\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#put\n * @kind function\n *\n * @description\n * Inserts a named entry into the {@link $cacheFactory.Cache Cache} object to be\n * retrieved later, and incrementing the size of the cache if the key was not already\n * present in the cache. If behaving like an LRU cache, it will also remove stale\n * entries from the set.\n *\n * It will not insert undefined values into the cache.\n *\n * @param {string} key the key under which the cached data is stored.\n * @param {*} value the value to store alongside the key. If it is undefined, the key\n * will not be stored.\n * @returns {*} the value stored.\n */\n put: function(key, value) {\n if (capacity < Number.MAX_VALUE) {\n var lruEntry = lruHash[key] || (lruHash[key] = {key: key});\n\n refresh(lruEntry);\n }\n\n if (isUndefined(value)) return;\n if (!(key in data)) size++;\n data[key] = value;\n\n if (size > capacity) {\n this.remove(staleEnd.key);\n }\n\n return value;\n },\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#get\n * @kind function\n *\n * @description\n * Retrieves named data stored in the {@link $cacheFactory.Cache Cache} object.\n *\n * @param {string} key the key of the data to be retrieved\n * @returns {*} the value stored.\n */\n get: function(key) {\n if (capacity < Number.MAX_VALUE) {\n var lruEntry = lruHash[key];\n\n if (!lruEntry) return;\n\n refresh(lruEntry);\n }\n\n return data[key];\n },\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#remove\n * @kind function\n *\n * @description\n * Removes an entry from the {@link $cacheFactory.Cache Cache} object.\n *\n * @param {string} key the key of the entry to be removed\n */\n remove: function(key) {\n if (capacity < Number.MAX_VALUE) {\n var lruEntry = lruHash[key];\n\n if (!lruEntry) return;\n\n if (lruEntry == freshEnd) freshEnd = lruEntry.p;\n if (lruEntry == staleEnd) staleEnd = lruEntry.n;\n link(lruEntry.n,lruEntry.p);\n\n delete lruHash[key];\n }\n\n delete data[key];\n size--;\n },\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#removeAll\n * @kind function\n *\n * @description\n * Clears the cache object of any entries.\n */\n removeAll: function() {\n data = {};\n size = 0;\n lruHash = {};\n freshEnd = staleEnd = null;\n },\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#destroy\n * @kind function\n *\n * @description\n * Destroys the {@link $cacheFactory.Cache Cache} object entirely,\n * removing it from the {@link $cacheFactory $cacheFactory} set.\n */\n destroy: function() {\n data = null;\n stats = null;\n lruHash = null;\n delete caches[cacheId];\n },\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#info\n * @kind function\n *\n * @description\n * Retrieve information regarding a particular {@link $cacheFactory.Cache Cache}.\n *\n * @returns {object} an object with the following properties:\n *
    \n *
  • **id**: the id of the cache instance
  • \n *
  • **size**: the number of entries kept in the cache instance
  • \n *
  • **...**: any additional properties from the options object when creating the\n * cache.
  • \n *
\n */\n info: function() {\n return extend({}, stats, {size: size});\n }\n };\n\n\n /**\n * makes the `entry` the freshEnd of the LRU linked list\n */\n function refresh(entry) {\n if (entry != freshEnd) {\n if (!staleEnd) {\n staleEnd = entry;\n } else if (staleEnd == entry) {\n staleEnd = entry.n;\n }\n\n link(entry.n, entry.p);\n link(entry, freshEnd);\n freshEnd = entry;\n freshEnd.n = null;\n }\n }\n\n\n /**\n * bidirectionally links two entries of the LRU linked list\n */\n function link(nextEntry, prevEntry) {\n if (nextEntry != prevEntry) {\n if (nextEntry) nextEntry.p = prevEntry; //p stands for previous, 'prev' didn't minify\n if (prevEntry) prevEntry.n = nextEntry; //n stands for next, 'next' didn't minify\n }\n }\n }\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory#info\n *\n * @description\n * Get information about all the caches that have been created\n *\n * @returns {Object} - key-value map of `cacheId` to the result of calling `cache#info`\n */\n cacheFactory.info = function() {\n var info = {};\n forEach(caches, function(cache, cacheId) {\n info[cacheId] = cache.info();\n });\n return info;\n };\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory#get\n *\n * @description\n * Get access to a cache object by the `cacheId` used when it was created.\n *\n * @param {string} cacheId Name or id of a cache to access.\n * @returns {object} Cache object identified by the cacheId or undefined if no such cache.\n */\n cacheFactory.get = function(cacheId) {\n return caches[cacheId];\n };\n\n\n return cacheFactory;\n };\n}\n\n/**\n * @ngdoc service\n * @name $templateCache\n *\n * @description\n * The first time a template is used, it is loaded in the template cache for quick retrieval. You\n * can load templates directly into the cache in a `script` tag, or by consuming the\n * `$templateCache` service directly.\n *\n * Adding via the `script` tag:\n *\n * ```html\n * \n * ```\n *\n * **Note:** the `script` tag containing the template does not need to be included in the `head` of\n * the document, but it must be a descendent of the {@link ng.$rootElement $rootElement} (IE,\n * element with ng-app attribute), otherwise the template will be ignored.\n *\n * Adding via the $templateCache service:\n *\n * ```js\n * var myApp = angular.module('myApp', []);\n * myApp.run(function($templateCache) {\n * $templateCache.put('templateId.html', 'This is the content of the template');\n * });\n * ```\n *\n * To retrieve the template later, simply use it in your HTML:\n * ```html\n *
\n * ```\n *\n * or get it via Javascript:\n * ```js\n * $templateCache.get('templateId.html')\n * ```\n *\n * See {@link ng.$cacheFactory $cacheFactory}.\n *\n */\nfunction $TemplateCacheProvider() {\n this.$get = ['$cacheFactory', function($cacheFactory) {\n return $cacheFactory('templates');\n }];\n}\n\n/* ! VARIABLE/FUNCTION NAMING CONVENTIONS THAT APPLY TO THIS FILE!\n *\n * DOM-related variables:\n *\n * - \"node\" - DOM Node\n * - \"element\" - DOM Element or Node\n * - \"$node\" or \"$element\" - jqLite-wrapped node or element\n *\n *\n * Compiler related stuff:\n *\n * - \"linkFn\" - linking fn of a single directive\n * - \"nodeLinkFn\" - function that aggregates all linking fns for a particular node\n * - \"childLinkFn\" - function that aggregates all linking fns for child nodes of a particular node\n * - \"compositeLinkFn\" - function that aggregates all linking fns for a compilation root (nodeList)\n */\n\n\n/**\n * @ngdoc service\n * @name $compile\n * @kind function\n *\n * @description\n * Compiles an HTML string or DOM into a template and produces a template function, which\n * can then be used to link {@link ng.$rootScope.Scope `scope`} and the template together.\n *\n * The compilation is a process of walking the DOM tree and matching DOM elements to\n * {@link ng.$compileProvider#directive directives}.\n *\n *
\n * **Note:** This document is an in-depth reference of all directive options.\n * For a gentle introduction to directives with examples of common use cases,\n * see the {@link guide/directive directive guide}.\n *
\n *\n * ## Comprehensive Directive API\n *\n * There are many different options for a directive.\n *\n * The difference resides in the return value of the factory function.\n * You can either return a \"Directive Definition Object\" (see below) that defines the directive properties,\n * or just the `postLink` function (all other properties will have the default values).\n *\n *
\n * **Best Practice:** It's recommended to use the \"directive definition object\" form.\n *
\n *\n * Here's an example directive declared with a Directive Definition Object:\n *\n * ```js\n * var myModule = angular.module(...);\n *\n * myModule.directive('directiveName', function factory(injectables) {\n * var directiveDefinitionObject = {\n * priority: 0,\n * template: '
', // or // function(tElement, tAttrs) { ... },\n * // or\n * // templateUrl: 'directive.html', // or // function(tElement, tAttrs) { ... },\n * transclude: false,\n * restrict: 'A',\n * scope: false,\n * controller: function($scope, $element, $attrs, $transclude, otherInjectables) { ... },\n * controllerAs: 'stringAlias',\n * require: 'siblingDirectiveName', // or // ['^parentDirectiveName', '?optionalDirectiveName', '?^optionalParent'],\n * compile: function compile(tElement, tAttrs, transclude) {\n * return {\n * pre: function preLink(scope, iElement, iAttrs, controller) { ... },\n * post: function postLink(scope, iElement, iAttrs, controller) { ... }\n * }\n * // or\n * // return function postLink( ... ) { ... }\n * },\n * // or\n * // link: {\n * // pre: function preLink(scope, iElement, iAttrs, controller) { ... },\n * // post: function postLink(scope, iElement, iAttrs, controller) { ... }\n * // }\n * // or\n * // link: function postLink( ... ) { ... }\n * };\n * return directiveDefinitionObject;\n * });\n * ```\n *\n *
\n * **Note:** Any unspecified options will use the default value. You can see the default values below.\n *
\n *\n * Therefore the above can be simplified as:\n *\n * ```js\n * var myModule = angular.module(...);\n *\n * myModule.directive('directiveName', function factory(injectables) {\n * var directiveDefinitionObject = {\n * link: function postLink(scope, iElement, iAttrs) { ... }\n * };\n * return directiveDefinitionObject;\n * // or\n * // return function postLink(scope, iElement, iAttrs) { ... }\n * });\n * ```\n *\n *\n *\n * ### Directive Definition Object\n *\n * The directive definition object provides instructions to the {@link ng.$compile\n * compiler}. The attributes are:\n *\n * #### `priority`\n * When there are multiple directives defined on a single DOM element, sometimes it\n * is necessary to specify the order in which the directives are applied. The `priority` is used\n * to sort the directives before their `compile` functions get called. Priority is defined as a\n * number. Directives with greater numerical `priority` are compiled first. Pre-link functions\n * are also run in priority order, but post-link functions are run in reverse order. The order\n * of directives with the same priority is undefined. The default priority is `0`.\n *\n * #### `terminal`\n * If set to true then the current `priority` will be the last set of directives\n * which will execute (any directives at the current priority will still execute\n * as the order of execution on same `priority` is undefined).\n *\n * #### `scope`\n * **If set to `true`,** then a new scope will be created for this directive. If multiple directives on the\n * same element request a new scope, only one new scope is created. The new scope rule does not\n * apply for the root of the template since the root of the template always gets a new scope.\n *\n * **If set to `{}` (object hash),** then a new \"isolate\" scope is created. The 'isolate' scope differs from\n * normal scope in that it does not prototypically inherit from the parent scope. This is useful\n * when creating reusable components, which should not accidentally read or modify data in the\n * parent scope.\n *\n * The 'isolate' scope takes an object hash which defines a set of local scope properties\n * derived from the parent scope. These local properties are useful for aliasing values for\n * templates. Locals definition is a hash of local scope property to its source:\n *\n * * `@` or `@attr` - bind a local scope property to the value of DOM attribute. The result is\n * always a string since DOM attributes are strings. If no `attr` name is specified then the\n * attribute name is assumed to be the same as the local name.\n * Given `` and widget definition\n * of `scope: { localName:'@myAttr' }`, then widget scope property `localName` will reflect\n * the interpolated value of `hello {{name}}`. As the `name` attribute changes so will the\n * `localName` property on the widget scope. The `name` is read from the parent scope (not\n * component scope).\n *\n * * `=` or `=attr` - set up bi-directional binding between a local scope property and the\n * parent scope property of name defined via the value of the `attr` attribute. If no `attr`\n * name is specified then the attribute name is assumed to be the same as the local name.\n * Given `` and widget definition of\n * `scope: { localModel:'=myAttr' }`, then widget scope property `localModel` will reflect the\n * value of `parentModel` on the parent scope. Any changes to `parentModel` will be reflected\n * in `localModel` and any changes in `localModel` will reflect in `parentModel`. If the parent\n * scope property doesn't exist, it will throw a NON_ASSIGNABLE_MODEL_EXPRESSION exception. You\n * can avoid this behavior using `=?` or `=?attr` in order to flag the property as optional.\n *\n * * `&` or `&attr` - provides a way to execute an expression in the context of the parent scope.\n * If no `attr` name is specified then the attribute name is assumed to be the same as the\n * local name. Given `` and widget definition of\n * `scope: { localFn:'&myAttr' }`, then isolate scope property `localFn` will point to\n * a function wrapper for the `count = count + value` expression. Often it's desirable to\n * pass data from the isolated scope via an expression to the parent scope, this can be\n * done by passing a map of local variable names and values into the expression wrapper fn.\n * For example, if the expression is `increment(amount)` then we can specify the amount value\n * by calling the `localFn` as `localFn({amount: 22})`.\n *\n *\n *\n * #### `controller`\n * Controller constructor function. The controller is instantiated before the\n * pre-linking phase and it is shared with other directives (see\n * `require` attribute). This allows the directives to communicate with each other and augment\n * each other's behavior. The controller is injectable (and supports bracket notation) with the following locals:\n *\n * * `$scope` - Current scope associated with the element\n * * `$element` - Current element\n * * `$attrs` - Current attributes object for the element\n * * `$transclude` - A transclude linking function pre-bound to the correct transclusion scope.\n * The scope can be overridden by an optional first argument.\n * `function([scope], cloneLinkingFn)`.\n *\n *\n * #### `require`\n * Require another directive and inject its controller as the fourth argument to the linking function. The\n * `require` takes a string name (or array of strings) of the directive(s) to pass in. If an array is used, the\n * injected argument will be an array in corresponding order. If no such directive can be\n * found, or if the directive does not have a controller, then an error is raised. The name can be prefixed with:\n *\n * * (no prefix) - Locate the required controller on the current element. Throw an error if not found.\n * * `?` - Attempt to locate the required controller or pass `null` to the `link` fn if not found.\n * * `^` - Locate the required controller by searching the element and its parents. Throw an error if not found.\n * * `?^` - Attempt to locate the required controller by searching the element and its parents or pass\n * `null` to the `link` fn if not found.\n *\n *\n * #### `controllerAs`\n * Controller alias at the directive scope. An alias for the controller so it\n * can be referenced at the directive template. The directive needs to define a scope for this\n * configuration to be used. Useful in the case when directive is used as component.\n *\n *\n * #### `restrict`\n * String of subset of `EACM` which restricts the directive to a specific directive\n * declaration style. If omitted, the default (attributes only) is used.\n *\n * * `E` - Element name: ``\n * * `A` - Attribute (default): `
`\n * * `C` - Class: `
`\n * * `M` - Comment: ``\n *\n *\n * #### `template`\n * HTML markup that may:\n * * Replace the contents of the directive's element (default).\n * * Replace the directive's element itself (if `replace` is true - DEPRECATED).\n * * Wrap the contents of the directive's element (if `transclude` is true).\n *\n * Value may be:\n *\n * * A string. For example `
{{delete_str}}
`.\n * * A function which takes two arguments `tElement` and `tAttrs` (described in the `compile`\n * function api below) and returns a string value.\n *\n *\n * #### `templateUrl`\n * Same as `template` but the template is loaded from the specified URL. Because\n * the template loading is asynchronous the compilation/linking is suspended until the template\n * is loaded.\n *\n * You can specify `templateUrl` as a string representing the URL or as a function which takes two\n * arguments `tElement` and `tAttrs` (described in the `compile` function api below) and returns\n * a string value representing the url. In either case, the template URL is passed through {@link\n * api/ng.$sce#getTrustedResourceUrl $sce.getTrustedResourceUrl}.\n *\n *\n * #### `replace` ([*DEPRECATED*!], will be removed in next major release)\n * specify what the template should replace. Defaults to `false`.\n *\n * * `true` - the template will replace the directive's element.\n * * `false` - the template will replace the contents of the directive's element.\n *\n * The replacement process migrates all of the attributes / classes from the old element to the new\n * one. See the {@link guide/directive#creating-custom-directives_creating-directives_template-expanding-directive\n * Directives Guide} for an example.\n *\n * #### `transclude`\n * compile the content of the element and make it available to the directive.\n * Typically used with {@link ng.directive:ngTransclude\n * ngTransclude}. The advantage of transclusion is that the linking function receives a\n * transclusion function which is pre-bound to the correct scope. In a typical setup the widget\n * creates an `isolate` scope, but the transclusion is not a child, but a sibling of the `isolate`\n * scope. This makes it possible for the widget to have private state, and the transclusion to\n * be bound to the parent (pre-`isolate`) scope.\n *\n * There are two kinds of transclusion depending upon whether you want to transclude just the contents of the\n * directive's element or the entire element:\n *\n * * `true` - transclude the content (i.e. the child nodes) of the directive's element.\n * * `'element'` - transclude the whole of the directive's element including any directives on this\n * element that defined at a lower priority than this directive. When used, the `template`\n * property is ignored.\n *\n *
\n * **Note:** When testing an element transclude directive you must not place the directive at the root of the\n * DOM fragment that is being compiled. See {@link guide/unit-testing#testing-transclusion-directives\n * Testing Transclusion Directives}.\n *
\n *\n * #### `compile`\n *\n * ```js\n * function compile(tElement, tAttrs, transclude) { ... }\n * ```\n *\n * The compile function deals with transforming the template DOM. Since most directives do not do\n * template transformation, it is not used often. The compile function takes the following arguments:\n *\n * * `tElement` - template element - The element where the directive has been declared. It is\n * safe to do template transformation on the element and child elements only.\n *\n * * `tAttrs` - template attributes - Normalized list of attributes declared on this element shared\n * between all directive compile functions.\n *\n * * `transclude` - [*DEPRECATED*!] A transclude linking function: `function(scope, cloneLinkingFn)`\n *\n *
\n * **Note:** The template instance and the link instance may be different objects if the template has\n * been cloned. For this reason it is **not** safe to do anything other than DOM transformations that\n * apply to all cloned DOM nodes within the compile function. Specifically, DOM listener registration\n * should be done in a linking function rather than in a compile function.\n *
\n\n *
\n * **Note:** The compile function cannot handle directives that recursively use themselves in their\n * own templates or compile functions. Compiling these directives results in an infinite loop and a\n * stack overflow errors.\n *\n * This can be avoided by manually using $compile in the postLink function to imperatively compile\n * a directive's template instead of relying on automatic template compilation via `template` or\n * `templateUrl` declaration or manual compilation inside the compile function.\n *
\n *\n *
\n * **Note:** The `transclude` function that is passed to the compile function is deprecated, as it\n * e.g. does not know about the right outer scope. Please use the transclude function that is passed\n * to the link function instead.\n *
\n\n * A compile function can have a return value which can be either a function or an object.\n *\n * * returning a (post-link) function - is equivalent to registering the linking function via the\n * `link` property of the config object when the compile function is empty.\n *\n * * returning an object with function(s) registered via `pre` and `post` properties - allows you to\n * control when a linking function should be called during the linking phase. See info about\n * pre-linking and post-linking functions below.\n *\n *\n * #### `link`\n * This property is used only if the `compile` property is not defined.\n *\n * ```js\n * function link(scope, iElement, iAttrs, controller, transcludeFn) { ... }\n * ```\n *\n * The link function is responsible for registering DOM listeners as well as updating the DOM. It is\n * executed after the template has been cloned. This is where most of the directive logic will be\n * put.\n *\n * * `scope` - {@link ng.$rootScope.Scope Scope} - The scope to be used by the\n * directive for registering {@link ng.$rootScope.Scope#$watch watches}.\n *\n * * `iElement` - instance element - The element where the directive is to be used. It is safe to\n * manipulate the children of the element only in `postLink` function since the children have\n * already been linked.\n *\n * * `iAttrs` - instance attributes - Normalized list of attributes declared on this element shared\n * between all directive linking functions.\n *\n * * `controller` - a controller instance - A controller instance if at least one directive on the\n * element defines a controller. The controller is shared among all the directives, which allows\n * the directives to use the controllers as a communication channel.\n *\n * * `transcludeFn` - A transclude linking function pre-bound to the correct transclusion scope.\n * The scope can be overridden by an optional first argument. This is the same as the `$transclude`\n * parameter of directive controllers.\n * `function([scope], cloneLinkingFn)`.\n *\n *\n * #### Pre-linking function\n *\n * Executed before the child elements are linked. Not safe to do DOM transformation since the\n * compiler linking function will fail to locate the correct elements for linking.\n *\n * #### Post-linking function\n *\n * Executed after the child elements are linked. It is safe to do DOM transformation in the post-linking function.\n *\n * \n * ### Attributes\n *\n * The {@link ng.$compile.directive.Attributes Attributes} object - passed as a parameter in the\n * `link()` or `compile()` functions. It has a variety of uses.\n *\n * accessing *Normalized attribute names:*\n * Directives like 'ngBind' can be expressed in many ways: 'ng:bind', `data-ng-bind`, or 'x-ng-bind'.\n * the attributes object allows for normalized access to\n * the attributes.\n *\n * * *Directive inter-communication:* All directives share the same instance of the attributes\n * object which allows the directives to use the attributes object as inter directive\n * communication.\n *\n * * *Supports interpolation:* Interpolation attributes are assigned to the attribute object\n * allowing other directives to read the interpolated value.\n *\n * * *Observing interpolated attributes:* Use `$observe` to observe the value changes of attributes\n * that contain interpolation (e.g. `src=\"{{bar}}\"`). Not only is this very efficient but it's also\n * the only way to easily get the actual value because during the linking phase the interpolation\n * hasn't been evaluated yet and so the value is at this time set to `undefined`.\n *\n * ```js\n * function linkingFn(scope, elm, attrs, ctrl) {\n * // get the attribute value\n * console.log(attrs.ngModel);\n *\n * // change the attribute\n * attrs.$set('ngModel', 'new value');\n *\n * // observe changes to interpolated attribute\n * attrs.$observe('ngModel', function(value) {\n * console.log('ngModel has changed value to ' + value);\n * });\n * }\n * ```\n *\n * ## Example\n *\n *
\n * **Note**: Typically directives are registered with `module.directive`. The example below is\n * to illustrate how `$compile` works.\n *
\n *\n \n \n \n
\n
\n
\n
\n
\n
\n \n it('should auto compile', function() {\n var textarea = $('textarea');\n var output = $('div[compile]');\n // The initial state reads 'Hello Angular'.\n expect(output.getText()).toBe('Hello Angular');\n textarea.clear();\n textarea.sendKeys('{{name}}!');\n expect(output.getText()).toBe('Angular!');\n });\n \n
\n\n *\n *\n * @param {string|DOMElement} element Element or HTML string to compile into a template function.\n * @param {function(angular.Scope, cloneAttachFn=)} transclude function available to directives.\n * @param {number} maxPriority only apply directives lower than given priority (Only effects the\n * root element(s), not their children)\n * @returns {function(scope, cloneAttachFn=)} a link function which is used to bind template\n * (a DOM element/tree) to a scope. Where:\n *\n * * `scope` - A {@link ng.$rootScope.Scope Scope} to bind to.\n * * `cloneAttachFn` - If `cloneAttachFn` is provided, then the link function will clone the\n * `template` and call the `cloneAttachFn` function allowing the caller to attach the\n * cloned elements to the DOM document at the appropriate place. The `cloneAttachFn` is\n * called as:
`cloneAttachFn(clonedElement, scope)` where:\n *\n * * `clonedElement` - is a clone of the original `element` passed into the compiler.\n * * `scope` - is the current scope with which the linking function is working with.\n *\n * Calling the linking function returns the element of the template. It is either the original\n * element passed in, or the clone of the element if the `cloneAttachFn` is provided.\n *\n * After linking the view is not updated until after a call to $digest which typically is done by\n * Angular automatically.\n *\n * If you need access to the bound view, there are two ways to do it:\n *\n * - If you are not asking the linking function to clone the template, create the DOM element(s)\n * before you send them to the compiler and keep this reference around.\n * ```js\n * var element = $compile('

{{total}}

')(scope);\n * ```\n *\n * - if on the other hand, you need the element to be cloned, the view reference from the original\n * example would not point to the clone, but rather to the original template that was cloned. In\n * this case, you can access the clone via the cloneAttachFn:\n * ```js\n * var templateElement = angular.element('

{{total}}

'),\n * scope = ....;\n *\n * var clonedElement = $compile(templateElement)(scope, function(clonedElement, scope) {\n * //attach the clone to DOM document at the right place\n * });\n *\n * //now we have reference to the cloned DOM via `clonedElement`\n * ```\n *\n *\n * For information on how the compiler works, see the\n * {@link guide/compiler Angular HTML Compiler} section of the Developer Guide.\n */\n\nvar $compileMinErr = minErr('$compile');\n\n/**\n * @ngdoc provider\n * @name $compileProvider\n * @kind function\n *\n * @description\n */\n$CompileProvider.$inject = ['$provide', '$$sanitizeUriProvider'];\nfunction $CompileProvider($provide, $$sanitizeUriProvider) {\n var hasDirectives = {},\n Suffix = 'Directive',\n COMMENT_DIRECTIVE_REGEXP = /^\\s*directive\\:\\s*([\\d\\w_\\-]+)\\s+(.*)$/,\n CLASS_DIRECTIVE_REGEXP = /(([\\d\\w_\\-]+)(?:\\:([^;]+))?;?)/;\n\n // Ref: http://developers.whatwg.org/webappapis.html#event-handler-idl-attributes\n // The assumption is that future DOM event attribute names will begin with\n // 'on' and be composed of only English letters.\n var EVENT_HANDLER_ATTR_REGEXP = /^(on[a-z]+|formaction)$/;\n\n /**\n * @ngdoc method\n * @name $compileProvider#directive\n * @kind function\n *\n * @description\n * Register a new directive with the compiler.\n *\n * @param {string|Object} name Name of the directive in camel-case (i.e. ngBind which\n * will match as ng-bind), or an object map of directives where the keys are the\n * names and the values are the factories.\n * @param {Function|Array} directiveFactory An injectable directive factory function. See\n * {@link guide/directive} for more info.\n * @returns {ng.$compileProvider} Self for chaining.\n */\n this.directive = function registerDirective(name, directiveFactory) {\n assertNotHasOwnProperty(name, 'directive');\n if (isString(name)) {\n assertArg(directiveFactory, 'directiveFactory');\n if (!hasDirectives.hasOwnProperty(name)) {\n hasDirectives[name] = [];\n $provide.factory(name + Suffix, ['$injector', '$exceptionHandler',\n function($injector, $exceptionHandler) {\n var directives = [];\n forEach(hasDirectives[name], function(directiveFactory, index) {\n try {\n var directive = $injector.invoke(directiveFactory);\n if (isFunction(directive)) {\n directive = { compile: valueFn(directive) };\n } else if (!directive.compile && directive.link) {\n directive.compile = valueFn(directive.link);\n }\n directive.priority = directive.priority || 0;\n directive.index = index;\n directive.name = directive.name || name;\n directive.require = directive.require || (directive.controller && directive.name);\n directive.restrict = directive.restrict || 'A';\n directives.push(directive);\n } catch (e) {\n $exceptionHandler(e);\n }\n });\n return directives;\n }]);\n }\n hasDirectives[name].push(directiveFactory);\n } else {\n forEach(name, reverseParams(registerDirective));\n }\n return this;\n };\n\n\n /**\n * @ngdoc method\n * @name $compileProvider#aHrefSanitizationWhitelist\n * @kind function\n *\n * @description\n * Retrieves or overrides the default regular expression that is used for whitelisting of safe\n * urls during a[href] sanitization.\n *\n * The sanitization is a security measure aimed at prevent XSS attacks via html links.\n *\n * Any url about to be assigned to a[href] via data-binding is first normalized and turned into\n * an absolute url. Afterwards, the url is matched against the `aHrefSanitizationWhitelist`\n * regular expression. If a match is found, the original url is written into the dom. Otherwise,\n * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.\n *\n * @param {RegExp=} regexp New regexp to whitelist urls with.\n * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for\n * chaining otherwise.\n */\n this.aHrefSanitizationWhitelist = function(regexp) {\n if (isDefined(regexp)) {\n $$sanitizeUriProvider.aHrefSanitizationWhitelist(regexp);\n return this;\n } else {\n return $$sanitizeUriProvider.aHrefSanitizationWhitelist();\n }\n };\n\n\n /**\n * @ngdoc method\n * @name $compileProvider#imgSrcSanitizationWhitelist\n * @kind function\n *\n * @description\n * Retrieves or overrides the default regular expression that is used for whitelisting of safe\n * urls during img[src] sanitization.\n *\n * The sanitization is a security measure aimed at prevent XSS attacks via html links.\n *\n * Any url about to be assigned to img[src] via data-binding is first normalized and turned into\n * an absolute url. Afterwards, the url is matched against the `imgSrcSanitizationWhitelist`\n * regular expression. If a match is found, the original url is written into the dom. Otherwise,\n * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.\n *\n * @param {RegExp=} regexp New regexp to whitelist urls with.\n * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for\n * chaining otherwise.\n */\n this.imgSrcSanitizationWhitelist = function(regexp) {\n if (isDefined(regexp)) {\n $$sanitizeUriProvider.imgSrcSanitizationWhitelist(regexp);\n return this;\n } else {\n return $$sanitizeUriProvider.imgSrcSanitizationWhitelist();\n }\n };\n\n this.$get = [\n '$injector', '$interpolate', '$exceptionHandler', '$http', '$templateCache', '$parse',\n '$controller', '$rootScope', '$document', '$sce', '$animate', '$$sanitizeUri',\n function($injector, $interpolate, $exceptionHandler, $http, $templateCache, $parse,\n $controller, $rootScope, $document, $sce, $animate, $$sanitizeUri) {\n\n var Attributes = function(element, attr) {\n this.$$element = element;\n this.$attr = attr || {};\n };\n\n Attributes.prototype = {\n /**\n * @ngdoc method\n * @name $compile.directive.Attributes#$normalize\n * @kind function\n *\n * @description\n * Converts an attribute name (e.g. dash/colon/underscore-delimited string, optionally prefixed with `x-` or\n * `data-`) to its normalized, camelCase form.\n *\n * Also there is special case for Moz prefix starting with upper case letter.\n *\n * For further information check out the guide on {@link guide/directive#matching-directives Matching Directives}\n *\n * @param {string} name Name to normalize\n */\n $normalize: directiveNormalize,\n\n\n /**\n * @ngdoc method\n * @name $compile.directive.Attributes#$addClass\n * @kind function\n *\n * @description\n * Adds the CSS class value specified by the classVal parameter to the element. If animations\n * are enabled then an animation will be triggered for the class addition.\n *\n * @param {string} classVal The className value that will be added to the element\n */\n $addClass : function(classVal) {\n if(classVal && classVal.length > 0) {\n $animate.addClass(this.$$element, classVal);\n }\n },\n\n /**\n * @ngdoc method\n * @name $compile.directive.Attributes#$removeClass\n * @kind function\n *\n * @description\n * Removes the CSS class value specified by the classVal parameter from the element. If\n * animations are enabled then an animation will be triggered for the class removal.\n *\n * @param {string} classVal The className value that will be removed from the element\n */\n $removeClass : function(classVal) {\n if(classVal && classVal.length > 0) {\n $animate.removeClass(this.$$element, classVal);\n }\n },\n\n /**\n * @ngdoc method\n * @name $compile.directive.Attributes#$updateClass\n * @kind function\n *\n * @description\n * Adds and removes the appropriate CSS class values to the element based on the difference\n * between the new and old CSS class values (specified as newClasses and oldClasses).\n *\n * @param {string} newClasses The current CSS className value\n * @param {string} oldClasses The former CSS className value\n */\n $updateClass : function(newClasses, oldClasses) {\n var toAdd = tokenDifference(newClasses, oldClasses);\n var toRemove = tokenDifference(oldClasses, newClasses);\n\n if(toAdd.length === 0) {\n $animate.removeClass(this.$$element, toRemove);\n } else if(toRemove.length === 0) {\n $animate.addClass(this.$$element, toAdd);\n } else {\n $animate.setClass(this.$$element, toAdd, toRemove);\n }\n },\n\n /**\n * Set a normalized attribute on the element in a way such that all directives\n * can share the attribute. This function properly handles boolean attributes.\n * @param {string} key Normalized key. (ie ngAttribute)\n * @param {string|boolean} value The value to set. If `null` attribute will be deleted.\n * @param {boolean=} writeAttr If false, does not write the value to DOM element attribute.\n * Defaults to true.\n * @param {string=} attrName Optional none normalized name. Defaults to key.\n */\n $set: function(key, value, writeAttr, attrName) {\n // TODO: decide whether or not to throw an error if \"class\"\n //is set through this function since it may cause $updateClass to\n //become unstable.\n\n var booleanKey = getBooleanAttrName(this.$$element[0], key),\n normalizedVal,\n nodeName;\n\n if (booleanKey) {\n this.$$element.prop(key, value);\n attrName = booleanKey;\n }\n\n this[key] = value;\n\n // translate normalized key to actual key\n if (attrName) {\n this.$attr[key] = attrName;\n } else {\n attrName = this.$attr[key];\n if (!attrName) {\n this.$attr[key] = attrName = snake_case(key, '-');\n }\n }\n\n nodeName = nodeName_(this.$$element);\n\n // sanitize a[href] and img[src] values\n if ((nodeName === 'A' && key === 'href') ||\n (nodeName === 'IMG' && key === 'src')) {\n this[key] = value = $$sanitizeUri(value, key === 'src');\n }\n\n if (writeAttr !== false) {\n if (value === null || value === undefined) {\n this.$$element.removeAttr(attrName);\n } else {\n this.$$element.attr(attrName, value);\n }\n }\n\n // fire observers\n var $$observers = this.$$observers;\n $$observers && forEach($$observers[key], function(fn) {\n try {\n fn(value);\n } catch (e) {\n $exceptionHandler(e);\n }\n });\n },\n\n\n /**\n * @ngdoc method\n * @name $compile.directive.Attributes#$observe\n * @kind function\n *\n * @description\n * Observes an interpolated attribute.\n *\n * The observer function will be invoked once during the next `$digest` following\n * compilation. The observer is then invoked whenever the interpolated value\n * changes.\n *\n * @param {string} key Normalized key. (ie ngAttribute) .\n * @param {function(interpolatedValue)} fn Function that will be called whenever\n the interpolated value of the attribute changes.\n * See the {@link guide/directive#Attributes Directives} guide for more info.\n * @returns {function()} the `fn` parameter.\n */\n $observe: function(key, fn) {\n var attrs = this,\n $$observers = (attrs.$$observers || (attrs.$$observers = {})),\n listeners = ($$observers[key] || ($$observers[key] = []));\n\n listeners.push(fn);\n $rootScope.$evalAsync(function() {\n if (!listeners.$$inter) {\n // no one registered attribute interpolation function, so lets call it manually\n fn(attrs[key]);\n }\n });\n return fn;\n }\n };\n\n var startSymbol = $interpolate.startSymbol(),\n endSymbol = $interpolate.endSymbol(),\n denormalizeTemplate = (startSymbol == '{{' || endSymbol == '}}')\n ? identity\n : function denormalizeTemplate(template) {\n return template.replace(/\\{\\{/g, startSymbol).replace(/}}/g, endSymbol);\n },\n NG_ATTR_BINDING = /^ngAttr[A-Z]/;\n\n\n return compile;\n\n //================================\n\n function compile($compileNodes, transcludeFn, maxPriority, ignoreDirective,\n previousCompileContext) {\n if (!($compileNodes instanceof jqLite)) {\n // jquery always rewraps, whereas we need to preserve the original selector so that we can\n // modify it.\n $compileNodes = jqLite($compileNodes);\n }\n // We can not compile top level text elements since text nodes can be merged and we will\n // not be able to attach scope data to them, so we will wrap them in \n forEach($compileNodes, function(node, index){\n if (node.nodeType == 3 /* text node */ && node.nodeValue.match(/\\S+/) /* non-empty */ ) {\n $compileNodes[index] = node = jqLite(node).wrap('').parent()[0];\n }\n });\n var compositeLinkFn =\n compileNodes($compileNodes, transcludeFn, $compileNodes,\n maxPriority, ignoreDirective, previousCompileContext);\n safeAddClass($compileNodes, 'ng-scope');\n return function publicLinkFn(scope, cloneConnectFn, transcludeControllers, parentBoundTranscludeFn){\n assertArg(scope, 'scope');\n // important!!: we must call our jqLite.clone() since the jQuery one is trying to be smart\n // and sometimes changes the structure of the DOM.\n var $linkNode = cloneConnectFn\n ? JQLitePrototype.clone.call($compileNodes) // IMPORTANT!!!\n : $compileNodes;\n\n forEach(transcludeControllers, function(instance, name) {\n $linkNode.data('$' + name + 'Controller', instance);\n });\n\n // Attach scope only to non-text nodes.\n for(var i = 0, ii = $linkNode.length; i\n addDirective(directives,\n directiveNormalize(nodeName_(node).toLowerCase()), 'E', maxPriority, ignoreDirective);\n\n // iterate over the attributes\n for (var attr, name, nName, ngAttrName, value, isNgAttr, nAttrs = node.attributes,\n j = 0, jj = nAttrs && nAttrs.length; j < jj; j++) {\n var attrStartName = false;\n var attrEndName = false;\n\n attr = nAttrs[j];\n if (!msie || msie >= 8 || attr.specified) {\n name = attr.name;\n value = trim(attr.value);\n\n // support ngAttr attribute binding\n ngAttrName = directiveNormalize(name);\n if (isNgAttr = NG_ATTR_BINDING.test(ngAttrName)) {\n name = snake_case(ngAttrName.substr(6), '-');\n }\n\n var directiveNName = ngAttrName.replace(/(Start|End)$/, '');\n if (ngAttrName === directiveNName + 'Start') {\n attrStartName = name;\n attrEndName = name.substr(0, name.length - 5) + 'end';\n name = name.substr(0, name.length - 6);\n }\n\n nName = directiveNormalize(name.toLowerCase());\n attrsMap[nName] = name;\n if (isNgAttr || !attrs.hasOwnProperty(nName)) {\n attrs[nName] = value;\n if (getBooleanAttrName(node, nName)) {\n attrs[nName] = true; // presence means true\n }\n }\n addAttrInterpolateDirective(node, directives, value, nName);\n addDirective(directives, nName, 'A', maxPriority, ignoreDirective, attrStartName,\n attrEndName);\n }\n }\n\n // use class as directive\n className = node.className;\n if (isString(className) && className !== '') {\n while (match = CLASS_DIRECTIVE_REGEXP.exec(className)) {\n nName = directiveNormalize(match[2]);\n if (addDirective(directives, nName, 'C', maxPriority, ignoreDirective)) {\n attrs[nName] = trim(match[3]);\n }\n className = className.substr(match.index + match[0].length);\n }\n }\n break;\n case 3: /* Text Node */\n addTextInterpolateDirective(directives, node.nodeValue);\n break;\n case 8: /* Comment */\n try {\n match = COMMENT_DIRECTIVE_REGEXP.exec(node.nodeValue);\n if (match) {\n nName = directiveNormalize(match[1]);\n if (addDirective(directives, nName, 'M', maxPriority, ignoreDirective)) {\n attrs[nName] = trim(match[2]);\n }\n }\n } catch (e) {\n // turns out that under some circumstances IE9 throws errors when one attempts to read\n // comment's node value.\n // Just ignore it and continue. (Can't seem to reproduce in test case.)\n }\n break;\n }\n\n directives.sort(byPriority);\n return directives;\n }\n\n /**\n * Given a node with an directive-start it collects all of the siblings until it finds\n * directive-end.\n * @param node\n * @param attrStart\n * @param attrEnd\n * @returns {*}\n */\n function groupScan(node, attrStart, attrEnd) {\n var nodes = [];\n var depth = 0;\n if (attrStart && node.hasAttribute && node.hasAttribute(attrStart)) {\n var startNode = node;\n do {\n if (!node) {\n throw $compileMinErr('uterdir',\n \"Unterminated attribute, found '{0}' but no matching '{1}' found.\",\n attrStart, attrEnd);\n }\n if (node.nodeType == 1 /** Element **/) {\n if (node.hasAttribute(attrStart)) depth++;\n if (node.hasAttribute(attrEnd)) depth--;\n }\n nodes.push(node);\n node = node.nextSibling;\n } while (depth > 0);\n } else {\n nodes.push(node);\n }\n\n return jqLite(nodes);\n }\n\n /**\n * Wrapper for linking function which converts normal linking function into a grouped\n * linking function.\n * @param linkFn\n * @param attrStart\n * @param attrEnd\n * @returns {Function}\n */\n function groupElementsLinkFnWrapper(linkFn, attrStart, attrEnd) {\n return function(scope, element, attrs, controllers, transcludeFn) {\n element = groupScan(element[0], attrStart, attrEnd);\n return linkFn(scope, element, attrs, controllers, transcludeFn);\n };\n }\n\n /**\n * Once the directives have been collected, their compile functions are executed. This method\n * is responsible for inlining directive templates as well as terminating the application\n * of the directives if the terminal directive has been reached.\n *\n * @param {Array} directives Array of collected directives to execute their compile function.\n * this needs to be pre-sorted by priority order.\n * @param {Node} compileNode The raw DOM node to apply the compile functions to\n * @param {Object} templateAttrs The shared attribute function\n * @param {function(angular.Scope, cloneAttachFn=)} transcludeFn A linking function, where the\n * scope argument is auto-generated to the new\n * child of the transcluded parent scope.\n * @param {JQLite} jqCollection If we are working on the root of the compile tree then this\n * argument has the root jqLite array so that we can replace nodes\n * on it.\n * @param {Object=} originalReplaceDirective An optional directive that will be ignored when\n * compiling the transclusion.\n * @param {Array.} preLinkFns\n * @param {Array.} postLinkFns\n * @param {Object} previousCompileContext Context used for previous compilation of the current\n * node\n * @returns {Function} linkFn\n */\n function applyDirectivesToNode(directives, compileNode, templateAttrs, transcludeFn,\n jqCollection, originalReplaceDirective, preLinkFns, postLinkFns,\n previousCompileContext) {\n previousCompileContext = previousCompileContext || {};\n\n var terminalPriority = -Number.MAX_VALUE,\n newScopeDirective,\n controllerDirectives = previousCompileContext.controllerDirectives,\n newIsolateScopeDirective = previousCompileContext.newIsolateScopeDirective,\n templateDirective = previousCompileContext.templateDirective,\n nonTlbTranscludeDirective = previousCompileContext.nonTlbTranscludeDirective,\n hasTranscludeDirective = false,\n hasTemplate = false,\n hasElementTranscludeDirective = previousCompileContext.hasElementTranscludeDirective,\n $compileNode = templateAttrs.$$element = jqLite(compileNode),\n directive,\n directiveName,\n $template,\n replaceDirective = originalReplaceDirective,\n childTranscludeFn = transcludeFn,\n linkFn,\n directiveValue;\n\n // executes all directives on the current element\n for(var i = 0, ii = directives.length; i < ii; i++) {\n directive = directives[i];\n var attrStart = directive.$$start;\n var attrEnd = directive.$$end;\n\n // collect multiblock sections\n if (attrStart) {\n $compileNode = groupScan(compileNode, attrStart, attrEnd);\n }\n $template = undefined;\n\n if (terminalPriority > directive.priority) {\n break; // prevent further processing of directives\n }\n\n if (directiveValue = directive.scope) {\n newScopeDirective = newScopeDirective || directive;\n\n // skip the check for directives with async templates, we'll check the derived sync\n // directive when the template arrives\n if (!directive.templateUrl) {\n assertNoDuplicate('new/isolated scope', newIsolateScopeDirective, directive,\n $compileNode);\n if (isObject(directiveValue)) {\n newIsolateScopeDirective = directive;\n }\n }\n }\n\n directiveName = directive.name;\n\n if (!directive.templateUrl && directive.controller) {\n directiveValue = directive.controller;\n controllerDirectives = controllerDirectives || {};\n assertNoDuplicate(\"'\" + directiveName + \"' controller\",\n controllerDirectives[directiveName], directive, $compileNode);\n controllerDirectives[directiveName] = directive;\n }\n\n if (directiveValue = directive.transclude) {\n hasTranscludeDirective = true;\n\n // Special case ngIf and ngRepeat so that we don't complain about duplicate transclusion.\n // This option should only be used by directives that know how to safely handle element transclusion,\n // where the transcluded nodes are added or replaced after linking.\n if (!directive.$$tlb) {\n assertNoDuplicate('transclusion', nonTlbTranscludeDirective, directive, $compileNode);\n nonTlbTranscludeDirective = directive;\n }\n\n if (directiveValue == 'element') {\n hasElementTranscludeDirective = true;\n terminalPriority = directive.priority;\n $template = $compileNode;\n $compileNode = templateAttrs.$$element =\n jqLite(document.createComment(' ' + directiveName + ': ' +\n templateAttrs[directiveName] + ' '));\n compileNode = $compileNode[0];\n replaceWith(jqCollection, sliceArgs($template), compileNode);\n\n childTranscludeFn = compile($template, transcludeFn, terminalPriority,\n replaceDirective && replaceDirective.name, {\n // Don't pass in:\n // - controllerDirectives - otherwise we'll create duplicates controllers\n // - newIsolateScopeDirective or templateDirective - combining templates with\n // element transclusion doesn't make sense.\n //\n // We need only nonTlbTranscludeDirective so that we prevent putting transclusion\n // on the same element more than once.\n nonTlbTranscludeDirective: nonTlbTranscludeDirective\n });\n } else {\n $template = jqLite(jqLiteClone(compileNode)).contents();\n $compileNode.empty(); // clear contents\n childTranscludeFn = compile($template, transcludeFn);\n }\n }\n\n if (directive.template) {\n hasTemplate = true;\n assertNoDuplicate('template', templateDirective, directive, $compileNode);\n templateDirective = directive;\n\n directiveValue = (isFunction(directive.template))\n ? directive.template($compileNode, templateAttrs)\n : directive.template;\n\n directiveValue = denormalizeTemplate(directiveValue);\n\n if (directive.replace) {\n replaceDirective = directive;\n if (jqLiteIsTextNode(directiveValue)) {\n $template = [];\n } else {\n $template = jqLite(trim(directiveValue));\n }\n compileNode = $template[0];\n\n if ($template.length != 1 || compileNode.nodeType !== 1) {\n throw $compileMinErr('tplrt',\n \"Template for directive '{0}' must have exactly one root element. {1}\",\n directiveName, '');\n }\n\n replaceWith(jqCollection, $compileNode, compileNode);\n\n var newTemplateAttrs = {$attr: {}};\n\n // combine directives from the original node and from the template:\n // - take the array of directives for this element\n // - split it into two parts, those that already applied (processed) and those that weren't (unprocessed)\n // - collect directives from the template and sort them by priority\n // - combine directives as: processed + template + unprocessed\n var templateDirectives = collectDirectives(compileNode, [], newTemplateAttrs);\n var unprocessedDirectives = directives.splice(i + 1, directives.length - (i + 1));\n\n if (newIsolateScopeDirective) {\n markDirectivesAsIsolate(templateDirectives);\n }\n directives = directives.concat(templateDirectives).concat(unprocessedDirectives);\n mergeTemplateAttributes(templateAttrs, newTemplateAttrs);\n\n ii = directives.length;\n } else {\n $compileNode.html(directiveValue);\n }\n }\n\n if (directive.templateUrl) {\n hasTemplate = true;\n assertNoDuplicate('template', templateDirective, directive, $compileNode);\n templateDirective = directive;\n\n if (directive.replace) {\n replaceDirective = directive;\n }\n\n nodeLinkFn = compileTemplateUrl(directives.splice(i, directives.length - i), $compileNode,\n templateAttrs, jqCollection, hasTranscludeDirective && childTranscludeFn, preLinkFns, postLinkFns, {\n controllerDirectives: controllerDirectives,\n newIsolateScopeDirective: newIsolateScopeDirective,\n templateDirective: templateDirective,\n nonTlbTranscludeDirective: nonTlbTranscludeDirective\n });\n ii = directives.length;\n } else if (directive.compile) {\n try {\n linkFn = directive.compile($compileNode, templateAttrs, childTranscludeFn);\n if (isFunction(linkFn)) {\n addLinkFns(null, linkFn, attrStart, attrEnd);\n } else if (linkFn) {\n addLinkFns(linkFn.pre, linkFn.post, attrStart, attrEnd);\n }\n } catch (e) {\n $exceptionHandler(e, startingTag($compileNode));\n }\n }\n\n if (directive.terminal) {\n nodeLinkFn.terminal = true;\n terminalPriority = Math.max(terminalPriority, directive.priority);\n }\n\n }\n\n nodeLinkFn.scope = newScopeDirective && newScopeDirective.scope === true;\n nodeLinkFn.transcludeOnThisElement = hasTranscludeDirective;\n nodeLinkFn.templateOnThisElement = hasTemplate;\n nodeLinkFn.transclude = childTranscludeFn;\n\n previousCompileContext.hasElementTranscludeDirective = hasElementTranscludeDirective;\n\n // might be normal or delayed nodeLinkFn depending on if templateUrl is present\n return nodeLinkFn;\n\n ////////////////////\n\n function addLinkFns(pre, post, attrStart, attrEnd) {\n if (pre) {\n if (attrStart) pre = groupElementsLinkFnWrapper(pre, attrStart, attrEnd);\n pre.require = directive.require;\n pre.directiveName = directiveName;\n if (newIsolateScopeDirective === directive || directive.$$isolateScope) {\n pre = cloneAndAnnotateFn(pre, {isolateScope: true});\n }\n preLinkFns.push(pre);\n }\n if (post) {\n if (attrStart) post = groupElementsLinkFnWrapper(post, attrStart, attrEnd);\n post.require = directive.require;\n post.directiveName = directiveName;\n if (newIsolateScopeDirective === directive || directive.$$isolateScope) {\n post = cloneAndAnnotateFn(post, {isolateScope: true});\n }\n postLinkFns.push(post);\n }\n }\n\n\n function getControllers(directiveName, require, $element, elementControllers) {\n var value, retrievalMethod = 'data', optional = false;\n if (isString(require)) {\n while((value = require.charAt(0)) == '^' || value == '?') {\n require = require.substr(1);\n if (value == '^') {\n retrievalMethod = 'inheritedData';\n }\n optional = optional || value == '?';\n }\n value = null;\n\n if (elementControllers && retrievalMethod === 'data') {\n value = elementControllers[require];\n }\n value = value || $element[retrievalMethod]('$' + require + 'Controller');\n\n if (!value && !optional) {\n throw $compileMinErr('ctreq',\n \"Controller '{0}', required by directive '{1}', can't be found!\",\n require, directiveName);\n }\n return value;\n } else if (isArray(require)) {\n value = [];\n forEach(require, function(require) {\n value.push(getControllers(directiveName, require, $element, elementControllers));\n });\n }\n return value;\n }\n\n\n function nodeLinkFn(childLinkFn, scope, linkNode, $rootElement, boundTranscludeFn) {\n var attrs, $element, i, ii, linkFn, controller, isolateScope, elementControllers = {}, transcludeFn;\n\n attrs = (compileNode === linkNode)\n ? templateAttrs\n : shallowCopy(templateAttrs, new Attributes(jqLite(linkNode), templateAttrs.$attr));\n $element = attrs.$$element;\n\n if (newIsolateScopeDirective) {\n var LOCAL_REGEXP = /^\\s*([@=&])(\\??)\\s*(\\w*)\\s*$/;\n\n isolateScope = scope.$new(true);\n\n if (templateDirective && (templateDirective === newIsolateScopeDirective ||\n templateDirective === newIsolateScopeDirective.$$originalDirective)) {\n $element.data('$isolateScope', isolateScope);\n } else {\n $element.data('$isolateScopeNoTemplate', isolateScope);\n }\n\n\n\n safeAddClass($element, 'ng-isolate-scope');\n\n forEach(newIsolateScopeDirective.scope, function(definition, scopeName) {\n var match = definition.match(LOCAL_REGEXP) || [],\n attrName = match[3] || scopeName,\n optional = (match[2] == '?'),\n mode = match[1], // @, =, or &\n lastValue,\n parentGet, parentSet, compare;\n\n isolateScope.$$isolateBindings[scopeName] = mode + attrName;\n\n switch (mode) {\n\n case '@':\n attrs.$observe(attrName, function(value) {\n isolateScope[scopeName] = value;\n });\n attrs.$$observers[attrName].$$scope = scope;\n if( attrs[attrName] ) {\n // If the attribute has been provided then we trigger an interpolation to ensure\n // the value is there for use in the link fn\n isolateScope[scopeName] = $interpolate(attrs[attrName])(scope);\n }\n break;\n\n case '=':\n if (optional && !attrs[attrName]) {\n return;\n }\n parentGet = $parse(attrs[attrName]);\n if (parentGet.literal) {\n compare = equals;\n } else {\n compare = function(a,b) { return a === b || (a !== a && b !== b); };\n }\n parentSet = parentGet.assign || function() {\n // reset the change, or we will throw this exception on every $digest\n lastValue = isolateScope[scopeName] = parentGet(scope);\n throw $compileMinErr('nonassign',\n \"Expression '{0}' used with directive '{1}' is non-assignable!\",\n attrs[attrName], newIsolateScopeDirective.name);\n };\n lastValue = isolateScope[scopeName] = parentGet(scope);\n isolateScope.$watch(function parentValueWatch() {\n var parentValue = parentGet(scope);\n if (!compare(parentValue, isolateScope[scopeName])) {\n // we are out of sync and need to copy\n if (!compare(parentValue, lastValue)) {\n // parent changed and it has precedence\n isolateScope[scopeName] = parentValue;\n } else {\n // if the parent can be assigned then do so\n parentSet(scope, parentValue = isolateScope[scopeName]);\n }\n }\n return lastValue = parentValue;\n }, null, parentGet.literal);\n break;\n\n case '&':\n parentGet = $parse(attrs[attrName]);\n isolateScope[scopeName] = function(locals) {\n return parentGet(scope, locals);\n };\n break;\n\n default:\n throw $compileMinErr('iscp',\n \"Invalid isolate scope definition for directive '{0}'.\" +\n \" Definition: {... {1}: '{2}' ...}\",\n newIsolateScopeDirective.name, scopeName, definition);\n }\n });\n }\n transcludeFn = boundTranscludeFn && controllersBoundTransclude;\n if (controllerDirectives) {\n forEach(controllerDirectives, function(directive) {\n var locals = {\n $scope: directive === newIsolateScopeDirective || directive.$$isolateScope ? isolateScope : scope,\n $element: $element,\n $attrs: attrs,\n $transclude: transcludeFn\n }, controllerInstance;\n\n controller = directive.controller;\n if (controller == '@') {\n controller = attrs[directive.name];\n }\n\n controllerInstance = $controller(controller, locals);\n // For directives with element transclusion the element is a comment,\n // but jQuery .data doesn't support attaching data to comment nodes as it's hard to\n // clean up (http://bugs.jquery.com/ticket/8335).\n // Instead, we save the controllers for the element in a local hash and attach to .data\n // later, once we have the actual element.\n elementControllers[directive.name] = controllerInstance;\n if (!hasElementTranscludeDirective) {\n $element.data('$' + directive.name + 'Controller', controllerInstance);\n }\n\n if (directive.controllerAs) {\n locals.$scope[directive.controllerAs] = controllerInstance;\n }\n });\n }\n\n // PRELINKING\n for(i = 0, ii = preLinkFns.length; i < ii; i++) {\n try {\n linkFn = preLinkFns[i];\n linkFn(linkFn.isolateScope ? isolateScope : scope, $element, attrs,\n linkFn.require && getControllers(linkFn.directiveName, linkFn.require, $element, elementControllers), transcludeFn);\n } catch (e) {\n $exceptionHandler(e, startingTag($element));\n }\n }\n\n // RECURSION\n // We only pass the isolate scope, if the isolate directive has a template,\n // otherwise the child elements do not belong to the isolate directive.\n var scopeToChild = scope;\n if (newIsolateScopeDirective && (newIsolateScopeDirective.template || newIsolateScopeDirective.templateUrl === null)) {\n scopeToChild = isolateScope;\n }\n childLinkFn && childLinkFn(scopeToChild, linkNode.childNodes, undefined, boundTranscludeFn);\n\n // POSTLINKING\n for(i = postLinkFns.length - 1; i >= 0; i--) {\n try {\n linkFn = postLinkFns[i];\n linkFn(linkFn.isolateScope ? isolateScope : scope, $element, attrs,\n linkFn.require && getControllers(linkFn.directiveName, linkFn.require, $element, elementControllers), transcludeFn);\n } catch (e) {\n $exceptionHandler(e, startingTag($element));\n }\n }\n\n // This is the function that is injected as `$transclude`.\n function controllersBoundTransclude(scope, cloneAttachFn) {\n var transcludeControllers;\n\n // no scope passed\n if (arguments.length < 2) {\n cloneAttachFn = scope;\n scope = undefined;\n }\n\n if (hasElementTranscludeDirective) {\n transcludeControllers = elementControllers;\n }\n\n return boundTranscludeFn(scope, cloneAttachFn, transcludeControllers);\n }\n }\n }\n\n function markDirectivesAsIsolate(directives) {\n // mark all directives as needing isolate scope.\n for (var j = 0, jj = directives.length; j < jj; j++) {\n directives[j] = inherit(directives[j], {$$isolateScope: true});\n }\n }\n\n /**\n * looks up the directive and decorates it with exception handling and proper parameters. We\n * call this the boundDirective.\n *\n * @param {string} name name of the directive to look up.\n * @param {string} location The directive must be found in specific format.\n * String containing any of theses characters:\n *\n * * `E`: element name\n * * `A': attribute\n * * `C`: class\n * * `M`: comment\n * @returns {boolean} true if directive was added.\n */\n function addDirective(tDirectives, name, location, maxPriority, ignoreDirective, startAttrName,\n endAttrName) {\n if (name === ignoreDirective) return null;\n var match = null;\n if (hasDirectives.hasOwnProperty(name)) {\n for(var directive, directives = $injector.get(name + Suffix),\n i = 0, ii = directives.length; i directive.priority) &&\n directive.restrict.indexOf(location) != -1) {\n if (startAttrName) {\n directive = inherit(directive, {$$start: startAttrName, $$end: endAttrName});\n }\n tDirectives.push(directive);\n match = directive;\n }\n } catch(e) { $exceptionHandler(e); }\n }\n }\n return match;\n }\n\n\n /**\n * When the element is replaced with HTML template then the new attributes\n * on the template need to be merged with the existing attributes in the DOM.\n * The desired effect is to have both of the attributes present.\n *\n * @param {object} dst destination attributes (original DOM)\n * @param {object} src source attributes (from the directive template)\n */\n function mergeTemplateAttributes(dst, src) {\n var srcAttr = src.$attr,\n dstAttr = dst.$attr,\n $element = dst.$$element;\n\n // reapply the old attributes to the new element\n forEach(dst, function(value, key) {\n if (key.charAt(0) != '$') {\n if (src[key] && src[key] !== value) {\n value += (key === 'style' ? ';' : ' ') + src[key];\n }\n dst.$set(key, value, true, srcAttr[key]);\n }\n });\n\n // copy the new attributes on the old attrs object\n forEach(src, function(value, key) {\n if (key == 'class') {\n safeAddClass($element, value);\n dst['class'] = (dst['class'] ? dst['class'] + ' ' : '') + value;\n } else if (key == 'style') {\n $element.attr('style', $element.attr('style') + ';' + value);\n dst['style'] = (dst['style'] ? dst['style'] + ';' : '') + value;\n // `dst` will never contain hasOwnProperty as DOM parser won't let it.\n // You will get an \"InvalidCharacterError: DOM Exception 5\" error if you\n // have an attribute like \"has-own-property\" or \"data-has-own-property\", etc.\n } else if (key.charAt(0) != '$' && !dst.hasOwnProperty(key)) {\n dst[key] = value;\n dstAttr[key] = srcAttr[key];\n }\n });\n }\n\n\n function compileTemplateUrl(directives, $compileNode, tAttrs,\n $rootElement, childTranscludeFn, preLinkFns, postLinkFns, previousCompileContext) {\n var linkQueue = [],\n afterTemplateNodeLinkFn,\n afterTemplateChildLinkFn,\n beforeTemplateCompileNode = $compileNode[0],\n origAsyncDirective = directives.shift(),\n // The fact that we have to copy and patch the directive seems wrong!\n derivedSyncDirective = extend({}, origAsyncDirective, {\n templateUrl: null, transclude: null, replace: null, $$originalDirective: origAsyncDirective\n }),\n templateUrl = (isFunction(origAsyncDirective.templateUrl))\n ? origAsyncDirective.templateUrl($compileNode, tAttrs)\n : origAsyncDirective.templateUrl;\n\n $compileNode.empty();\n\n $http.get($sce.getTrustedResourceUrl(templateUrl), {cache: $templateCache}).\n success(function(content) {\n var compileNode, tempTemplateAttrs, $template, childBoundTranscludeFn;\n\n content = denormalizeTemplate(content);\n\n if (origAsyncDirective.replace) {\n if (jqLiteIsTextNode(content)) {\n $template = [];\n } else {\n $template = jqLite(trim(content));\n }\n compileNode = $template[0];\n\n if ($template.length != 1 || compileNode.nodeType !== 1) {\n throw $compileMinErr('tplrt',\n \"Template for directive '{0}' must have exactly one root element. {1}\",\n origAsyncDirective.name, templateUrl);\n }\n\n tempTemplateAttrs = {$attr: {}};\n replaceWith($rootElement, $compileNode, compileNode);\n var templateDirectives = collectDirectives(compileNode, [], tempTemplateAttrs);\n\n if (isObject(origAsyncDirective.scope)) {\n markDirectivesAsIsolate(templateDirectives);\n }\n directives = templateDirectives.concat(directives);\n mergeTemplateAttributes(tAttrs, tempTemplateAttrs);\n } else {\n compileNode = beforeTemplateCompileNode;\n $compileNode.html(content);\n }\n\n directives.unshift(derivedSyncDirective);\n\n afterTemplateNodeLinkFn = applyDirectivesToNode(directives, compileNode, tAttrs,\n childTranscludeFn, $compileNode, origAsyncDirective, preLinkFns, postLinkFns,\n previousCompileContext);\n forEach($rootElement, function(node, i) {\n if (node == compileNode) {\n $rootElement[i] = $compileNode[0];\n }\n });\n afterTemplateChildLinkFn = compileNodes($compileNode[0].childNodes, childTranscludeFn);\n\n while(linkQueue.length) {\n var scope = linkQueue.shift(),\n beforeTemplateLinkNode = linkQueue.shift(),\n linkRootElement = linkQueue.shift(),\n boundTranscludeFn = linkQueue.shift(),\n linkNode = $compileNode[0];\n\n if (beforeTemplateLinkNode !== beforeTemplateCompileNode) {\n var oldClasses = beforeTemplateLinkNode.className;\n\n if (!(previousCompileContext.hasElementTranscludeDirective &&\n origAsyncDirective.replace)) {\n // it was cloned therefore we have to clone as well.\n linkNode = jqLiteClone(compileNode);\n }\n\n replaceWith(linkRootElement, jqLite(beforeTemplateLinkNode), linkNode);\n\n // Copy in CSS classes from original node\n safeAddClass(jqLite(linkNode), oldClasses);\n }\n if (afterTemplateNodeLinkFn.transcludeOnThisElement) {\n childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn);\n } else {\n childBoundTranscludeFn = boundTranscludeFn;\n }\n afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, linkNode, $rootElement,\n childBoundTranscludeFn);\n }\n linkQueue = null;\n }).\n error(function(response, code, headers, config) {\n throw $compileMinErr('tpload', 'Failed to load template: {0}', config.url);\n });\n\n return function delayedNodeLinkFn(ignoreChildLinkFn, scope, node, rootElement, boundTranscludeFn) {\n var childBoundTranscludeFn = boundTranscludeFn;\n if (linkQueue) {\n linkQueue.push(scope);\n linkQueue.push(node);\n linkQueue.push(rootElement);\n linkQueue.push(childBoundTranscludeFn);\n } else {\n if (afterTemplateNodeLinkFn.transcludeOnThisElement) {\n childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn);\n }\n afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, node, rootElement, childBoundTranscludeFn);\n }\n };\n }\n\n\n /**\n * Sorting function for bound directives.\n */\n function byPriority(a, b) {\n var diff = b.priority - a.priority;\n if (diff !== 0) return diff;\n if (a.name !== b.name) return (a.name < b.name) ? -1 : 1;\n return a.index - b.index;\n }\n\n\n function assertNoDuplicate(what, previousDirective, directive, element) {\n if (previousDirective) {\n throw $compileMinErr('multidir', 'Multiple directives [{0}, {1}] asking for {2} on: {3}',\n previousDirective.name, directive.name, what, startingTag(element));\n }\n }\n\n\n function addTextInterpolateDirective(directives, text) {\n var interpolateFn = $interpolate(text, true);\n if (interpolateFn) {\n directives.push({\n priority: 0,\n compile: function textInterpolateCompileFn(templateNode) {\n // when transcluding a template that has bindings in the root\n // then we don't have a parent and should do this in the linkFn\n var parent = templateNode.parent(), hasCompileParent = parent.length;\n if (hasCompileParent) safeAddClass(templateNode.parent(), 'ng-binding');\n\n return function textInterpolateLinkFn(scope, node) {\n var parent = node.parent(),\n bindings = parent.data('$binding') || [];\n bindings.push(interpolateFn);\n parent.data('$binding', bindings);\n if (!hasCompileParent) safeAddClass(parent, 'ng-binding');\n scope.$watch(interpolateFn, function interpolateFnWatchAction(value) {\n node[0].nodeValue = value;\n });\n };\n }\n });\n }\n }\n\n\n function getTrustedContext(node, attrNormalizedName) {\n if (attrNormalizedName == \"srcdoc\") {\n return $sce.HTML;\n }\n var tag = nodeName_(node);\n // maction[xlink:href] can source SVG. It's not limited to .\n if (attrNormalizedName == \"xlinkHref\" ||\n (tag == \"FORM\" && attrNormalizedName == \"action\") ||\n (tag != \"IMG\" && (attrNormalizedName == \"src\" ||\n attrNormalizedName == \"ngSrc\"))) {\n return $sce.RESOURCE_URL;\n }\n }\n\n\n function addAttrInterpolateDirective(node, directives, value, name) {\n var interpolateFn = $interpolate(value, true);\n\n // no interpolation found -> ignore\n if (!interpolateFn) return;\n\n\n if (name === \"multiple\" && nodeName_(node) === \"SELECT\") {\n throw $compileMinErr(\"selmulti\",\n \"Binding to the 'multiple' attribute is not supported. Element: {0}\",\n startingTag(node));\n }\n\n directives.push({\n priority: 100,\n compile: function() {\n return {\n pre: function attrInterpolatePreLinkFn(scope, element, attr) {\n var $$observers = (attr.$$observers || (attr.$$observers = {}));\n\n if (EVENT_HANDLER_ATTR_REGEXP.test(name)) {\n throw $compileMinErr('nodomevents',\n \"Interpolations for HTML DOM event attributes are disallowed. Please use the \" +\n \"ng- versions (such as ng-click instead of onclick) instead.\");\n }\n\n // we need to interpolate again, in case the attribute value has been updated\n // (e.g. by another directive's compile function)\n interpolateFn = $interpolate(attr[name], true, getTrustedContext(node, name));\n\n // if attribute was updated so that there is no interpolation going on we don't want to\n // register any observers\n if (!interpolateFn) return;\n\n // TODO(i): this should likely be attr.$set(name, iterpolateFn(scope) so that we reset the\n // actual attr value\n attr[name] = interpolateFn(scope);\n ($$observers[name] || ($$observers[name] = [])).$$inter = true;\n (attr.$$observers && attr.$$observers[name].$$scope || scope).\n $watch(interpolateFn, function interpolateFnWatchAction(newValue, oldValue) {\n //special case for class attribute addition + removal\n //so that class changes can tap into the animation\n //hooks provided by the $animate service. Be sure to\n //skip animations when the first digest occurs (when\n //both the new and the old values are the same) since\n //the CSS classes are the non-interpolated values\n if(name === 'class' && newValue != oldValue) {\n attr.$updateClass(newValue, oldValue);\n } else {\n attr.$set(name, newValue);\n }\n });\n }\n };\n }\n });\n }\n\n\n /**\n * This is a special jqLite.replaceWith, which can replace items which\n * have no parents, provided that the containing jqLite collection is provided.\n *\n * @param {JqLite=} $rootElement The root of the compile tree. Used so that we can replace nodes\n * in the root of the tree.\n * @param {JqLite} elementsToRemove The jqLite element which we are going to replace. We keep\n * the shell, but replace its DOM node reference.\n * @param {Node} newNode The new DOM node.\n */\n function replaceWith($rootElement, elementsToRemove, newNode) {\n var firstElementToRemove = elementsToRemove[0],\n removeCount = elementsToRemove.length,\n parent = firstElementToRemove.parentNode,\n i, ii;\n\n if ($rootElement) {\n for(i = 0, ii = $rootElement.length; i < ii; i++) {\n if ($rootElement[i] == firstElementToRemove) {\n $rootElement[i++] = newNode;\n for (var j = i, j2 = j + removeCount - 1,\n jj = $rootElement.length;\n j < jj; j++, j2++) {\n if (j2 < jj) {\n $rootElement[j] = $rootElement[j2];\n } else {\n delete $rootElement[j];\n }\n }\n $rootElement.length -= removeCount - 1;\n break;\n }\n }\n }\n\n if (parent) {\n parent.replaceChild(newNode, firstElementToRemove);\n }\n var fragment = document.createDocumentFragment();\n fragment.appendChild(firstElementToRemove);\n newNode[jqLite.expando] = firstElementToRemove[jqLite.expando];\n for (var k = 1, kk = elementsToRemove.length; k < kk; k++) {\n var element = elementsToRemove[k];\n jqLite(element).remove(); // must do this way to clean up expando\n fragment.appendChild(element);\n delete elementsToRemove[k];\n }\n\n elementsToRemove[0] = newNode;\n elementsToRemove.length = 1;\n }\n\n\n function cloneAndAnnotateFn(fn, annotation) {\n return extend(function() { return fn.apply(null, arguments); }, fn, annotation);\n }\n }];\n}\n\nvar PREFIX_REGEXP = /^(x[\\:\\-_]|data[\\:\\-_])/i;\n/**\n * Converts all accepted directives format into proper directive name.\n * @param name Name to normalize\n */\nfunction directiveNormalize(name) {\n return camelCase(name.replace(PREFIX_REGEXP, ''));\n}\n\n/**\n * @ngdoc type\n * @name $compile.directive.Attributes\n *\n * @description\n * A shared object between directive compile / linking functions which contains normalized DOM\n * element attributes. The values reflect current binding state `{{ }}`. The normalization is\n * needed since all of these are treated as equivalent in Angular:\n *\n * ```\n * \n * ```\n */\n\n/**\n * @ngdoc property\n * @name $compile.directive.Attributes#$attr\n *\n * @description\n * A map of DOM element attribute names to the normalized name. This is\n * needed to do reverse lookup from normalized name back to actual name.\n */\n\n\n/**\n * @ngdoc method\n * @name $compile.directive.Attributes#$set\n * @kind function\n *\n * @description\n * Set DOM element attribute value.\n *\n *\n * @param {string} name Normalized element attribute name of the property to modify. The name is\n * reverse-translated using the {@link ng.$compile.directive.Attributes#$attr $attr}\n * property to the original name.\n * @param {string} value Value to set the attribute to. The value can be an interpolated string.\n */\n\n\n\n/**\n * Closure compiler type information\n */\n\nfunction nodesetLinkingFn(\n /* angular.Scope */ scope,\n /* NodeList */ nodeList,\n /* Element */ rootElement,\n /* function(Function) */ boundTranscludeFn\n){}\n\nfunction directiveLinkingFn(\n /* nodesetLinkingFn */ nodesetLinkingFn,\n /* angular.Scope */ scope,\n /* Node */ node,\n /* Element */ rootElement,\n /* function(Function) */ boundTranscludeFn\n){}\n\nfunction tokenDifference(str1, str2) {\n var values = '',\n tokens1 = str1.split(/\\s+/),\n tokens2 = str2.split(/\\s+/);\n\n outer:\n for(var i = 0; i < tokens1.length; i++) {\n var token = tokens1[i];\n for(var j = 0; j < tokens2.length; j++) {\n if(token == tokens2[j]) continue outer;\n }\n values += (values.length > 0 ? ' ' : '') + token;\n }\n return values;\n}\n\n/**\n * @ngdoc provider\n * @name $controllerProvider\n * @description\n * The {@link ng.$controller $controller service} is used by Angular to create new\n * controllers.\n *\n * This provider allows controller registration via the\n * {@link ng.$controllerProvider#register register} method.\n */\nfunction $ControllerProvider() {\n var controllers = {},\n CNTRL_REG = /^(\\S+)(\\s+as\\s+(\\w+))?$/;\n\n\n /**\n * @ngdoc method\n * @name $controllerProvider#register\n * @param {string|Object} name Controller name, or an object map of controllers where the keys are\n * the names and the values are the constructors.\n * @param {Function|Array} constructor Controller constructor fn (optionally decorated with DI\n * annotations in the array notation).\n */\n this.register = function(name, constructor) {\n assertNotHasOwnProperty(name, 'controller');\n if (isObject(name)) {\n extend(controllers, name);\n } else {\n controllers[name] = constructor;\n }\n };\n\n\n this.$get = ['$injector', '$window', function($injector, $window) {\n\n /**\n * @ngdoc service\n * @name $controller\n * @requires $injector\n *\n * @param {Function|string} constructor If called with a function then it's considered to be the\n * controller constructor function. Otherwise it's considered to be a string which is used\n * to retrieve the controller constructor using the following steps:\n *\n * * check if a controller with given name is registered via `$controllerProvider`\n * * check if evaluating the string on the current scope returns a constructor\n * * check `window[constructor]` on the global `window` object\n *\n * @param {Object} locals Injection locals for Controller.\n * @return {Object} Instance of given controller.\n *\n * @description\n * `$controller` service is responsible for instantiating controllers.\n *\n * It's just a simple call to {@link auto.$injector $injector}, but extracted into\n * a service, so that one can override this service with [BC version](https://gist.github.com/1649788).\n */\n return function(expression, locals) {\n var instance, match, constructor, identifier;\n\n if(isString(expression)) {\n match = expression.match(CNTRL_REG),\n constructor = match[1],\n identifier = match[3];\n expression = controllers.hasOwnProperty(constructor)\n ? controllers[constructor]\n : getter(locals.$scope, constructor, true) || getter($window, constructor, true);\n\n assertArgFn(expression, constructor, true);\n }\n\n instance = $injector.instantiate(expression, locals);\n\n if (identifier) {\n if (!(locals && typeof locals.$scope === 'object')) {\n throw minErr('$controller')('noscp',\n \"Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.\",\n constructor || expression.name, identifier);\n }\n\n locals.$scope[identifier] = instance;\n }\n\n return instance;\n };\n }];\n}\n\n/**\n * @ngdoc service\n * @name $document\n * @requires $window\n *\n * @description\n * A {@link angular.element jQuery or jqLite} wrapper for the browser's `window.document` object.\n *\n * @example\n \n \n
\n

$document title:

\n

window.document title:

\n
\n
\n \n angular.module('documentExample', [])\n .controller('ExampleController', ['$scope', '$document', function($scope, $document) {\n $scope.title = $document[0].title;\n $scope.windowTitle = angular.element(window.document)[0].title;\n }]);\n \n
\n */\nfunction $DocumentProvider(){\n this.$get = ['$window', function(window){\n return jqLite(window.document);\n }];\n}\n\n/**\n * @ngdoc service\n * @name $exceptionHandler\n * @requires ng.$log\n *\n * @description\n * Any uncaught exception in angular expressions is delegated to this service.\n * The default implementation simply delegates to `$log.error` which logs it into\n * the browser console.\n *\n * In unit tests, if `angular-mocks.js` is loaded, this service is overridden by\n * {@link ngMock.$exceptionHandler mock $exceptionHandler} which aids in testing.\n *\n * ## Example:\n *\n * ```js\n * angular.module('exceptionOverride', []).factory('$exceptionHandler', function () {\n * return function (exception, cause) {\n * exception.message += ' (caused by \"' + cause + '\")';\n * throw exception;\n * };\n * });\n * ```\n *\n * This example will override the normal action of `$exceptionHandler`, to make angular\n * exceptions fail hard when they happen, instead of just logging to the console.\n *\n * @param {Error} exception Exception associated with the error.\n * @param {string=} cause optional information about the context in which\n * the error was thrown.\n *\n */\nfunction $ExceptionHandlerProvider() {\n this.$get = ['$log', function($log) {\n return function(exception, cause) {\n $log.error.apply($log, arguments);\n };\n }];\n}\n\n/**\n * Parse headers into key value object\n *\n * @param {string} headers Raw headers as a string\n * @returns {Object} Parsed headers as key value object\n */\nfunction parseHeaders(headers) {\n var parsed = {}, key, val, i;\n\n if (!headers) return parsed;\n\n forEach(headers.split('\\n'), function(line) {\n i = line.indexOf(':');\n key = lowercase(trim(line.substr(0, i)));\n val = trim(line.substr(i + 1));\n\n if (key) {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n}\n\n\n/**\n * Returns a function that provides access to parsed headers.\n *\n * Headers are lazy parsed when first requested.\n * @see parseHeaders\n *\n * @param {(string|Object)} headers Headers to provide access to.\n * @returns {function(string=)} Returns a getter function which if called with:\n *\n * - if called with single an argument returns a single header value or null\n * - if called with no arguments returns an object containing all headers.\n */\nfunction headersGetter(headers) {\n var headersObj = isObject(headers) ? headers : undefined;\n\n return function(name) {\n if (!headersObj) headersObj = parseHeaders(headers);\n\n if (name) {\n return headersObj[lowercase(name)] || null;\n }\n\n return headersObj;\n };\n}\n\n\n/**\n * Chain all given functions\n *\n * This function is used for both request and response transforming\n *\n * @param {*} data Data to transform.\n * @param {function(string=)} headers Http headers getter fn.\n * @param {(Function|Array.)} fns Function or an array of functions.\n * @returns {*} Transformed data.\n */\nfunction transformData(data, headers, fns) {\n if (isFunction(fns))\n return fns(data, headers);\n\n forEach(fns, function(fn) {\n data = fn(data, headers);\n });\n\n return data;\n}\n\n\nfunction isSuccess(status) {\n return 200 <= status && status < 300;\n}\n\n\n/**\n * @ngdoc provider\n * @name $httpProvider\n * @description\n * Use `$httpProvider` to change the default behavior of the {@link ng.$http $http} service.\n * */\nfunction $HttpProvider() {\n var JSON_START = /^\\s*(\\[|\\{[^\\{])/,\n JSON_END = /[\\}\\]]\\s*$/,\n PROTECTION_PREFIX = /^\\)\\]\\}',?\\n/,\n CONTENT_TYPE_APPLICATION_JSON = {'Content-Type': 'application/json;charset=utf-8'};\n\n /**\n * @ngdoc property\n * @name $httpProvider#defaults\n * @description\n *\n * Object containing default values for all {@link ng.$http $http} requests.\n *\n * - **`defaults.xsrfCookieName`** - {string} - Name of cookie containing the XSRF token.\n * Defaults value is `'XSRF-TOKEN'`.\n *\n * - **`defaults.xsrfHeaderName`** - {string} - Name of HTTP header to populate with the\n * XSRF token. Defaults value is `'X-XSRF-TOKEN'`.\n *\n * - **`defaults.headers`** - {Object} - Default headers for all $http requests.\n * Refer to {@link ng.$http#setting-http-headers $http} for documentation on\n * setting default headers.\n * - **`defaults.headers.common`**\n * - **`defaults.headers.post`**\n * - **`defaults.headers.put`**\n * - **`defaults.headers.patch`**\n **/\n var defaults = this.defaults = {\n // transform incoming response data\n transformResponse: [function(data) {\n if (isString(data)) {\n // strip json vulnerability protection prefix\n data = data.replace(PROTECTION_PREFIX, '');\n if (JSON_START.test(data) && JSON_END.test(data))\n data = fromJson(data);\n }\n return data;\n }],\n\n // transform outgoing request data\n transformRequest: [function(d) {\n return isObject(d) && !isFile(d) && !isBlob(d) ? toJson(d) : d;\n }],\n\n // default headers\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n },\n post: shallowCopy(CONTENT_TYPE_APPLICATION_JSON),\n put: shallowCopy(CONTENT_TYPE_APPLICATION_JSON),\n patch: shallowCopy(CONTENT_TYPE_APPLICATION_JSON)\n },\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN'\n };\n\n /**\n * @ngdoc property\n * @name $httpProvider#interceptors\n * @description\n *\n * Array containing service factories for all synchronous or asynchronous {@link ng.$http $http}\n * pre-processing of request or postprocessing of responses.\n *\n * These service factories are ordered by request, i.e. they are applied in the same order as the\n * array, on request, but reverse order, on response.\n *\n * {@link ng.$http#interceptors Interceptors detailed info}\n **/\n var interceptorFactories = this.interceptors = [];\n\n /**\n * For historical reasons, response interceptors are ordered by the order in which\n * they are applied to the response. (This is the opposite of interceptorFactories)\n */\n var responseInterceptorFactories = this.responseInterceptors = [];\n\n this.$get = ['$httpBackend', '$browser', '$cacheFactory', '$rootScope', '$q', '$injector',\n function($httpBackend, $browser, $cacheFactory, $rootScope, $q, $injector) {\n\n var defaultCache = $cacheFactory('$http');\n\n /**\n * Interceptors stored in reverse order. Inner interceptors before outer interceptors.\n * The reversal is needed so that we can build up the interception chain around the\n * server request.\n */\n var reversedInterceptors = [];\n\n forEach(interceptorFactories, function(interceptorFactory) {\n reversedInterceptors.unshift(isString(interceptorFactory)\n ? $injector.get(interceptorFactory) : $injector.invoke(interceptorFactory));\n });\n\n forEach(responseInterceptorFactories, function(interceptorFactory, index) {\n var responseFn = isString(interceptorFactory)\n ? $injector.get(interceptorFactory)\n : $injector.invoke(interceptorFactory);\n\n /**\n * Response interceptors go before \"around\" interceptors (no real reason, just\n * had to pick one.) But they are already reversed, so we can't use unshift, hence\n * the splice.\n */\n reversedInterceptors.splice(index, 0, {\n response: function(response) {\n return responseFn($q.when(response));\n },\n responseError: function(response) {\n return responseFn($q.reject(response));\n }\n });\n });\n\n\n /**\n * @ngdoc service\n * @kind function\n * @name $http\n * @requires ng.$httpBackend\n * @requires $cacheFactory\n * @requires $rootScope\n * @requires $q\n * @requires $injector\n *\n * @description\n * The `$http` service is a core Angular service that facilitates communication with the remote\n * HTTP servers via the browser's [XMLHttpRequest](https://developer.mozilla.org/en/xmlhttprequest)\n * object or via [JSONP](http://en.wikipedia.org/wiki/JSONP).\n *\n * For unit testing applications that use `$http` service, see\n * {@link ngMock.$httpBackend $httpBackend mock}.\n *\n * For a higher level of abstraction, please check out the {@link ngResource.$resource\n * $resource} service.\n *\n * The $http API is based on the {@link ng.$q deferred/promise APIs} exposed by\n * the $q service. While for simple usage patterns this doesn't matter much, for advanced usage\n * it is important to familiarize yourself with these APIs and the guarantees they provide.\n *\n *\n * # General usage\n * The `$http` service is a function which takes a single argument — a configuration object —\n * that is used to generate an HTTP request and returns a {@link ng.$q promise}\n * with two $http specific methods: `success` and `error`.\n *\n * ```js\n * $http({method: 'GET', url: '/someUrl'}).\n * success(function(data, status, headers, config) {\n * // this callback will be called asynchronously\n * // when the response is available\n * }).\n * error(function(data, status, headers, config) {\n * // called asynchronously if an error occurs\n * // or server returns response with an error status.\n * });\n * ```\n *\n * Since the returned value of calling the $http function is a `promise`, you can also use\n * the `then` method to register callbacks, and these callbacks will receive a single argument –\n * an object representing the response. See the API signature and type info below for more\n * details.\n *\n * A response status code between 200 and 299 is considered a success status and\n * will result in the success callback being called. Note that if the response is a redirect,\n * XMLHttpRequest will transparently follow it, meaning that the error callback will not be\n * called for such responses.\n *\n * # Writing Unit Tests that use $http\n * When unit testing (using {@link ngMock ngMock}), it is necessary to call\n * {@link ngMock.$httpBackend#flush $httpBackend.flush()} to flush each pending\n * request using trained responses.\n *\n * ```\n * $httpBackend.expectGET(...);\n * $http.get(...);\n * $httpBackend.flush();\n * ```\n *\n * # Shortcut methods\n *\n * Shortcut methods are also available. All shortcut methods require passing in the URL, and\n * request data must be passed in for POST/PUT requests.\n *\n * ```js\n * $http.get('/someUrl').success(successCallback);\n * $http.post('/someUrl', data).success(successCallback);\n * ```\n *\n * Complete list of shortcut methods:\n *\n * - {@link ng.$http#get $http.get}\n * - {@link ng.$http#head $http.head}\n * - {@link ng.$http#post $http.post}\n * - {@link ng.$http#put $http.put}\n * - {@link ng.$http#delete $http.delete}\n * - {@link ng.$http#jsonp $http.jsonp}\n * - {@link ng.$http#patch $http.patch}\n *\n *\n * # Setting HTTP Headers\n *\n * The $http service will automatically add certain HTTP headers to all requests. These defaults\n * can be fully configured by accessing the `$httpProvider.defaults.headers` configuration\n * object, which currently contains this default configuration:\n *\n * - `$httpProvider.defaults.headers.common` (headers that are common for all requests):\n * - `Accept: application/json, text/plain, * / *`\n * - `$httpProvider.defaults.headers.post`: (header defaults for POST requests)\n * - `Content-Type: application/json`\n * - `$httpProvider.defaults.headers.put` (header defaults for PUT requests)\n * - `Content-Type: application/json`\n *\n * To add or overwrite these defaults, simply add or remove a property from these configuration\n * objects. To add headers for an HTTP method other than POST or PUT, simply add a new object\n * with the lowercased HTTP method name as the key, e.g.\n * `$httpProvider.defaults.headers.get = { 'My-Header' : 'value' }.\n *\n * The defaults can also be set at runtime via the `$http.defaults` object in the same\n * fashion. For example:\n *\n * ```\n * module.run(function($http) {\n * $http.defaults.headers.common.Authorization = 'Basic YmVlcDpib29w'\n * });\n * ```\n *\n * In addition, you can supply a `headers` property in the config object passed when\n * calling `$http(config)`, which overrides the defaults without changing them globally.\n *\n * To explicitly remove a header automatically added via $httpProvider.defaults.headers on a per request basis,\n * Use the `headers` property, setting the desired header to `undefined`. For example:\n *\n * ```js\n * var req = {\n * method: 'POST',\n * url: 'http://example.com',\n * headers: {\n * 'Content-Type': undefined\n * },\n * data: { test: 'test' },\n * }\n *\n * $http(req).success(function(){...}).error(function(){...});\n * ```\n *\n * # Transforming Requests and Responses\n *\n * Both requests and responses can be transformed using transform functions. By default, Angular\n * applies these transformations:\n *\n * Request transformations:\n *\n * - If the `data` property of the request configuration object contains an object, serialize it\n * into JSON format.\n *\n * Response transformations:\n *\n * - If XSRF prefix is detected, strip it (see Security Considerations section below).\n * - If JSON response is detected, deserialize it using a JSON parser.\n *\n * To globally augment or override the default transforms, modify the\n * `$httpProvider.defaults.transformRequest` and `$httpProvider.defaults.transformResponse`\n * properties. These properties are by default an array of transform functions, which allows you\n * to `push` or `unshift` a new transformation function into the transformation chain. You can\n * also decide to completely override any default transformations by assigning your\n * transformation functions to these properties directly without the array wrapper. These defaults\n * are again available on the $http factory at run-time, which may be useful if you have run-time\n * services you wish to be involved in your transformations.\n *\n * Similarly, to locally override the request/response transforms, augment the\n * `transformRequest` and/or `transformResponse` properties of the configuration object passed\n * into `$http`.\n *\n *\n * # Caching\n *\n * To enable caching, set the request configuration `cache` property to `true` (to use default\n * cache) or to a custom cache object (built with {@link ng.$cacheFactory `$cacheFactory`}).\n * When the cache is enabled, `$http` stores the response from the server in the specified\n * cache. The next time the same request is made, the response is served from the cache without\n * sending a request to the server.\n *\n * Note that even if the response is served from cache, delivery of the data is asynchronous in\n * the same way that real requests are.\n *\n * If there are multiple GET requests for the same URL that should be cached using the same\n * cache, but the cache is not populated yet, only one request to the server will be made and\n * the remaining requests will be fulfilled using the response from the first request.\n *\n * You can change the default cache to a new object (built with\n * {@link ng.$cacheFactory `$cacheFactory`}) by updating the\n * {@link ng.$http#properties_defaults `$http.defaults.cache`} property. All requests who set\n * their `cache` property to `true` will now use this cache object.\n *\n * If you set the default cache to `false` then only requests that specify their own custom\n * cache object will be cached.\n *\n * # Interceptors\n *\n * Before you start creating interceptors, be sure to understand the\n * {@link ng.$q $q and deferred/promise APIs}.\n *\n * For purposes of global error handling, authentication, or any kind of synchronous or\n * asynchronous pre-processing of request or postprocessing of responses, it is desirable to be\n * able to intercept requests before they are handed to the server and\n * responses before they are handed over to the application code that\n * initiated these requests. The interceptors leverage the {@link ng.$q\n * promise APIs} to fulfill this need for both synchronous and asynchronous pre-processing.\n *\n * The interceptors are service factories that are registered with the `$httpProvider` by\n * adding them to the `$httpProvider.interceptors` array. The factory is called and\n * injected with dependencies (if specified) and returns the interceptor.\n *\n * There are two kinds of interceptors (and two kinds of rejection interceptors):\n *\n * * `request`: interceptors get called with a http `config` object. The function is free to\n * modify the `config` object or create a new one. The function needs to return the `config`\n * object directly, or a promise containing the `config` or a new `config` object.\n * * `requestError`: interceptor gets called when a previous interceptor threw an error or\n * resolved with a rejection.\n * * `response`: interceptors get called with http `response` object. The function is free to\n * modify the `response` object or create a new one. The function needs to return the `response`\n * object directly, or as a promise containing the `response` or a new `response` object.\n * * `responseError`: interceptor gets called when a previous interceptor threw an error or\n * resolved with a rejection.\n *\n *\n * ```js\n * // register the interceptor as a service\n * $provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {\n * return {\n * // optional method\n * 'request': function(config) {\n * // do something on success\n * return config;\n * },\n *\n * // optional method\n * 'requestError': function(rejection) {\n * // do something on error\n * if (canRecover(rejection)) {\n * return responseOrNewPromise\n * }\n * return $q.reject(rejection);\n * },\n *\n *\n *\n * // optional method\n * 'response': function(response) {\n * // do something on success\n * return response;\n * },\n *\n * // optional method\n * 'responseError': function(rejection) {\n * // do something on error\n * if (canRecover(rejection)) {\n * return responseOrNewPromise\n * }\n * return $q.reject(rejection);\n * }\n * };\n * });\n *\n * $httpProvider.interceptors.push('myHttpInterceptor');\n *\n *\n * // alternatively, register the interceptor via an anonymous factory\n * $httpProvider.interceptors.push(function($q, dependency1, dependency2) {\n * return {\n * 'request': function(config) {\n * // same as above\n * },\n *\n * 'response': function(response) {\n * // same as above\n * }\n * };\n * });\n * ```\n *\n * # Response interceptors (DEPRECATED)\n *\n * Before you start creating interceptors, be sure to understand the\n * {@link ng.$q $q and deferred/promise APIs}.\n *\n * For purposes of global error handling, authentication or any kind of synchronous or\n * asynchronous preprocessing of received responses, it is desirable to be able to intercept\n * responses for http requests before they are handed over to the application code that\n * initiated these requests. The response interceptors leverage the {@link ng.$q\n * promise apis} to fulfil this need for both synchronous and asynchronous preprocessing.\n *\n * The interceptors are service factories that are registered with the $httpProvider by\n * adding them to the `$httpProvider.responseInterceptors` array. The factory is called and\n * injected with dependencies (if specified) and returns the interceptor — a function that\n * takes a {@link ng.$q promise} and returns the original or a new promise.\n *\n * ```js\n * // register the interceptor as a service\n * $provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {\n * return function(promise) {\n * return promise.then(function(response) {\n * // do something on success\n * return response;\n * }, function(response) {\n * // do something on error\n * if (canRecover(response)) {\n * return responseOrNewPromise\n * }\n * return $q.reject(response);\n * });\n * }\n * });\n *\n * $httpProvider.responseInterceptors.push('myHttpInterceptor');\n *\n *\n * // register the interceptor via an anonymous factory\n * $httpProvider.responseInterceptors.push(function($q, dependency1, dependency2) {\n * return function(promise) {\n * // same as above\n * }\n * });\n * ```\n *\n *\n * # Security Considerations\n *\n * When designing web applications, consider security threats from:\n *\n * - [JSON vulnerability](http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx)\n * - [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery)\n *\n * Both server and the client must cooperate in order to eliminate these threats. Angular comes\n * pre-configured with strategies that address these issues, but for this to work backend server\n * cooperation is required.\n *\n * ## JSON Vulnerability Protection\n *\n * A [JSON vulnerability](http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx)\n * allows third party website to turn your JSON resource URL into\n * [JSONP](http://en.wikipedia.org/wiki/JSONP) request under some conditions. To\n * counter this your server can prefix all JSON requests with following string `\")]}',\\n\"`.\n * Angular will automatically strip the prefix before processing it as JSON.\n *\n * For example if your server needs to return:\n * ```js\n * ['one','two']\n * ```\n *\n * which is vulnerable to attack, your server can return:\n * ```js\n * )]}',\n * ['one','two']\n * ```\n *\n * Angular will strip the prefix, before processing the JSON.\n *\n *\n * ## Cross Site Request Forgery (XSRF) Protection\n *\n * [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery) is a technique by which\n * an unauthorized site can gain your user's private data. Angular provides a mechanism\n * to counter XSRF. When performing XHR requests, the $http service reads a token from a cookie\n * (by default, `XSRF-TOKEN`) and sets it as an HTTP header (`X-XSRF-TOKEN`). Since only\n * JavaScript that runs on your domain could read the cookie, your server can be assured that\n * the XHR came from JavaScript running on your domain. The header will not be set for\n * cross-domain requests.\n *\n * To take advantage of this, your server needs to set a token in a JavaScript readable session\n * cookie called `XSRF-TOKEN` on the first HTTP GET request. On subsequent XHR requests the\n * server can verify that the cookie matches `X-XSRF-TOKEN` HTTP header, and therefore be sure\n * that only JavaScript running on your domain could have sent the request. The token must be\n * unique for each user and must be verifiable by the server (to prevent the JavaScript from\n * making up its own tokens). We recommend that the token is a digest of your site's\n * authentication cookie with a [salt](https://en.wikipedia.org/wiki/Salt_(cryptography))\n * for added security.\n *\n * The name of the headers can be specified using the xsrfHeaderName and xsrfCookieName\n * properties of either $httpProvider.defaults at config-time, $http.defaults at run-time,\n * or the per-request config object.\n *\n *\n * @param {object} config Object describing the request to be made and how it should be\n * processed. The object has following properties:\n *\n * - **method** – `{string}` – HTTP method (e.g. 'GET', 'POST', etc)\n * - **url** – `{string}` – Absolute or relative URL of the resource that is being requested.\n * - **params** – `{Object.}` – Map of strings or objects which will be turned\n * to `?key1=value1&key2=value2` after the url. If the value is not a string, it will be\n * JSONified.\n * - **data** – `{string|Object}` – Data to be sent as the request message data.\n * - **headers** – `{Object}` – Map of strings or functions which return strings representing\n * HTTP headers to send to the server. If the return value of a function is null, the\n * header will not be sent.\n * - **xsrfHeaderName** – `{string}` – Name of HTTP header to populate with the XSRF token.\n * - **xsrfCookieName** – `{string}` – Name of cookie containing the XSRF token.\n * - **transformRequest** –\n * `{function(data, headersGetter)|Array.}` –\n * transform function or an array of such functions. The transform function takes the http\n * request body and headers and returns its transformed (typically serialized) version.\n * - **transformResponse** –\n * `{function(data, headersGetter)|Array.}` –\n * transform function or an array of such functions. The transform function takes the http\n * response body and headers and returns its transformed (typically deserialized) version.\n * - **cache** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the\n * GET request, otherwise if a cache instance built with\n * {@link ng.$cacheFactory $cacheFactory}, this cache will be used for\n * caching.\n * - **timeout** – `{number|Promise}` – timeout in milliseconds, or {@link ng.$q promise}\n * that should abort the request when resolved.\n * - **withCredentials** - `{boolean}` - whether to set the `withCredentials` flag on the\n * XHR object. See [requests with credentials](https://developer.mozilla.org/docs/Web/HTTP/Access_control_CORS#Requests_with_credentials)\n * for more information.\n * - **responseType** - `{string}` - see\n * [requestType](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType).\n *\n * @returns {HttpPromise} Returns a {@link ng.$q promise} object with the\n * standard `then` method and two http specific methods: `success` and `error`. The `then`\n * method takes two arguments a success and an error callback which will be called with a\n * response object. The `success` and `error` methods take a single argument - a function that\n * will be called when the request succeeds or fails respectively. The arguments passed into\n * these functions are destructured representation of the response object passed into the\n * `then` method. The response object has these properties:\n *\n * - **data** – `{string|Object}` – The response body transformed with the transform\n * functions.\n * - **status** – `{number}` – HTTP status code of the response.\n * - **headers** – `{function([headerName])}` – Header getter function.\n * - **config** – `{Object}` – The configuration object that was used to generate the request.\n * - **statusText** – `{string}` – HTTP status text of the response.\n *\n * @property {Array.} pendingRequests Array of config objects for currently pending\n * requests. This is primarily meant to be used for debugging purposes.\n *\n *\n * @example\n\n\n
\n \n \n
\n \n \n \n
http status code: {{status}}
\n
http response data: {{data}}
\n
\n
\n\n angular.module('httpExample', [])\n .controller('FetchController', ['$scope', '$http', '$templateCache',\n function($scope, $http, $templateCache) {\n $scope.method = 'GET';\n $scope.url = 'http-hello.html';\n\n $scope.fetch = function() {\n $scope.code = null;\n $scope.response = null;\n\n $http({method: $scope.method, url: $scope.url, cache: $templateCache}).\n success(function(data, status) {\n $scope.status = status;\n $scope.data = data;\n }).\n error(function(data, status) {\n $scope.data = data || \"Request failed\";\n $scope.status = status;\n });\n };\n\n $scope.updateModel = function(method, url) {\n $scope.method = method;\n $scope.url = url;\n };\n }]);\n\n\n Hello, $http!\n\n\n var status = element(by.binding('status'));\n var data = element(by.binding('data'));\n var fetchBtn = element(by.id('fetchbtn'));\n var sampleGetBtn = element(by.id('samplegetbtn'));\n var sampleJsonpBtn = element(by.id('samplejsonpbtn'));\n var invalidJsonpBtn = element(by.id('invalidjsonpbtn'));\n\n it('should make an xhr GET request', function() {\n sampleGetBtn.click();\n fetchBtn.click();\n expect(status.getText()).toMatch('200');\n expect(data.getText()).toMatch(/Hello, \\$http!/);\n });\n\n// Commented out due to flakes. See https://github.com/angular/angular.js/issues/9185\n// it('should make a JSONP request to angularjs.org', function() {\n// sampleJsonpBtn.click();\n// fetchBtn.click();\n// expect(status.getText()).toMatch('200');\n// expect(data.getText()).toMatch(/Super Hero!/);\n// });\n\n it('should make JSONP request to invalid URL and invoke the error handler',\n function() {\n invalidJsonpBtn.click();\n fetchBtn.click();\n expect(status.getText()).toMatch('0');\n expect(data.getText()).toMatch('Request failed');\n });\n\n
\n */\n function $http(requestConfig) {\n var config = {\n method: 'get',\n transformRequest: defaults.transformRequest,\n transformResponse: defaults.transformResponse\n };\n var headers = mergeHeaders(requestConfig);\n\n extend(config, requestConfig);\n config.headers = headers;\n config.method = uppercase(config.method);\n\n var serverRequest = function(config) {\n headers = config.headers;\n var reqData = transformData(config.data, headersGetter(headers), config.transformRequest);\n\n // strip content-type if data is undefined\n if (isUndefined(reqData)) {\n forEach(headers, function(value, header) {\n if (lowercase(header) === 'content-type') {\n delete headers[header];\n }\n });\n }\n\n if (isUndefined(config.withCredentials) && !isUndefined(defaults.withCredentials)) {\n config.withCredentials = defaults.withCredentials;\n }\n\n // send request\n return sendReq(config, reqData, headers).then(transformResponse, transformResponse);\n };\n\n var chain = [serverRequest, undefined];\n var promise = $q.when(config);\n\n // apply interceptors\n forEach(reversedInterceptors, function(interceptor) {\n if (interceptor.request || interceptor.requestError) {\n chain.unshift(interceptor.request, interceptor.requestError);\n }\n if (interceptor.response || interceptor.responseError) {\n chain.push(interceptor.response, interceptor.responseError);\n }\n });\n\n while(chain.length) {\n var thenFn = chain.shift();\n var rejectFn = chain.shift();\n\n promise = promise.then(thenFn, rejectFn);\n }\n\n promise.success = function(fn) {\n promise.then(function(response) {\n fn(response.data, response.status, response.headers, config);\n });\n return promise;\n };\n\n promise.error = function(fn) {\n promise.then(null, function(response) {\n fn(response.data, response.status, response.headers, config);\n });\n return promise;\n };\n\n return promise;\n\n function transformResponse(response) {\n // make a copy since the response must be cacheable\n var resp = extend({}, response, {\n data: transformData(response.data, response.headers, config.transformResponse)\n });\n return (isSuccess(response.status))\n ? resp\n : $q.reject(resp);\n }\n\n function mergeHeaders(config) {\n var defHeaders = defaults.headers,\n reqHeaders = extend({}, config.headers),\n defHeaderName, lowercaseDefHeaderName, reqHeaderName;\n\n defHeaders = extend({}, defHeaders.common, defHeaders[lowercase(config.method)]);\n\n // using for-in instead of forEach to avoid unecessary iteration after header has been found\n defaultHeadersIteration:\n for (defHeaderName in defHeaders) {\n lowercaseDefHeaderName = lowercase(defHeaderName);\n\n for (reqHeaderName in reqHeaders) {\n if (lowercase(reqHeaderName) === lowercaseDefHeaderName) {\n continue defaultHeadersIteration;\n }\n }\n\n reqHeaders[defHeaderName] = defHeaders[defHeaderName];\n }\n\n // execute if header value is a function for merged headers\n execHeaders(reqHeaders);\n return reqHeaders;\n\n function execHeaders(headers) {\n var headerContent;\n\n forEach(headers, function(headerFn, header) {\n if (isFunction(headerFn)) {\n headerContent = headerFn();\n if (headerContent != null) {\n headers[header] = headerContent;\n } else {\n delete headers[header];\n }\n }\n });\n }\n }\n }\n\n $http.pendingRequests = [];\n\n /**\n * @ngdoc method\n * @name $http#get\n *\n * @description\n * Shortcut method to perform `GET` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n\n /**\n * @ngdoc method\n * @name $http#delete\n *\n * @description\n * Shortcut method to perform `DELETE` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n\n /**\n * @ngdoc method\n * @name $http#head\n *\n * @description\n * Shortcut method to perform `HEAD` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n\n /**\n * @ngdoc method\n * @name $http#jsonp\n *\n * @description\n * Shortcut method to perform `JSONP` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request.\n * The name of the callback should be the string `JSON_CALLBACK`.\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n createShortMethods('get', 'delete', 'head', 'jsonp');\n\n /**\n * @ngdoc method\n * @name $http#post\n *\n * @description\n * Shortcut method to perform `POST` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request\n * @param {*} data Request content\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n\n /**\n * @ngdoc method\n * @name $http#put\n *\n * @description\n * Shortcut method to perform `PUT` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request\n * @param {*} data Request content\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n\n /**\n * @ngdoc method\n * @name $http#patch\n *\n * @description\n * Shortcut method to perform `PATCH` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request\n * @param {*} data Request content\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n createShortMethodsWithData('post', 'put', 'patch');\n\n /**\n * @ngdoc property\n * @name $http#defaults\n *\n * @description\n * Runtime equivalent of the `$httpProvider.defaults` property. Allows configuration of\n * default headers, withCredentials as well as request and response transformations.\n *\n * See \"Setting HTTP Headers\" and \"Transforming Requests and Responses\" sections above.\n */\n $http.defaults = defaults;\n\n\n return $http;\n\n\n function createShortMethods(names) {\n forEach(arguments, function(name) {\n $http[name] = function(url, config) {\n return $http(extend(config || {}, {\n method: name,\n url: url\n }));\n };\n });\n }\n\n\n function createShortMethodsWithData(name) {\n forEach(arguments, function(name) {\n $http[name] = function(url, data, config) {\n return $http(extend(config || {}, {\n method: name,\n url: url,\n data: data\n }));\n };\n });\n }\n\n\n /**\n * Makes the request.\n *\n * !!! ACCESSES CLOSURE VARS:\n * $httpBackend, defaults, $log, $rootScope, defaultCache, $http.pendingRequests\n */\n function sendReq(config, reqData, reqHeaders) {\n var deferred = $q.defer(),\n promise = deferred.promise,\n cache,\n cachedResp,\n url = buildUrl(config.url, config.params);\n\n $http.pendingRequests.push(config);\n promise.then(removePendingReq, removePendingReq);\n\n\n if ((config.cache || defaults.cache) && config.cache !== false &&\n (config.method === 'GET' || config.method === 'JSONP')) {\n cache = isObject(config.cache) ? config.cache\n : isObject(defaults.cache) ? defaults.cache\n : defaultCache;\n }\n\n if (cache) {\n cachedResp = cache.get(url);\n if (isDefined(cachedResp)) {\n if (isPromiseLike(cachedResp)) {\n // cached request has already been sent, but there is no response yet\n cachedResp.then(removePendingReq, removePendingReq);\n return cachedResp;\n } else {\n // serving from cache\n if (isArray(cachedResp)) {\n resolvePromise(cachedResp[1], cachedResp[0], shallowCopy(cachedResp[2]), cachedResp[3]);\n } else {\n resolvePromise(cachedResp, 200, {}, 'OK');\n }\n }\n } else {\n // put the promise for the non-transformed response into cache as a placeholder\n cache.put(url, promise);\n }\n }\n\n\n // if we won't have the response in cache, set the xsrf headers and\n // send the request to the backend\n if (isUndefined(cachedResp)) {\n var xsrfValue = urlIsSameOrigin(config.url)\n ? $browser.cookies()[config.xsrfCookieName || defaults.xsrfCookieName]\n : undefined;\n if (xsrfValue) {\n reqHeaders[(config.xsrfHeaderName || defaults.xsrfHeaderName)] = xsrfValue;\n }\n\n $httpBackend(config.method, url, reqData, done, reqHeaders, config.timeout,\n config.withCredentials, config.responseType);\n }\n\n return promise;\n\n\n /**\n * Callback registered to $httpBackend():\n * - caches the response if desired\n * - resolves the raw $http promise\n * - calls $apply\n */\n function done(status, response, headersString, statusText) {\n if (cache) {\n if (isSuccess(status)) {\n cache.put(url, [status, response, parseHeaders(headersString), statusText]);\n } else {\n // remove promise from the cache\n cache.remove(url);\n }\n }\n\n resolvePromise(response, status, headersString, statusText);\n if (!$rootScope.$$phase) $rootScope.$apply();\n }\n\n\n /**\n * Resolves the raw $http promise.\n */\n function resolvePromise(response, status, headers, statusText) {\n // normalize internal statuses to 0\n status = Math.max(status, 0);\n\n (isSuccess(status) ? deferred.resolve : deferred.reject)({\n data: response,\n status: status,\n headers: headersGetter(headers),\n config: config,\n statusText : statusText\n });\n }\n\n\n function removePendingReq() {\n var idx = indexOf($http.pendingRequests, config);\n if (idx !== -1) $http.pendingRequests.splice(idx, 1);\n }\n }\n\n\n function buildUrl(url, params) {\n if (!params) return url;\n var parts = [];\n forEachSorted(params, function(value, key) {\n if (value === null || isUndefined(value)) return;\n if (!isArray(value)) value = [value];\n\n forEach(value, function(v) {\n if (isObject(v)) {\n if (isDate(v)){\n v = v.toISOString();\n } else {\n v = toJson(v);\n }\n }\n parts.push(encodeUriQuery(key) + '=' +\n encodeUriQuery(v));\n });\n });\n if(parts.length > 0) {\n url += ((url.indexOf('?') == -1) ? '?' : '&') + parts.join('&');\n }\n return url;\n }\n }];\n}\n\nfunction createXhr(method) {\n //if IE and the method is not RFC2616 compliant, or if XMLHttpRequest\n //is not available, try getting an ActiveXObject. Otherwise, use XMLHttpRequest\n //if it is available\n if (msie <= 8 && (!method.match(/^(get|post|head|put|delete|options)$/i) ||\n !window.XMLHttpRequest)) {\n return new window.ActiveXObject(\"Microsoft.XMLHTTP\");\n } else if (window.XMLHttpRequest) {\n return new window.XMLHttpRequest();\n }\n\n throw minErr('$httpBackend')('noxhr', \"This browser does not support XMLHttpRequest.\");\n}\n\n/**\n * @ngdoc service\n * @name $httpBackend\n * @requires $window\n * @requires $document\n *\n * @description\n * HTTP backend used by the {@link ng.$http service} that delegates to\n * XMLHttpRequest object or JSONP and deals with browser incompatibilities.\n *\n * You should never need to use this service directly, instead use the higher-level abstractions:\n * {@link ng.$http $http} or {@link ngResource.$resource $resource}.\n *\n * During testing this implementation is swapped with {@link ngMock.$httpBackend mock\n * $httpBackend} which can be trained with responses.\n */\nfunction $HttpBackendProvider() {\n this.$get = ['$browser', '$window', '$document', function($browser, $window, $document) {\n return createHttpBackend($browser, createXhr, $browser.defer, $window.angular.callbacks, $document[0]);\n }];\n}\n\nfunction createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDocument) {\n var ABORTED = -1;\n\n // TODO(vojta): fix the signature\n return function(method, url, post, callback, headers, timeout, withCredentials, responseType) {\n var status;\n $browser.$$incOutstandingRequestCount();\n url = url || $browser.url();\n\n if (lowercase(method) == 'jsonp') {\n var callbackId = '_' + (callbacks.counter++).toString(36);\n callbacks[callbackId] = function(data) {\n callbacks[callbackId].data = data;\n callbacks[callbackId].called = true;\n };\n\n var jsonpDone = jsonpReq(url.replace('JSON_CALLBACK', 'angular.callbacks.' + callbackId),\n callbackId, function(status, text) {\n completeRequest(callback, status, callbacks[callbackId].data, \"\", text);\n callbacks[callbackId] = noop;\n });\n } else {\n\n var xhr = createXhr(method);\n\n xhr.open(method, url, true);\n forEach(headers, function(value, key) {\n if (isDefined(value)) {\n xhr.setRequestHeader(key, value);\n }\n });\n\n // In IE6 and 7, this might be called synchronously when xhr.send below is called and the\n // response is in the cache. the promise api will ensure that to the app code the api is\n // always async\n xhr.onreadystatechange = function() {\n // onreadystatechange might get called multiple times with readyState === 4 on mobile webkit caused by\n // xhrs that are resolved while the app is in the background (see #5426).\n // since calling completeRequest sets the `xhr` variable to null, we just check if it's not null before\n // continuing\n //\n // we can't set xhr.onreadystatechange to undefined or delete it because that breaks IE8 (method=PATCH) and\n // Safari respectively.\n if (xhr && xhr.readyState == 4) {\n var responseHeaders = null,\n response = null,\n statusText = '';\n\n if(status !== ABORTED) {\n responseHeaders = xhr.getAllResponseHeaders();\n\n // responseText is the old-school way of retrieving response (supported by IE8 & 9)\n // response/responseType properties were introduced in XHR Level2 spec (supported by IE10)\n response = ('response' in xhr) ? xhr.response : xhr.responseText;\n }\n\n // Accessing statusText on an aborted xhr object will\n // throw an 'c00c023f error' in IE9 and lower, don't touch it.\n if (!(status === ABORTED && msie < 10)) {\n statusText = xhr.statusText;\n }\n\n completeRequest(callback,\n status || xhr.status,\n response,\n responseHeaders,\n statusText);\n }\n };\n\n if (withCredentials) {\n xhr.withCredentials = true;\n }\n\n if (responseType) {\n try {\n xhr.responseType = responseType;\n } catch (e) {\n // WebKit added support for the json responseType value on 09/03/2013\n // https://bugs.webkit.org/show_bug.cgi?id=73648. Versions of Safari prior to 7 are\n // known to throw when setting the value \"json\" as the response type. Other older\n // browsers implementing the responseType\n //\n // The json response type can be ignored if not supported, because JSON payloads are\n // parsed on the client-side regardless.\n if (responseType !== 'json') {\n throw e;\n }\n }\n }\n\n xhr.send(post || null);\n }\n\n if (timeout > 0) {\n var timeoutId = $browserDefer(timeoutRequest, timeout);\n } else if (isPromiseLike(timeout)) {\n timeout.then(timeoutRequest);\n }\n\n\n function timeoutRequest() {\n status = ABORTED;\n jsonpDone && jsonpDone();\n xhr && xhr.abort();\n }\n\n function completeRequest(callback, status, response, headersString, statusText) {\n // cancel timeout and subsequent timeout promise resolution\n timeoutId && $browserDefer.cancel(timeoutId);\n jsonpDone = xhr = null;\n\n // fix status code when it is 0 (0 status is undocumented).\n // Occurs when accessing file resources or on Android 4.1 stock browser\n // while retrieving files from application cache.\n if (status === 0) {\n status = response ? 200 : urlResolve(url).protocol == 'file' ? 404 : 0;\n }\n\n // normalize IE bug (http://bugs.jquery.com/ticket/1450)\n status = status === 1223 ? 204 : status;\n statusText = statusText || '';\n\n callback(status, response, headersString, statusText);\n $browser.$$completeOutstandingRequest(noop);\n }\n };\n\n function jsonpReq(url, callbackId, done) {\n // we can't use jQuery/jqLite here because jQuery does crazy shit with script elements, e.g.:\n // - fetches local scripts via XHR and evals them\n // - adds and immediately removes script elements from the document\n var script = rawDocument.createElement('script'), callback = null;\n script.type = \"text/javascript\";\n script.src = url;\n script.async = true;\n\n callback = function(event) {\n removeEventListenerFn(script, \"load\", callback);\n removeEventListenerFn(script, \"error\", callback);\n rawDocument.body.removeChild(script);\n script = null;\n var status = -1;\n var text = \"unknown\";\n\n if (event) {\n if (event.type === \"load\" && !callbacks[callbackId].called) {\n event = { type: \"error\" };\n }\n text = event.type;\n status = event.type === \"error\" ? 404 : 200;\n }\n\n if (done) {\n done(status, text);\n }\n };\n\n addEventListenerFn(script, \"load\", callback);\n addEventListenerFn(script, \"error\", callback);\n\n if (msie <= 8) {\n script.onreadystatechange = function() {\n if (isString(script.readyState) && /loaded|complete/.test(script.readyState)) {\n script.onreadystatechange = null;\n callback({\n type: 'load'\n });\n }\n };\n }\n\n rawDocument.body.appendChild(script);\n return callback;\n }\n}\n\nvar $interpolateMinErr = minErr('$interpolate');\n\n/**\n * @ngdoc provider\n * @name $interpolateProvider\n * @kind function\n *\n * @description\n *\n * Used for configuring the interpolation markup. Defaults to `{{` and `}}`.\n *\n * @example\n\n\n\n
\n //demo.label//\n
\n
\n\n it('should interpolate binding with custom symbols', function() {\n expect(element(by.binding('demo.label')).getText()).toBe('This binding is brought you by // interpolation symbols.');\n });\n\n
\n */\nfunction $InterpolateProvider() {\n var startSymbol = '{{';\n var endSymbol = '}}';\n\n /**\n * @ngdoc method\n * @name $interpolateProvider#startSymbol\n * @description\n * Symbol to denote start of expression in the interpolated string. Defaults to `{{`.\n *\n * @param {string=} value new value to set the starting symbol to.\n * @returns {string|self} Returns the symbol when used as getter and self if used as setter.\n */\n this.startSymbol = function(value){\n if (value) {\n startSymbol = value;\n return this;\n } else {\n return startSymbol;\n }\n };\n\n /**\n * @ngdoc method\n * @name $interpolateProvider#endSymbol\n * @description\n * Symbol to denote the end of expression in the interpolated string. Defaults to `}}`.\n *\n * @param {string=} value new value to set the ending symbol to.\n * @returns {string|self} Returns the symbol when used as getter and self if used as setter.\n */\n this.endSymbol = function(value){\n if (value) {\n endSymbol = value;\n return this;\n } else {\n return endSymbol;\n }\n };\n\n\n this.$get = ['$parse', '$exceptionHandler', '$sce', function($parse, $exceptionHandler, $sce) {\n var startSymbolLength = startSymbol.length,\n endSymbolLength = endSymbol.length;\n\n /**\n * @ngdoc service\n * @name $interpolate\n * @kind function\n *\n * @requires $parse\n * @requires $sce\n *\n * @description\n *\n * Compiles a string with markup into an interpolation function. This service is used by the\n * HTML {@link ng.$compile $compile} service for data binding. See\n * {@link ng.$interpolateProvider $interpolateProvider} for configuring the\n * interpolation markup.\n *\n *\n * ```js\n * var $interpolate = ...; // injected\n * var exp = $interpolate('Hello {{name | uppercase}}!');\n * expect(exp({name:'Angular'}).toEqual('Hello ANGULAR!');\n * ```\n *\n *\n * @param {string} text The text with markup to interpolate.\n * @param {boolean=} mustHaveExpression if set to true then the interpolation string must have\n * embedded expression in order to return an interpolation function. Strings with no\n * embedded expression will return null for the interpolation function.\n * @param {string=} trustedContext when provided, the returned function passes the interpolated\n * result through {@link ng.$sce#getTrusted $sce.getTrusted(interpolatedResult,\n * trustedContext)} before returning it. Refer to the {@link ng.$sce $sce} service that\n * provides Strict Contextual Escaping for details.\n * @returns {function(context)} an interpolation function which is used to compute the\n * interpolated string. The function has these parameters:\n *\n * * `context`: an object against which any expressions embedded in the strings are evaluated\n * against.\n *\n */\n function $interpolate(text, mustHaveExpression, trustedContext) {\n var startIndex,\n endIndex,\n index = 0,\n parts = [],\n length = text.length,\n hasInterpolation = false,\n fn,\n exp,\n concat = [];\n\n while(index < length) {\n if ( ((startIndex = text.indexOf(startSymbol, index)) != -1) &&\n ((endIndex = text.indexOf(endSymbol, startIndex + startSymbolLength)) != -1) ) {\n (index != startIndex) && parts.push(text.substring(index, startIndex));\n parts.push(fn = $parse(exp = text.substring(startIndex + startSymbolLength, endIndex)));\n fn.exp = exp;\n index = endIndex + endSymbolLength;\n hasInterpolation = true;\n } else {\n // we did not find anything, so we have to add the remainder to the parts array\n (index != length) && parts.push(text.substring(index));\n index = length;\n }\n }\n\n if (!(length = parts.length)) {\n // we added, nothing, must have been an empty string.\n parts.push('');\n length = 1;\n }\n\n // Concatenating expressions makes it hard to reason about whether some combination of\n // concatenated values are unsafe to use and could easily lead to XSS. By requiring that a\n // single expression be used for iframe[src], object[src], etc., we ensure that the value\n // that's used is assigned or constructed by some JS code somewhere that is more testable or\n // make it obvious that you bound the value to some user controlled value. This helps reduce\n // the load when auditing for XSS issues.\n if (trustedContext && parts.length > 1) {\n throw $interpolateMinErr('noconcat',\n \"Error while interpolating: {0}\\nStrict Contextual Escaping disallows \" +\n \"interpolations that concatenate multiple expressions when a trusted value is \" +\n \"required. See http://docs.angularjs.org/api/ng.$sce\", text);\n }\n\n if (!mustHaveExpression || hasInterpolation) {\n concat.length = length;\n fn = function(context) {\n try {\n for(var i = 0, ii = length, part; i\n * **Note**: Intervals created by this service must be explicitly destroyed when you are finished\n * with them. In particular they are not automatically destroyed when a controller's scope or a\n * directive's element are destroyed.\n * You should take this into consideration and make sure to always cancel the interval at the\n * appropriate moment. See the example below for more details on how and when to do this.\n * \n *\n * @param {function()} fn A function that should be called repeatedly.\n * @param {number} delay Number of milliseconds between each function call.\n * @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat\n * indefinitely.\n * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise\n * will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.\n * @returns {promise} A promise which will be notified on each iteration.\n *\n * @example\n * \n * \n * \n *\n *
\n *
\n * Date format:
\n * Current time is: \n *
\n * Blood 1 : {{blood_1}}\n * Blood 2 : {{blood_2}}\n * \n * \n * \n *
\n *
\n *\n *
\n *
\n */\n function interval(fn, delay, count, invokeApply) {\n var setInterval = $window.setInterval,\n clearInterval = $window.clearInterval,\n deferred = $q.defer(),\n promise = deferred.promise,\n iteration = 0,\n skipApply = (isDefined(invokeApply) && !invokeApply);\n\n count = isDefined(count) ? count : 0;\n\n promise.then(null, null, fn);\n\n promise.$$intervalId = setInterval(function tick() {\n deferred.notify(iteration++);\n\n if (count > 0 && iteration >= count) {\n deferred.resolve(iteration);\n clearInterval(promise.$$intervalId);\n delete intervals[promise.$$intervalId];\n }\n\n if (!skipApply) $rootScope.$apply();\n\n }, delay);\n\n intervals[promise.$$intervalId] = deferred;\n\n return promise;\n }\n\n\n /**\n * @ngdoc method\n * @name $interval#cancel\n *\n * @description\n * Cancels a task associated with the `promise`.\n *\n * @param {promise} promise returned by the `$interval` function.\n * @returns {boolean} Returns `true` if the task was successfully canceled.\n */\n interval.cancel = function(promise) {\n if (promise && promise.$$intervalId in intervals) {\n intervals[promise.$$intervalId].reject('canceled');\n $window.clearInterval(promise.$$intervalId);\n delete intervals[promise.$$intervalId];\n return true;\n }\n return false;\n };\n\n return interval;\n }];\n}\n\n/**\n * @ngdoc service\n * @name $locale\n *\n * @description\n * $locale service provides localization rules for various Angular components. As of right now the\n * only public api is:\n *\n * * `id` – `{string}` – locale id formatted as `languageId-countryId` (e.g. `en-us`)\n */\nfunction $LocaleProvider(){\n this.$get = function() {\n return {\n id: 'en-us',\n\n NUMBER_FORMATS: {\n DECIMAL_SEP: '.',\n GROUP_SEP: ',',\n PATTERNS: [\n { // Decimal Pattern\n minInt: 1,\n minFrac: 0,\n maxFrac: 3,\n posPre: '',\n posSuf: '',\n negPre: '-',\n negSuf: '',\n gSize: 3,\n lgSize: 3\n },{ //Currency Pattern\n minInt: 1,\n minFrac: 2,\n maxFrac: 2,\n posPre: '\\u00A4',\n posSuf: '',\n negPre: '(\\u00A4',\n negSuf: ')',\n gSize: 3,\n lgSize: 3\n }\n ],\n CURRENCY_SYM: '$'\n },\n\n DATETIME_FORMATS: {\n MONTH:\n 'January,February,March,April,May,June,July,August,September,October,November,December'\n .split(','),\n SHORTMONTH: 'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'.split(','),\n DAY: 'Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday'.split(','),\n SHORTDAY: 'Sun,Mon,Tue,Wed,Thu,Fri,Sat'.split(','),\n AMPMS: ['AM','PM'],\n medium: 'MMM d, y h:mm:ss a',\n short: 'M/d/yy h:mm a',\n fullDate: 'EEEE, MMMM d, y',\n longDate: 'MMMM d, y',\n mediumDate: 'MMM d, y',\n shortDate: 'M/d/yy',\n mediumTime: 'h:mm:ss a',\n shortTime: 'h:mm a'\n },\n\n pluralCat: function(num) {\n if (num === 1) {\n return 'one';\n }\n return 'other';\n }\n };\n };\n}\n\nvar PATH_MATCH = /^([^\\?#]*)(\\?([^#]*))?(#(.*))?$/,\n DEFAULT_PORTS = {'http': 80, 'https': 443, 'ftp': 21};\nvar $locationMinErr = minErr('$location');\n\n\n/**\n * Encode path using encodeUriSegment, ignoring forward slashes\n *\n * @param {string} path Path to encode\n * @returns {string}\n */\nfunction encodePath(path) {\n var segments = path.split('/'),\n i = segments.length;\n\n while (i--) {\n segments[i] = encodeUriSegment(segments[i]);\n }\n\n return segments.join('/');\n}\n\nfunction parseAbsoluteUrl(absoluteUrl, locationObj, appBase) {\n var parsedUrl = urlResolve(absoluteUrl, appBase);\n\n locationObj.$$protocol = parsedUrl.protocol;\n locationObj.$$host = parsedUrl.hostname;\n locationObj.$$port = int(parsedUrl.port) || DEFAULT_PORTS[parsedUrl.protocol] || null;\n}\n\n\nfunction parseAppUrl(relativeUrl, locationObj, appBase) {\n var prefixed = (relativeUrl.charAt(0) !== '/');\n if (prefixed) {\n relativeUrl = '/' + relativeUrl;\n }\n var match = urlResolve(relativeUrl, appBase);\n locationObj.$$path = decodeURIComponent(prefixed && match.pathname.charAt(0) === '/' ?\n match.pathname.substring(1) : match.pathname);\n locationObj.$$search = parseKeyValue(match.search);\n locationObj.$$hash = decodeURIComponent(match.hash);\n\n // make sure path starts with '/';\n if (locationObj.$$path && locationObj.$$path.charAt(0) != '/') {\n locationObj.$$path = '/' + locationObj.$$path;\n }\n}\n\n\n/**\n *\n * @param {string} begin\n * @param {string} whole\n * @returns {string} returns text from whole after begin or undefined if it does not begin with\n * expected string.\n */\nfunction beginsWith(begin, whole) {\n if (whole.indexOf(begin) === 0) {\n return whole.substr(begin.length);\n }\n}\n\n\nfunction stripHash(url) {\n var index = url.indexOf('#');\n return index == -1 ? url : url.substr(0, index);\n}\n\n\nfunction stripFile(url) {\n return url.substr(0, stripHash(url).lastIndexOf('/') + 1);\n}\n\n/* return the server only (scheme://host:port) */\nfunction serverBase(url) {\n return url.substring(0, url.indexOf('/', url.indexOf('//') + 2));\n}\n\n\n/**\n * LocationHtml5Url represents an url\n * This object is exposed as $location service when HTML5 mode is enabled and supported\n *\n * @constructor\n * @param {string} appBase application base URL\n * @param {string} basePrefix url path prefix\n */\nfunction LocationHtml5Url(appBase, basePrefix) {\n this.$$html5 = true;\n basePrefix = basePrefix || '';\n var appBaseNoFile = stripFile(appBase);\n parseAbsoluteUrl(appBase, this, appBase);\n\n\n /**\n * Parse given html5 (regular) url string into properties\n * @param {string} newAbsoluteUrl HTML5 url\n * @private\n */\n this.$$parse = function(url) {\n var pathUrl = beginsWith(appBaseNoFile, url);\n if (!isString(pathUrl)) {\n throw $locationMinErr('ipthprfx', 'Invalid url \"{0}\", missing path prefix \"{1}\".', url,\n appBaseNoFile);\n }\n\n parseAppUrl(pathUrl, this, appBase);\n\n if (!this.$$path) {\n this.$$path = '/';\n }\n\n this.$$compose();\n };\n\n /**\n * Compose url and update `absUrl` property\n * @private\n */\n this.$$compose = function() {\n var search = toKeyValue(this.$$search),\n hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';\n\n this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;\n this.$$absUrl = appBaseNoFile + this.$$url.substr(1); // first char is always '/'\n };\n\n this.$$parseLinkUrl = function(url, relHref) {\n var appUrl, prevAppUrl;\n var rewrittenUrl;\n\n if ( (appUrl = beginsWith(appBase, url)) !== undefined ) {\n prevAppUrl = appUrl;\n if ( (appUrl = beginsWith(basePrefix, appUrl)) !== undefined ) {\n rewrittenUrl = appBaseNoFile + (beginsWith('/', appUrl) || appUrl);\n } else {\n rewrittenUrl = appBase + prevAppUrl;\n }\n } else if ( (appUrl = beginsWith(appBaseNoFile, url)) !== undefined ) {\n rewrittenUrl = appBaseNoFile + appUrl;\n } else if (appBaseNoFile == url + '/') {\n rewrittenUrl = appBaseNoFile;\n }\n if (rewrittenUrl) {\n this.$$parse(rewrittenUrl);\n }\n return !!rewrittenUrl;\n };\n}\n\n\n/**\n * LocationHashbangUrl represents url\n * This object is exposed as $location service when developer doesn't opt into html5 mode.\n * It also serves as the base class for html5 mode fallback on legacy browsers.\n *\n * @constructor\n * @param {string} appBase application base URL\n * @param {string} hashPrefix hashbang prefix\n */\nfunction LocationHashbangUrl(appBase, hashPrefix) {\n var appBaseNoFile = stripFile(appBase);\n\n parseAbsoluteUrl(appBase, this, appBase);\n\n\n /**\n * Parse given hashbang url into properties\n * @param {string} url Hashbang url\n * @private\n */\n this.$$parse = function(url) {\n var withoutBaseUrl = beginsWith(appBase, url) || beginsWith(appBaseNoFile, url);\n var withoutHashUrl = withoutBaseUrl.charAt(0) == '#'\n ? beginsWith(hashPrefix, withoutBaseUrl)\n : (this.$$html5)\n ? withoutBaseUrl\n : '';\n\n if (!isString(withoutHashUrl)) {\n throw $locationMinErr('ihshprfx', 'Invalid url \"{0}\", missing hash prefix \"{1}\".', url,\n hashPrefix);\n }\n parseAppUrl(withoutHashUrl, this, appBase);\n\n this.$$path = removeWindowsDriveName(this.$$path, withoutHashUrl, appBase);\n\n this.$$compose();\n\n /*\n * In Windows, on an anchor node on documents loaded from\n * the filesystem, the browser will return a pathname\n * prefixed with the drive name ('/C:/path') when a\n * pathname without a drive is set:\n * * a.setAttribute('href', '/foo')\n * * a.pathname === '/C:/foo' //true\n *\n * Inside of Angular, we're always using pathnames that\n * do not include drive names for routing.\n */\n function removeWindowsDriveName (path, url, base) {\n /*\n Matches paths for file protocol on windows,\n such as /C:/foo/bar, and captures only /foo/bar.\n */\n var windowsFilePathExp = /^\\/[A-Z]:(\\/.*)/;\n\n var firstPathSegmentMatch;\n\n //Get the relative path from the input URL.\n if (url.indexOf(base) === 0) {\n url = url.replace(base, '');\n }\n\n // The input URL intentionally contains a first path segment that ends with a colon.\n if (windowsFilePathExp.exec(url)) {\n return path;\n }\n\n firstPathSegmentMatch = windowsFilePathExp.exec(path);\n return firstPathSegmentMatch ? firstPathSegmentMatch[1] : path;\n }\n };\n\n /**\n * Compose hashbang url and update `absUrl` property\n * @private\n */\n this.$$compose = function() {\n var search = toKeyValue(this.$$search),\n hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';\n\n this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;\n this.$$absUrl = appBase + (this.$$url ? hashPrefix + this.$$url : '');\n };\n\n this.$$parseLinkUrl = function(url, relHref) {\n if(stripHash(appBase) == stripHash(url)) {\n this.$$parse(url);\n return true;\n }\n return false;\n };\n}\n\n\n/**\n * LocationHashbangUrl represents url\n * This object is exposed as $location service when html5 history api is enabled but the browser\n * does not support it.\n *\n * @constructor\n * @param {string} appBase application base URL\n * @param {string} hashPrefix hashbang prefix\n */\nfunction LocationHashbangInHtml5Url(appBase, hashPrefix) {\n this.$$html5 = true;\n LocationHashbangUrl.apply(this, arguments);\n\n var appBaseNoFile = stripFile(appBase);\n\n this.$$parseLinkUrl = function(url, relHref) {\n var rewrittenUrl;\n var appUrl;\n\n if ( appBase == stripHash(url) ) {\n rewrittenUrl = url;\n } else if ( (appUrl = beginsWith(appBaseNoFile, url)) ) {\n rewrittenUrl = appBase + hashPrefix + appUrl;\n } else if ( appBaseNoFile === url + '/') {\n rewrittenUrl = appBaseNoFile;\n }\n if (rewrittenUrl) {\n this.$$parse(rewrittenUrl);\n }\n return !!rewrittenUrl;\n };\n\n this.$$compose = function() {\n var search = toKeyValue(this.$$search),\n hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';\n\n this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;\n // include hashPrefix in $$absUrl when $$url is empty so IE8 & 9 do not reload page because of removal of '#'\n this.$$absUrl = appBase + hashPrefix + this.$$url;\n };\n\n}\n\n\nLocationHashbangInHtml5Url.prototype =\n LocationHashbangUrl.prototype =\n LocationHtml5Url.prototype = {\n\n /**\n * Are we in html5 mode?\n * @private\n */\n $$html5: false,\n\n /**\n * Has any change been replacing ?\n * @private\n */\n $$replace: false,\n\n /**\n * @ngdoc method\n * @name $location#absUrl\n *\n * @description\n * This method is getter only.\n *\n * Return full url representation with all segments encoded according to rules specified in\n * [RFC 3986](http://www.ietf.org/rfc/rfc3986.txt).\n *\n * @return {string} full url\n */\n absUrl: locationGetter('$$absUrl'),\n\n /**\n * @ngdoc method\n * @name $location#url\n *\n * @description\n * This method is getter / setter.\n *\n * Return url (e.g. `/path?a=b#hash`) when called without any parameter.\n *\n * Change path, search and hash, when called with parameter and return `$location`.\n *\n * @param {string=} url New url without base prefix (e.g. `/path?a=b#hash`)\n * @return {string} url\n */\n url: function(url) {\n if (isUndefined(url))\n return this.$$url;\n\n var match = PATH_MATCH.exec(url);\n if (match[1]) this.path(decodeURIComponent(match[1]));\n if (match[2] || match[1]) this.search(match[3] || '');\n this.hash(match[5] || '');\n\n return this;\n },\n\n /**\n * @ngdoc method\n * @name $location#protocol\n *\n * @description\n * This method is getter only.\n *\n * Return protocol of current url.\n *\n * @return {string} protocol of current url\n */\n protocol: locationGetter('$$protocol'),\n\n /**\n * @ngdoc method\n * @name $location#host\n *\n * @description\n * This method is getter only.\n *\n * Return host of current url.\n *\n * @return {string} host of current url.\n */\n host: locationGetter('$$host'),\n\n /**\n * @ngdoc method\n * @name $location#port\n *\n * @description\n * This method is getter only.\n *\n * Return port of current url.\n *\n * @return {Number} port\n */\n port: locationGetter('$$port'),\n\n /**\n * @ngdoc method\n * @name $location#path\n *\n * @description\n * This method is getter / setter.\n *\n * Return path of current url when called without any parameter.\n *\n * Change path when called with parameter and return `$location`.\n *\n * Note: Path should always begin with forward slash (/), this method will add the forward slash\n * if it is missing.\n *\n * @param {(string|number)=} path New path\n * @return {string} path\n */\n path: locationGetterSetter('$$path', function(path) {\n path = path !== null ? path.toString() : '';\n return path.charAt(0) == '/' ? path : '/' + path;\n }),\n\n /**\n * @ngdoc method\n * @name $location#search\n *\n * @description\n * This method is getter / setter.\n *\n * Return search part (as object) of current url when called without any parameter.\n *\n * Change search part when called with parameter and return `$location`.\n *\n *\n * ```js\n * // given url http://example.com/#/some/path?foo=bar&baz=xoxo\n * var searchObject = $location.search();\n * // => {foo: 'bar', baz: 'xoxo'}\n *\n *\n * // set foo to 'yipee'\n * $location.search('foo', 'yipee');\n * // => $location\n * ```\n *\n * @param {string|Object.|Object.>} search New search params - string or\n * hash object.\n *\n * When called with a single argument the method acts as a setter, setting the `search` component\n * of `$location` to the specified value.\n *\n * If the argument is a hash object containing an array of values, these values will be encoded\n * as duplicate search parameters in the url.\n *\n * @param {(string|Number|Array|boolean)=} paramValue If `search` is a string or number, then `paramValue`\n * will override only a single search property.\n *\n * If `paramValue` is an array, it will override the property of the `search` component of\n * `$location` specified via the first argument.\n *\n * If `paramValue` is `null`, the property specified via the first argument will be deleted.\n *\n * If `paramValue` is `true`, the property specified via the first argument will be added with no\n * value nor trailing equal sign.\n *\n * @return {Object} If called with no arguments returns the parsed `search` object. If called with\n * one or more arguments returns `$location` object itself.\n */\n search: function(search, paramValue) {\n switch (arguments.length) {\n case 0:\n return this.$$search;\n case 1:\n if (isString(search) || isNumber(search)) {\n search = search.toString();\n this.$$search = parseKeyValue(search);\n } else if (isObject(search)) {\n // remove object undefined or null properties\n forEach(search, function(value, key) {\n if (value == null) delete search[key];\n });\n\n this.$$search = search;\n } else {\n throw $locationMinErr('isrcharg',\n 'The first argument of the `$location#search()` call must be a string or an object.');\n }\n break;\n default:\n if (isUndefined(paramValue) || paramValue === null) {\n delete this.$$search[search];\n } else {\n this.$$search[search] = paramValue;\n }\n }\n\n this.$$compose();\n return this;\n },\n\n /**\n * @ngdoc method\n * @name $location#hash\n *\n * @description\n * This method is getter / setter.\n *\n * Return hash fragment when called without any parameter.\n *\n * Change hash fragment when called with parameter and return `$location`.\n *\n * @param {(string|number)=} hash New hash fragment\n * @return {string} hash\n */\n hash: locationGetterSetter('$$hash', function(hash) {\n return hash !== null ? hash.toString() : '';\n }),\n\n /**\n * @ngdoc method\n * @name $location#replace\n *\n * @description\n * If called, all changes to $location during current `$digest` will be replacing current history\n * record, instead of adding new one.\n */\n replace: function() {\n this.$$replace = true;\n return this;\n }\n};\n\nfunction locationGetter(property) {\n return function() {\n return this[property];\n };\n}\n\n\nfunction locationGetterSetter(property, preprocess) {\n return function(value) {\n if (isUndefined(value))\n return this[property];\n\n this[property] = preprocess(value);\n this.$$compose();\n\n return this;\n };\n}\n\n\n/**\n * @ngdoc service\n * @name $location\n *\n * @requires $rootElement\n *\n * @description\n * The $location service parses the URL in the browser address bar (based on the\n * [window.location](https://developer.mozilla.org/en/window.location)) and makes the URL\n * available to your application. Changes to the URL in the address bar are reflected into\n * $location service and changes to $location are reflected into the browser address bar.\n *\n * **The $location service:**\n *\n * - Exposes the current URL in the browser address bar, so you can\n * - Watch and observe the URL.\n * - Change the URL.\n * - Synchronizes the URL with the browser when the user\n * - Changes the address bar.\n * - Clicks the back or forward button (or clicks a History link).\n * - Clicks on a link.\n * - Represents the URL object as a set of methods (protocol, host, port, path, search, hash).\n *\n * For more information see {@link guide/$location Developer Guide: Using $location}\n */\n\n/**\n * @ngdoc provider\n * @name $locationProvider\n * @description\n * Use the `$locationProvider` to configure how the application deep linking paths are stored.\n */\nfunction $LocationProvider(){\n var hashPrefix = '',\n html5Mode = false;\n\n /**\n * @ngdoc method\n * @name $locationProvider#hashPrefix\n * @description\n * @param {string=} prefix Prefix for hash part (containing path and search)\n * @returns {*} current value if used as getter or itself (chaining) if used as setter\n */\n this.hashPrefix = function(prefix) {\n if (isDefined(prefix)) {\n hashPrefix = prefix;\n return this;\n } else {\n return hashPrefix;\n }\n };\n\n /**\n * @ngdoc method\n * @name $locationProvider#html5Mode\n * @description\n * @param {boolean=} mode Use HTML5 strategy if available.\n * @returns {*} current value if used as getter or itself (chaining) if used as setter\n */\n this.html5Mode = function(mode) {\n if (isDefined(mode)) {\n html5Mode = mode;\n return this;\n } else {\n return html5Mode;\n }\n };\n\n /**\n * @ngdoc event\n * @name $location#$locationChangeStart\n * @eventType broadcast on root scope\n * @description\n * Broadcasted before a URL will change. This change can be prevented by calling\n * `preventDefault` method of the event. See {@link ng.$rootScope.Scope#$on} for more\n * details about event object. Upon successful change\n * {@link ng.$location#events_$locationChangeSuccess $locationChangeSuccess} is fired.\n *\n * @param {Object} angularEvent Synthetic event object.\n * @param {string} newUrl New URL\n * @param {string=} oldUrl URL that was before it was changed.\n */\n\n /**\n * @ngdoc event\n * @name $location#$locationChangeSuccess\n * @eventType broadcast on root scope\n * @description\n * Broadcasted after a URL was changed.\n *\n * @param {Object} angularEvent Synthetic event object.\n * @param {string} newUrl New URL\n * @param {string=} oldUrl URL that was before it was changed.\n */\n\n this.$get = ['$rootScope', '$browser', '$sniffer', '$rootElement',\n function( $rootScope, $browser, $sniffer, $rootElement) {\n var $location,\n LocationMode,\n baseHref = $browser.baseHref(), // if base[href] is undefined, it defaults to ''\n initialUrl = $browser.url(),\n appBase;\n\n if (html5Mode) {\n appBase = serverBase(initialUrl) + (baseHref || '/');\n LocationMode = $sniffer.history ? LocationHtml5Url : LocationHashbangInHtml5Url;\n } else {\n appBase = stripHash(initialUrl);\n LocationMode = LocationHashbangUrl;\n }\n $location = new LocationMode(appBase, '#' + hashPrefix);\n $location.$$parseLinkUrl(initialUrl, initialUrl);\n\n var IGNORE_URI_REGEXP = /^\\s*(javascript|mailto):/i;\n\n $rootElement.on('click', function(event) {\n // TODO(vojta): rewrite link when opening in new tab/window (in legacy browser)\n // currently we open nice url link and redirect then\n\n if (event.ctrlKey || event.metaKey || event.which == 2) return;\n\n var elm = jqLite(event.target);\n\n // traverse the DOM up to find first A tag\n while (lowercase(elm[0].nodeName) !== 'a') {\n // ignore rewriting if no A tag (reached root element, or no parent - removed from document)\n if (elm[0] === $rootElement[0] || !(elm = elm.parent())[0]) return;\n }\n\n var absHref = elm.prop('href');\n // get the actual href attribute - see\n // http://msdn.microsoft.com/en-us/library/ie/dd347148(v=vs.85).aspx\n var relHref = elm.attr('href') || elm.attr('xlink:href');\n\n if (isObject(absHref) && absHref.toString() === '[object SVGAnimatedString]') {\n // SVGAnimatedString.animVal should be identical to SVGAnimatedString.baseVal, unless during\n // an animation.\n absHref = urlResolve(absHref.animVal).href;\n }\n\n // Ignore when url is started with javascript: or mailto:\n if (IGNORE_URI_REGEXP.test(absHref)) return;\n\n if (absHref && !elm.attr('target') && !event.isDefaultPrevented()) {\n if ($location.$$parseLinkUrl(absHref, relHref)) {\n // We do a preventDefault for all urls that are part of the angular application,\n // in html5mode and also without, so that we are able to abort navigation without\n // getting double entries in the location history.\n event.preventDefault();\n // update location manually\n if ($location.absUrl() != $browser.url()) {\n $rootScope.$apply();\n // hack to work around FF6 bug 684208 when scenario runner clicks on links\n window.angular['ff-684208-preventDefault'] = true;\n }\n }\n }\n });\n\n\n // rewrite hashbang url <> html5 url\n if ($location.absUrl() != initialUrl) {\n $browser.url($location.absUrl(), true);\n }\n\n // update $location when $browser url changes\n $browser.onUrlChange(function(newUrl) {\n if ($location.absUrl() != newUrl) {\n $rootScope.$evalAsync(function() {\n var oldUrl = $location.absUrl();\n\n $location.$$parse(newUrl);\n if ($rootScope.$broadcast('$locationChangeStart', newUrl,\n oldUrl).defaultPrevented) {\n $location.$$parse(oldUrl);\n $browser.url(oldUrl);\n } else {\n afterLocationChange(oldUrl);\n }\n });\n if (!$rootScope.$$phase) $rootScope.$digest();\n }\n });\n\n // update browser\n var changeCounter = 0;\n $rootScope.$watch(function $locationWatch() {\n var oldUrl = $browser.url();\n var currentReplace = $location.$$replace;\n\n if (!changeCounter || oldUrl != $location.absUrl()) {\n changeCounter++;\n $rootScope.$evalAsync(function() {\n if ($rootScope.$broadcast('$locationChangeStart', $location.absUrl(), oldUrl).\n defaultPrevented) {\n $location.$$parse(oldUrl);\n } else {\n $browser.url($location.absUrl(), currentReplace);\n afterLocationChange(oldUrl);\n }\n });\n }\n $location.$$replace = false;\n\n return changeCounter;\n });\n\n return $location;\n\n function afterLocationChange(oldUrl) {\n $rootScope.$broadcast('$locationChangeSuccess', $location.absUrl(), oldUrl);\n }\n}];\n}\n\n/**\n * @ngdoc service\n * @name $log\n * @requires $window\n *\n * @description\n * Simple service for logging. Default implementation safely writes the message\n * into the browser's console (if present).\n *\n * The main purpose of this service is to simplify debugging and troubleshooting.\n *\n * The default is to log `debug` messages. You can use\n * {@link ng.$logProvider ng.$logProvider#debugEnabled} to change this.\n *\n * @example\n \n \n angular.module('logExample', [])\n .controller('LogController', ['$scope', '$log', function($scope, $log) {\n $scope.$log = $log;\n $scope.message = 'Hello World!';\n }]);\n \n \n
\n

Reload this page with open console, enter text and hit the log button...

\n Message:\n \n \n \n \n \n
\n
\n
\n */\n\n/**\n * @ngdoc provider\n * @name $logProvider\n * @description\n * Use the `$logProvider` to configure how the application logs messages\n */\nfunction $LogProvider(){\n var debug = true,\n self = this;\n\n /**\n * @ngdoc method\n * @name $logProvider#debugEnabled\n * @description\n * @param {boolean=} flag enable or disable debug level messages\n * @returns {*} current value if used as getter or itself (chaining) if used as setter\n */\n this.debugEnabled = function(flag) {\n if (isDefined(flag)) {\n debug = flag;\n return this;\n } else {\n return debug;\n }\n };\n\n this.$get = ['$window', function($window){\n return {\n /**\n * @ngdoc method\n * @name $log#log\n *\n * @description\n * Write a log message\n */\n log: consoleLog('log'),\n\n /**\n * @ngdoc method\n * @name $log#info\n *\n * @description\n * Write an information message\n */\n info: consoleLog('info'),\n\n /**\n * @ngdoc method\n * @name $log#warn\n *\n * @description\n * Write a warning message\n */\n warn: consoleLog('warn'),\n\n /**\n * @ngdoc method\n * @name $log#error\n *\n * @description\n * Write an error message\n */\n error: consoleLog('error'),\n\n /**\n * @ngdoc method\n * @name $log#debug\n *\n * @description\n * Write a debug message\n */\n debug: (function () {\n var fn = consoleLog('debug');\n\n return function() {\n if (debug) {\n fn.apply(self, arguments);\n }\n };\n }())\n };\n\n function formatError(arg) {\n if (arg instanceof Error) {\n if (arg.stack) {\n arg = (arg.message && arg.stack.indexOf(arg.message) === -1)\n ? 'Error: ' + arg.message + '\\n' + arg.stack\n : arg.stack;\n } else if (arg.sourceURL) {\n arg = arg.message + '\\n' + arg.sourceURL + ':' + arg.line;\n }\n }\n return arg;\n }\n\n function consoleLog(type) {\n var console = $window.console || {},\n logFn = console[type] || console.log || noop,\n hasApply = false;\n\n // Note: reading logFn.apply throws an error in IE11 in IE8 document mode.\n // The reason behind this is that console.log has type \"object\" in IE8...\n try {\n hasApply = !!logFn.apply;\n } catch (e) {}\n\n if (hasApply) {\n return function() {\n var args = [];\n forEach(arguments, function(arg) {\n args.push(formatError(arg));\n });\n return logFn.apply(console, args);\n };\n }\n\n // we are IE which either doesn't have window.console => this is noop and we do nothing,\n // or we are IE where console.log doesn't have apply so we log at least first 2 args\n return function(arg1, arg2) {\n logFn(arg1, arg2 == null ? '' : arg2);\n };\n }\n }];\n}\n\nvar $parseMinErr = minErr('$parse');\nvar promiseWarningCache = {};\nvar promiseWarning;\n\n// Sandboxing Angular Expressions\n// ------------------------------\n// Angular expressions are generally considered safe because these expressions only have direct\n// access to `$scope` and locals. However, one can obtain the ability to execute arbitrary JS code by\n// obtaining a reference to native JS functions such as the Function constructor.\n//\n// As an example, consider the following Angular expression:\n//\n// {}.toString.constructor('alert(\"evil JS code\")')\n//\n// This sandboxing technique is not perfect and doesn't aim to be. The goal is to prevent exploits\n// against the expression language, but not to prevent exploits that were enabled by exposing\n// sensitive JavaScript or browser APIs on Scope. Exposing such objects on a Scope is never a good\n// practice and therefore we are not even trying to protect against interaction with an object\n// explicitly exposed in this way.\n//\n// In general, it is not possible to access a Window object from an angular expression unless a\n// window or some DOM object that has a reference to window is published onto a Scope.\n// Similarly we prevent invocations of function known to be dangerous, as well as assignments to\n// native objects.\n//\n// See https://docs.angularjs.org/guide/security\n\n\nfunction ensureSafeMemberName(name, fullExpression) {\n if (name === \"__defineGetter__\" || name === \"__defineSetter__\"\n || name === \"__lookupGetter__\" || name === \"__lookupSetter__\"\n || name === \"__proto__\") {\n throw $parseMinErr('isecfld',\n 'Attempting to access a disallowed field in Angular expressions! '\n +'Expression: {0}', fullExpression);\n }\n return name;\n}\n\nfunction ensureSafeObject(obj, fullExpression) {\n // nifty check if obj is Function that is fast and works across iframes and other contexts\n if (obj) {\n if (obj.constructor === obj) {\n throw $parseMinErr('isecfn',\n 'Referencing Function in Angular expressions is disallowed! Expression: {0}',\n fullExpression);\n } else if (// isWindow(obj)\n obj.document && obj.location && obj.alert && obj.setInterval) {\n throw $parseMinErr('isecwindow',\n 'Referencing the Window in Angular expressions is disallowed! Expression: {0}',\n fullExpression);\n } else if (// isElement(obj)\n obj.children && (obj.nodeName || (obj.prop && obj.attr && obj.find))) {\n throw $parseMinErr('isecdom',\n 'Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}',\n fullExpression);\n } else if (// block Object so that we can't get hold of dangerous Object.* methods\n obj === Object) {\n throw $parseMinErr('isecobj',\n 'Referencing Object in Angular expressions is disallowed! Expression: {0}',\n fullExpression);\n }\n }\n return obj;\n}\n\nvar CALL = Function.prototype.call;\nvar APPLY = Function.prototype.apply;\nvar BIND = Function.prototype.bind;\n\nfunction ensureSafeFunction(obj, fullExpression) {\n if (obj) {\n if (obj.constructor === obj) {\n throw $parseMinErr('isecfn',\n 'Referencing Function in Angular expressions is disallowed! Expression: {0}',\n fullExpression);\n } else if (obj === CALL || obj === APPLY || (BIND && obj === BIND)) {\n throw $parseMinErr('isecff',\n 'Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}',\n fullExpression);\n }\n }\n}\n\nvar OPERATORS = {\n /* jshint bitwise : false */\n 'null':function(){return null;},\n 'true':function(){return true;},\n 'false':function(){return false;},\n undefined:noop,\n '+':function(self, locals, a,b){\n a=a(self, locals); b=b(self, locals);\n if (isDefined(a)) {\n if (isDefined(b)) {\n return a + b;\n }\n return a;\n }\n return isDefined(b)?b:undefined;},\n '-':function(self, locals, a,b){\n a=a(self, locals); b=b(self, locals);\n return (isDefined(a)?a:0)-(isDefined(b)?b:0);\n },\n '*':function(self, locals, a,b){return a(self, locals)*b(self, locals);},\n '/':function(self, locals, a,b){return a(self, locals)/b(self, locals);},\n '%':function(self, locals, a,b){return a(self, locals)%b(self, locals);},\n '^':function(self, locals, a,b){return a(self, locals)^b(self, locals);},\n '=':noop,\n '===':function(self, locals, a, b){return a(self, locals)===b(self, locals);},\n '!==':function(self, locals, a, b){return a(self, locals)!==b(self, locals);},\n '==':function(self, locals, a,b){return a(self, locals)==b(self, locals);},\n '!=':function(self, locals, a,b){return a(self, locals)!=b(self, locals);},\n '<':function(self, locals, a,b){return a(self, locals)':function(self, locals, a,b){return a(self, locals)>b(self, locals);},\n '<=':function(self, locals, a,b){return a(self, locals)<=b(self, locals);},\n '>=':function(self, locals, a,b){return a(self, locals)>=b(self, locals);},\n '&&':function(self, locals, a,b){return a(self, locals)&&b(self, locals);},\n '||':function(self, locals, a,b){return a(self, locals)||b(self, locals);},\n '&':function(self, locals, a,b){return a(self, locals)&b(self, locals);},\n// '|':function(self, locals, a,b){return a|b;},\n '|':function(self, locals, a,b){return b(self, locals)(self, locals, a(self, locals));},\n '!':function(self, locals, a){return !a(self, locals);}\n};\n/* jshint bitwise: true */\nvar ESCAPE = {\"n\":\"\\n\", \"f\":\"\\f\", \"r\":\"\\r\", \"t\":\"\\t\", \"v\":\"\\v\", \"'\":\"'\", '\"':'\"'};\n\n\n/////////////////////////////////////////\n\n\n/**\n * @constructor\n */\nvar Lexer = function (options) {\n this.options = options;\n};\n\nLexer.prototype = {\n constructor: Lexer,\n\n lex: function (text) {\n this.text = text;\n\n this.index = 0;\n this.ch = undefined;\n this.lastCh = ':'; // can start regexp\n\n this.tokens = [];\n\n while (this.index < this.text.length) {\n this.ch = this.text.charAt(this.index);\n if (this.is('\"\\'')) {\n this.readString(this.ch);\n } else if (this.isNumber(this.ch) || this.is('.') && this.isNumber(this.peek())) {\n this.readNumber();\n } else if (this.isIdent(this.ch)) {\n this.readIdent();\n } else if (this.is('(){}[].,;:?')) {\n this.tokens.push({\n index: this.index,\n text: this.ch\n });\n this.index++;\n } else if (this.isWhitespace(this.ch)) {\n this.index++;\n continue;\n } else {\n var ch2 = this.ch + this.peek();\n var ch3 = ch2 + this.peek(2);\n var fn = OPERATORS[this.ch];\n var fn2 = OPERATORS[ch2];\n var fn3 = OPERATORS[ch3];\n if (fn3) {\n this.tokens.push({index: this.index, text: ch3, fn: fn3});\n this.index += 3;\n } else if (fn2) {\n this.tokens.push({index: this.index, text: ch2, fn: fn2});\n this.index += 2;\n } else if (fn) {\n this.tokens.push({\n index: this.index,\n text: this.ch,\n fn: fn\n });\n this.index += 1;\n } else {\n this.throwError('Unexpected next character ', this.index, this.index + 1);\n }\n }\n this.lastCh = this.ch;\n }\n return this.tokens;\n },\n\n is: function(chars) {\n return chars.indexOf(this.ch) !== -1;\n },\n\n was: function(chars) {\n return chars.indexOf(this.lastCh) !== -1;\n },\n\n peek: function(i) {\n var num = i || 1;\n return (this.index + num < this.text.length) ? this.text.charAt(this.index + num) : false;\n },\n\n isNumber: function(ch) {\n return ('0' <= ch && ch <= '9');\n },\n\n isWhitespace: function(ch) {\n // IE treats non-breaking space as \\u00A0\n return (ch === ' ' || ch === '\\r' || ch === '\\t' ||\n ch === '\\n' || ch === '\\v' || ch === '\\u00A0');\n },\n\n isIdent: function(ch) {\n return ('a' <= ch && ch <= 'z' ||\n 'A' <= ch && ch <= 'Z' ||\n '_' === ch || ch === '$');\n },\n\n isExpOperator: function(ch) {\n return (ch === '-' || ch === '+' || this.isNumber(ch));\n },\n\n throwError: function(error, start, end) {\n end = end || this.index;\n var colStr = (isDefined(start)\n ? 's ' + start + '-' + this.index + ' [' + this.text.substring(start, end) + ']'\n : ' ' + end);\n throw $parseMinErr('lexerr', 'Lexer Error: {0} at column{1} in expression [{2}].',\n error, colStr, this.text);\n },\n\n readNumber: function() {\n var number = '';\n var start = this.index;\n while (this.index < this.text.length) {\n var ch = lowercase(this.text.charAt(this.index));\n if (ch == '.' || this.isNumber(ch)) {\n number += ch;\n } else {\n var peekCh = this.peek();\n if (ch == 'e' && this.isExpOperator(peekCh)) {\n number += ch;\n } else if (this.isExpOperator(ch) &&\n peekCh && this.isNumber(peekCh) &&\n number.charAt(number.length - 1) == 'e') {\n number += ch;\n } else if (this.isExpOperator(ch) &&\n (!peekCh || !this.isNumber(peekCh)) &&\n number.charAt(number.length - 1) == 'e') {\n this.throwError('Invalid exponent');\n } else {\n break;\n }\n }\n this.index++;\n }\n number = 1 * number;\n this.tokens.push({\n index: start,\n text: number,\n literal: true,\n constant: true,\n fn: function() { return number; }\n });\n },\n\n readIdent: function() {\n var parser = this;\n\n var ident = '';\n var start = this.index;\n\n var lastDot, peekIndex, methodName, ch;\n\n while (this.index < this.text.length) {\n ch = this.text.charAt(this.index);\n if (ch === '.' || this.isIdent(ch) || this.isNumber(ch)) {\n if (ch === '.') lastDot = this.index;\n ident += ch;\n } else {\n break;\n }\n this.index++;\n }\n\n //check if this is not a method invocation and if it is back out to last dot\n if (lastDot) {\n peekIndex = this.index;\n while (peekIndex < this.text.length) {\n ch = this.text.charAt(peekIndex);\n if (ch === '(') {\n methodName = ident.substr(lastDot - start + 1);\n ident = ident.substr(0, lastDot - start);\n this.index = peekIndex;\n break;\n }\n if (this.isWhitespace(ch)) {\n peekIndex++;\n } else {\n break;\n }\n }\n }\n\n\n var token = {\n index: start,\n text: ident\n };\n\n // OPERATORS is our own object so we don't need to use special hasOwnPropertyFn\n if (OPERATORS.hasOwnProperty(ident)) {\n token.fn = OPERATORS[ident];\n token.literal = true;\n token.constant = true;\n } else {\n var getter = getterFn(ident, this.options, this.text);\n token.fn = extend(function(self, locals) {\n return (getter(self, locals));\n }, {\n assign: function(self, value) {\n return setter(self, ident, value, parser.text, parser.options);\n }\n });\n }\n\n this.tokens.push(token);\n\n if (methodName) {\n this.tokens.push({\n index:lastDot,\n text: '.'\n });\n this.tokens.push({\n index: lastDot + 1,\n text: methodName\n });\n }\n },\n\n readString: function(quote) {\n var start = this.index;\n this.index++;\n var string = '';\n var rawString = quote;\n var escape = false;\n while (this.index < this.text.length) {\n var ch = this.text.charAt(this.index);\n rawString += ch;\n if (escape) {\n if (ch === 'u') {\n var hex = this.text.substring(this.index + 1, this.index + 5);\n if (!hex.match(/[\\da-f]{4}/i))\n this.throwError('Invalid unicode escape [\\\\u' + hex + ']');\n this.index += 4;\n string += String.fromCharCode(parseInt(hex, 16));\n } else {\n var rep = ESCAPE[ch];\n string = string + (rep || ch);\n }\n escape = false;\n } else if (ch === '\\\\') {\n escape = true;\n } else if (ch === quote) {\n this.index++;\n this.tokens.push({\n index: start,\n text: rawString,\n string: string,\n literal: true,\n constant: true,\n fn: function() { return string; }\n });\n return;\n } else {\n string += ch;\n }\n this.index++;\n }\n this.throwError('Unterminated quote', start);\n }\n};\n\n\n/**\n * @constructor\n */\nvar Parser = function (lexer, $filter, options) {\n this.lexer = lexer;\n this.$filter = $filter;\n this.options = options;\n};\n\nParser.ZERO = extend(function () {\n return 0;\n}, {\n constant: true\n});\n\nParser.prototype = {\n constructor: Parser,\n\n parse: function (text) {\n this.text = text;\n\n this.tokens = this.lexer.lex(text);\n\n var value = this.statements();\n\n if (this.tokens.length !== 0) {\n this.throwError('is an unexpected token', this.tokens[0]);\n }\n\n value.literal = !!value.literal;\n value.constant = !!value.constant;\n\n return value;\n },\n\n primary: function () {\n var primary;\n if (this.expect('(')) {\n primary = this.filterChain();\n this.consume(')');\n } else if (this.expect('[')) {\n primary = this.arrayDeclaration();\n } else if (this.expect('{')) {\n primary = this.object();\n } else {\n var token = this.expect();\n primary = token.fn;\n if (!primary) {\n this.throwError('not a primary expression', token);\n }\n primary.literal = !!token.literal;\n primary.constant = !!token.constant;\n }\n\n var next, context;\n while ((next = this.expect('(', '[', '.'))) {\n if (next.text === '(') {\n primary = this.functionCall(primary, context);\n context = null;\n } else if (next.text === '[') {\n context = primary;\n primary = this.objectIndex(primary);\n } else if (next.text === '.') {\n context = primary;\n primary = this.fieldAccess(primary);\n } else {\n this.throwError('IMPOSSIBLE');\n }\n }\n return primary;\n },\n\n throwError: function(msg, token) {\n throw $parseMinErr('syntax',\n 'Syntax Error: Token \\'{0}\\' {1} at column {2} of the expression [{3}] starting at [{4}].',\n token.text, msg, (token.index + 1), this.text, this.text.substring(token.index));\n },\n\n peekToken: function() {\n if (this.tokens.length === 0)\n throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text);\n return this.tokens[0];\n },\n\n peek: function(e1, e2, e3, e4) {\n if (this.tokens.length > 0) {\n var token = this.tokens[0];\n var t = token.text;\n if (t === e1 || t === e2 || t === e3 || t === e4 ||\n (!e1 && !e2 && !e3 && !e4)) {\n return token;\n }\n }\n return false;\n },\n\n expect: function(e1, e2, e3, e4){\n var token = this.peek(e1, e2, e3, e4);\n if (token) {\n this.tokens.shift();\n return token;\n }\n return false;\n },\n\n consume: function(e1){\n if (!this.expect(e1)) {\n this.throwError('is unexpected, expecting [' + e1 + ']', this.peek());\n }\n },\n\n unaryFn: function(fn, right) {\n return extend(function(self, locals) {\n return fn(self, locals, right);\n }, {\n constant:right.constant\n });\n },\n\n ternaryFn: function(left, middle, right){\n return extend(function(self, locals){\n return left(self, locals) ? middle(self, locals) : right(self, locals);\n }, {\n constant: left.constant && middle.constant && right.constant\n });\n },\n\n binaryFn: function(left, fn, right) {\n return extend(function(self, locals) {\n return fn(self, locals, left, right);\n }, {\n constant:left.constant && right.constant\n });\n },\n\n statements: function() {\n var statements = [];\n while (true) {\n if (this.tokens.length > 0 && !this.peek('}', ')', ';', ']'))\n statements.push(this.filterChain());\n if (!this.expect(';')) {\n // optimize for the common case where there is only one statement.\n // TODO(size): maybe we should not support multiple statements?\n return (statements.length === 1)\n ? statements[0]\n : function(self, locals) {\n var value;\n for (var i = 0; i < statements.length; i++) {\n var statement = statements[i];\n if (statement) {\n value = statement(self, locals);\n }\n }\n return value;\n };\n }\n }\n },\n\n filterChain: function() {\n var left = this.expression();\n var token;\n while (true) {\n if ((token = this.expect('|'))) {\n left = this.binaryFn(left, token.fn, this.filter());\n } else {\n return left;\n }\n }\n },\n\n filter: function() {\n var token = this.expect();\n var fn = this.$filter(token.text);\n var argsFn = [];\n while (true) {\n if ((token = this.expect(':'))) {\n argsFn.push(this.expression());\n } else {\n var fnInvoke = function(self, locals, input) {\n var args = [input];\n for (var i = 0; i < argsFn.length; i++) {\n args.push(argsFn[i](self, locals));\n }\n return fn.apply(self, args);\n };\n return function() {\n return fnInvoke;\n };\n }\n }\n },\n\n expression: function() {\n return this.assignment();\n },\n\n assignment: function() {\n var left = this.ternary();\n var right;\n var token;\n if ((token = this.expect('='))) {\n if (!left.assign) {\n this.throwError('implies assignment but [' +\n this.text.substring(0, token.index) + '] can not be assigned to', token);\n }\n right = this.ternary();\n return function(scope, locals) {\n return left.assign(scope, right(scope, locals), locals);\n };\n }\n return left;\n },\n\n ternary: function() {\n var left = this.logicalOR();\n var middle;\n var token;\n if ((token = this.expect('?'))) {\n middle = this.assignment();\n if ((token = this.expect(':'))) {\n return this.ternaryFn(left, middle, this.assignment());\n } else {\n this.throwError('expected :', token);\n }\n } else {\n return left;\n }\n },\n\n logicalOR: function() {\n var left = this.logicalAND();\n var token;\n while (true) {\n if ((token = this.expect('||'))) {\n left = this.binaryFn(left, token.fn, this.logicalAND());\n } else {\n return left;\n }\n }\n },\n\n logicalAND: function() {\n var left = this.equality();\n var token;\n if ((token = this.expect('&&'))) {\n left = this.binaryFn(left, token.fn, this.logicalAND());\n }\n return left;\n },\n\n equality: function() {\n var left = this.relational();\n var token;\n if ((token = this.expect('==','!=','===','!=='))) {\n left = this.binaryFn(left, token.fn, this.equality());\n }\n return left;\n },\n\n relational: function() {\n var left = this.additive();\n var token;\n if ((token = this.expect('<', '>', '<=', '>='))) {\n left = this.binaryFn(left, token.fn, this.relational());\n }\n return left;\n },\n\n additive: function() {\n var left = this.multiplicative();\n var token;\n while ((token = this.expect('+','-'))) {\n left = this.binaryFn(left, token.fn, this.multiplicative());\n }\n return left;\n },\n\n multiplicative: function() {\n var left = this.unary();\n var token;\n while ((token = this.expect('*','/','%'))) {\n left = this.binaryFn(left, token.fn, this.unary());\n }\n return left;\n },\n\n unary: function() {\n var token;\n if (this.expect('+')) {\n return this.primary();\n } else if ((token = this.expect('-'))) {\n return this.binaryFn(Parser.ZERO, token.fn, this.unary());\n } else if ((token = this.expect('!'))) {\n return this.unaryFn(token.fn, this.unary());\n } else {\n return this.primary();\n }\n },\n\n fieldAccess: function(object) {\n var parser = this;\n var field = this.expect().text;\n var getter = getterFn(field, this.options, this.text);\n\n return extend(function(scope, locals, self) {\n return getter(self || object(scope, locals));\n }, {\n assign: function(scope, value, locals) {\n var o = object(scope, locals);\n if (!o) object.assign(scope, o = {});\n return setter(o, field, value, parser.text, parser.options);\n }\n });\n },\n\n objectIndex: function(obj) {\n var parser = this;\n\n var indexFn = this.expression();\n this.consume(']');\n\n return extend(function(self, locals) {\n var o = obj(self, locals),\n i = indexFn(self, locals),\n v, p;\n\n ensureSafeMemberName(i, parser.text);\n if (!o) return undefined;\n v = ensureSafeObject(o[i], parser.text);\n if (v && v.then && parser.options.unwrapPromises) {\n p = v;\n if (!('$$v' in v)) {\n p.$$v = undefined;\n p.then(function(val) { p.$$v = val; });\n }\n v = v.$$v;\n }\n return v;\n }, {\n assign: function(self, value, locals) {\n var key = ensureSafeMemberName(indexFn(self, locals), parser.text);\n // prevent overwriting of Function.constructor which would break ensureSafeObject check\n var o = ensureSafeObject(obj(self, locals), parser.text);\n if (!o) obj.assign(self, o = {});\n return o[key] = value;\n }\n });\n },\n\n functionCall: function(fn, contextGetter) {\n var argsFn = [];\n if (this.peekToken().text !== ')') {\n do {\n argsFn.push(this.expression());\n } while (this.expect(','));\n }\n this.consume(')');\n\n var parser = this;\n\n return function(scope, locals) {\n var args = [];\n var context = contextGetter ? contextGetter(scope, locals) : scope;\n\n for (var i = 0; i < argsFn.length; i++) {\n args.push(ensureSafeObject(argsFn[i](scope, locals), parser.text));\n }\n var fnPtr = fn(scope, locals, context) || noop;\n\n ensureSafeObject(context, parser.text);\n ensureSafeFunction(fnPtr, parser.text);\n\n // IE doesn't have apply for some native functions\n var v = fnPtr.apply\n ? fnPtr.apply(context, args)\n : fnPtr(args[0], args[1], args[2], args[3], args[4]);\n\n return ensureSafeObject(v, parser.text);\n };\n },\n\n // This is used with json array declaration\n arrayDeclaration: function () {\n var elementFns = [];\n var allConstant = true;\n if (this.peekToken().text !== ']') {\n do {\n if (this.peek(']')) {\n // Support trailing commas per ES5.1.\n break;\n }\n var elementFn = this.expression();\n elementFns.push(elementFn);\n if (!elementFn.constant) {\n allConstant = false;\n }\n } while (this.expect(','));\n }\n this.consume(']');\n\n return extend(function(self, locals) {\n var array = [];\n for (var i = 0; i < elementFns.length; i++) {\n array.push(elementFns[i](self, locals));\n }\n return array;\n }, {\n literal: true,\n constant: allConstant\n });\n },\n\n object: function () {\n var keyValues = [];\n var allConstant = true;\n if (this.peekToken().text !== '}') {\n do {\n if (this.peek('}')) {\n // Support trailing commas per ES5.1.\n break;\n }\n var token = this.expect(),\n key = token.string || token.text;\n this.consume(':');\n var value = this.expression();\n keyValues.push({key: key, value: value});\n if (!value.constant) {\n allConstant = false;\n }\n } while (this.expect(','));\n }\n this.consume('}');\n\n return extend(function(self, locals) {\n var object = {};\n for (var i = 0; i < keyValues.length; i++) {\n var keyValue = keyValues[i];\n object[keyValue.key] = keyValue.value(self, locals);\n }\n return object;\n }, {\n literal: true,\n constant: allConstant\n });\n }\n};\n\n\n//////////////////////////////////////////////////\n// Parser helper functions\n//////////////////////////////////////////////////\n\nfunction setter(obj, path, setValue, fullExp, options) {\n ensureSafeObject(obj, fullExp);\n\n //needed?\n options = options || {};\n\n var element = path.split('.'), key;\n for (var i = 0; element.length > 1; i++) {\n key = ensureSafeMemberName(element.shift(), fullExp);\n var propertyObj = ensureSafeObject(obj[key], fullExp);\n if (!propertyObj) {\n propertyObj = {};\n obj[key] = propertyObj;\n }\n obj = propertyObj;\n if (obj.then && options.unwrapPromises) {\n promiseWarning(fullExp);\n if (!(\"$$v\" in obj)) {\n (function(promise) {\n promise.then(function(val) { promise.$$v = val; }); }\n )(obj);\n }\n if (obj.$$v === undefined) {\n obj.$$v = {};\n }\n obj = obj.$$v;\n }\n }\n key = ensureSafeMemberName(element.shift(), fullExp);\n ensureSafeObject(obj[key], fullExp);\n obj[key] = setValue;\n return setValue;\n}\n\nvar getterFnCacheDefault = {};\nvar getterFnCacheExpensive = {};\n\nfunction isPossiblyDangerousMemberName(name) {\n return name == 'constructor';\n}\n\n/**\n * Implementation of the \"Black Hole\" variant from:\n * - http://jsperf.com/angularjs-parse-getter/4\n * - http://jsperf.com/path-evaluation-simplified/7\n */\nfunction cspSafeGetterFn(key0, key1, key2, key3, key4, fullExp, options) {\n ensureSafeMemberName(key0, fullExp);\n ensureSafeMemberName(key1, fullExp);\n ensureSafeMemberName(key2, fullExp);\n ensureSafeMemberName(key3, fullExp);\n ensureSafeMemberName(key4, fullExp);\n var eso = function(o) {\n return ensureSafeObject(o, fullExp);\n };\n var expensiveChecks = options.expensiveChecks;\n var eso0 = (expensiveChecks || isPossiblyDangerousMemberName(key0)) ? eso : identity;\n var eso1 = (expensiveChecks || isPossiblyDangerousMemberName(key1)) ? eso : identity;\n var eso2 = (expensiveChecks || isPossiblyDangerousMemberName(key2)) ? eso : identity;\n var eso3 = (expensiveChecks || isPossiblyDangerousMemberName(key3)) ? eso : identity;\n var eso4 = (expensiveChecks || isPossiblyDangerousMemberName(key4)) ? eso : identity;\n\n return !options.unwrapPromises\n ? function cspSafeGetter(scope, locals) {\n var pathVal = (locals && locals.hasOwnProperty(key0)) ? locals : scope;\n\n if (pathVal == null) return pathVal;\n pathVal = eso0(pathVal[key0]);\n\n if (!key1) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso1(pathVal[key1]);\n\n if (!key2) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso2(pathVal[key2]);\n\n if (!key3) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso3(pathVal[key3]);\n\n if (!key4) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso4(pathVal[key4]);\n\n return pathVal;\n }\n : function cspSafePromiseEnabledGetter(scope, locals) {\n var pathVal = (locals && locals.hasOwnProperty(key0)) ? locals : scope,\n promise;\n\n if (pathVal == null) return pathVal;\n\n pathVal = eso0(pathVal[key0]);\n if (pathVal && pathVal.then) {\n promiseWarning(fullExp);\n if (!(\"$$v\" in pathVal)) {\n promise = pathVal;\n promise.$$v = undefined;\n promise.then(function(val) { promise.$$v = eso0(val); });\n }\n pathVal = eso0(pathVal.$$v);\n }\n\n if (!key1) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso1(pathVal[key1]);\n if (pathVal && pathVal.then) {\n promiseWarning(fullExp);\n if (!(\"$$v\" in pathVal)) {\n promise = pathVal;\n promise.$$v = undefined;\n promise.then(function(val) { promise.$$v = eso1(val); });\n }\n pathVal = eso1(pathVal.$$v);\n }\n\n if (!key2) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso2(pathVal[key2]);\n if (pathVal && pathVal.then) {\n promiseWarning(fullExp);\n if (!(\"$$v\" in pathVal)) {\n promise = pathVal;\n promise.$$v = undefined;\n promise.then(function(val) { promise.$$v = eso2(val); });\n }\n pathVal = eso2(pathVal.$$v);\n }\n\n if (!key3) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso3(pathVal[key3]);\n if (pathVal && pathVal.then) {\n promiseWarning(fullExp);\n if (!(\"$$v\" in pathVal)) {\n promise = pathVal;\n promise.$$v = undefined;\n promise.then(function(val) { promise.$$v = eso3(val); });\n }\n pathVal = eso3(pathVal.$$v);\n }\n\n if (!key4) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso4(pathVal[key4]);\n if (pathVal && pathVal.then) {\n promiseWarning(fullExp);\n if (!(\"$$v\" in pathVal)) {\n promise = pathVal;\n promise.$$v = undefined;\n promise.then(function(val) { promise.$$v = eso4(val); });\n }\n pathVal = eso4(pathVal.$$v);\n }\n return pathVal;\n };\n}\n\nfunction getterFnWithExtraArgs(fn, fullExpression) {\n return function(s, l) {\n return fn(s, l, promiseWarning, ensureSafeObject, fullExpression);\n };\n}\n\nfunction getterFn(path, options, fullExp) {\n var expensiveChecks = options.expensiveChecks;\n var getterFnCache = (expensiveChecks ? getterFnCacheExpensive : getterFnCacheDefault);\n // Check whether the cache has this getter already.\n // We can use hasOwnProperty directly on the cache because we ensure,\n // see below, that the cache never stores a path called 'hasOwnProperty'\n if (getterFnCache.hasOwnProperty(path)) {\n return getterFnCache[path];\n }\n\n var pathKeys = path.split('.'),\n pathKeysLength = pathKeys.length,\n fn;\n\n // http://jsperf.com/angularjs-parse-getter/6\n if (options.csp) {\n if (pathKeysLength < 6) {\n fn = cspSafeGetterFn(pathKeys[0], pathKeys[1], pathKeys[2], pathKeys[3], pathKeys[4], fullExp,\n options);\n } else {\n fn = function(scope, locals) {\n var i = 0, val;\n do {\n val = cspSafeGetterFn(pathKeys[i++], pathKeys[i++], pathKeys[i++], pathKeys[i++],\n pathKeys[i++], fullExp, options)(scope, locals);\n\n locals = undefined; // clear after first iteration\n scope = val;\n } while (i < pathKeysLength);\n return val;\n };\n }\n } else {\n var code = 'var p;\\n';\n if (expensiveChecks) {\n code += 's = eso(s, fe);\\nl = eso(l, fe);\\n';\n }\n var needsEnsureSafeObject = expensiveChecks;\n forEach(pathKeys, function(key, index) {\n ensureSafeMemberName(key, fullExp);\n var lookupJs = (index\n // we simply dereference 's' on any .dot notation\n ? 's'\n // but if we are first then we check locals first, and if so read it first\n : '((l&&l.hasOwnProperty(\"' + key + '\"))?l:s)') + '[\"' + key + '\"]';\n var wrapWithEso = expensiveChecks || isPossiblyDangerousMemberName(key);\n if (wrapWithEso) {\n lookupJs = 'eso(' + lookupJs + ', fe)';\n needsEnsureSafeObject = true;\n }\n code += 'if(s == null) return undefined;\\n' +\n 's=' + lookupJs + ';\\n';\n if (options.unwrapPromises) {\n code += 'if (s && s.then) {\\n' +\n ' pw(\"' + fullExp.replace(/([\"\\r\\n])/g, '\\\\$1') + '\");\\n' +\n ' if (!(\"$$v\" in s)) {\\n' +\n ' p=s;\\n' +\n ' p.$$v = undefined;\\n' +\n ' p.then(function(v) {p.$$v=' + (wrapWithEso ? 'eso(v)' : 'v') + ';});\\n' +\n '}\\n' +\n ' s=' + (wrapWithEso ? 'eso(s.$$v)' : 's.$$v') + '\\n' +\n '}\\n';\n\n }\n });\n code += 'return s;';\n\n /* jshint -W054 */\n // s=scope, l=locals, pw=promiseWarning, eso=ensureSafeObject, fe=fullExpression\n var evaledFnGetter = new Function('s', 'l', 'pw', 'eso', 'fe', code);\n /* jshint +W054 */\n evaledFnGetter.toString = valueFn(code);\n if (needsEnsureSafeObject || options.unwrapPromises) {\n evaledFnGetter = getterFnWithExtraArgs(evaledFnGetter, fullExp);\n }\n fn = evaledFnGetter;\n }\n\n // Only cache the value if it's not going to mess up the cache object\n // This is more performant that using Object.prototype.hasOwnProperty.call\n if (path !== 'hasOwnProperty') {\n getterFnCache[path] = fn;\n }\n return fn;\n}\n\n///////////////////////////////////\n\n/**\n * @ngdoc service\n * @name $parse\n * @kind function\n *\n * @description\n *\n * Converts Angular {@link guide/expression expression} into a function.\n *\n * ```js\n * var getter = $parse('user.name');\n * var setter = getter.assign;\n * var context = {user:{name:'angular'}};\n * var locals = {user:{name:'local'}};\n *\n * expect(getter(context)).toEqual('angular');\n * setter(context, 'newValue');\n * expect(context.user.name).toEqual('newValue');\n * expect(getter(context, locals)).toEqual('local');\n * ```\n *\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n *\n * The returned function also has the following properties:\n * * `literal` – `{boolean}` – whether the expression's top-level node is a JavaScript\n * literal.\n * * `constant` – `{boolean}` – whether the expression is made entirely of JavaScript\n * constant literals.\n * * `assign` – `{?function(context, value)}` – if the expression is assignable, this will be\n * set to a function to change its value on the given context.\n *\n */\n\n\n/**\n * @ngdoc provider\n * @name $parseProvider\n * @kind function\n *\n * @description\n * `$parseProvider` can be used for configuring the default behavior of the {@link ng.$parse $parse}\n * service.\n */\nfunction $ParseProvider() {\n var cacheDefault = {};\n var cacheExpensive = {};\n\n var $parseOptions = {\n csp: false,\n unwrapPromises: false,\n logPromiseWarnings: true,\n expensiveChecks: false\n };\n\n\n /**\n * @deprecated Promise unwrapping via $parse is deprecated and will be removed in the future.\n *\n * @ngdoc method\n * @name $parseProvider#unwrapPromises\n * @description\n *\n * **This feature is deprecated, see deprecation notes below for more info**\n *\n * If set to true (default is false), $parse will unwrap promises automatically when a promise is\n * found at any part of the expression. In other words, if set to true, the expression will always\n * result in a non-promise value.\n *\n * While the promise is unresolved, it's treated as undefined, but once resolved and fulfilled,\n * the fulfillment value is used in place of the promise while evaluating the expression.\n *\n * **Deprecation notice**\n *\n * This is a feature that didn't prove to be wildly useful or popular, primarily because of the\n * dichotomy between data access in templates (accessed as raw values) and controller code\n * (accessed as promises).\n *\n * In most code we ended up resolving promises manually in controllers anyway and thus unifying\n * the model access there.\n *\n * Other downsides of automatic promise unwrapping:\n *\n * - when building components it's often desirable to receive the raw promises\n * - adds complexity and slows down expression evaluation\n * - makes expression code pre-generation unattractive due to the amount of code that needs to be\n * generated\n * - makes IDE auto-completion and tool support hard\n *\n * **Warning Logs**\n *\n * If the unwrapping is enabled, Angular will log a warning about each expression that unwraps a\n * promise (to reduce the noise, each expression is logged only once). To disable this logging use\n * `$parseProvider.logPromiseWarnings(false)` api.\n *\n *\n * @param {boolean=} value New value.\n * @returns {boolean|self} Returns the current setting when used as getter and self if used as\n * setter.\n */\n this.unwrapPromises = function(value) {\n if (isDefined(value)) {\n $parseOptions.unwrapPromises = !!value;\n return this;\n } else {\n return $parseOptions.unwrapPromises;\n }\n };\n\n\n /**\n * @deprecated Promise unwrapping via $parse is deprecated and will be removed in the future.\n *\n * @ngdoc method\n * @name $parseProvider#logPromiseWarnings\n * @description\n *\n * Controls whether Angular should log a warning on any encounter of a promise in an expression.\n *\n * The default is set to `true`.\n *\n * This setting applies only if `$parseProvider.unwrapPromises` setting is set to true as well.\n *\n * @param {boolean=} value New value.\n * @returns {boolean|self} Returns the current setting when used as getter and self if used as\n * setter.\n */\n this.logPromiseWarnings = function(value) {\n if (isDefined(value)) {\n $parseOptions.logPromiseWarnings = value;\n return this;\n } else {\n return $parseOptions.logPromiseWarnings;\n }\n };\n\n\n this.$get = ['$filter', '$sniffer', '$log', function($filter, $sniffer, $log) {\n $parseOptions.csp = $sniffer.csp;\n var $parseOptionsExpensive = {\n csp: $parseOptions.csp,\n unwrapPromises: $parseOptions.unwrapPromises,\n logPromiseWarnings: $parseOptions.logPromiseWarnings,\n expensiveChecks: true\n };\n\n promiseWarning = function promiseWarningFn(fullExp) {\n if (!$parseOptions.logPromiseWarnings || promiseWarningCache.hasOwnProperty(fullExp)) return;\n promiseWarningCache[fullExp] = true;\n $log.warn('[$parse] Promise found in the expression `' + fullExp + '`. ' +\n 'Automatic unwrapping of promises in Angular expressions is deprecated.');\n };\n\n return function(exp, expensiveChecks) {\n var parsedExpression;\n\n switch (typeof exp) {\n case 'string':\n\n var cache = (expensiveChecks ? cacheExpensive : cacheDefault);\n if (cache.hasOwnProperty(exp)) {\n return cache[exp];\n }\n\n var parseOptions = expensiveChecks ? $parseOptionsExpensive : $parseOptions;\n var lexer = new Lexer(parseOptions);\n var parser = new Parser(lexer, $filter, parseOptions);\n parsedExpression = parser.parse(exp);\n\n if (exp !== 'hasOwnProperty') {\n // Only cache the value if it's not going to mess up the cache object\n // This is more performant that using Object.prototype.hasOwnProperty.call\n cache[exp] = parsedExpression;\n }\n\n return parsedExpression;\n\n case 'function':\n return exp;\n\n default:\n return noop;\n }\n };\n }];\n}\n\n/**\n * @ngdoc service\n * @name $q\n * @requires $rootScope\n *\n * @description\n * A service that helps you run functions asynchronously, and use their return values (or exceptions)\n * when they are done processing.\n *\n * This is an implementation of promises/deferred objects inspired by\n * [Kris Kowal's Q](https://github.com/kriskowal/q).\n *\n * [The CommonJS Promise proposal](http://wiki.commonjs.org/wiki/Promises) describes a promise as an\n * interface for interacting with an object that represents the result of an action that is\n * performed asynchronously, and may or may not be finished at any given point in time.\n *\n * From the perspective of dealing with error handling, deferred and promise APIs are to\n * asynchronous programming what `try`, `catch` and `throw` keywords are to synchronous programming.\n *\n * ```js\n * // for the purpose of this example let's assume that variables `$q`, `scope` and `okToGreet`\n * // are available in the current lexical scope (they could have been injected or passed in).\n *\n * function asyncGreet(name) {\n * var deferred = $q.defer();\n *\n * setTimeout(function() {\n * deferred.notify('About to greet ' + name + '.');\n *\n * if (okToGreet(name)) {\n * deferred.resolve('Hello, ' + name + '!');\n * } else {\n * deferred.reject('Greeting ' + name + ' is not allowed.');\n * }\n * }, 1000);\n *\n * return deferred.promise;\n * }\n *\n * var promise = asyncGreet('Robin Hood');\n * promise.then(function(greeting) {\n * alert('Success: ' + greeting);\n * }, function(reason) {\n * alert('Failed: ' + reason);\n * }, function(update) {\n * alert('Got notification: ' + update);\n * });\n * ```\n *\n * At first it might not be obvious why this extra complexity is worth the trouble. The payoff\n * comes in the way of guarantees that promise and deferred APIs make, see\n * https://github.com/kriskowal/uncommonjs/blob/master/promises/specification.md.\n *\n * Additionally the promise api allows for composition that is very hard to do with the\n * traditional callback ([CPS](http://en.wikipedia.org/wiki/Continuation-passing_style)) approach.\n * For more on this please see the [Q documentation](https://github.com/kriskowal/q) especially the\n * section on serial or parallel joining of promises.\n *\n *\n * # The Deferred API\n *\n * A new instance of deferred is constructed by calling `$q.defer()`.\n *\n * The purpose of the deferred object is to expose the associated Promise instance as well as APIs\n * that can be used for signaling the successful or unsuccessful completion, as well as the status\n * of the task.\n *\n * **Methods**\n *\n * - `resolve(value)` – resolves the derived promise with the `value`. If the value is a rejection\n * constructed via `$q.reject`, the promise will be rejected instead.\n * - `reject(reason)` – rejects the derived promise with the `reason`. This is equivalent to\n * resolving it with a rejection constructed via `$q.reject`.\n * - `notify(value)` - provides updates on the status of the promise's execution. This may be called\n * multiple times before the promise is either resolved or rejected.\n *\n * **Properties**\n *\n * - promise – `{Promise}` – promise object associated with this deferred.\n *\n *\n * # The Promise API\n *\n * A new promise instance is created when a deferred instance is created and can be retrieved by\n * calling `deferred.promise`.\n *\n * The purpose of the promise object is to allow for interested parties to get access to the result\n * of the deferred task when it completes.\n *\n * **Methods**\n *\n * - `then(successCallback, errorCallback, notifyCallback)` – regardless of when the promise was or\n * will be resolved or rejected, `then` calls one of the success or error callbacks asynchronously\n * as soon as the result is available. The callbacks are called with a single argument: the result\n * or rejection reason. Additionally, the notify callback may be called zero or more times to\n * provide a progress indication, before the promise is resolved or rejected.\n *\n * This method *returns a new promise* which is resolved or rejected via the return value of the\n * `successCallback`, `errorCallback`. It also notifies via the return value of the\n * `notifyCallback` method. The promise can not be resolved or rejected from the notifyCallback\n * method.\n *\n * - `catch(errorCallback)` – shorthand for `promise.then(null, errorCallback)`\n *\n * Because `catch` is a reserved word in JavaScript and reserved keywords are not supported as\n * property names by ES3, you'll need to invoke the method like `promise['catch'](callback)` or\n * `promise.then(null, errorCallback)` to make your code IE8 and Android 2.x compatible.\n *\n * - `finally(callback)` – allows you to observe either the fulfillment or rejection of a promise,\n * but to do so without modifying the final value. This is useful to release resources or do some\n * clean-up that needs to be done whether the promise was rejected or resolved. See the [full\n * specification](https://github.com/kriskowal/q/wiki/API-Reference#promisefinallycallback) for\n * more information.\n *\n * Because `finally` is a reserved word in JavaScript and reserved keywords are not supported as\n * property names by ES3, you'll need to invoke the method like `promise['finally'](callback)` to\n * make your code IE8 and Android 2.x compatible.\n *\n * # Chaining promises\n *\n * Because calling the `then` method of a promise returns a new derived promise, it is easily\n * possible to create a chain of promises:\n *\n * ```js\n * promiseB = promiseA.then(function(result) {\n * return result + 1;\n * });\n *\n * // promiseB will be resolved immediately after promiseA is resolved and its value\n * // will be the result of promiseA incremented by 1\n * ```\n *\n * It is possible to create chains of any length and since a promise can be resolved with another\n * promise (which will defer its resolution further), it is possible to pause/defer resolution of\n * the promises at any point in the chain. This makes it possible to implement powerful APIs like\n * $http's response interceptors.\n *\n *\n * # Differences between Kris Kowal's Q and $q\n *\n * There are two main differences:\n *\n * - $q is integrated with the {@link ng.$rootScope.Scope} Scope model observation\n * mechanism in angular, which means faster propagation of resolution or rejection into your\n * models and avoiding unnecessary browser repaints, which would result in flickering UI.\n * - Q has many more features than $q, but that comes at a cost of bytes. $q is tiny, but contains\n * all the important functionality needed for common async tasks.\n *\n * # Testing\n *\n * ```js\n * it('should simulate promise', inject(function($q, $rootScope) {\n * var deferred = $q.defer();\n * var promise = deferred.promise;\n * var resolvedValue;\n *\n * promise.then(function(value) { resolvedValue = value; });\n * expect(resolvedValue).toBeUndefined();\n *\n * // Simulate resolving of promise\n * deferred.resolve(123);\n * // Note that the 'then' function does not get called synchronously.\n * // This is because we want the promise API to always be async, whether or not\n * // it got called synchronously or asynchronously.\n * expect(resolvedValue).toBeUndefined();\n *\n * // Propagate promise resolution to 'then' functions using $apply().\n * $rootScope.$apply();\n * expect(resolvedValue).toEqual(123);\n * }));\n * ```\n */\nfunction $QProvider() {\n\n this.$get = ['$rootScope', '$exceptionHandler', function($rootScope, $exceptionHandler) {\n return qFactory(function(callback) {\n $rootScope.$evalAsync(callback);\n }, $exceptionHandler);\n }];\n}\n\n\n/**\n * Constructs a promise manager.\n *\n * @param {function(Function)} nextTick Function for executing functions in the next turn.\n * @param {function(...*)} exceptionHandler Function into which unexpected exceptions are passed for\n * debugging purposes.\n * @returns {object} Promise manager.\n */\nfunction qFactory(nextTick, exceptionHandler) {\n\n /**\n * @ngdoc method\n * @name $q#defer\n * @kind function\n *\n * @description\n * Creates a `Deferred` object which represents a task which will finish in the future.\n *\n * @returns {Deferred} Returns a new instance of deferred.\n */\n var defer = function() {\n var pending = [],\n value, deferred;\n\n deferred = {\n\n resolve: function(val) {\n if (pending) {\n var callbacks = pending;\n pending = undefined;\n value = ref(val);\n\n if (callbacks.length) {\n nextTick(function() {\n var callback;\n for (var i = 0, ii = callbacks.length; i < ii; i++) {\n callback = callbacks[i];\n value.then(callback[0], callback[1], callback[2]);\n }\n });\n }\n }\n },\n\n\n reject: function(reason) {\n deferred.resolve(createInternalRejectedPromise(reason));\n },\n\n\n notify: function(progress) {\n if (pending) {\n var callbacks = pending;\n\n if (pending.length) {\n nextTick(function() {\n var callback;\n for (var i = 0, ii = callbacks.length; i < ii; i++) {\n callback = callbacks[i];\n callback[2](progress);\n }\n });\n }\n }\n },\n\n\n promise: {\n then: function(callback, errback, progressback) {\n var result = defer();\n\n var wrappedCallback = function(value) {\n try {\n result.resolve((isFunction(callback) ? callback : defaultCallback)(value));\n } catch(e) {\n result.reject(e);\n exceptionHandler(e);\n }\n };\n\n var wrappedErrback = function(reason) {\n try {\n result.resolve((isFunction(errback) ? errback : defaultErrback)(reason));\n } catch(e) {\n result.reject(e);\n exceptionHandler(e);\n }\n };\n\n var wrappedProgressback = function(progress) {\n try {\n result.notify((isFunction(progressback) ? progressback : defaultCallback)(progress));\n } catch(e) {\n exceptionHandler(e);\n }\n };\n\n if (pending) {\n pending.push([wrappedCallback, wrappedErrback, wrappedProgressback]);\n } else {\n value.then(wrappedCallback, wrappedErrback, wrappedProgressback);\n }\n\n return result.promise;\n },\n\n \"catch\": function(callback) {\n return this.then(null, callback);\n },\n\n \"finally\": function(callback) {\n\n function makePromise(value, resolved) {\n var result = defer();\n if (resolved) {\n result.resolve(value);\n } else {\n result.reject(value);\n }\n return result.promise;\n }\n\n function handleCallback(value, isResolved) {\n var callbackOutput = null;\n try {\n callbackOutput = (callback ||defaultCallback)();\n } catch(e) {\n return makePromise(e, false);\n }\n if (isPromiseLike(callbackOutput)) {\n return callbackOutput.then(function() {\n return makePromise(value, isResolved);\n }, function(error) {\n return makePromise(error, false);\n });\n } else {\n return makePromise(value, isResolved);\n }\n }\n\n return this.then(function(value) {\n return handleCallback(value, true);\n }, function(error) {\n return handleCallback(error, false);\n });\n }\n }\n };\n\n return deferred;\n };\n\n\n var ref = function(value) {\n if (isPromiseLike(value)) return value;\n return {\n then: function(callback) {\n var result = defer();\n nextTick(function() {\n result.resolve(callback(value));\n });\n return result.promise;\n }\n };\n };\n\n\n /**\n * @ngdoc method\n * @name $q#reject\n * @kind function\n *\n * @description\n * Creates a promise that is resolved as rejected with the specified `reason`. This api should be\n * used to forward rejection in a chain of promises. If you are dealing with the last promise in\n * a promise chain, you don't need to worry about it.\n *\n * When comparing deferreds/promises to the familiar behavior of try/catch/throw, think of\n * `reject` as the `throw` keyword in JavaScript. This also means that if you \"catch\" an error via\n * a promise error callback and you want to forward the error to the promise derived from the\n * current promise, you have to \"rethrow\" the error by returning a rejection constructed via\n * `reject`.\n *\n * ```js\n * promiseB = promiseA.then(function(result) {\n * // success: do something and resolve promiseB\n * // with the old or a new result\n * return result;\n * }, function(reason) {\n * // error: handle the error if possible and\n * // resolve promiseB with newPromiseOrValue,\n * // otherwise forward the rejection to promiseB\n * if (canHandle(reason)) {\n * // handle the error and recover\n * return newPromiseOrValue;\n * }\n * return $q.reject(reason);\n * });\n * ```\n *\n * @param {*} reason Constant, message, exception or an object representing the rejection reason.\n * @returns {Promise} Returns a promise that was already resolved as rejected with the `reason`.\n */\n var reject = function(reason) {\n var result = defer();\n result.reject(reason);\n return result.promise;\n };\n\n var createInternalRejectedPromise = function(reason) {\n return {\n then: function(callback, errback) {\n var result = defer();\n nextTick(function() {\n try {\n result.resolve((isFunction(errback) ? errback : defaultErrback)(reason));\n } catch(e) {\n result.reject(e);\n exceptionHandler(e);\n }\n });\n return result.promise;\n }\n };\n };\n\n\n /**\n * @ngdoc method\n * @name $q#when\n * @kind function\n *\n * @description\n * Wraps an object that might be a value or a (3rd party) then-able promise into a $q promise.\n * This is useful when you are dealing with an object that might or might not be a promise, or if\n * the promise comes from a source that can't be trusted.\n *\n * @param {*} value Value or a promise\n * @returns {Promise} Returns a promise of the passed value or promise\n */\n var when = function(value, callback, errback, progressback) {\n var result = defer(),\n done;\n\n var wrappedCallback = function(value) {\n try {\n return (isFunction(callback) ? callback : defaultCallback)(value);\n } catch (e) {\n exceptionHandler(e);\n return reject(e);\n }\n };\n\n var wrappedErrback = function(reason) {\n try {\n return (isFunction(errback) ? errback : defaultErrback)(reason);\n } catch (e) {\n exceptionHandler(e);\n return reject(e);\n }\n };\n\n var wrappedProgressback = function(progress) {\n try {\n return (isFunction(progressback) ? progressback : defaultCallback)(progress);\n } catch (e) {\n exceptionHandler(e);\n }\n };\n\n nextTick(function() {\n ref(value).then(function(value) {\n if (done) return;\n done = true;\n result.resolve(ref(value).then(wrappedCallback, wrappedErrback, wrappedProgressback));\n }, function(reason) {\n if (done) return;\n done = true;\n result.resolve(wrappedErrback(reason));\n }, function(progress) {\n if (done) return;\n result.notify(wrappedProgressback(progress));\n });\n });\n\n return result.promise;\n };\n\n\n function defaultCallback(value) {\n return value;\n }\n\n\n function defaultErrback(reason) {\n return reject(reason);\n }\n\n\n /**\n * @ngdoc method\n * @name $q#all\n * @kind function\n *\n * @description\n * Combines multiple promises into a single promise that is resolved when all of the input\n * promises are resolved.\n *\n * @param {Array.|Object.} promises An array or hash of promises.\n * @returns {Promise} Returns a single promise that will be resolved with an array/hash of values,\n * each value corresponding to the promise at the same index/key in the `promises` array/hash.\n * If any of the promises is resolved with a rejection, this resulting promise will be rejected\n * with the same rejection value.\n */\n function all(promises) {\n var deferred = defer(),\n counter = 0,\n results = isArray(promises) ? [] : {};\n\n forEach(promises, function(promise, key) {\n counter++;\n ref(promise).then(function(value) {\n if (results.hasOwnProperty(key)) return;\n results[key] = value;\n if (!(--counter)) deferred.resolve(results);\n }, function(reason) {\n if (results.hasOwnProperty(key)) return;\n deferred.reject(reason);\n });\n });\n\n if (counter === 0) {\n deferred.resolve(results);\n }\n\n return deferred.promise;\n }\n\n return {\n defer: defer,\n reject: reject,\n when: when,\n all: all\n };\n}\n\nfunction $$RAFProvider(){ //rAF\n this.$get = ['$window', '$timeout', function($window, $timeout) {\n var requestAnimationFrame = $window.requestAnimationFrame ||\n $window.webkitRequestAnimationFrame ||\n $window.mozRequestAnimationFrame;\n\n var cancelAnimationFrame = $window.cancelAnimationFrame ||\n $window.webkitCancelAnimationFrame ||\n $window.mozCancelAnimationFrame ||\n $window.webkitCancelRequestAnimationFrame;\n\n var rafSupported = !!requestAnimationFrame;\n var raf = rafSupported\n ? function(fn) {\n var id = requestAnimationFrame(fn);\n return function() {\n cancelAnimationFrame(id);\n };\n }\n : function(fn) {\n var timer = $timeout(fn, 16.66, false); // 1000 / 60 = 16.666\n return function() {\n $timeout.cancel(timer);\n };\n };\n\n raf.supported = rafSupported;\n\n return raf;\n }];\n}\n\n/**\n * DESIGN NOTES\n *\n * The design decisions behind the scope are heavily favored for speed and memory consumption.\n *\n * The typical use of scope is to watch the expressions, which most of the time return the same\n * value as last time so we optimize the operation.\n *\n * Closures construction is expensive in terms of speed as well as memory:\n * - No closures, instead use prototypical inheritance for API\n * - Internal state needs to be stored on scope directly, which means that private state is\n * exposed as $$____ properties\n *\n * Loop operations are optimized by using while(count--) { ... }\n * - this means that in order to keep the same order of execution as addition we have to add\n * items to the array at the beginning (unshift) instead of at the end (push)\n *\n * Child scopes are created and removed often\n * - Using an array would be slow since inserts in middle are expensive so we use linked list\n *\n * There are few watches then a lot of observers. This is why you don't want the observer to be\n * implemented in the same way as watch. Watch requires return of initialization function which\n * are expensive to construct.\n */\n\n\n/**\n * @ngdoc provider\n * @name $rootScopeProvider\n * @description\n *\n * Provider for the $rootScope service.\n */\n\n/**\n * @ngdoc method\n * @name $rootScopeProvider#digestTtl\n * @description\n *\n * Sets the number of `$digest` iterations the scope should attempt to execute before giving up and\n * assuming that the model is unstable.\n *\n * The current default is 10 iterations.\n *\n * In complex applications it's possible that the dependencies between `$watch`s will result in\n * several digest iterations. However if an application needs more than the default 10 digest\n * iterations for its model to stabilize then you should investigate what is causing the model to\n * continuously change during the digest.\n *\n * Increasing the TTL could have performance implications, so you should not change it without\n * proper justification.\n *\n * @param {number} limit The number of digest iterations.\n */\n\n\n/**\n * @ngdoc service\n * @name $rootScope\n * @description\n *\n * Every application has a single root {@link ng.$rootScope.Scope scope}.\n * All other scopes are descendant scopes of the root scope. Scopes provide separation\n * between the model and the view, via a mechanism for watching the model for changes.\n * They also provide an event emission/broadcast and subscription facility. See the\n * {@link guide/scope developer guide on scopes}.\n */\nfunction $RootScopeProvider(){\n var TTL = 10;\n var $rootScopeMinErr = minErr('$rootScope');\n var lastDirtyWatch = null;\n\n this.digestTtl = function(value) {\n if (arguments.length) {\n TTL = value;\n }\n return TTL;\n };\n\n this.$get = ['$injector', '$exceptionHandler', '$parse', '$browser',\n function( $injector, $exceptionHandler, $parse, $browser) {\n\n /**\n * @ngdoc type\n * @name $rootScope.Scope\n *\n * @description\n * A root scope can be retrieved using the {@link ng.$rootScope $rootScope} key from the\n * {@link auto.$injector $injector}. Child scopes are created using the\n * {@link ng.$rootScope.Scope#$new $new()} method. (Most scopes are created automatically when\n * compiled HTML template is executed.)\n *\n * Here is a simple scope snippet to show how you can interact with the scope.\n * ```html\n * \n * ```\n *\n * # Inheritance\n * A scope can inherit from a parent scope, as in this example:\n * ```js\n var parent = $rootScope;\n var child = parent.$new();\n\n parent.salutation = \"Hello\";\n child.name = \"World\";\n expect(child.salutation).toEqual('Hello');\n\n child.salutation = \"Welcome\";\n expect(child.salutation).toEqual('Welcome');\n expect(parent.salutation).toEqual('Hello');\n * ```\n *\n *\n * @param {Object.=} providers Map of service factory which need to be\n * provided for the current scope. Defaults to {@link ng}.\n * @param {Object.=} instanceCache Provides pre-instantiated services which should\n * append/override services provided by `providers`. This is handy\n * when unit-testing and having the need to override a default\n * service.\n * @returns {Object} Newly created scope.\n *\n */\n function Scope() {\n this.$id = nextUid();\n this.$$phase = this.$parent = this.$$watchers =\n this.$$nextSibling = this.$$prevSibling =\n this.$$childHead = this.$$childTail = null;\n this['this'] = this.$root = this;\n this.$$destroyed = false;\n this.$$asyncQueue = [];\n this.$$postDigestQueue = [];\n this.$$listeners = {};\n this.$$listenerCount = {};\n this.$$isolateBindings = {};\n }\n\n /**\n * @ngdoc property\n * @name $rootScope.Scope#$id\n *\n * @description\n * Unique scope ID (monotonically increasing) useful for debugging.\n */\n\n /**\n * @ngdoc property\n * @name $rootScope.Scope#$parent\n *\n * @description\n * Reference to the parent scope.\n */\n\n /**\n * @ngdoc property\n * @name $rootScope.Scope#$root\n *\n * @description\n * Reference to the root scope.\n */\n\n Scope.prototype = {\n constructor: Scope,\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$new\n * @kind function\n *\n * @description\n * Creates a new child {@link ng.$rootScope.Scope scope}.\n *\n * The parent scope will propagate the {@link ng.$rootScope.Scope#$digest $digest()} event.\n * The scope can be removed from the scope hierarchy using {@link ng.$rootScope.Scope#$destroy $destroy()}.\n *\n * {@link ng.$rootScope.Scope#$destroy $destroy()} must be called on a scope when it is\n * desired for the scope and its child scopes to be permanently detached from the parent and\n * thus stop participating in model change detection and listener notification by invoking.\n *\n * @param {boolean} isolate If true, then the scope does not prototypically inherit from the\n * parent scope. The scope is isolated, as it can not see parent scope properties.\n * When creating widgets, it is useful for the widget to not accidentally read parent\n * state.\n *\n * @returns {Object} The newly created child scope.\n *\n */\n $new: function(isolate) {\n var ChildScope,\n child;\n\n if (isolate) {\n child = new Scope();\n child.$root = this.$root;\n // ensure that there is just one async queue per $rootScope and its children\n child.$$asyncQueue = this.$$asyncQueue;\n child.$$postDigestQueue = this.$$postDigestQueue;\n } else {\n // Only create a child scope class if somebody asks for one,\n // but cache it to allow the VM to optimize lookups.\n if (!this.$$childScopeClass) {\n this.$$childScopeClass = function() {\n this.$$watchers = this.$$nextSibling =\n this.$$childHead = this.$$childTail = null;\n this.$$listeners = {};\n this.$$listenerCount = {};\n this.$id = nextUid();\n this.$$childScopeClass = null;\n };\n this.$$childScopeClass.prototype = this;\n }\n child = new this.$$childScopeClass();\n }\n child['this'] = child;\n child.$parent = this;\n child.$$prevSibling = this.$$childTail;\n if (this.$$childHead) {\n this.$$childTail.$$nextSibling = child;\n this.$$childTail = child;\n } else {\n this.$$childHead = this.$$childTail = child;\n }\n return child;\n },\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$watch\n * @kind function\n *\n * @description\n * Registers a `listener` callback to be executed whenever the `watchExpression` changes.\n *\n * - The `watchExpression` is called on every call to {@link ng.$rootScope.Scope#$digest\n * $digest()} and should return the value that will be watched. (Since\n * {@link ng.$rootScope.Scope#$digest $digest()} reruns when it detects changes the\n * `watchExpression` can execute multiple times per\n * {@link ng.$rootScope.Scope#$digest $digest()} and should be idempotent.)\n * - The `listener` is called only when the value from the current `watchExpression` and the\n * previous call to `watchExpression` are not equal (with the exception of the initial run,\n * see below). Inequality is determined according to reference inequality,\n * [strict comparison](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators)\n * via the `!==` Javascript operator, unless `objectEquality == true`\n * (see next point)\n * - When `objectEquality == true`, inequality of the `watchExpression` is determined\n * according to the {@link angular.equals} function. To save the value of the object for\n * later comparison, the {@link angular.copy} function is used. This therefore means that\n * watching complex objects will have adverse memory and performance implications.\n * - The watch `listener` may change the model, which may trigger other `listener`s to fire.\n * This is achieved by rerunning the watchers until no changes are detected. The rerun\n * iteration limit is 10 to prevent an infinite loop deadlock.\n *\n *\n * If you want to be notified whenever {@link ng.$rootScope.Scope#$digest $digest} is called,\n * you can register a `watchExpression` function with no `listener`. (Since `watchExpression`\n * can execute multiple times per {@link ng.$rootScope.Scope#$digest $digest} cycle when a\n * change is detected, be prepared for multiple calls to your listener.)\n *\n * After a watcher is registered with the scope, the `listener` fn is called asynchronously\n * (via {@link ng.$rootScope.Scope#$evalAsync $evalAsync}) to initialize the\n * watcher. In rare cases, this is undesirable because the listener is called when the result\n * of `watchExpression` didn't change. To detect this scenario within the `listener` fn, you\n * can compare the `newVal` and `oldVal`. If these two values are identical (`===`) then the\n * listener was called due to initialization.\n *\n * The example below contains an illustration of using a function as your $watch listener\n *\n *\n * # Example\n * ```js\n // let's assume that scope was dependency injected as the $rootScope\n var scope = $rootScope;\n scope.name = 'misko';\n scope.counter = 0;\n\n expect(scope.counter).toEqual(0);\n scope.$watch('name', function(newValue, oldValue) {\n scope.counter = scope.counter + 1;\n });\n expect(scope.counter).toEqual(0);\n\n scope.$digest();\n // the listener is always called during the first $digest loop after it was registered\n expect(scope.counter).toEqual(1);\n\n scope.$digest();\n // but now it will not be called unless the value changes\n expect(scope.counter).toEqual(1);\n\n scope.name = 'adam';\n scope.$digest();\n expect(scope.counter).toEqual(2);\n\n\n\n // Using a listener function\n var food;\n scope.foodCounter = 0;\n expect(scope.foodCounter).toEqual(0);\n scope.$watch(\n // This is the listener function\n function() { return food; },\n // This is the change handler\n function(newValue, oldValue) {\n if ( newValue !== oldValue ) {\n // Only increment the counter if the value changed\n scope.foodCounter = scope.foodCounter + 1;\n }\n }\n );\n // No digest has been run so the counter will be zero\n expect(scope.foodCounter).toEqual(0);\n\n // Run the digest but since food has not changed count will still be zero\n scope.$digest();\n expect(scope.foodCounter).toEqual(0);\n\n // Update food and run digest. Now the counter will increment\n food = 'cheeseburger';\n scope.$digest();\n expect(scope.foodCounter).toEqual(1);\n\n * ```\n *\n *\n *\n * @param {(function()|string)} watchExpression Expression that is evaluated on each\n * {@link ng.$rootScope.Scope#$digest $digest} cycle. A change in the return value triggers\n * a call to the `listener`.\n *\n * - `string`: Evaluated as {@link guide/expression expression}\n * - `function(scope)`: called with current `scope` as a parameter.\n * @param {(function()|string)=} listener Callback called whenever the return value of\n * the `watchExpression` changes.\n *\n * - `string`: Evaluated as {@link guide/expression expression}\n * - `function(newValue, oldValue, scope)`: called with current and previous values as\n * parameters.\n *\n * @param {boolean=} objectEquality Compare for object equality using {@link angular.equals} instead of\n * comparing for reference equality.\n * @returns {function()} Returns a deregistration function for this listener.\n */\n $watch: function(watchExp, listener, objectEquality) {\n var scope = this,\n get = compileToFn(watchExp, 'watch'),\n array = scope.$$watchers,\n watcher = {\n fn: listener,\n last: initWatchVal,\n get: get,\n exp: watchExp,\n eq: !!objectEquality\n };\n\n lastDirtyWatch = null;\n\n // in the case user pass string, we need to compile it, do we really need this ?\n if (!isFunction(listener)) {\n var listenFn = compileToFn(listener || noop, 'listener');\n watcher.fn = function(newVal, oldVal, scope) {listenFn(scope);};\n }\n\n if (typeof watchExp == 'string' && get.constant) {\n var originalFn = watcher.fn;\n watcher.fn = function(newVal, oldVal, scope) {\n originalFn.call(this, newVal, oldVal, scope);\n arrayRemove(array, watcher);\n };\n }\n\n if (!array) {\n array = scope.$$watchers = [];\n }\n // we use unshift since we use a while loop in $digest for speed.\n // the while loop reads in reverse order.\n array.unshift(watcher);\n\n return function deregisterWatch() {\n arrayRemove(array, watcher);\n lastDirtyWatch = null;\n };\n },\n\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$watchCollection\n * @kind function\n *\n * @description\n * Shallow watches the properties of an object and fires whenever any of the properties change\n * (for arrays, this implies watching the array items; for object maps, this implies watching\n * the properties). If a change is detected, the `listener` callback is fired.\n *\n * - The `obj` collection is observed via standard $watch operation and is examined on every\n * call to $digest() to see if any items have been added, removed, or moved.\n * - The `listener` is called whenever anything within the `obj` has changed. Examples include\n * adding, removing, and moving items belonging to an object or array.\n *\n *\n * # Example\n * ```js\n $scope.names = ['igor', 'matias', 'misko', 'james'];\n $scope.dataCount = 4;\n\n $scope.$watchCollection('names', function(newNames, oldNames) {\n $scope.dataCount = newNames.length;\n });\n\n expect($scope.dataCount).toEqual(4);\n $scope.$digest();\n\n //still at 4 ... no changes\n expect($scope.dataCount).toEqual(4);\n\n $scope.names.pop();\n $scope.$digest();\n\n //now there's been a change\n expect($scope.dataCount).toEqual(3);\n * ```\n *\n *\n * @param {string|function(scope)} obj Evaluated as {@link guide/expression expression}. The\n * expression value should evaluate to an object or an array which is observed on each\n * {@link ng.$rootScope.Scope#$digest $digest} cycle. Any shallow change within the\n * collection will trigger a call to the `listener`.\n *\n * @param {function(newCollection, oldCollection, scope)} listener a callback function called\n * when a change is detected.\n * - The `newCollection` object is the newly modified data obtained from the `obj` expression\n * - The `oldCollection` object is a copy of the former collection data.\n * Due to performance considerations, the`oldCollection` value is computed only if the\n * `listener` function declares two or more arguments.\n * - The `scope` argument refers to the current scope.\n *\n * @returns {function()} Returns a de-registration function for this listener. When the\n * de-registration function is executed, the internal watch operation is terminated.\n */\n $watchCollection: function(obj, listener) {\n var self = this;\n // the current value, updated on each dirty-check run\n var newValue;\n // a shallow copy of the newValue from the last dirty-check run,\n // updated to match newValue during dirty-check run\n var oldValue;\n // a shallow copy of the newValue from when the last change happened\n var veryOldValue;\n // only track veryOldValue if the listener is asking for it\n var trackVeryOldValue = (listener.length > 1);\n var changeDetected = 0;\n var objGetter = $parse(obj);\n var internalArray = [];\n var internalObject = {};\n var initRun = true;\n var oldLength = 0;\n\n function $watchCollectionWatch() {\n newValue = objGetter(self);\n var newLength, key, bothNaN;\n\n if (!isObject(newValue)) { // if primitive\n if (oldValue !== newValue) {\n oldValue = newValue;\n changeDetected++;\n }\n } else if (isArrayLike(newValue)) {\n if (oldValue !== internalArray) {\n // we are transitioning from something which was not an array into array.\n oldValue = internalArray;\n oldLength = oldValue.length = 0;\n changeDetected++;\n }\n\n newLength = newValue.length;\n\n if (oldLength !== newLength) {\n // if lengths do not match we need to trigger change notification\n changeDetected++;\n oldValue.length = oldLength = newLength;\n }\n // copy the items to oldValue and look for changes.\n for (var i = 0; i < newLength; i++) {\n bothNaN = (oldValue[i] !== oldValue[i]) &&\n (newValue[i] !== newValue[i]);\n if (!bothNaN && (oldValue[i] !== newValue[i])) {\n changeDetected++;\n oldValue[i] = newValue[i];\n }\n }\n } else {\n if (oldValue !== internalObject) {\n // we are transitioning from something which was not an object into object.\n oldValue = internalObject = {};\n oldLength = 0;\n changeDetected++;\n }\n // copy the items to oldValue and look for changes.\n newLength = 0;\n for (key in newValue) {\n if (newValue.hasOwnProperty(key)) {\n newLength++;\n if (oldValue.hasOwnProperty(key)) {\n bothNaN = (oldValue[key] !== oldValue[key]) &&\n (newValue[key] !== newValue[key]);\n if (!bothNaN && (oldValue[key] !== newValue[key])) {\n changeDetected++;\n oldValue[key] = newValue[key];\n }\n } else {\n oldLength++;\n oldValue[key] = newValue[key];\n changeDetected++;\n }\n }\n }\n if (oldLength > newLength) {\n // we used to have more keys, need to find them and destroy them.\n changeDetected++;\n for(key in oldValue) {\n if (oldValue.hasOwnProperty(key) && !newValue.hasOwnProperty(key)) {\n oldLength--;\n delete oldValue[key];\n }\n }\n }\n }\n return changeDetected;\n }\n\n function $watchCollectionAction() {\n if (initRun) {\n initRun = false;\n listener(newValue, newValue, self);\n } else {\n listener(newValue, veryOldValue, self);\n }\n\n // make a copy for the next time a collection is changed\n if (trackVeryOldValue) {\n if (!isObject(newValue)) {\n //primitive\n veryOldValue = newValue;\n } else if (isArrayLike(newValue)) {\n veryOldValue = new Array(newValue.length);\n for (var i = 0; i < newValue.length; i++) {\n veryOldValue[i] = newValue[i];\n }\n } else { // if object\n veryOldValue = {};\n for (var key in newValue) {\n if (hasOwnProperty.call(newValue, key)) {\n veryOldValue[key] = newValue[key];\n }\n }\n }\n }\n }\n\n return this.$watch($watchCollectionWatch, $watchCollectionAction);\n },\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$digest\n * @kind function\n *\n * @description\n * Processes all of the {@link ng.$rootScope.Scope#$watch watchers} of the current scope and\n * its children. Because a {@link ng.$rootScope.Scope#$watch watcher}'s listener can change\n * the model, the `$digest()` keeps calling the {@link ng.$rootScope.Scope#$watch watchers}\n * until no more listeners are firing. This means that it is possible to get into an infinite\n * loop. This function will throw `'Maximum iteration limit exceeded.'` if the number of\n * iterations exceeds 10.\n *\n * Usually, you don't call `$digest()` directly in\n * {@link ng.directive:ngController controllers} or in\n * {@link ng.$compileProvider#directive directives}.\n * Instead, you should call {@link ng.$rootScope.Scope#$apply $apply()} (typically from within\n * a {@link ng.$compileProvider#directive directives}), which will force a `$digest()`.\n *\n * If you want to be notified whenever `$digest()` is called,\n * you can register a `watchExpression` function with\n * {@link ng.$rootScope.Scope#$watch $watch()} with no `listener`.\n *\n * In unit tests, you may need to call `$digest()` to simulate the scope life cycle.\n *\n * # Example\n * ```js\n var scope = ...;\n scope.name = 'misko';\n scope.counter = 0;\n\n expect(scope.counter).toEqual(0);\n scope.$watch('name', function(newValue, oldValue) {\n scope.counter = scope.counter + 1;\n });\n expect(scope.counter).toEqual(0);\n\n scope.$digest();\n // the listener is always called during the first $digest loop after it was registered\n expect(scope.counter).toEqual(1);\n\n scope.$digest();\n // but now it will not be called unless the value changes\n expect(scope.counter).toEqual(1);\n\n scope.name = 'adam';\n scope.$digest();\n expect(scope.counter).toEqual(2);\n * ```\n *\n */\n $digest: function() {\n var watch, value, last,\n watchers,\n asyncQueue = this.$$asyncQueue,\n postDigestQueue = this.$$postDigestQueue,\n length,\n dirty, ttl = TTL,\n next, current, target = this,\n watchLog = [],\n logIdx, logMsg, asyncTask;\n\n beginPhase('$digest');\n // Check for changes to browser url that happened in sync before the call to $digest\n $browser.$$checkUrlChange();\n\n lastDirtyWatch = null;\n\n do { // \"while dirty\" loop\n dirty = false;\n current = target;\n\n while(asyncQueue.length) {\n try {\n asyncTask = asyncQueue.shift();\n asyncTask.scope.$eval(asyncTask.expression);\n } catch (e) {\n clearPhase();\n $exceptionHandler(e);\n }\n lastDirtyWatch = null;\n }\n\n traverseScopesLoop:\n do { // \"traverse the scopes\" loop\n if ((watchers = current.$$watchers)) {\n // process our watches\n length = watchers.length;\n while (length--) {\n try {\n watch = watchers[length];\n // Most common watches are on primitives, in which case we can short\n // circuit it with === operator, only when === fails do we use .equals\n if (watch) {\n if ((value = watch.get(current)) !== (last = watch.last) &&\n !(watch.eq\n ? equals(value, last)\n : (typeof value === 'number' && typeof last === 'number'\n && isNaN(value) && isNaN(last)))) {\n dirty = true;\n lastDirtyWatch = watch;\n watch.last = watch.eq ? copy(value, null) : value;\n watch.fn(value, ((last === initWatchVal) ? value : last), current);\n if (ttl < 5) {\n logIdx = 4 - ttl;\n if (!watchLog[logIdx]) watchLog[logIdx] = [];\n logMsg = (isFunction(watch.exp))\n ? 'fn: ' + (watch.exp.name || watch.exp.toString())\n : watch.exp;\n logMsg += '; newVal: ' + toJson(value) + '; oldVal: ' + toJson(last);\n watchLog[logIdx].push(logMsg);\n }\n } else if (watch === lastDirtyWatch) {\n // If the most recently dirty watcher is now clean, short circuit since the remaining watchers\n // have already been tested.\n dirty = false;\n break traverseScopesLoop;\n }\n }\n } catch (e) {\n clearPhase();\n $exceptionHandler(e);\n }\n }\n }\n\n // Insanity Warning: scope depth-first traversal\n // yes, this code is a bit crazy, but it works and we have tests to prove it!\n // this piece should be kept in sync with the traversal in $broadcast\n if (!(next = (current.$$childHead ||\n (current !== target && current.$$nextSibling)))) {\n while(current !== target && !(next = current.$$nextSibling)) {\n current = current.$parent;\n }\n }\n } while ((current = next));\n\n // `break traverseScopesLoop;` takes us to here\n\n if((dirty || asyncQueue.length) && !(ttl--)) {\n clearPhase();\n throw $rootScopeMinErr('infdig',\n '{0} $digest() iterations reached. Aborting!\\n' +\n 'Watchers fired in the last 5 iterations: {1}',\n TTL, toJson(watchLog));\n }\n\n } while (dirty || asyncQueue.length);\n\n clearPhase();\n\n while(postDigestQueue.length) {\n try {\n postDigestQueue.shift()();\n } catch (e) {\n $exceptionHandler(e);\n }\n }\n },\n\n\n /**\n * @ngdoc event\n * @name $rootScope.Scope#$destroy\n * @eventType broadcast on scope being destroyed\n *\n * @description\n * Broadcasted when a scope and its children are being destroyed.\n *\n * Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to\n * clean up DOM bindings before an element is removed from the DOM.\n */\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$destroy\n * @kind function\n *\n * @description\n * Removes the current scope (and all of its children) from the parent scope. Removal implies\n * that calls to {@link ng.$rootScope.Scope#$digest $digest()} will no longer\n * propagate to the current scope and its children. Removal also implies that the current\n * scope is eligible for garbage collection.\n *\n * The `$destroy()` is usually used by directives such as\n * {@link ng.directive:ngRepeat ngRepeat} for managing the\n * unrolling of the loop.\n *\n * Just before a scope is destroyed, a `$destroy` event is broadcasted on this scope.\n * Application code can register a `$destroy` event handler that will give it a chance to\n * perform any necessary cleanup.\n *\n * Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to\n * clean up DOM bindings before an element is removed from the DOM.\n */\n $destroy: function() {\n // we can't destroy the root scope or a scope that has been already destroyed\n if (this.$$destroyed) return;\n var parent = this.$parent;\n\n this.$broadcast('$destroy');\n this.$$destroyed = true;\n if (this === $rootScope) return;\n\n forEach(this.$$listenerCount, bind(null, decrementListenerCount, this));\n\n // sever all the references to parent scopes (after this cleanup, the current scope should\n // not be retained by any of our references and should be eligible for garbage collection)\n if (parent.$$childHead == this) parent.$$childHead = this.$$nextSibling;\n if (parent.$$childTail == this) parent.$$childTail = this.$$prevSibling;\n if (this.$$prevSibling) this.$$prevSibling.$$nextSibling = this.$$nextSibling;\n if (this.$$nextSibling) this.$$nextSibling.$$prevSibling = this.$$prevSibling;\n\n\n // All of the code below is bogus code that works around V8's memory leak via optimized code\n // and inline caches.\n //\n // see:\n // - https://code.google.com/p/v8/issues/detail?id=2073#c26\n // - https://github.com/angular/angular.js/issues/6794#issuecomment-38648909\n // - https://github.com/angular/angular.js/issues/1313#issuecomment-10378451\n\n this.$parent = this.$$nextSibling = this.$$prevSibling = this.$$childHead =\n this.$$childTail = this.$root = null;\n\n // don't reset these to null in case some async task tries to register a listener/watch/task\n this.$$listeners = {};\n this.$$watchers = this.$$asyncQueue = this.$$postDigestQueue = [];\n\n // prevent NPEs since these methods have references to properties we nulled out\n this.$destroy = this.$digest = this.$apply = noop;\n this.$on = this.$watch = function() { return noop; };\n },\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$eval\n * @kind function\n *\n * @description\n * Executes the `expression` on the current scope and returns the result. Any exceptions in\n * the expression are propagated (uncaught). This is useful when evaluating Angular\n * expressions.\n *\n * # Example\n * ```js\n var scope = ng.$rootScope.Scope();\n scope.a = 1;\n scope.b = 2;\n\n expect(scope.$eval('a+b')).toEqual(3);\n expect(scope.$eval(function(scope){ return scope.a + scope.b; })).toEqual(3);\n * ```\n *\n * @param {(string|function())=} expression An angular expression to be executed.\n *\n * - `string`: execute using the rules as defined in {@link guide/expression expression}.\n * - `function(scope)`: execute the function with the current `scope` parameter.\n *\n * @param {(object)=} locals Local variables object, useful for overriding values in scope.\n * @returns {*} The result of evaluating the expression.\n */\n $eval: function(expr, locals) {\n return $parse(expr)(this, locals);\n },\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$evalAsync\n * @kind function\n *\n * @description\n * Executes the expression on the current scope at a later point in time.\n *\n * The `$evalAsync` makes no guarantees as to when the `expression` will be executed, only\n * that:\n *\n * - it will execute after the function that scheduled the evaluation (preferably before DOM\n * rendering).\n * - at least one {@link ng.$rootScope.Scope#$digest $digest cycle} will be performed after\n * `expression` execution.\n *\n * Any exceptions from the execution of the expression are forwarded to the\n * {@link ng.$exceptionHandler $exceptionHandler} service.\n *\n * __Note:__ if this function is called outside of a `$digest` cycle, a new `$digest` cycle\n * will be scheduled. However, it is encouraged to always call code that changes the model\n * from within an `$apply` call. That includes code evaluated via `$evalAsync`.\n *\n * @param {(string|function())=} expression An angular expression to be executed.\n *\n * - `string`: execute using the rules as defined in {@link guide/expression expression}.\n * - `function(scope)`: execute the function with the current `scope` parameter.\n *\n */\n $evalAsync: function(expr) {\n // if we are outside of an $digest loop and this is the first time we are scheduling async\n // task also schedule async auto-flush\n if (!$rootScope.$$phase && !$rootScope.$$asyncQueue.length) {\n $browser.defer(function() {\n if ($rootScope.$$asyncQueue.length) {\n $rootScope.$digest();\n }\n });\n }\n\n this.$$asyncQueue.push({scope: this, expression: expr});\n },\n\n $$postDigest : function(fn) {\n this.$$postDigestQueue.push(fn);\n },\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$apply\n * @kind function\n *\n * @description\n * `$apply()` is used to execute an expression in angular from outside of the angular\n * framework. (For example from browser DOM events, setTimeout, XHR or third party libraries).\n * Because we are calling into the angular framework we need to perform proper scope life\n * cycle of {@link ng.$exceptionHandler exception handling},\n * {@link ng.$rootScope.Scope#$digest executing watches}.\n *\n * ## Life cycle\n *\n * # Pseudo-Code of `$apply()`\n * ```js\n function $apply(expr) {\n try {\n return $eval(expr);\n } catch (e) {\n $exceptionHandler(e);\n } finally {\n $root.$digest();\n }\n }\n * ```\n *\n *\n * Scope's `$apply()` method transitions through the following stages:\n *\n * 1. The {@link guide/expression expression} is executed using the\n * {@link ng.$rootScope.Scope#$eval $eval()} method.\n * 2. Any exceptions from the execution of the expression are forwarded to the\n * {@link ng.$exceptionHandler $exceptionHandler} service.\n * 3. The {@link ng.$rootScope.Scope#$watch watch} listeners are fired immediately after the\n * expression was executed using the {@link ng.$rootScope.Scope#$digest $digest()} method.\n *\n *\n * @param {(string|function())=} exp An angular expression to be executed.\n *\n * - `string`: execute using the rules as defined in {@link guide/expression expression}.\n * - `function(scope)`: execute the function with current `scope` parameter.\n *\n * @returns {*} The result of evaluating the expression.\n */\n $apply: function(expr) {\n try {\n beginPhase('$apply');\n return this.$eval(expr);\n } catch (e) {\n $exceptionHandler(e);\n } finally {\n clearPhase();\n try {\n $rootScope.$digest();\n } catch (e) {\n $exceptionHandler(e);\n throw e;\n }\n }\n },\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$on\n * @kind function\n *\n * @description\n * Listens on events of a given type. See {@link ng.$rootScope.Scope#$emit $emit} for\n * discussion of event life cycle.\n *\n * The event listener function format is: `function(event, args...)`. The `event` object\n * passed into the listener has the following attributes:\n *\n * - `targetScope` - `{Scope}`: the scope on which the event was `$emit`-ed or\n * `$broadcast`-ed.\n * - `currentScope` - `{Scope}`: the current scope which is handling the event.\n * - `name` - `{string}`: name of the event.\n * - `stopPropagation` - `{function=}`: calling `stopPropagation` function will cancel\n * further event propagation (available only for events that were `$emit`-ed).\n * - `preventDefault` - `{function}`: calling `preventDefault` sets `defaultPrevented` flag\n * to true.\n * - `defaultPrevented` - `{boolean}`: true if `preventDefault` was called.\n *\n * @param {string} name Event name to listen on.\n * @param {function(event, ...args)} listener Function to call when the event is emitted.\n * @returns {function()} Returns a deregistration function for this listener.\n */\n $on: function(name, listener) {\n var namedListeners = this.$$listeners[name];\n if (!namedListeners) {\n this.$$listeners[name] = namedListeners = [];\n }\n namedListeners.push(listener);\n\n var current = this;\n do {\n if (!current.$$listenerCount[name]) {\n current.$$listenerCount[name] = 0;\n }\n current.$$listenerCount[name]++;\n } while ((current = current.$parent));\n\n var self = this;\n return function() {\n var indexOfListener = indexOf(namedListeners, listener);\n if (indexOfListener !== -1) {\n namedListeners[indexOfListener] = null;\n decrementListenerCount(self, 1, name);\n }\n };\n },\n\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$emit\n * @kind function\n *\n * @description\n * Dispatches an event `name` upwards through the scope hierarchy notifying the\n * registered {@link ng.$rootScope.Scope#$on} listeners.\n *\n * The event life cycle starts at the scope on which `$emit` was called. All\n * {@link ng.$rootScope.Scope#$on listeners} listening for `name` event on this scope get\n * notified. Afterwards, the event traverses upwards toward the root scope and calls all\n * registered listeners along the way. The event will stop propagating if one of the listeners\n * cancels it.\n *\n * Any exception emitted from the {@link ng.$rootScope.Scope#$on listeners} will be passed\n * onto the {@link ng.$exceptionHandler $exceptionHandler} service.\n *\n * @param {string} name Event name to emit.\n * @param {...*} args Optional one or more arguments which will be passed onto the event listeners.\n * @return {Object} Event object (see {@link ng.$rootScope.Scope#$on}).\n */\n $emit: function(name, args) {\n var empty = [],\n namedListeners,\n scope = this,\n stopPropagation = false,\n event = {\n name: name,\n targetScope: scope,\n stopPropagation: function() {stopPropagation = true;},\n preventDefault: function() {\n event.defaultPrevented = true;\n },\n defaultPrevented: false\n },\n listenerArgs = concat([event], arguments, 1),\n i, length;\n\n do {\n namedListeners = scope.$$listeners[name] || empty;\n event.currentScope = scope;\n for (i=0, length=namedListeners.length; i= 8 ) {\n normalizedVal = urlResolve(uri).href;\n if (normalizedVal !== '' && !normalizedVal.match(regex)) {\n return 'unsafe:'+normalizedVal;\n }\n }\n return uri;\n };\n };\n}\n\nvar $sceMinErr = minErr('$sce');\n\nvar SCE_CONTEXTS = {\n HTML: 'html',\n CSS: 'css',\n URL: 'url',\n // RESOURCE_URL is a subtype of URL used in contexts where a privileged resource is sourced from a\n // url. (e.g. ng-include, script src, templateUrl)\n RESOURCE_URL: 'resourceUrl',\n JS: 'js'\n};\n\n// Helper functions follow.\n\n// Copied from:\n// http://docs.closure-library.googlecode.com/git/closure_goog_string_string.js.source.html#line962\n// Prereq: s is a string.\nfunction escapeForRegexp(s) {\n return s.replace(/([-()\\[\\]{}+?*.$\\^|,:# -1) {\n throw $sceMinErr('iwcard',\n 'Illegal sequence *** in string matcher. String: {0}', matcher);\n }\n matcher = escapeForRegexp(matcher).\n replace('\\\\*\\\\*', '.*').\n replace('\\\\*', '[^:/.?&;]*');\n return new RegExp('^' + matcher + '$');\n } else if (isRegExp(matcher)) {\n // The only other type of matcher allowed is a Regexp.\n // Match entire URL / disallow partial matches.\n // Flags are reset (i.e. no global, ignoreCase or multiline)\n return new RegExp('^' + matcher.source + '$');\n } else {\n throw $sceMinErr('imatcher',\n 'Matchers may only be \"self\", string patterns or RegExp objects');\n }\n}\n\n\nfunction adjustMatchers(matchers) {\n var adjustedMatchers = [];\n if (isDefined(matchers)) {\n forEach(matchers, function(matcher) {\n adjustedMatchers.push(adjustMatcher(matcher));\n });\n }\n return adjustedMatchers;\n}\n\n\n/**\n * @ngdoc service\n * @name $sceDelegate\n * @kind function\n *\n * @description\n *\n * `$sceDelegate` is a service that is used by the `$sce` service to provide {@link ng.$sce Strict\n * Contextual Escaping (SCE)} services to AngularJS.\n *\n * Typically, you would configure or override the {@link ng.$sceDelegate $sceDelegate} instead of\n * the `$sce` service to customize the way Strict Contextual Escaping works in AngularJS. This is\n * because, while the `$sce` provides numerous shorthand methods, etc., you really only need to\n * override 3 core functions (`trustAs`, `getTrusted` and `valueOf`) to replace the way things\n * work because `$sce` delegates to `$sceDelegate` for these operations.\n *\n * Refer {@link ng.$sceDelegateProvider $sceDelegateProvider} to configure this service.\n *\n * The default instance of `$sceDelegate` should work out of the box with little pain. While you\n * can override it completely to change the behavior of `$sce`, the common case would\n * involve configuring the {@link ng.$sceDelegateProvider $sceDelegateProvider} instead by setting\n * your own whitelists and blacklists for trusting URLs used for loading AngularJS resources such as\n * templates. Refer {@link ng.$sceDelegateProvider#resourceUrlWhitelist\n * $sceDelegateProvider.resourceUrlWhitelist} and {@link\n * ng.$sceDelegateProvider#resourceUrlBlacklist $sceDelegateProvider.resourceUrlBlacklist}\n */\n\n/**\n * @ngdoc provider\n * @name $sceDelegateProvider\n * @description\n *\n * The `$sceDelegateProvider` provider allows developers to configure the {@link ng.$sceDelegate\n * $sceDelegate} service. This allows one to get/set the whitelists and blacklists used to ensure\n * that the URLs used for sourcing Angular templates are safe. Refer {@link\n * ng.$sceDelegateProvider#resourceUrlWhitelist $sceDelegateProvider.resourceUrlWhitelist} and\n * {@link ng.$sceDelegateProvider#resourceUrlBlacklist $sceDelegateProvider.resourceUrlBlacklist}\n *\n * For the general details about this service in Angular, read the main page for {@link ng.$sce\n * Strict Contextual Escaping (SCE)}.\n *\n * **Example**: Consider the following case. \n *\n * - your app is hosted at url `http://myapp.example.com/`\n * - but some of your templates are hosted on other domains you control such as\n * `http://srv01.assets.example.com/`,  `http://srv02.assets.example.com/`, etc.\n * - and you have an open redirect at `http://myapp.example.com/clickThru?...`.\n *\n * Here is what a secure configuration for this scenario might look like:\n *\n * ```\n * angular.module('myApp', []).config(function($sceDelegateProvider) {\n * $sceDelegateProvider.resourceUrlWhitelist([\n * // Allow same origin resource loads.\n * 'self',\n * // Allow loading from our assets domain. Notice the difference between * and **.\n * 'http://srv*.assets.example.com/**'\n * ]);\n *\n * // The blacklist overrides the whitelist so the open redirect here is blocked.\n * $sceDelegateProvider.resourceUrlBlacklist([\n * 'http://myapp.example.com/clickThru**'\n * ]);\n * });\n * ```\n */\n\nfunction $SceDelegateProvider() {\n this.SCE_CONTEXTS = SCE_CONTEXTS;\n\n // Resource URLs can also be trusted by policy.\n var resourceUrlWhitelist = ['self'],\n resourceUrlBlacklist = [];\n\n /**\n * @ngdoc method\n * @name $sceDelegateProvider#resourceUrlWhitelist\n * @kind function\n *\n * @param {Array=} whitelist When provided, replaces the resourceUrlWhitelist with the value\n * provided. This must be an array or null. A snapshot of this array is used so further\n * changes to the array are ignored.\n *\n * Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items\n * allowed in this array.\n *\n * Note: **an empty whitelist array will block all URLs**!\n *\n * @return {Array} the currently set whitelist array.\n *\n * The **default value** when no whitelist has been explicitly set is `['self']` allowing only\n * same origin resource requests.\n *\n * @description\n * Sets/Gets the whitelist of trusted resource URLs.\n */\n this.resourceUrlWhitelist = function (value) {\n if (arguments.length) {\n resourceUrlWhitelist = adjustMatchers(value);\n }\n return resourceUrlWhitelist;\n };\n\n /**\n * @ngdoc method\n * @name $sceDelegateProvider#resourceUrlBlacklist\n * @kind function\n *\n * @param {Array=} blacklist When provided, replaces the resourceUrlBlacklist with the value\n * provided. This must be an array or null. A snapshot of this array is used so further\n * changes to the array are ignored.\n *\n * Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items\n * allowed in this array.\n *\n * The typical usage for the blacklist is to **block\n * [open redirects](http://cwe.mitre.org/data/definitions/601.html)** served by your domain as\n * these would otherwise be trusted but actually return content from the redirected domain.\n *\n * Finally, **the blacklist overrides the whitelist** and has the final say.\n *\n * @return {Array} the currently set blacklist array.\n *\n * The **default value** when no whitelist has been explicitly set is the empty array (i.e. there\n * is no blacklist.)\n *\n * @description\n * Sets/Gets the blacklist of trusted resource URLs.\n */\n\n this.resourceUrlBlacklist = function (value) {\n if (arguments.length) {\n resourceUrlBlacklist = adjustMatchers(value);\n }\n return resourceUrlBlacklist;\n };\n\n this.$get = ['$injector', function($injector) {\n\n var htmlSanitizer = function htmlSanitizer(html) {\n throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.');\n };\n\n if ($injector.has('$sanitize')) {\n htmlSanitizer = $injector.get('$sanitize');\n }\n\n\n function matchUrl(matcher, parsedUrl) {\n if (matcher === 'self') {\n return urlIsSameOrigin(parsedUrl);\n } else {\n // definitely a regex. See adjustMatchers()\n return !!matcher.exec(parsedUrl.href);\n }\n }\n\n function isResourceUrlAllowedByPolicy(url) {\n var parsedUrl = urlResolve(url.toString());\n var i, n, allowed = false;\n // Ensure that at least one item from the whitelist allows this url.\n for (i = 0, n = resourceUrlWhitelist.length; i < n; i++) {\n if (matchUrl(resourceUrlWhitelist[i], parsedUrl)) {\n allowed = true;\n break;\n }\n }\n if (allowed) {\n // Ensure that no item from the blacklist blocked this url.\n for (i = 0, n = resourceUrlBlacklist.length; i < n; i++) {\n if (matchUrl(resourceUrlBlacklist[i], parsedUrl)) {\n allowed = false;\n break;\n }\n }\n }\n return allowed;\n }\n\n function generateHolderType(Base) {\n var holderType = function TrustedValueHolderType(trustedValue) {\n this.$$unwrapTrustedValue = function() {\n return trustedValue;\n };\n };\n if (Base) {\n holderType.prototype = new Base();\n }\n holderType.prototype.valueOf = function sceValueOf() {\n return this.$$unwrapTrustedValue();\n };\n holderType.prototype.toString = function sceToString() {\n return this.$$unwrapTrustedValue().toString();\n };\n return holderType;\n }\n\n var trustedValueHolderBase = generateHolderType(),\n byType = {};\n\n byType[SCE_CONTEXTS.HTML] = generateHolderType(trustedValueHolderBase);\n byType[SCE_CONTEXTS.CSS] = generateHolderType(trustedValueHolderBase);\n byType[SCE_CONTEXTS.URL] = generateHolderType(trustedValueHolderBase);\n byType[SCE_CONTEXTS.JS] = generateHolderType(trustedValueHolderBase);\n byType[SCE_CONTEXTS.RESOURCE_URL] = generateHolderType(byType[SCE_CONTEXTS.URL]);\n\n /**\n * @ngdoc method\n * @name $sceDelegate#trustAs\n *\n * @description\n * Returns an object that is trusted by angular for use in specified strict\n * contextual escaping contexts (such as ng-bind-html, ng-include, any src\n * attribute interpolation, any dom event binding attribute interpolation\n * such as for onclick, etc.) that uses the provided value.\n * See {@link ng.$sce $sce} for enabling strict contextual escaping.\n *\n * @param {string} type The kind of context in which this value is safe for use. e.g. url,\n * resourceUrl, html, js and css.\n * @param {*} value The value that that should be considered trusted/safe.\n * @returns {*} A value that can be used to stand in for the provided `value` in places\n * where Angular expects a $sce.trustAs() return value.\n */\n function trustAs(type, trustedValue) {\n var Constructor = (byType.hasOwnProperty(type) ? byType[type] : null);\n if (!Constructor) {\n throw $sceMinErr('icontext',\n 'Attempted to trust a value in invalid context. Context: {0}; Value: {1}',\n type, trustedValue);\n }\n if (trustedValue === null || trustedValue === undefined || trustedValue === '') {\n return trustedValue;\n }\n // All the current contexts in SCE_CONTEXTS happen to be strings. In order to avoid trusting\n // mutable objects, we ensure here that the value passed in is actually a string.\n if (typeof trustedValue !== 'string') {\n throw $sceMinErr('itype',\n 'Attempted to trust a non-string value in a content requiring a string: Context: {0}',\n type);\n }\n return new Constructor(trustedValue);\n }\n\n /**\n * @ngdoc method\n * @name $sceDelegate#valueOf\n *\n * @description\n * If the passed parameter had been returned by a prior call to {@link ng.$sceDelegate#trustAs\n * `$sceDelegate.trustAs`}, returns the value that had been passed to {@link\n * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}.\n *\n * If the passed parameter is not a value that had been returned by {@link\n * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}, returns it as-is.\n *\n * @param {*} value The result of a prior {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}\n * call or anything else.\n * @returns {*} The `value` that was originally provided to {@link ng.$sceDelegate#trustAs\n * `$sceDelegate.trustAs`} if `value` is the result of such a call. Otherwise, returns\n * `value` unchanged.\n */\n function valueOf(maybeTrusted) {\n if (maybeTrusted instanceof trustedValueHolderBase) {\n return maybeTrusted.$$unwrapTrustedValue();\n } else {\n return maybeTrusted;\n }\n }\n\n /**\n * @ngdoc method\n * @name $sceDelegate#getTrusted\n *\n * @description\n * Takes the result of a {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`} call and\n * returns the originally supplied value if the queried context type is a supertype of the\n * created type. If this condition isn't satisfied, throws an exception.\n *\n * @param {string} type The kind of context in which this value is to be used.\n * @param {*} maybeTrusted The result of a prior {@link ng.$sceDelegate#trustAs\n * `$sceDelegate.trustAs`} call.\n * @returns {*} The value the was originally provided to {@link ng.$sceDelegate#trustAs\n * `$sceDelegate.trustAs`} if valid in this context. Otherwise, throws an exception.\n */\n function getTrusted(type, maybeTrusted) {\n if (maybeTrusted === null || maybeTrusted === undefined || maybeTrusted === '') {\n return maybeTrusted;\n }\n var constructor = (byType.hasOwnProperty(type) ? byType[type] : null);\n if (constructor && maybeTrusted instanceof constructor) {\n return maybeTrusted.$$unwrapTrustedValue();\n }\n // If we get here, then we may only take one of two actions.\n // 1. sanitize the value for the requested type, or\n // 2. throw an exception.\n if (type === SCE_CONTEXTS.RESOURCE_URL) {\n if (isResourceUrlAllowedByPolicy(maybeTrusted)) {\n return maybeTrusted;\n } else {\n throw $sceMinErr('insecurl',\n 'Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}',\n maybeTrusted.toString());\n }\n } else if (type === SCE_CONTEXTS.HTML) {\n return htmlSanitizer(maybeTrusted);\n }\n throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.');\n }\n\n return { trustAs: trustAs,\n getTrusted: getTrusted,\n valueOf: valueOf };\n }];\n}\n\n\n/**\n * @ngdoc provider\n * @name $sceProvider\n * @description\n *\n * The $sceProvider provider allows developers to configure the {@link ng.$sce $sce} service.\n * - enable/disable Strict Contextual Escaping (SCE) in a module\n * - override the default implementation with a custom delegate\n *\n * Read more about {@link ng.$sce Strict Contextual Escaping (SCE)}.\n */\n\n/* jshint maxlen: false*/\n\n/**\n * @ngdoc service\n * @name $sce\n * @kind function\n *\n * @description\n *\n * `$sce` is a service that provides Strict Contextual Escaping services to AngularJS.\n *\n * # Strict Contextual Escaping\n *\n * Strict Contextual Escaping (SCE) is a mode in which AngularJS requires bindings in certain\n * contexts to result in a value that is marked as safe to use for that context. One example of\n * such a context is binding arbitrary html controlled by the user via `ng-bind-html`. We refer\n * to these contexts as privileged or SCE contexts.\n *\n * As of version 1.2, Angular ships with SCE enabled by default.\n *\n * Note: When enabled (the default), IE8 in quirks mode is not supported. In this mode, IE8 allows\n * one to execute arbitrary javascript by the use of the expression() syntax. Refer\n * to learn more about them.\n * You can ensure your document is in standards mode and not quirks mode by adding ``\n * to the top of your HTML document.\n *\n * SCE assists in writing code in way that (a) is secure by default and (b) makes auditing for\n * security vulnerabilities such as XSS, clickjacking, etc. a lot easier.\n *\n * Here's an example of a binding in a privileged context:\n *\n * ```\n * \n *
\n * ```\n *\n * Notice that `ng-bind-html` is bound to `userHtml` controlled by the user. With SCE\n * disabled, this application allows the user to render arbitrary HTML into the DIV.\n * In a more realistic example, one may be rendering user comments, blog articles, etc. via\n * bindings. (HTML is just one example of a context where rendering user controlled input creates\n * security vulnerabilities.)\n *\n * For the case of HTML, you might use a library, either on the client side, or on the server side,\n * to sanitize unsafe HTML before binding to the value and rendering it in the document.\n *\n * How would you ensure that every place that used these types of bindings was bound to a value that\n * was sanitized by your library (or returned as safe for rendering by your server?) How can you\n * ensure that you didn't accidentally delete the line that sanitized the value, or renamed some\n * properties/fields and forgot to update the binding to the sanitized value?\n *\n * To be secure by default, you want to ensure that any such bindings are disallowed unless you can\n * determine that something explicitly says it's safe to use a value for binding in that\n * context. You can then audit your code (a simple grep would do) to ensure that this is only done\n * for those values that you can easily tell are safe - because they were received from your server,\n * sanitized by your library, etc. You can organize your codebase to help with this - perhaps\n * allowing only the files in a specific directory to do this. Ensuring that the internal API\n * exposed by that code doesn't markup arbitrary values as safe then becomes a more manageable task.\n *\n * In the case of AngularJS' SCE service, one uses {@link ng.$sce#trustAs $sce.trustAs}\n * (and shorthand methods such as {@link ng.$sce#trustAsHtml $sce.trustAsHtml}, etc.) to\n * obtain values that will be accepted by SCE / privileged contexts.\n *\n *\n * ## How does it work?\n *\n * In privileged contexts, directives and code will bind to the result of {@link ng.$sce#getTrusted\n * $sce.getTrusted(context, value)} rather than to the value directly. Directives use {@link\n * ng.$sce#parse $sce.parseAs} rather than `$parse` to watch attribute bindings, which performs the\n * {@link ng.$sce#getTrusted $sce.getTrusted} behind the scenes on non-constant literals.\n *\n * As an example, {@link ng.directive:ngBindHtml ngBindHtml} uses {@link\n * ng.$sce#parseAsHtml $sce.parseAsHtml(binding expression)}. Here's the actual code (slightly\n * simplified):\n *\n * ```\n * var ngBindHtmlDirective = ['$sce', function($sce) {\n * return function(scope, element, attr) {\n * scope.$watch($sce.parseAsHtml(attr.ngBindHtml), function(value) {\n * element.html(value || '');\n * });\n * };\n * }];\n * ```\n *\n * ## Impact on loading templates\n *\n * This applies both to the {@link ng.directive:ngInclude `ng-include`} directive as well as\n * `templateUrl`'s specified by {@link guide/directive directives}.\n *\n * By default, Angular only loads templates from the same domain and protocol as the application\n * document. This is done by calling {@link ng.$sce#getTrustedResourceUrl\n * $sce.getTrustedResourceUrl} on the template URL. To load templates from other domains and/or\n * protocols, you may either either {@link ng.$sceDelegateProvider#resourceUrlWhitelist whitelist\n * them} or {@link ng.$sce#trustAsResourceUrl wrap it} into a trusted value.\n *\n * *Please note*:\n * The browser's\n * [Same Origin Policy](https://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest)\n * and [Cross-Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/)\n * policy apply in addition to this and may further restrict whether the template is successfully\n * loaded. This means that without the right CORS policy, loading templates from a different domain\n * won't work on all browsers. Also, loading templates from `file://` URL does not work on some\n * browsers.\n *\n * ## This feels like too much overhead for the developer?\n *\n * It's important to remember that SCE only applies to interpolation expressions.\n *\n * If your expressions are constant literals, they're automatically trusted and you don't need to\n * call `$sce.trustAs` on them (remember to include the `ngSanitize` module) (e.g.\n * `
implicitly trusted'\">
`) just works.\n *\n * Additionally, `a[href]` and `img[src]` automatically sanitize their URLs and do not pass them\n * through {@link ng.$sce#getTrusted $sce.getTrusted}. SCE doesn't play a role here.\n *\n * The included {@link ng.$sceDelegate $sceDelegate} comes with sane defaults to allow you to load\n * templates in `ng-include` from your application's domain without having to even know about SCE.\n * It blocks loading templates from other domains or loading templates over http from an https\n * served document. You can change these by setting your own custom {@link\n * ng.$sceDelegateProvider#resourceUrlWhitelist whitelists} and {@link\n * ng.$sceDelegateProvider#resourceUrlBlacklist blacklists} for matching such URLs.\n *\n * This significantly reduces the overhead. It is far easier to pay the small overhead and have an\n * application that's secure and can be audited to verify that with much more ease than bolting\n * security onto an application later.\n *\n * \n * ## What trusted context types are supported?\n *\n * | Context | Notes |\n * |---------------------|----------------|\n * | `$sce.HTML` | For HTML that's safe to source into the application. The {@link ng.directive:ngBindHtml ngBindHtml} directive uses this context for bindings. If an unsafe value is encountered and the {@link ngSanitize $sanitize} module is present this will sanitize the value instead of throwing an error. |\n * | `$sce.CSS` | For CSS that's safe to source into the application. Currently unused. Feel free to use it in your own directives. |\n * | `$sce.URL` | For URLs that are safe to follow as links. Currently unused (`
Note that `$sce.RESOURCE_URL` makes a stronger statement about the URL than `$sce.URL` does and therefore contexts requiring values trusted for `$sce.RESOURCE_URL` can be used anywhere that values trusted for `$sce.URL` are required. |\n * | `$sce.JS` | For JavaScript that is safe to execute in your application's context. Currently unused. Feel free to use it in your own directives. |\n *\n * ## Format of items in {@link ng.$sceDelegateProvider#resourceUrlWhitelist resourceUrlWhitelist}/{@link ng.$sceDelegateProvider#resourceUrlBlacklist Blacklist}
\n *\n * Each element in these arrays must be one of the following:\n *\n * - **'self'**\n * - The special **string**, `'self'`, can be used to match against all URLs of the **same\n * domain** as the application document using the **same protocol**.\n * - **String** (except the special value `'self'`)\n * - The string is matched against the full *normalized / absolute URL* of the resource\n * being tested (substring matches are not good enough.)\n * - There are exactly **two wildcard sequences** - `*` and `**`. All other characters\n * match themselves.\n * - `*`: matches zero or more occurrences of any character other than one of the following 6\n * characters: '`:`', '`/`', '`.`', '`?`', '`&`' and ';'. It's a useful wildcard for use\n * in a whitelist.\n * - `**`: matches zero or more occurrences of *any* character. As such, it's not\n * not appropriate to use in for a scheme, domain, etc. as it would match too much. (e.g.\n * http://**.example.com/ would match http://evil.com/?ignore=.example.com/ and that might\n * not have been the intention.) Its usage at the very end of the path is ok. (e.g.\n * http://foo.example.com/templates/**).\n * - **RegExp** (*see caveat below*)\n * - *Caveat*: While regular expressions are powerful and offer great flexibility, their syntax\n * (and all the inevitable escaping) makes them *harder to maintain*. It's easy to\n * accidentally introduce a bug when one updates a complex expression (imho, all regexes should\n * have good test coverage.). For instance, the use of `.` in the regex is correct only in a\n * small number of cases. A `.` character in the regex used when matching the scheme or a\n * subdomain could be matched against a `:` or literal `.` that was likely not intended. It\n * is highly recommended to use the string patterns and only fall back to regular expressions\n * if they as a last resort.\n * - The regular expression must be an instance of RegExp (i.e. not a string.) It is\n * matched against the **entire** *normalized / absolute URL* of the resource being tested\n * (even when the RegExp did not have the `^` and `$` codes.) In addition, any flags\n * present on the RegExp (such as multiline, global, ignoreCase) are ignored.\n * - If you are generating your JavaScript from some other templating engine (not\n * recommended, e.g. in issue [#4006](https://github.com/angular/angular.js/issues/4006)),\n * remember to escape your regular expression (and be aware that you might need more than\n * one level of escaping depending on your templating engine and the way you interpolated\n * the value.) Do make use of your platform's escaping mechanism as it might be good\n * enough before coding your own. e.g. Ruby has\n * [Regexp.escape(str)](http://www.ruby-doc.org/core-2.0.0/Regexp.html#method-c-escape)\n * and Python has [re.escape](http://docs.python.org/library/re.html#re.escape).\n * Javascript lacks a similar built in function for escaping. Take a look at Google\n * Closure library's [goog.string.regExpEscape(s)](\n * http://docs.closure-library.googlecode.com/git/closure_goog_string_string.js.source.html#line962).\n *\n * Refer {@link ng.$sceDelegateProvider $sceDelegateProvider} for an example.\n *\n * ## Show me an example using SCE.\n *\n * \n * \n *
\n *

\n * User comments
\n * By default, HTML that isn't explicitly trusted (e.g. Alice's comment) is sanitized when\n * $sanitize is available. If $sanitize isn't available, this results in an error instead of an\n * exploit.\n *
\n *
\n * {{userComment.name}}:\n * \n *
\n *
\n *
\n *
\n *
\n *\n * \n * var mySceApp = angular.module('mySceApp', ['ngSanitize']);\n *\n * mySceApp.controller(\"myAppController\", function myAppController($http, $templateCache, $sce) {\n * var self = this;\n * $http.get(\"test_data.json\", {cache: $templateCache}).success(function(userComments) {\n * self.userComments = userComments;\n * });\n * self.explicitlyTrustedHtml = $sce.trustAsHtml(\n * 'Hover over this text.');\n * });\n * \n *\n * \n * [\n * { \"name\": \"Alice\",\n * \"htmlComment\":\n * \"Is anyone reading this?\"\n * },\n * { \"name\": \"Bob\",\n * \"htmlComment\": \"Yes! Am I the only other one?\"\n * }\n * ]\n * \n *\n * \n * describe('SCE doc demo', function() {\n * it('should sanitize untrusted values', function() {\n * expect(element.all(by.css('.htmlComment')).first().getInnerHtml())\n * .toBe('Is anyone reading this?');\n * });\n *\n * it('should NOT sanitize explicitly trusted values', function() {\n * expect(element(by.id('explicitlyTrustedHtml')).getInnerHtml()).toBe(\n * 'Hover over this text.');\n * });\n * });\n * \n *
\n *\n *\n *\n * ## Can I disable SCE completely?\n *\n * Yes, you can. However, this is strongly discouraged. SCE gives you a lot of security benefits\n * for little coding overhead. It will be much harder to take an SCE disabled application and\n * either secure it on your own or enable SCE at a later stage. It might make sense to disable SCE\n * for cases where you have a lot of existing code that was written before SCE was introduced and\n * you're migrating them a module at a time.\n *\n * That said, here's how you can completely disable SCE:\n *\n * ```\n * angular.module('myAppWithSceDisabledmyApp', []).config(function($sceProvider) {\n * // Completely disable SCE. For demonstration purposes only!\n * // Do not use in new projects.\n * $sceProvider.enabled(false);\n * });\n * ```\n *\n */\n/* jshint maxlen: 100 */\n\nfunction $SceProvider() {\n var enabled = true;\n\n /**\n * @ngdoc method\n * @name $sceProvider#enabled\n * @kind function\n *\n * @param {boolean=} value If provided, then enables/disables SCE.\n * @return {boolean} true if SCE is enabled, false otherwise.\n *\n * @description\n * Enables/disables SCE and returns the current value.\n */\n this.enabled = function (value) {\n if (arguments.length) {\n enabled = !!value;\n }\n return enabled;\n };\n\n\n /* Design notes on the default implementation for SCE.\n *\n * The API contract for the SCE delegate\n * -------------------------------------\n * The SCE delegate object must provide the following 3 methods:\n *\n * - trustAs(contextEnum, value)\n * This method is used to tell the SCE service that the provided value is OK to use in the\n * contexts specified by contextEnum. It must return an object that will be accepted by\n * getTrusted() for a compatible contextEnum and return this value.\n *\n * - valueOf(value)\n * For values that were not produced by trustAs(), return them as is. For values that were\n * produced by trustAs(), return the corresponding input value to trustAs. Basically, if\n * trustAs is wrapping the given values into some type, this operation unwraps it when given\n * such a value.\n *\n * - getTrusted(contextEnum, value)\n * This function should return the a value that is safe to use in the context specified by\n * contextEnum or throw and exception otherwise.\n *\n * NOTE: This contract deliberately does NOT state that values returned by trustAs() must be\n * opaque or wrapped in some holder object. That happens to be an implementation detail. For\n * instance, an implementation could maintain a registry of all trusted objects by context. In\n * such a case, trustAs() would return the same object that was passed in. getTrusted() would\n * return the same object passed in if it was found in the registry under a compatible context or\n * throw an exception otherwise. An implementation might only wrap values some of the time based\n * on some criteria. getTrusted() might return a value and not throw an exception for special\n * constants or objects even if not wrapped. All such implementations fulfill this contract.\n *\n *\n * A note on the inheritance model for SCE contexts\n * ------------------------------------------------\n * I've used inheritance and made RESOURCE_URL wrapped types a subtype of URL wrapped types. This\n * is purely an implementation details.\n *\n * The contract is simply this:\n *\n * getTrusted($sce.RESOURCE_URL, value) succeeding implies that getTrusted($sce.URL, value)\n * will also succeed.\n *\n * Inheritance happens to capture this in a natural way. In some future, we\n * may not use inheritance anymore. That is OK because no code outside of\n * sce.js and sceSpecs.js would need to be aware of this detail.\n */\n\n this.$get = ['$parse', '$sniffer', '$sceDelegate', function(\n $parse, $sniffer, $sceDelegate) {\n // Prereq: Ensure that we're not running in IE8 quirks mode. In that mode, IE allows\n // the \"expression(javascript expression)\" syntax which is insecure.\n if (enabled && $sniffer.msie && $sniffer.msieDocumentMode < 8) {\n throw $sceMinErr('iequirks',\n 'Strict Contextual Escaping does not support Internet Explorer version < 9 in quirks ' +\n 'mode. You can fix this by adding the text to the top of your HTML ' +\n 'document. See http://docs.angularjs.org/api/ng.$sce for more information.');\n }\n\n var sce = shallowCopy(SCE_CONTEXTS);\n\n /**\n * @ngdoc method\n * @name $sce#isEnabled\n * @kind function\n *\n * @return {Boolean} true if SCE is enabled, false otherwise. If you want to set the value, you\n * have to do it at module config time on {@link ng.$sceProvider $sceProvider}.\n *\n * @description\n * Returns a boolean indicating if SCE is enabled.\n */\n sce.isEnabled = function () {\n return enabled;\n };\n sce.trustAs = $sceDelegate.trustAs;\n sce.getTrusted = $sceDelegate.getTrusted;\n sce.valueOf = $sceDelegate.valueOf;\n\n if (!enabled) {\n sce.trustAs = sce.getTrusted = function(type, value) { return value; };\n sce.valueOf = identity;\n }\n\n /**\n * @ngdoc method\n * @name $sce#parseAs\n *\n * @description\n * Converts Angular {@link guide/expression expression} into a function. This is like {@link\n * ng.$parse $parse} and is identical when the expression is a literal constant. Otherwise, it\n * wraps the expression in a call to {@link ng.$sce#getTrusted $sce.getTrusted(*type*,\n * *result*)}\n *\n * @param {string} type The kind of SCE context in which this result will be used.\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n */\n sce.parseAs = function sceParseAs(type, expr) {\n var parsed = $parse(expr);\n if (parsed.literal && parsed.constant) {\n return parsed;\n } else {\n return function sceParseAsTrusted(self, locals) {\n return sce.getTrusted(type, parsed(self, locals));\n };\n }\n };\n\n /**\n * @ngdoc method\n * @name $sce#trustAs\n *\n * @description\n * Delegates to {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}. As such,\n * returns an object that is trusted by angular for use in specified strict contextual\n * escaping contexts (such as ng-bind-html, ng-include, any src attribute\n * interpolation, any dom event binding attribute interpolation such as for onclick, etc.)\n * that uses the provided value. See * {@link ng.$sce $sce} for enabling strict contextual\n * escaping.\n *\n * @param {string} type The kind of context in which this value is safe for use. e.g. url,\n * resource_url, html, js and css.\n * @param {*} value The value that that should be considered trusted/safe.\n * @returns {*} A value that can be used to stand in for the provided `value` in places\n * where Angular expects a $sce.trustAs() return value.\n */\n\n /**\n * @ngdoc method\n * @name $sce#trustAsHtml\n *\n * @description\n * Shorthand method. `$sce.trustAsHtml(value)` →\n * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.HTML, value)`}\n *\n * @param {*} value The value to trustAs.\n * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedHtml\n * $sce.getTrustedHtml(value)} to obtain the original value. (privileged directives\n * only accept expressions that are either literal constants or are the\n * return value of {@link ng.$sce#trustAs $sce.trustAs}.)\n */\n\n /**\n * @ngdoc method\n * @name $sce#trustAsUrl\n *\n * @description\n * Shorthand method. `$sce.trustAsUrl(value)` →\n * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.URL, value)`}\n *\n * @param {*} value The value to trustAs.\n * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedUrl\n * $sce.getTrustedUrl(value)} to obtain the original value. (privileged directives\n * only accept expressions that are either literal constants or are the\n * return value of {@link ng.$sce#trustAs $sce.trustAs}.)\n */\n\n /**\n * @ngdoc method\n * @name $sce#trustAsResourceUrl\n *\n * @description\n * Shorthand method. `$sce.trustAsResourceUrl(value)` →\n * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.RESOURCE_URL, value)`}\n *\n * @param {*} value The value to trustAs.\n * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedResourceUrl\n * $sce.getTrustedResourceUrl(value)} to obtain the original value. (privileged directives\n * only accept expressions that are either literal constants or are the return\n * value of {@link ng.$sce#trustAs $sce.trustAs}.)\n */\n\n /**\n * @ngdoc method\n * @name $sce#trustAsJs\n *\n * @description\n * Shorthand method. `$sce.trustAsJs(value)` →\n * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.JS, value)`}\n *\n * @param {*} value The value to trustAs.\n * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedJs\n * $sce.getTrustedJs(value)} to obtain the original value. (privileged directives\n * only accept expressions that are either literal constants or are the\n * return value of {@link ng.$sce#trustAs $sce.trustAs}.)\n */\n\n /**\n * @ngdoc method\n * @name $sce#getTrusted\n *\n * @description\n * Delegates to {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted`}. As such,\n * takes the result of a {@link ng.$sce#trustAs `$sce.trustAs`}() call and returns the\n * originally supplied value if the queried context type is a supertype of the created type.\n * If this condition isn't satisfied, throws an exception.\n *\n * @param {string} type The kind of context in which this value is to be used.\n * @param {*} maybeTrusted The result of a prior {@link ng.$sce#trustAs `$sce.trustAs`}\n * call.\n * @returns {*} The value the was originally provided to\n * {@link ng.$sce#trustAs `$sce.trustAs`} if valid in this context.\n * Otherwise, throws an exception.\n */\n\n /**\n * @ngdoc method\n * @name $sce#getTrustedHtml\n *\n * @description\n * Shorthand method. `$sce.getTrustedHtml(value)` →\n * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.HTML, value)`}\n *\n * @param {*} value The value to pass to `$sce.getTrusted`.\n * @returns {*} The return value of `$sce.getTrusted($sce.HTML, value)`\n */\n\n /**\n * @ngdoc method\n * @name $sce#getTrustedCss\n *\n * @description\n * Shorthand method. `$sce.getTrustedCss(value)` →\n * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.CSS, value)`}\n *\n * @param {*} value The value to pass to `$sce.getTrusted`.\n * @returns {*} The return value of `$sce.getTrusted($sce.CSS, value)`\n */\n\n /**\n * @ngdoc method\n * @name $sce#getTrustedUrl\n *\n * @description\n * Shorthand method. `$sce.getTrustedUrl(value)` →\n * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.URL, value)`}\n *\n * @param {*} value The value to pass to `$sce.getTrusted`.\n * @returns {*} The return value of `$sce.getTrusted($sce.URL, value)`\n */\n\n /**\n * @ngdoc method\n * @name $sce#getTrustedResourceUrl\n *\n * @description\n * Shorthand method. `$sce.getTrustedResourceUrl(value)` →\n * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.RESOURCE_URL, value)`}\n *\n * @param {*} value The value to pass to `$sceDelegate.getTrusted`.\n * @returns {*} The return value of `$sce.getTrusted($sce.RESOURCE_URL, value)`\n */\n\n /**\n * @ngdoc method\n * @name $sce#getTrustedJs\n *\n * @description\n * Shorthand method. `$sce.getTrustedJs(value)` →\n * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.JS, value)`}\n *\n * @param {*} value The value to pass to `$sce.getTrusted`.\n * @returns {*} The return value of `$sce.getTrusted($sce.JS, value)`\n */\n\n /**\n * @ngdoc method\n * @name $sce#parseAsHtml\n *\n * @description\n * Shorthand method. `$sce.parseAsHtml(expression string)` →\n * {@link ng.$sce#parse `$sce.parseAs($sce.HTML, value)`}\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n */\n\n /**\n * @ngdoc method\n * @name $sce#parseAsCss\n *\n * @description\n * Shorthand method. `$sce.parseAsCss(value)` →\n * {@link ng.$sce#parse `$sce.parseAs($sce.CSS, value)`}\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n */\n\n /**\n * @ngdoc method\n * @name $sce#parseAsUrl\n *\n * @description\n * Shorthand method. `$sce.parseAsUrl(value)` →\n * {@link ng.$sce#parse `$sce.parseAs($sce.URL, value)`}\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n */\n\n /**\n * @ngdoc method\n * @name $sce#parseAsResourceUrl\n *\n * @description\n * Shorthand method. `$sce.parseAsResourceUrl(value)` →\n * {@link ng.$sce#parse `$sce.parseAs($sce.RESOURCE_URL, value)`}\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n */\n\n /**\n * @ngdoc method\n * @name $sce#parseAsJs\n *\n * @description\n * Shorthand method. `$sce.parseAsJs(value)` →\n * {@link ng.$sce#parse `$sce.parseAs($sce.JS, value)`}\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n */\n\n // Shorthand delegations.\n var parse = sce.parseAs,\n getTrusted = sce.getTrusted,\n trustAs = sce.trustAs;\n\n forEach(SCE_CONTEXTS, function (enumValue, name) {\n var lName = lowercase(name);\n sce[camelCase(\"parse_as_\" + lName)] = function (expr) {\n return parse(enumValue, expr);\n };\n sce[camelCase(\"get_trusted_\" + lName)] = function (value) {\n return getTrusted(enumValue, value);\n };\n sce[camelCase(\"trust_as_\" + lName)] = function (value) {\n return trustAs(enumValue, value);\n };\n });\n\n return sce;\n }];\n}\n\n/**\n * !!! This is an undocumented \"private\" service !!!\n *\n * @name $sniffer\n * @requires $window\n * @requires $document\n *\n * @property {boolean} history Does the browser support html5 history api ?\n * @property {boolean} hashchange Does the browser support hashchange event ?\n * @property {boolean} transitions Does the browser support CSS transition events ?\n * @property {boolean} animations Does the browser support CSS animation events ?\n *\n * @description\n * This is very simple implementation of testing browser's features.\n */\nfunction $SnifferProvider() {\n this.$get = ['$window', '$document', function($window, $document) {\n var eventSupport = {},\n android =\n int((/android (\\d+)/.exec(lowercase(($window.navigator || {}).userAgent)) || [])[1]),\n boxee = /Boxee/i.test(($window.navigator || {}).userAgent),\n document = $document[0] || {},\n documentMode = document.documentMode,\n vendorPrefix,\n vendorRegex = /^(Moz|webkit|O|ms)(?=[A-Z])/,\n bodyStyle = document.body && document.body.style,\n transitions = false,\n animations = false,\n match;\n\n if (bodyStyle) {\n for(var prop in bodyStyle) {\n if(match = vendorRegex.exec(prop)) {\n vendorPrefix = match[0];\n vendorPrefix = vendorPrefix.substr(0, 1).toUpperCase() + vendorPrefix.substr(1);\n break;\n }\n }\n\n if(!vendorPrefix) {\n vendorPrefix = ('WebkitOpacity' in bodyStyle) && 'webkit';\n }\n\n transitions = !!(('transition' in bodyStyle) || (vendorPrefix + 'Transition' in bodyStyle));\n animations = !!(('animation' in bodyStyle) || (vendorPrefix + 'Animation' in bodyStyle));\n\n if (android && (!transitions||!animations)) {\n transitions = isString(document.body.style.webkitTransition);\n animations = isString(document.body.style.webkitAnimation);\n }\n }\n\n\n return {\n // Android has history.pushState, but it does not update location correctly\n // so let's not use the history API at all.\n // http://code.google.com/p/android/issues/detail?id=17471\n // https://github.com/angular/angular.js/issues/904\n\n // older webkit browser (533.9) on Boxee box has exactly the same problem as Android has\n // so let's not use the history API also\n // We are purposefully using `!(android < 4)` to cover the case when `android` is undefined\n // jshint -W018\n history: !!($window.history && $window.history.pushState && !(android < 4) && !boxee),\n // jshint +W018\n hashchange: 'onhashchange' in $window &&\n // IE8 compatible mode lies\n (!documentMode || documentMode > 7),\n hasEvent: function(event) {\n // IE9 implements 'input' event it's so fubared that we rather pretend that it doesn't have\n // it. In particular the event is not fired when backspace or delete key are pressed or\n // when cut operation is performed.\n if (event == 'input' && msie == 9) return false;\n\n if (isUndefined(eventSupport[event])) {\n var divElm = document.createElement('div');\n eventSupport[event] = 'on' + event in divElm;\n }\n\n return eventSupport[event];\n },\n csp: csp(),\n vendorPrefix: vendorPrefix,\n transitions : transitions,\n animations : animations,\n android: android,\n msie : msie,\n msieDocumentMode: documentMode\n };\n }];\n}\n\nfunction $TimeoutProvider() {\n this.$get = ['$rootScope', '$browser', '$q', '$exceptionHandler',\n function($rootScope, $browser, $q, $exceptionHandler) {\n var deferreds = {};\n\n\n /**\n * @ngdoc service\n * @name $timeout\n *\n * @description\n * Angular's wrapper for `window.setTimeout`. The `fn` function is wrapped into a try/catch\n * block and delegates any exceptions to\n * {@link ng.$exceptionHandler $exceptionHandler} service.\n *\n * The return value of registering a timeout function is a promise, which will be resolved when\n * the timeout is reached and the timeout function is executed.\n *\n * To cancel a timeout request, call `$timeout.cancel(promise)`.\n *\n * In tests you can use {@link ngMock.$timeout `$timeout.flush()`} to\n * synchronously flush the queue of deferred functions.\n *\n * @param {function()} fn A function, whose execution should be delayed.\n * @param {number=} [delay=0] Delay in milliseconds.\n * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise\n * will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.\n * @returns {Promise} Promise that will be resolved when the timeout is reached. The value this\n * promise will be resolved with is the return value of the `fn` function.\n *\n */\n function timeout(fn, delay, invokeApply) {\n var deferred = $q.defer(),\n promise = deferred.promise,\n skipApply = (isDefined(invokeApply) && !invokeApply),\n timeoutId;\n\n timeoutId = $browser.defer(function() {\n try {\n deferred.resolve(fn());\n } catch(e) {\n deferred.reject(e);\n $exceptionHandler(e);\n }\n finally {\n delete deferreds[promise.$$timeoutId];\n }\n\n if (!skipApply) $rootScope.$apply();\n }, delay);\n\n promise.$$timeoutId = timeoutId;\n deferreds[timeoutId] = deferred;\n\n return promise;\n }\n\n\n /**\n * @ngdoc method\n * @name $timeout#cancel\n *\n * @description\n * Cancels a task associated with the `promise`. As a result of this, the promise will be\n * resolved with a rejection.\n *\n * @param {Promise=} promise Promise returned by the `$timeout` function.\n * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully\n * canceled.\n */\n timeout.cancel = function(promise) {\n if (promise && promise.$$timeoutId in deferreds) {\n deferreds[promise.$$timeoutId].reject('canceled');\n delete deferreds[promise.$$timeoutId];\n return $browser.defer.cancel(promise.$$timeoutId);\n }\n return false;\n };\n\n return timeout;\n }];\n}\n\n// NOTE: The usage of window and document instead of $window and $document here is\n// deliberate. This service depends on the specific behavior of anchor nodes created by the\n// browser (resolving and parsing URLs) that is unlikely to be provided by mock objects and\n// cause us to break tests. In addition, when the browser resolves a URL for XHR, it\n// doesn't know about mocked locations and resolves URLs to the real document - which is\n// exactly the behavior needed here. There is little value is mocking these out for this\n// service.\nvar urlParsingNode = document.createElement(\"a\");\nvar originUrl = urlResolve(window.location.href, true);\n\n\n/**\n *\n * Implementation Notes for non-IE browsers\n * ----------------------------------------\n * Assigning a URL to the href property of an anchor DOM node, even one attached to the DOM,\n * results both in the normalizing and parsing of the URL. Normalizing means that a relative\n * URL will be resolved into an absolute URL in the context of the application document.\n * Parsing means that the anchor node's host, hostname, protocol, port, pathname and related\n * properties are all populated to reflect the normalized URL. This approach has wide\n * compatibility - Safari 1+, Mozilla 1+, Opera 7+,e etc. See\n * http://www.aptana.com/reference/html/api/HTMLAnchorElement.html\n *\n * Implementation Notes for IE\n * ---------------------------\n * IE >= 8 and <= 10 normalizes the URL when assigned to the anchor node similar to the other\n * browsers. However, the parsed components will not be set if the URL assigned did not specify\n * them. (e.g. if you assign a.href = \"foo\", then a.protocol, a.host, etc. will be empty.) We\n * work around that by performing the parsing in a 2nd step by taking a previously normalized\n * URL (e.g. by assigning to a.href) and assigning it a.href again. This correctly populates the\n * properties such as protocol, hostname, port, etc.\n *\n * IE7 does not normalize the URL when assigned to an anchor node. (Apparently, it does, if one\n * uses the inner HTML approach to assign the URL as part of an HTML snippet -\n * http://stackoverflow.com/a/472729) However, setting img[src] does normalize the URL.\n * Unfortunately, setting img[src] to something like \"javascript:foo\" on IE throws an exception.\n * Since the primary usage for normalizing URLs is to sanitize such URLs, we can't use that\n * method and IE < 8 is unsupported.\n *\n * References:\n * http://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement\n * http://www.aptana.com/reference/html/api/HTMLAnchorElement.html\n * http://url.spec.whatwg.org/#urlutils\n * https://github.com/angular/angular.js/pull/2902\n * http://james.padolsey.com/javascript/parsing-urls-with-the-dom/\n *\n * @kind function\n * @param {string} url The URL to be parsed.\n * @description Normalizes and parses a URL.\n * @returns {object} Returns the normalized URL as a dictionary.\n *\n * | member name | Description |\n * |---------------|----------------|\n * | href | A normalized version of the provided URL if it was not an absolute URL |\n * | protocol | The protocol including the trailing colon |\n * | host | The host and port (if the port is non-default) of the normalizedUrl |\n * | search | The search params, minus the question mark |\n * | hash | The hash string, minus the hash symbol\n * | hostname | The hostname\n * | port | The port, without \":\"\n * | pathname | The pathname, beginning with \"/\"\n *\n */\nfunction urlResolve(url, base) {\n var href = url;\n\n if (msie) {\n // Normalize before parse. Refer Implementation Notes on why this is\n // done in two steps on IE.\n urlParsingNode.setAttribute(\"href\", href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/')\n ? urlParsingNode.pathname\n : '/' + urlParsingNode.pathname\n };\n}\n\n/**\n * Parse a request URL and determine whether this is a same-origin request as the application document.\n *\n * @param {string|object} requestUrl The url of the request as a string that will be resolved\n * or a parsed URL object.\n * @returns {boolean} Whether the request is for the same origin as the application document.\n */\nfunction urlIsSameOrigin(requestUrl) {\n var parsed = (isString(requestUrl)) ? urlResolve(requestUrl) : requestUrl;\n return (parsed.protocol === originUrl.protocol &&\n parsed.host === originUrl.host);\n}\n\n/**\n * @ngdoc service\n * @name $window\n *\n * @description\n * A reference to the browser's `window` object. While `window`\n * is globally available in JavaScript, it causes testability problems, because\n * it is a global variable. In angular we always refer to it through the\n * `$window` service, so it may be overridden, removed or mocked for testing.\n *\n * Expressions, like the one defined for the `ngClick` directive in the example\n * below, are evaluated with respect to the current scope. Therefore, there is\n * no risk of inadvertently coding in a dependency on a global value in such an\n * expression.\n *\n * @example\n \n \n \n
\n \n \n
\n
\n \n it('should display the greeting in the input box', function() {\n element(by.model('greeting')).sendKeys('Hello, E2E Tests');\n // If we click the button it will block the test runner\n // element(':button').click();\n });\n \n
\n */\nfunction $WindowProvider(){\n this.$get = valueFn(window);\n}\n\n/* global currencyFilter: true,\n dateFilter: true,\n filterFilter: true,\n jsonFilter: true,\n limitToFilter: true,\n lowercaseFilter: true,\n numberFilter: true,\n orderByFilter: true,\n uppercaseFilter: true,\n */\n\n/**\n * @ngdoc provider\n * @name $filterProvider\n * @description\n *\n * Filters are just functions which transform input to an output. However filters need to be\n * Dependency Injected. To achieve this a filter definition consists of a factory function which is\n * annotated with dependencies and is responsible for creating a filter function.\n *\n * ```js\n * // Filter registration\n * function MyModule($provide, $filterProvider) {\n * // create a service to demonstrate injection (not always needed)\n * $provide.value('greet', function(name){\n * return 'Hello ' + name + '!';\n * });\n *\n * // register a filter factory which uses the\n * // greet service to demonstrate DI.\n * $filterProvider.register('greet', function(greet){\n * // return the filter function which uses the greet service\n * // to generate salutation\n * return function(text) {\n * // filters need to be forgiving so check input validity\n * return text && greet(text) || text;\n * };\n * });\n * }\n * ```\n *\n * The filter function is registered with the `$injector` under the filter name suffix with\n * `Filter`.\n *\n * ```js\n * it('should be the same instance', inject(\n * function($filterProvider) {\n * $filterProvider.register('reverse', function(){\n * return ...;\n * });\n * },\n * function($filter, reverseFilter) {\n * expect($filter('reverse')).toBe(reverseFilter);\n * });\n * ```\n *\n *\n * For more information about how angular filters work, and how to create your own filters, see\n * {@link guide/filter Filters} in the Angular Developer Guide.\n */\n\n/**\n * @ngdoc service\n * @name $filter\n * @kind function\n * @description\n * Filters are used for formatting data displayed to the user.\n *\n * The general syntax in templates is as follows:\n *\n * {{ expression [| filter_name[:parameter_value] ... ] }}\n *\n * @param {String} name Name of the filter function to retrieve\n * @return {Function} the filter function\n * @example\n \n \n
\n

{{ originalText }}

\n

{{ filteredText }}

\n
\n
\n\n \n angular.module('filterExample', [])\n .controller('MainCtrl', function($scope, $filter) {\n $scope.originalText = 'hello';\n $scope.filteredText = $filter('uppercase')($scope.originalText);\n });\n \n
\n */\n$FilterProvider.$inject = ['$provide'];\nfunction $FilterProvider($provide) {\n var suffix = 'Filter';\n\n /**\n * @ngdoc method\n * @name $filterProvider#register\n * @param {string|Object} name Name of the filter function, or an object map of filters where\n * the keys are the filter names and the values are the filter factories.\n * @returns {Object} Registered filter instance, or if a map of filters was provided then a map\n * of the registered filter instances.\n */\n function register(name, factory) {\n if(isObject(name)) {\n var filters = {};\n forEach(name, function(filter, key) {\n filters[key] = register(key, filter);\n });\n return filters;\n } else {\n return $provide.factory(name + suffix, factory);\n }\n }\n this.register = register;\n\n this.$get = ['$injector', function($injector) {\n return function(name) {\n return $injector.get(name + suffix);\n };\n }];\n\n ////////////////////////////////////////\n\n /* global\n currencyFilter: false,\n dateFilter: false,\n filterFilter: false,\n jsonFilter: false,\n limitToFilter: false,\n lowercaseFilter: false,\n numberFilter: false,\n orderByFilter: false,\n uppercaseFilter: false,\n */\n\n register('currency', currencyFilter);\n register('date', dateFilter);\n register('filter', filterFilter);\n register('json', jsonFilter);\n register('limitTo', limitToFilter);\n register('lowercase', lowercaseFilter);\n register('number', numberFilter);\n register('orderBy', orderByFilter);\n register('uppercase', uppercaseFilter);\n}\n\n/**\n * @ngdoc filter\n * @name filter\n * @kind function\n *\n * @description\n * Selects a subset of items from `array` and returns it as a new array.\n *\n * @param {Array} array The source array.\n * @param {string|Object|function()} expression The predicate to be used for selecting items from\n * `array`.\n *\n * Can be one of:\n *\n * - `string`: The string is evaluated as an expression and the resulting value is used for substring match against\n * the contents of the `array`. All strings or objects with string properties in `array` that contain this string\n * will be returned. The predicate can be negated by prefixing the string with `!`.\n *\n * - `Object`: A pattern object can be used to filter specific properties on objects contained\n * by `array`. For example `{name:\"M\", phone:\"1\"}` predicate will return an array of items\n * which have property `name` containing \"M\" and property `phone` containing \"1\". A special\n * property name `$` can be used (as in `{$:\"text\"}`) to accept a match against any\n * property of the object. That's equivalent to the simple substring match with a `string`\n * as described above. The predicate can be negated by prefixing the string with `!`.\n * For Example `{name: \"!M\"}` predicate will return an array of items which have property `name`\n * not containing \"M\".\n *\n * - `function(value)`: A predicate function can be used to write arbitrary filters. The function is\n * called for each element of `array`. The final result is an array of those elements that\n * the predicate returned true for.\n *\n * @param {function(actual, expected)|true|undefined} comparator Comparator which is used in\n * determining if the expected value (from the filter expression) and actual value (from\n * the object in the array) should be considered a match.\n *\n * Can be one of:\n *\n * - `function(actual, expected)`:\n * The function will be given the object value and the predicate value to compare and\n * should return true if the item should be included in filtered result.\n *\n * - `true`: A shorthand for `function(actual, expected) { return angular.equals(expected, actual)}`.\n * this is essentially strict comparison of expected and actual.\n *\n * - `false|undefined`: A short hand for a function which will look for a substring match in case\n * insensitive way.\n *\n * @example\n \n \n
\n\n Search: \n \n \n \n \n \n \n
NamePhone
{{friend.name}}{{friend.phone}}
\n
\n Any:
\n Name only
\n Phone only
\n Equality
\n \n \n \n \n \n \n
NamePhone
{{friendObj.name}}{{friendObj.phone}}
\n
\n \n var expectFriendNames = function(expectedNames, key) {\n element.all(by.repeater(key + ' in friends').column(key + '.name')).then(function(arr) {\n arr.forEach(function(wd, i) {\n expect(wd.getText()).toMatch(expectedNames[i]);\n });\n });\n };\n\n it('should search across all fields when filtering with a string', function() {\n var searchText = element(by.model('searchText'));\n searchText.clear();\n searchText.sendKeys('m');\n expectFriendNames(['Mary', 'Mike', 'Adam'], 'friend');\n\n searchText.clear();\n searchText.sendKeys('76');\n expectFriendNames(['John', 'Julie'], 'friend');\n });\n\n it('should search in specific fields when filtering with a predicate object', function() {\n var searchAny = element(by.model('search.$'));\n searchAny.clear();\n searchAny.sendKeys('i');\n expectFriendNames(['Mary', 'Mike', 'Julie', 'Juliette'], 'friendObj');\n });\n it('should use a equal comparison when comparator is true', function() {\n var searchName = element(by.model('search.name'));\n var strict = element(by.model('strict'));\n searchName.clear();\n searchName.sendKeys('Julie');\n strict.click();\n expectFriendNames(['Julie'], 'friendObj');\n });\n \n
\n */\nfunction filterFilter() {\n return function(array, expression, comparator) {\n if (!isArray(array)) return array;\n\n var comparatorType = typeof(comparator),\n predicates = [];\n\n predicates.check = function(value) {\n for (var j = 0; j < predicates.length; j++) {\n if(!predicates[j](value)) {\n return false;\n }\n }\n return true;\n };\n\n if (comparatorType !== 'function') {\n if (comparatorType === 'boolean' && comparator) {\n comparator = function(obj, text) {\n return angular.equals(obj, text);\n };\n } else {\n comparator = function(obj, text) {\n if (obj && text && typeof obj === 'object' && typeof text === 'object') {\n for (var objKey in obj) {\n if (objKey.charAt(0) !== '$' && hasOwnProperty.call(obj, objKey) &&\n comparator(obj[objKey], text[objKey])) {\n return true;\n }\n }\n return false;\n }\n text = (''+text).toLowerCase();\n return (''+obj).toLowerCase().indexOf(text) > -1;\n };\n }\n }\n\n var search = function(obj, text){\n if (typeof text === 'string' && text.charAt(0) === '!') {\n return !search(obj, text.substr(1));\n }\n switch (typeof obj) {\n case 'boolean':\n case 'number':\n case 'string':\n return comparator(obj, text);\n case 'object':\n switch (typeof text) {\n case 'object':\n return comparator(obj, text);\n default:\n for ( var objKey in obj) {\n if (objKey.charAt(0) !== '$' && search(obj[objKey], text)) {\n return true;\n }\n }\n break;\n }\n return false;\n case 'array':\n for ( var i = 0; i < obj.length; i++) {\n if (search(obj[i], text)) {\n return true;\n }\n }\n return false;\n default:\n return false;\n }\n };\n switch (typeof expression) {\n case 'boolean':\n case 'number':\n case 'string':\n // Set up expression object and fall through\n expression = {$:expression};\n // jshint -W086\n case 'object':\n // jshint +W086\n for (var key in expression) {\n (function(path) {\n if (typeof expression[path] === 'undefined') return;\n predicates.push(function(value) {\n return search(path == '$' ? value : (value && value[path]), expression[path]);\n });\n })(key);\n }\n break;\n case 'function':\n predicates.push(expression);\n break;\n default:\n return array;\n }\n var filtered = [];\n for ( var j = 0; j < array.length; j++) {\n var value = array[j];\n if (predicates.check(value)) {\n filtered.push(value);\n }\n }\n return filtered;\n };\n}\n\n/**\n * @ngdoc filter\n * @name currency\n * @kind function\n *\n * @description\n * Formats a number as a currency (ie $1,234.56). When no currency symbol is provided, default\n * symbol for current locale is used.\n *\n * @param {number} amount Input to filter.\n * @param {string=} symbol Currency symbol or identifier to be displayed.\n * @returns {string} Formatted number.\n *\n *\n * @example\n \n \n \n
\n
\n default currency symbol ($): {{amount | currency}}
\n custom currency identifier (USD$): {{amount | currency:\"USD$\"}}\n
\n
\n \n it('should init with 1234.56', function() {\n expect(element(by.id('currency-default')).getText()).toBe('$1,234.56');\n expect(element(by.binding('amount | currency:\"USD$\"')).getText()).toBe('USD$1,234.56');\n });\n it('should update', function() {\n if (browser.params.browser == 'safari') {\n // Safari does not understand the minus key. See\n // https://github.com/angular/protractor/issues/481\n return;\n }\n element(by.model('amount')).clear();\n element(by.model('amount')).sendKeys('-1234');\n expect(element(by.id('currency-default')).getText()).toBe('($1,234.00)');\n expect(element(by.binding('amount | currency:\"USD$\"')).getText()).toBe('(USD$1,234.00)');\n });\n \n
\n */\ncurrencyFilter.$inject = ['$locale'];\nfunction currencyFilter($locale) {\n var formats = $locale.NUMBER_FORMATS;\n return function(amount, currencySymbol){\n if (isUndefined(currencySymbol)) currencySymbol = formats.CURRENCY_SYM;\n return formatNumber(amount, formats.PATTERNS[1], formats.GROUP_SEP, formats.DECIMAL_SEP, 2).\n replace(/\\u00A4/g, currencySymbol);\n };\n}\n\n/**\n * @ngdoc filter\n * @name number\n * @kind function\n *\n * @description\n * Formats a number as text.\n *\n * If the input is not a number an empty string is returned.\n *\n * @param {number|string} number Number to format.\n * @param {(number|string)=} fractionSize Number of decimal places to round the number to.\n * If this is not provided then the fraction size is computed from the current locale's number\n * formatting pattern. In the case of the default locale, it will be 3.\n * @returns {string} Number rounded to decimalPlaces and places a “,” after each third digit.\n *\n * @example\n \n \n \n
\n Enter number:
\n Default formatting: {{val | number}}
\n No fractions: {{val | number:0}}
\n Negative number: {{-val | number:4}}\n
\n
\n \n it('should format numbers', function() {\n expect(element(by.id('number-default')).getText()).toBe('1,234.568');\n expect(element(by.binding('val | number:0')).getText()).toBe('1,235');\n expect(element(by.binding('-val | number:4')).getText()).toBe('-1,234.5679');\n });\n\n it('should update', function() {\n element(by.model('val')).clear();\n element(by.model('val')).sendKeys('3374.333');\n expect(element(by.id('number-default')).getText()).toBe('3,374.333');\n expect(element(by.binding('val | number:0')).getText()).toBe('3,374');\n expect(element(by.binding('-val | number:4')).getText()).toBe('-3,374.3330');\n });\n \n
\n */\n\n\nnumberFilter.$inject = ['$locale'];\nfunction numberFilter($locale) {\n var formats = $locale.NUMBER_FORMATS;\n return function(number, fractionSize) {\n return formatNumber(number, formats.PATTERNS[0], formats.GROUP_SEP, formats.DECIMAL_SEP,\n fractionSize);\n };\n}\n\nvar DECIMAL_SEP = '.';\nfunction formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {\n if (number == null || !isFinite(number) || isObject(number)) return '';\n\n var isNegative = number < 0;\n number = Math.abs(number);\n var numStr = number + '',\n formatedText = '',\n parts = [];\n\n var hasExponent = false;\n if (numStr.indexOf('e') !== -1) {\n var match = numStr.match(/([\\d\\.]+)e(-?)(\\d+)/);\n if (match && match[2] == '-' && match[3] > fractionSize + 1) {\n numStr = '0';\n number = 0;\n } else {\n formatedText = numStr;\n hasExponent = true;\n }\n }\n\n if (!hasExponent) {\n var fractionLen = (numStr.split(DECIMAL_SEP)[1] || '').length;\n\n // determine fractionSize if it is not specified\n if (isUndefined(fractionSize)) {\n fractionSize = Math.min(Math.max(pattern.minFrac, fractionLen), pattern.maxFrac);\n }\n\n // safely round numbers in JS without hitting imprecisions of floating-point arithmetics\n // inspired by:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round\n number = +(Math.round(+(number.toString() + 'e' + fractionSize)).toString() + 'e' + -fractionSize);\n\n if (number === 0) {\n isNegative = false;\n }\n\n var fraction = ('' + number).split(DECIMAL_SEP);\n var whole = fraction[0];\n fraction = fraction[1] || '';\n\n var i, pos = 0,\n lgroup = pattern.lgSize,\n group = pattern.gSize;\n\n if (whole.length >= (lgroup + group)) {\n pos = whole.length - lgroup;\n for (i = 0; i < pos; i++) {\n if ((pos - i)%group === 0 && i !== 0) {\n formatedText += groupSep;\n }\n formatedText += whole.charAt(i);\n }\n }\n\n for (i = pos; i < whole.length; i++) {\n if ((whole.length - i)%lgroup === 0 && i !== 0) {\n formatedText += groupSep;\n }\n formatedText += whole.charAt(i);\n }\n\n // format fraction part.\n while(fraction.length < fractionSize) {\n fraction += '0';\n }\n\n if (fractionSize && fractionSize !== \"0\") formatedText += decimalSep + fraction.substr(0, fractionSize);\n } else {\n\n if (fractionSize > 0 && number > -1 && number < 1) {\n formatedText = number.toFixed(fractionSize);\n }\n }\n\n parts.push(isNegative ? pattern.negPre : pattern.posPre);\n parts.push(formatedText);\n parts.push(isNegative ? pattern.negSuf : pattern.posSuf);\n return parts.join('');\n}\n\nfunction padNumber(num, digits, trim) {\n var neg = '';\n if (num < 0) {\n neg = '-';\n num = -num;\n }\n num = '' + num;\n while(num.length < digits) num = '0' + num;\n if (trim)\n num = num.substr(num.length - digits);\n return neg + num;\n}\n\n\nfunction dateGetter(name, size, offset, trim) {\n offset = offset || 0;\n return function(date) {\n var value = date['get' + name]();\n if (offset > 0 || value > -offset)\n value += offset;\n if (value === 0 && offset == -12 ) value = 12;\n return padNumber(value, size, trim);\n };\n}\n\nfunction dateStrGetter(name, shortForm) {\n return function(date, formats) {\n var value = date['get' + name]();\n var get = uppercase(shortForm ? ('SHORT' + name) : name);\n\n return formats[get][value];\n };\n}\n\nfunction timeZoneGetter(date) {\n var zone = -1 * date.getTimezoneOffset();\n var paddedZone = (zone >= 0) ? \"+\" : \"\";\n\n paddedZone += padNumber(Math[zone > 0 ? 'floor' : 'ceil'](zone / 60), 2) +\n padNumber(Math.abs(zone % 60), 2);\n\n return paddedZone;\n}\n\nfunction ampmGetter(date, formats) {\n return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1];\n}\n\nvar DATE_FORMATS = {\n yyyy: dateGetter('FullYear', 4),\n yy: dateGetter('FullYear', 2, 0, true),\n y: dateGetter('FullYear', 1),\n MMMM: dateStrGetter('Month'),\n MMM: dateStrGetter('Month', true),\n MM: dateGetter('Month', 2, 1),\n M: dateGetter('Month', 1, 1),\n dd: dateGetter('Date', 2),\n d: dateGetter('Date', 1),\n HH: dateGetter('Hours', 2),\n H: dateGetter('Hours', 1),\n hh: dateGetter('Hours', 2, -12),\n h: dateGetter('Hours', 1, -12),\n mm: dateGetter('Minutes', 2),\n m: dateGetter('Minutes', 1),\n ss: dateGetter('Seconds', 2),\n s: dateGetter('Seconds', 1),\n // while ISO 8601 requires fractions to be prefixed with `.` or `,`\n // we can be just safely rely on using `sss` since we currently don't support single or two digit fractions\n sss: dateGetter('Milliseconds', 3),\n EEEE: dateStrGetter('Day'),\n EEE: dateStrGetter('Day', true),\n a: ampmGetter,\n Z: timeZoneGetter\n};\n\nvar DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,\n NUMBER_STRING = /^\\-?\\d+$/;\n\n/**\n * @ngdoc filter\n * @name date\n * @kind function\n *\n * @description\n * Formats `date` to a string based on the requested `format`.\n *\n * `format` string can be composed of the following elements:\n *\n * * `'yyyy'`: 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010)\n * * `'yy'`: 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)\n * * `'y'`: 1 digit representation of year, e.g. (AD 1 => 1, AD 199 => 199)\n * * `'MMMM'`: Month in year (January-December)\n * * `'MMM'`: Month in year (Jan-Dec)\n * * `'MM'`: Month in year, padded (01-12)\n * * `'M'`: Month in year (1-12)\n * * `'dd'`: Day in month, padded (01-31)\n * * `'d'`: Day in month (1-31)\n * * `'EEEE'`: Day in Week,(Sunday-Saturday)\n * * `'EEE'`: Day in Week, (Sun-Sat)\n * * `'HH'`: Hour in day, padded (00-23)\n * * `'H'`: Hour in day (0-23)\n * * `'hh'`: Hour in am/pm, padded (01-12)\n * * `'h'`: Hour in am/pm, (1-12)\n * * `'mm'`: Minute in hour, padded (00-59)\n * * `'m'`: Minute in hour (0-59)\n * * `'ss'`: Second in minute, padded (00-59)\n * * `'s'`: Second in minute (0-59)\n * * `'.sss' or ',sss'`: Millisecond in second, padded (000-999)\n * * `'a'`: am/pm marker\n * * `'Z'`: 4 digit (+sign) representation of the timezone offset (-1200-+1200)\n *\n * `format` string can also be one of the following predefined\n * {@link guide/i18n localizable formats}:\n *\n * * `'medium'`: equivalent to `'MMM d, y h:mm:ss a'` for en_US locale\n * (e.g. Sep 3, 2010 12:05:08 pm)\n * * `'short'`: equivalent to `'M/d/yy h:mm a'` for en_US locale (e.g. 9/3/10 12:05 pm)\n * * `'fullDate'`: equivalent to `'EEEE, MMMM d,y'` for en_US locale\n * (e.g. Friday, September 3, 2010)\n * * `'longDate'`: equivalent to `'MMMM d, y'` for en_US locale (e.g. September 3, 2010)\n * * `'mediumDate'`: equivalent to `'MMM d, y'` for en_US locale (e.g. Sep 3, 2010)\n * * `'shortDate'`: equivalent to `'M/d/yy'` for en_US locale (e.g. 9/3/10)\n * * `'mediumTime'`: equivalent to `'h:mm:ss a'` for en_US locale (e.g. 12:05:08 pm)\n * * `'shortTime'`: equivalent to `'h:mm a'` for en_US locale (e.g. 12:05 pm)\n *\n * `format` string can contain literal values. These need to be escaped by surrounding with single quotes (e.g.\n * `\"h 'in the morning'\"`). In order to output a single quote, escape it - i.e., two single quotes in a sequence\n * (e.g. `\"h 'o''clock'\"`).\n *\n * @param {(Date|number|string)} date Date to format either as Date object, milliseconds (string or\n * number) or various ISO 8601 datetime string formats (e.g. yyyy-MM-ddTHH:mm:ss.sssZ and its\n * shorter versions like yyyy-MM-ddTHH:mmZ, yyyy-MM-dd or yyyyMMddTHHmmssZ). If no timezone is\n * specified in the string input, the time is considered to be in the local timezone.\n * @param {string=} format Formatting rules (see Description). If not specified,\n * `mediumDate` is used.\n * @returns {string} Formatted string or the input if input is not recognized as date/millis.\n *\n * @example\n \n \n {{1288323623006 | date:'medium'}}:\n {{1288323623006 | date:'medium'}}
\n {{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}:\n {{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}
\n {{1288323623006 | date:'MM/dd/yyyy @ h:mma'}}:\n {{'1288323623006' | date:'MM/dd/yyyy @ h:mma'}}
\n {{1288323623006 | date:\"MM/dd/yyyy 'at' h:mma\"}}:\n {{'1288323623006' | date:\"MM/dd/yyyy 'at' h:mma\"}}
\n
\n \n it('should format date', function() {\n expect(element(by.binding(\"1288323623006 | date:'medium'\")).getText()).\n toMatch(/Oct 2\\d, 2010 \\d{1,2}:\\d{2}:\\d{2} (AM|PM)/);\n expect(element(by.binding(\"1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'\")).getText()).\n toMatch(/2010\\-10\\-2\\d \\d{2}:\\d{2}:\\d{2} (\\-|\\+)?\\d{4}/);\n expect(element(by.binding(\"'1288323623006' | date:'MM/dd/yyyy @ h:mma'\")).getText()).\n toMatch(/10\\/2\\d\\/2010 @ \\d{1,2}:\\d{2}(AM|PM)/);\n expect(element(by.binding(\"'1288323623006' | date:\\\"MM/dd/yyyy 'at' h:mma\\\"\")).getText()).\n toMatch(/10\\/2\\d\\/2010 at \\d{1,2}:\\d{2}(AM|PM)/);\n });\n \n
\n */\ndateFilter.$inject = ['$locale'];\nfunction dateFilter($locale) {\n\n\n var R_ISO8601_STR = /^(\\d{4})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\n // 1 2 3 4 5 6 7 8 9 10 11\n function jsonStringToDate(string) {\n var match;\n if (match = string.match(R_ISO8601_STR)) {\n var date = new Date(0),\n tzHour = 0,\n tzMin = 0,\n dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear,\n timeSetter = match[8] ? date.setUTCHours : date.setHours;\n\n if (match[9]) {\n tzHour = int(match[9] + match[10]);\n tzMin = int(match[9] + match[11]);\n }\n dateSetter.call(date, int(match[1]), int(match[2]) - 1, int(match[3]));\n var h = int(match[4]||0) - tzHour;\n var m = int(match[5]||0) - tzMin;\n var s = int(match[6]||0);\n var ms = Math.round(parseFloat('0.' + (match[7]||0)) * 1000);\n timeSetter.call(date, h, m, s, ms);\n return date;\n }\n return string;\n }\n\n\n return function(date, format) {\n var text = '',\n parts = [],\n fn, match;\n\n format = format || 'mediumDate';\n format = $locale.DATETIME_FORMATS[format] || format;\n if (isString(date)) {\n date = NUMBER_STRING.test(date) ? int(date) : jsonStringToDate(date);\n }\n\n if (isNumber(date)) {\n date = new Date(date);\n }\n\n if (!isDate(date)) {\n return date;\n }\n\n while(format) {\n match = DATE_FORMATS_SPLIT.exec(format);\n if (match) {\n parts = concat(parts, match, 1);\n format = parts.pop();\n } else {\n parts.push(format);\n format = null;\n }\n }\n\n forEach(parts, function(value){\n fn = DATE_FORMATS[value];\n text += fn ? fn(date, $locale.DATETIME_FORMATS)\n : value.replace(/(^'|'$)/g, '').replace(/''/g, \"'\");\n });\n\n return text;\n };\n}\n\n\n/**\n * @ngdoc filter\n * @name json\n * @kind function\n *\n * @description\n * Allows you to convert a JavaScript object into JSON string.\n *\n * This filter is mostly useful for debugging. When using the double curly {{value}} notation\n * the binding is automatically converted to JSON.\n *\n * @param {*} object Any JavaScript object (including arrays and primitive types) to filter.\n * @returns {string} JSON string.\n *\n *\n * @example\n \n \n
{{ {'name':'value'} | json }}
\n
\n \n it('should jsonify filtered objects', function() {\n expect(element(by.binding(\"{'name':'value'}\")).getText()).toMatch(/\\{\\n \"name\": ?\"value\"\\n}/);\n });\n \n
\n *\n */\nfunction jsonFilter() {\n return function(object) {\n return toJson(object, true);\n };\n}\n\n\n/**\n * @ngdoc filter\n * @name lowercase\n * @kind function\n * @description\n * Converts string to lowercase.\n * @see angular.lowercase\n */\nvar lowercaseFilter = valueFn(lowercase);\n\n\n/**\n * @ngdoc filter\n * @name uppercase\n * @kind function\n * @description\n * Converts string to uppercase.\n * @see angular.uppercase\n */\nvar uppercaseFilter = valueFn(uppercase);\n\n/**\n * @ngdoc filter\n * @name limitTo\n * @kind function\n *\n * @description\n * Creates a new array or string containing only a specified number of elements. The elements\n * are taken from either the beginning or the end of the source array or string, as specified by\n * the value and sign (positive or negative) of `limit`.\n *\n * @param {Array|string} input Source array or string to be limited.\n * @param {string|number} limit The length of the returned array or string. If the `limit` number\n * is positive, `limit` number of items from the beginning of the source array/string are copied.\n * If the number is negative, `limit` number of items from the end of the source array/string\n * are copied. The `limit` will be trimmed if it exceeds `array.length`\n * @returns {Array|string} A new sub-array or substring of length `limit` or less if input array\n * had less than `limit` elements.\n *\n * @example\n \n \n \n
\n Limit {{numbers}} to: \n

Output numbers: {{ numbers | limitTo:numLimit }}

\n Limit {{letters}} to: \n

Output letters: {{ letters | limitTo:letterLimit }}

\n
\n
\n \n var numLimitInput = element(by.model('numLimit'));\n var letterLimitInput = element(by.model('letterLimit'));\n var limitedNumbers = element(by.binding('numbers | limitTo:numLimit'));\n var limitedLetters = element(by.binding('letters | limitTo:letterLimit'));\n\n it('should limit the number array to first three items', function() {\n expect(numLimitInput.getAttribute('value')).toBe('3');\n expect(letterLimitInput.getAttribute('value')).toBe('3');\n expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3]');\n expect(limitedLetters.getText()).toEqual('Output letters: abc');\n });\n\n // There is a bug in safari and protractor that doesn't like the minus key\n // it('should update the output when -3 is entered', function() {\n // numLimitInput.clear();\n // numLimitInput.sendKeys('-3');\n // letterLimitInput.clear();\n // letterLimitInput.sendKeys('-3');\n // expect(limitedNumbers.getText()).toEqual('Output numbers: [7,8,9]');\n // expect(limitedLetters.getText()).toEqual('Output letters: ghi');\n // });\n\n it('should not exceed the maximum size of input array', function() {\n numLimitInput.clear();\n numLimitInput.sendKeys('100');\n letterLimitInput.clear();\n letterLimitInput.sendKeys('100');\n expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3,4,5,6,7,8,9]');\n expect(limitedLetters.getText()).toEqual('Output letters: abcdefghi');\n });\n \n
\n */\nfunction limitToFilter(){\n return function(input, limit) {\n if (!isArray(input) && !isString(input)) return input;\n\n if (Math.abs(Number(limit)) === Infinity) {\n limit = Number(limit);\n } else {\n limit = int(limit);\n }\n\n if (isString(input)) {\n //NaN check on limit\n if (limit) {\n return limit >= 0 ? input.slice(0, limit) : input.slice(limit, input.length);\n } else {\n return \"\";\n }\n }\n\n var out = [],\n i, n;\n\n // if abs(limit) exceeds maximum length, trim it\n if (limit > input.length)\n limit = input.length;\n else if (limit < -input.length)\n limit = -input.length;\n\n if (limit > 0) {\n i = 0;\n n = limit;\n } else {\n i = input.length + limit;\n n = input.length;\n }\n\n for (; i=} expression A predicate to be\n * used by the comparator to determine the order of elements.\n *\n * Can be one of:\n *\n * - `function`: Getter function. The result of this function will be sorted using the\n * `<`, `=`, `>` operator.\n * - `string`: An Angular expression. The result of this expression is used to compare elements\n * (for example `name` to sort by a property called `name` or `name.substr(0, 3)` to sort by\n * 3 first characters of a property called `name`). The result of a constant expression\n * is interpreted as a property name to be used in comparisons (for example `\"special name\"`\n * to sort object by the value of their `special name` property). An expression can be\n * optionally prefixed with `+` or `-` to control ascending or descending sort order\n * (for example, `+name` or `-name`). If no property is provided, (e.g. `'+'`) then the array\n * element itself is used to compare where sorting.\n * - `Array`: An array of function or string predicates. The first predicate in the array\n * is used for sorting, but when two items are equivalent, the next predicate is used.\n *\n * If the predicate is missing or empty then it defaults to `'+'`.\n *\n * @param {boolean=} reverse Reverse the order of the array.\n * @returns {Array} Sorted copy of the source array.\n *\n * @example\n \n \n \n
\n
Sorting predicate = {{predicate}}; reverse = {{reverse}}
\n
\n [ unsorted ]\n \n \n \n \n \n \n \n \n \n \n \n
Name\n (^)Phone NumberAge
{{friend.name}}{{friend.phone}}{{friend.age}}
\n
\n
\n
\n *\n * It's also possible to call the orderBy filter manually, by injecting `$filter`, retrieving the\n * filter routine with `$filter('orderBy')`, and calling the returned filter routine with the\n * desired parameters.\n *\n * Example:\n *\n * @example\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n
Name\n (^)Phone NumberAge
{{friend.name}}{{friend.phone}}{{friend.age}}
\n
\n
\n\n \n angular.module('orderByExample', [])\n .controller('ExampleController', ['$scope', '$filter', function($scope, $filter) {\n var orderBy = $filter('orderBy');\n $scope.friends = [\n { name: 'John', phone: '555-1212', age: 10 },\n { name: 'Mary', phone: '555-9876', age: 19 },\n { name: 'Mike', phone: '555-4321', age: 21 },\n { name: 'Adam', phone: '555-5678', age: 35 },\n { name: 'Julie', phone: '555-8765', age: 29 }\n ];\n $scope.order = function(predicate, reverse) {\n $scope.friends = orderBy($scope.friends, predicate, reverse);\n };\n $scope.order('-age',false);\n }]);\n \n
\n */\norderByFilter.$inject = ['$parse'];\nfunction orderByFilter($parse){\n return function(array, sortPredicate, reverseOrder) {\n if (!(isArrayLike(array))) return array;\n sortPredicate = isArray(sortPredicate) ? sortPredicate: [sortPredicate];\n if (sortPredicate.length === 0) { sortPredicate = ['+']; }\n sortPredicate = map(sortPredicate, function(predicate){\n var descending = false, get = predicate || identity;\n if (isString(predicate)) {\n if ((predicate.charAt(0) == '+' || predicate.charAt(0) == '-')) {\n descending = predicate.charAt(0) == '-';\n predicate = predicate.substring(1);\n }\n if ( predicate === '' ) {\n // Effectively no predicate was passed so we compare identity\n return reverseComparator(function(a,b) {\n return compare(a, b);\n }, descending);\n }\n get = $parse(predicate);\n if (get.constant) {\n var key = get();\n return reverseComparator(function(a,b) {\n return compare(a[key], b[key]);\n }, descending);\n }\n }\n return reverseComparator(function(a,b){\n return compare(get(a),get(b));\n }, descending);\n });\n return slice.call(array).sort(reverseComparator(comparator, reverseOrder));\n\n function comparator(o1, o2){\n for ( var i = 0; i < sortPredicate.length; i++) {\n var comp = sortPredicate[i](o1, o2);\n if (comp !== 0) return comp;\n }\n return 0;\n }\n function reverseComparator(comp, descending) {\n return toBoolean(descending)\n ? function(a,b){return comp(b,a);}\n : comp;\n }\n function compare(v1, v2){\n var t1 = typeof v1;\n var t2 = typeof v2;\n if (t1 == t2) {\n if (isDate(v1) && isDate(v2)) {\n v1 = v1.valueOf();\n v2 = v2.valueOf();\n }\n if (t1 == \"string\") {\n v1 = v1.toLowerCase();\n v2 = v2.toLowerCase();\n }\n if (v1 === v2) return 0;\n return v1 < v2 ? -1 : 1;\n } else {\n return t1 < t2 ? -1 : 1;\n }\n }\n };\n}\n\nfunction ngDirective(directive) {\n if (isFunction(directive)) {\n directive = {\n link: directive\n };\n }\n directive.restrict = directive.restrict || 'AC';\n return valueFn(directive);\n}\n\n/**\n * @ngdoc directive\n * @name a\n * @restrict E\n *\n * @description\n * Modifies the default behavior of the html A tag so that the default action is prevented when\n * the href attribute is empty.\n *\n * This change permits the easy creation of action links with the `ngClick` directive\n * without changing the location or causing page reloads, e.g.:\n * `Add Item`\n */\nvar htmlAnchorDirective = valueFn({\n restrict: 'E',\n compile: function(element, attr) {\n\n if (msie <= 8) {\n\n // turn link into a stylable link in IE\n // but only if it doesn't have name attribute, in which case it's an anchor\n if (!attr.href && !attr.name) {\n attr.$set('href', '');\n }\n\n // add a comment node to anchors to workaround IE bug that causes element content to be reset\n // to new attribute content if attribute is updated with value containing @ and element also\n // contains value with @\n // see issue #1949\n element.append(document.createComment('IE fix'));\n }\n\n if (!attr.href && !attr.xlinkHref && !attr.name) {\n return function(scope, element) {\n // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute.\n var href = toString.call(element.prop('href')) === '[object SVGAnimatedString]' ?\n 'xlink:href' : 'href';\n element.on('click', function(event){\n // if we have no href url, then don't navigate anywhere.\n if (!element.attr(href)) {\n event.preventDefault();\n }\n });\n };\n }\n }\n});\n\n/**\n * @ngdoc directive\n * @name ngHref\n * @restrict A\n * @priority 99\n *\n * @description\n * Using Angular markup like `{{hash}}` in an href attribute will\n * make the link go to the wrong URL if the user clicks it before\n * Angular has a chance to replace the `{{hash}}` markup with its\n * value. Until Angular replaces the markup the link will be broken\n * and will most likely return a 404 error. The `ngHref` directive\n * solves this problem.\n *\n * The wrong way to write it:\n * ```html\n * \n * ```\n *\n * The correct way to write it:\n * ```html\n * \n * ```\n *\n * @element A\n * @param {template} ngHref any string which can contain `{{}}` markup.\n *\n * @example\n * This example shows various combinations of `href`, `ng-href` and `ng-click` attributes\n * in links and their different behaviors:\n \n \n
\n
link 1 (link, don't reload)
\n link 2 (link, don't reload)
\n link 3 (link, reload!)
\n anchor (link, don't reload)
\n anchor (no link)
\n link (link, change location)\n
\n \n it('should execute ng-click but not reload when href without value', function() {\n element(by.id('link-1')).click();\n expect(element(by.model('value')).getAttribute('value')).toEqual('1');\n expect(element(by.id('link-1')).getAttribute('href')).toBe('');\n });\n\n it('should execute ng-click but not reload when href empty string', function() {\n element(by.id('link-2')).click();\n expect(element(by.model('value')).getAttribute('value')).toEqual('2');\n expect(element(by.id('link-2')).getAttribute('href')).toBe('');\n });\n\n it('should execute ng-click and change url when ng-href specified', function() {\n expect(element(by.id('link-3')).getAttribute('href')).toMatch(/\\/123$/);\n\n element(by.id('link-3')).click();\n\n // At this point, we navigate away from an Angular page, so we need\n // to use browser.driver to get the base webdriver.\n\n browser.wait(function() {\n return browser.driver.getCurrentUrl().then(function(url) {\n return url.match(/\\/123$/);\n });\n }, 5000, 'page should navigate to /123');\n });\n\n xit('should execute ng-click but not reload when href empty string and name specified', function() {\n element(by.id('link-4')).click();\n expect(element(by.model('value')).getAttribute('value')).toEqual('4');\n expect(element(by.id('link-4')).getAttribute('href')).toBe('');\n });\n\n it('should execute ng-click but not reload when no href but name specified', function() {\n element(by.id('link-5')).click();\n expect(element(by.model('value')).getAttribute('value')).toEqual('5');\n expect(element(by.id('link-5')).getAttribute('href')).toBe(null);\n });\n\n it('should only change url when only ng-href', function() {\n element(by.model('value')).clear();\n element(by.model('value')).sendKeys('6');\n expect(element(by.id('link-6')).getAttribute('href')).toMatch(/\\/6$/);\n\n element(by.id('link-6')).click();\n\n // At this point, we navigate away from an Angular page, so we need\n // to use browser.driver to get the base webdriver.\n browser.wait(function() {\n return browser.driver.getCurrentUrl().then(function(url) {\n return url.match(/\\/6$/);\n });\n }, 5000, 'page should navigate to /6');\n });\n \n \n */\n\n/**\n * @ngdoc directive\n * @name ngSrc\n * @restrict A\n * @priority 99\n *\n * @description\n * Using Angular markup like `{{hash}}` in a `src` attribute doesn't\n * work right: The browser will fetch from the URL with the literal\n * text `{{hash}}` until Angular replaces the expression inside\n * `{{hash}}`. The `ngSrc` directive solves this problem.\n *\n * The buggy way to write it:\n * ```html\n * \n * ```\n *\n * The correct way to write it:\n * ```html\n * \n * ```\n *\n * @element IMG\n * @param {template} ngSrc any string which can contain `{{}}` markup.\n */\n\n/**\n * @ngdoc directive\n * @name ngSrcset\n * @restrict A\n * @priority 99\n *\n * @description\n * Using Angular markup like `{{hash}}` in a `srcset` attribute doesn't\n * work right: The browser will fetch from the URL with the literal\n * text `{{hash}}` until Angular replaces the expression inside\n * `{{hash}}`. The `ngSrcset` directive solves this problem.\n *\n * The buggy way to write it:\n * ```html\n * \n * ```\n *\n * The correct way to write it:\n * ```html\n * \n * ```\n *\n * @element IMG\n * @param {template} ngSrcset any string which can contain `{{}}` markup.\n */\n\n/**\n * @ngdoc directive\n * @name ngDisabled\n * @restrict A\n * @priority 100\n *\n * @description\n *\n * We shouldn't do this, because it will make the button enabled on Chrome/Firefox but not on IE8 and older IEs:\n * ```html\n *
\n * \n *
\n * ```\n *\n * The HTML specification does not require browsers to preserve the values of boolean attributes\n * such as disabled. (Their presence means true and their absence means false.)\n * If we put an Angular interpolation expression into such an attribute then the\n * binding information would be lost when the browser removes the attribute.\n * The `ngDisabled` directive solves this problem for the `disabled` attribute.\n * This complementary directive is not removed by the browser and so provides\n * a permanent reliable place to store the binding information.\n *\n * @example\n \n \n Click me to toggle:
\n \n
\n \n it('should toggle button', function() {\n expect(element(by.css('button')).getAttribute('disabled')).toBeFalsy();\n element(by.model('checked')).click();\n expect(element(by.css('button')).getAttribute('disabled')).toBeTruthy();\n });\n \n
\n *\n * @element INPUT\n * @param {expression} ngDisabled If the {@link guide/expression expression} is truthy,\n * then special attribute \"disabled\" will be set on the element\n */\n\n\n/**\n * @ngdoc directive\n * @name ngChecked\n * @restrict A\n * @priority 100\n *\n * @description\n * The HTML specification does not require browsers to preserve the values of boolean attributes\n * such as checked. (Their presence means true and their absence means false.)\n * If we put an Angular interpolation expression into such an attribute then the\n * binding information would be lost when the browser removes the attribute.\n * The `ngChecked` directive solves this problem for the `checked` attribute.\n * This complementary directive is not removed by the browser and so provides\n * a permanent reliable place to store the binding information.\n * @example\n \n \n Check me to check both:
\n \n
\n \n it('should check both checkBoxes', function() {\n expect(element(by.id('checkSlave')).getAttribute('checked')).toBeFalsy();\n element(by.model('master')).click();\n expect(element(by.id('checkSlave')).getAttribute('checked')).toBeTruthy();\n });\n \n
\n *\n * @element INPUT\n * @param {expression} ngChecked If the {@link guide/expression expression} is truthy,\n * then special attribute \"checked\" will be set on the element\n */\n\n\n/**\n * @ngdoc directive\n * @name ngReadonly\n * @restrict A\n * @priority 100\n *\n * @description\n * The HTML specification does not require browsers to preserve the values of boolean attributes\n * such as readonly. (Their presence means true and their absence means false.)\n * If we put an Angular interpolation expression into such an attribute then the\n * binding information would be lost when the browser removes the attribute.\n * The `ngReadonly` directive solves this problem for the `readonly` attribute.\n * This complementary directive is not removed by the browser and so provides\n * a permanent reliable place to store the binding information.\n * @example\n \n \n Check me to make text readonly:
\n \n
\n \n it('should toggle readonly attr', function() {\n expect(element(by.css('[type=\"text\"]')).getAttribute('readonly')).toBeFalsy();\n element(by.model('checked')).click();\n expect(element(by.css('[type=\"text\"]')).getAttribute('readonly')).toBeTruthy();\n });\n \n
\n *\n * @element INPUT\n * @param {expression} ngReadonly If the {@link guide/expression expression} is truthy,\n * then special attribute \"readonly\" will be set on the element\n */\n\n\n/**\n * @ngdoc directive\n * @name ngSelected\n * @restrict A\n * @priority 100\n *\n * @description\n * The HTML specification does not require browsers to preserve the values of boolean attributes\n * such as selected. (Their presence means true and their absence means false.)\n * If we put an Angular interpolation expression into such an attribute then the\n * binding information would be lost when the browser removes the attribute.\n * The `ngSelected` directive solves this problem for the `selected` attribute.\n * This complementary directive is not removed by the browser and so provides\n * a permanent reliable place to store the binding information.\n *\n * @example\n \n \n Check me to select:
\n \n
\n \n it('should select Greetings!', function() {\n expect(element(by.id('greet')).getAttribute('selected')).toBeFalsy();\n element(by.model('selected')).click();\n expect(element(by.id('greet')).getAttribute('selected')).toBeTruthy();\n });\n \n
\n *\n * @element OPTION\n * @param {expression} ngSelected If the {@link guide/expression expression} is truthy,\n * then special attribute \"selected\" will be set on the element\n */\n\n/**\n * @ngdoc directive\n * @name ngOpen\n * @restrict A\n * @priority 100\n *\n * @description\n * The HTML specification does not require browsers to preserve the values of boolean attributes\n * such as open. (Their presence means true and their absence means false.)\n * If we put an Angular interpolation expression into such an attribute then the\n * binding information would be lost when the browser removes the attribute.\n * The `ngOpen` directive solves this problem for the `open` attribute.\n * This complementary directive is not removed by the browser and so provides\n * a permanent reliable place to store the binding information.\n * @example\n \n \n Check me check multiple:
\n
\n Show/Hide me\n
\n
\n \n it('should toggle open', function() {\n expect(element(by.id('details')).getAttribute('open')).toBeFalsy();\n element(by.model('open')).click();\n expect(element(by.id('details')).getAttribute('open')).toBeTruthy();\n });\n \n
\n *\n * @element DETAILS\n * @param {expression} ngOpen If the {@link guide/expression expression} is truthy,\n * then special attribute \"open\" will be set on the element\n */\n\nvar ngAttributeAliasDirectives = {};\n\n\n// boolean attrs are evaluated\nforEach(BOOLEAN_ATTR, function(propName, attrName) {\n // binding to multiple is not supported\n if (propName == \"multiple\") return;\n\n var normalized = directiveNormalize('ng-' + attrName);\n ngAttributeAliasDirectives[normalized] = function() {\n return {\n priority: 100,\n link: function(scope, element, attr) {\n scope.$watch(attr[normalized], function ngBooleanAttrWatchAction(value) {\n attr.$set(attrName, !!value);\n });\n }\n };\n };\n});\n\n\n// ng-src, ng-srcset, ng-href are interpolated\nforEach(['src', 'srcset', 'href'], function(attrName) {\n var normalized = directiveNormalize('ng-' + attrName);\n ngAttributeAliasDirectives[normalized] = function() {\n return {\n priority: 99, // it needs to run after the attributes are interpolated\n link: function(scope, element, attr) {\n var propName = attrName,\n name = attrName;\n\n if (attrName === 'href' &&\n toString.call(element.prop('href')) === '[object SVGAnimatedString]') {\n name = 'xlinkHref';\n attr.$attr[name] = 'xlink:href';\n propName = null;\n }\n\n attr.$observe(normalized, function(value) {\n if (!value) {\n if (attrName === 'href') {\n attr.$set(name, null);\n }\n return;\n }\n\n attr.$set(name, value);\n\n // on IE, if \"ng:src\" directive declaration is used and \"src\" attribute doesn't exist\n // then calling element.setAttribute('src', 'foo') doesn't do anything, so we need\n // to set the property as well to achieve the desired effect.\n // we use attr[attrName] value since $set can sanitize the url.\n if (msie && propName) element.prop(propName, attr[name]);\n });\n }\n };\n };\n});\n\n/* global -nullFormCtrl */\nvar nullFormCtrl = {\n $addControl: noop,\n $removeControl: noop,\n $setValidity: noop,\n $setDirty: noop,\n $setPristine: noop\n};\n\n/**\n * @ngdoc type\n * @name form.FormController\n *\n * @property {boolean} $pristine True if user has not interacted with the form yet.\n * @property {boolean} $dirty True if user has already interacted with the form.\n * @property {boolean} $valid True if all of the containing forms and controls are valid.\n * @property {boolean} $invalid True if at least one containing control or form is invalid.\n *\n * @property {Object} $error Is an object hash, containing references to all invalid controls or\n * forms, where:\n *\n * - keys are validation tokens (error names),\n * - values are arrays of controls or forms that are invalid for given error name.\n *\n *\n * Built-in validation tokens:\n *\n * - `email`\n * - `max`\n * - `maxlength`\n * - `min`\n * - `minlength`\n * - `number`\n * - `pattern`\n * - `required`\n * - `url`\n *\n * @description\n * `FormController` keeps track of all its controls and nested forms as well as the state of them,\n * such as being valid/invalid or dirty/pristine.\n *\n * Each {@link ng.directive:form form} directive creates an instance\n * of `FormController`.\n *\n */\n//asks for $scope to fool the BC controller module\nFormController.$inject = ['$element', '$attrs', '$scope', '$animate'];\nfunction FormController(element, attrs, $scope, $animate) {\n var form = this,\n parentForm = element.parent().controller('form') || nullFormCtrl,\n invalidCount = 0, // used to easily determine if we are valid\n errors = form.$error = {},\n controls = [];\n\n // init state\n form.$name = attrs.name || attrs.ngForm;\n form.$dirty = false;\n form.$pristine = true;\n form.$valid = true;\n form.$invalid = false;\n\n parentForm.$addControl(form);\n\n // Setup initial state of the control\n element.addClass(PRISTINE_CLASS);\n toggleValidCss(true);\n\n // convenience method for easy toggling of classes\n function toggleValidCss(isValid, validationErrorKey) {\n validationErrorKey = validationErrorKey ? '-' + snake_case(validationErrorKey, '-') : '';\n $animate.setClass(element,\n (isValid ? VALID_CLASS : INVALID_CLASS) + validationErrorKey,\n (isValid ? INVALID_CLASS : VALID_CLASS) + validationErrorKey);\n }\n\n /**\n * @ngdoc method\n * @name form.FormController#$addControl\n *\n * @description\n * Register a control with the form.\n *\n * Input elements using ngModelController do this automatically when they are linked.\n */\n form.$addControl = function(control) {\n // Breaking change - before, inputs whose name was \"hasOwnProperty\" were quietly ignored\n // and not added to the scope. Now we throw an error.\n assertNotHasOwnProperty(control.$name, 'input');\n controls.push(control);\n\n if (control.$name) {\n form[control.$name] = control;\n }\n };\n\n /**\n * @ngdoc method\n * @name form.FormController#$removeControl\n *\n * @description\n * Deregister a control from the form.\n *\n * Input elements using ngModelController do this automatically when they are destroyed.\n */\n form.$removeControl = function(control) {\n if (control.$name && form[control.$name] === control) {\n delete form[control.$name];\n }\n forEach(errors, function(queue, validationToken) {\n form.$setValidity(validationToken, true, control);\n });\n\n arrayRemove(controls, control);\n };\n\n /**\n * @ngdoc method\n * @name form.FormController#$setValidity\n *\n * @description\n * Sets the validity of a form control.\n *\n * This method will also propagate to parent forms.\n */\n form.$setValidity = function(validationToken, isValid, control) {\n var queue = errors[validationToken];\n\n if (isValid) {\n if (queue) {\n arrayRemove(queue, control);\n if (!queue.length) {\n invalidCount--;\n if (!invalidCount) {\n toggleValidCss(isValid);\n form.$valid = true;\n form.$invalid = false;\n }\n errors[validationToken] = false;\n toggleValidCss(true, validationToken);\n parentForm.$setValidity(validationToken, true, form);\n }\n }\n\n } else {\n if (!invalidCount) {\n toggleValidCss(isValid);\n }\n if (queue) {\n if (includes(queue, control)) return;\n } else {\n errors[validationToken] = queue = [];\n invalidCount++;\n toggleValidCss(false, validationToken);\n parentForm.$setValidity(validationToken, false, form);\n }\n queue.push(control);\n\n form.$valid = false;\n form.$invalid = true;\n }\n };\n\n /**\n * @ngdoc method\n * @name form.FormController#$setDirty\n *\n * @description\n * Sets the form to a dirty state.\n *\n * This method can be called to add the 'ng-dirty' class and set the form to a dirty\n * state (ng-dirty class). This method will also propagate to parent forms.\n */\n form.$setDirty = function() {\n $animate.removeClass(element, PRISTINE_CLASS);\n $animate.addClass(element, DIRTY_CLASS);\n form.$dirty = true;\n form.$pristine = false;\n parentForm.$setDirty();\n };\n\n /**\n * @ngdoc method\n * @name form.FormController#$setPristine\n *\n * @description\n * Sets the form to its pristine state.\n *\n * This method can be called to remove the 'ng-dirty' class and set the form to its pristine\n * state (ng-pristine class). This method will also propagate to all the controls contained\n * in this form.\n *\n * Setting a form back to a pristine state is often useful when we want to 'reuse' a form after\n * saving or resetting it.\n */\n form.$setPristine = function () {\n $animate.removeClass(element, DIRTY_CLASS);\n $animate.addClass(element, PRISTINE_CLASS);\n form.$dirty = false;\n form.$pristine = true;\n forEach(controls, function(control) {\n control.$setPristine();\n });\n };\n}\n\n\n/**\n * @ngdoc directive\n * @name ngForm\n * @restrict EAC\n *\n * @description\n * Nestable alias of {@link ng.directive:form `form`} directive. HTML\n * does not allow nesting of form elements. It is useful to nest forms, for example if the validity of a\n * sub-group of controls needs to be determined.\n *\n * Note: the purpose of `ngForm` is to group controls,\n * but not to be a replacement for the `
` tag with all of its capabilities\n * (e.g. posting to the server, ...).\n *\n * @param {string=} ngForm|name Name of the form. If specified, the form controller will be published into\n * related scope, under this name.\n *\n */\n\n /**\n * @ngdoc directive\n * @name form\n * @restrict E\n *\n * @description\n * Directive that instantiates\n * {@link form.FormController FormController}.\n *\n * If the `name` attribute is specified, the form controller is published onto the current scope under\n * this name.\n *\n * # Alias: {@link ng.directive:ngForm `ngForm`}\n *\n * In Angular forms can be nested. This means that the outer form is valid when all of the child\n * forms are valid as well. However, browsers do not allow nesting of `` elements, so\n * Angular provides the {@link ng.directive:ngForm `ngForm`} directive which behaves identically to\n * `` but can be nested. This allows you to have nested forms, which is very useful when\n * using Angular validation directives in forms that are dynamically generated using the\n * {@link ng.directive:ngRepeat `ngRepeat`} directive. Since you cannot dynamically generate the `name`\n * attribute of input elements using interpolation, you have to wrap each set of repeated inputs in an\n * `ngForm` directive and nest these in an outer `form` element.\n *\n *\n * # CSS classes\n * - `ng-valid` is set if the form is valid.\n * - `ng-invalid` is set if the form is invalid.\n * - `ng-pristine` is set if the form is pristine.\n * - `ng-dirty` is set if the form is dirty.\n *\n * Keep in mind that ngAnimate can detect each of these classes when added and removed.\n *\n *\n * # Submitting a form and preventing the default action\n *\n * Since the role of forms in client-side Angular applications is different than in classical\n * roundtrip apps, it is desirable for the browser not to translate the form submission into a full\n * page reload that sends the data to the server. Instead some javascript logic should be triggered\n * to handle the form submission in an application-specific way.\n *\n * For this reason, Angular prevents the default action (form submission to the server) unless the\n * `` element has an `action` attribute specified.\n *\n * You can use one of the following two ways to specify what javascript method should be called when\n * a form is submitted:\n *\n * - {@link ng.directive:ngSubmit ngSubmit} directive on the form element\n * - {@link ng.directive:ngClick ngClick} directive on the first\n * button or input field of type submit (input[type=submit])\n *\n * To prevent double execution of the handler, use only one of the {@link ng.directive:ngSubmit ngSubmit}\n * or {@link ng.directive:ngClick ngClick} directives.\n * This is because of the following form submission rules in the HTML specification:\n *\n * - If a form has only one input field then hitting enter in this field triggers form submit\n * (`ngSubmit`)\n * - if a form has 2+ input fields and no buttons or input[type=submit] then hitting enter\n * doesn't trigger submit\n * - if a form has one or more input fields and one or more buttons or input[type=submit] then\n * hitting enter in any of the input fields will trigger the click handler on the *first* button or\n * input[type=submit] (`ngClick`) *and* a submit handler on the enclosing form (`ngSubmit`)\n *\n *\n * ## Animation Hooks\n *\n * Animations in ngForm are triggered when any of the associated CSS classes are added and removed.\n * These classes are: `.ng-pristine`, `.ng-dirty`, `.ng-invalid` and `.ng-valid` as well as any\n * other validations that are performed within the form. Animations in ngForm are similar to how\n * they work in ngClass and animations can be hooked into using CSS transitions, keyframes as well\n * as JS animations.\n *\n * The following example shows a simple way to utilize CSS transitions to style a form element\n * that has been rendered as invalid after it has been validated:\n *\n *
\n * //be sure to include ngAnimate as a module to hook into more\n * //advanced animations\n * .my-form {\n *   transition:0.5s linear all;\n *   background: white;\n * }\n * .my-form.ng-invalid {\n *   background: red;\n *   color:white;\n * }\n * 
\n *\n * @example\n \n \n \n \n \n userType: \n Required!
\n userType = {{userType}}
\n myForm.input.$valid = {{myForm.input.$valid}}
\n myForm.input.$error = {{myForm.input.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n \n
\n \n it('should initialize to model', function() {\n var userType = element(by.binding('userType'));\n var valid = element(by.binding('myForm.input.$valid'));\n\n expect(userType.getText()).toContain('guest');\n expect(valid.getText()).toContain('true');\n });\n\n it('should be invalid if empty', function() {\n var userType = element(by.binding('userType'));\n var valid = element(by.binding('myForm.input.$valid'));\n var userInput = element(by.model('userType'));\n\n userInput.clear();\n userInput.sendKeys('');\n\n expect(userType.getText()).toEqual('userType =');\n expect(valid.getText()).toContain('false');\n });\n \n
\n *\n * @param {string=} name Name of the form. If specified, the form controller will be published into\n * related scope, under this name.\n */\nvar formDirectiveFactory = function(isNgForm) {\n return ['$timeout', function($timeout) {\n var formDirective = {\n name: 'form',\n restrict: isNgForm ? 'EAC' : 'E',\n controller: FormController,\n compile: function() {\n return {\n pre: function(scope, formElement, attr, controller) {\n if (!attr.action) {\n // we can't use jq events because if a form is destroyed during submission the default\n // action is not prevented. see #1238\n //\n // IE 9 is not affected because it doesn't fire a submit event and try to do a full\n // page reload if the form was destroyed by submission of the form via a click handler\n // on a button in the form. Looks like an IE9 specific bug.\n var preventDefaultListener = function(event) {\n event.preventDefault\n ? event.preventDefault()\n : event.returnValue = false; // IE\n };\n\n addEventListenerFn(formElement[0], 'submit', preventDefaultListener);\n\n // unregister the preventDefault listener so that we don't not leak memory but in a\n // way that will achieve the prevention of the default action.\n formElement.on('$destroy', function() {\n $timeout(function() {\n removeEventListenerFn(formElement[0], 'submit', preventDefaultListener);\n }, 0, false);\n });\n }\n\n var parentFormCtrl = formElement.parent().controller('form'),\n alias = attr.name || attr.ngForm;\n\n if (alias) {\n setter(scope, alias, controller, alias);\n }\n if (parentFormCtrl) {\n formElement.on('$destroy', function() {\n parentFormCtrl.$removeControl(controller);\n if (alias) {\n setter(scope, alias, undefined, alias);\n }\n extend(controller, nullFormCtrl); //stop propagating child destruction handlers upwards\n });\n }\n }\n };\n }\n };\n\n return formDirective;\n }];\n};\n\nvar formDirective = formDirectiveFactory();\nvar ngFormDirective = formDirectiveFactory(true);\n\n/* global VALID_CLASS: true,\n INVALID_CLASS: true,\n PRISTINE_CLASS: true,\n DIRTY_CLASS: true\n*/\n\nvar URL_REGEXP = /^(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?$/;\nvar EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;\nvar NUMBER_REGEXP = /^\\s*(\\-|\\+)?(\\d+|(\\d*(\\.\\d*)))\\s*$/;\n\nvar inputType = {\n\n /**\n * @ngdoc input\n * @name input[text]\n *\n * @description\n * Standard HTML text input with angular data binding, inherited by most of the `input` elements.\n *\n * *NOTE* Not every feature offered is available for all input types.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} required Adds `required` validation error key if the value is not entered.\n * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n * `required` when you want to data-bind to the `required` attribute.\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n * minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n * maxlength.\n * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the\n * RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for\n * patterns defined as scope expressions.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.\n * This parameter is ignored for input[type=password] controls, which will never trim the\n * input.\n *\n * @example\n \n \n \n
\n Single word: \n \n Required!\n \n Single word only!\n\n text = {{text}}
\n myForm.input.$valid = {{myForm.input.$valid}}
\n myForm.input.$error = {{myForm.input.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n
\n
\n \n var text = element(by.binding('text'));\n var valid = element(by.binding('myForm.input.$valid'));\n var input = element(by.model('text'));\n\n it('should initialize to model', function() {\n expect(text.getText()).toContain('guest');\n expect(valid.getText()).toContain('true');\n });\n\n it('should be invalid if empty', function() {\n input.clear();\n input.sendKeys('');\n\n expect(text.getText()).toEqual('text =');\n expect(valid.getText()).toContain('false');\n });\n\n it('should be invalid if multi word', function() {\n input.clear();\n input.sendKeys('hello world');\n\n expect(valid.getText()).toContain('false');\n });\n \n
\n */\n 'text': textInputType,\n\n\n /**\n * @ngdoc input\n * @name input[number]\n *\n * @description\n * Text input with number validation and transformation. Sets the `number` validation\n * error if not a valid number.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`.\n * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`.\n * @param {string=} required Sets `required` validation error key if the value is not entered.\n * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n * `required` when you want to data-bind to the `required` attribute.\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n * minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n * maxlength.\n * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the\n * RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for\n * patterns defined as scope expressions.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n *\n * @example\n \n \n \n
\n Number: \n \n Required!\n \n Not valid number!\n value = {{value}}
\n myForm.input.$valid = {{myForm.input.$valid}}
\n myForm.input.$error = {{myForm.input.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n
\n
\n \n var value = element(by.binding('value'));\n var valid = element(by.binding('myForm.input.$valid'));\n var input = element(by.model('value'));\n\n it('should initialize to model', function() {\n expect(value.getText()).toContain('12');\n expect(valid.getText()).toContain('true');\n });\n\n it('should be invalid if empty', function() {\n input.clear();\n input.sendKeys('');\n expect(value.getText()).toEqual('value =');\n expect(valid.getText()).toContain('false');\n });\n\n it('should be invalid if over max', function() {\n input.clear();\n input.sendKeys('123');\n expect(value.getText()).toEqual('value =');\n expect(valid.getText()).toContain('false');\n });\n \n
\n */\n 'number': numberInputType,\n\n\n /**\n * @ngdoc input\n * @name input[url]\n *\n * @description\n * Text input with URL validation. Sets the `url` validation error key if the content is not a\n * valid URL.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} required Sets `required` validation error key if the value is not entered.\n * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n * `required` when you want to data-bind to the `required` attribute.\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n * minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n * maxlength.\n * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the\n * RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for\n * patterns defined as scope expressions.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n *\n * @example\n \n \n \n
\n URL: \n \n Required!\n \n Not valid url!\n text = {{text}}
\n myForm.input.$valid = {{myForm.input.$valid}}
\n myForm.input.$error = {{myForm.input.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n myForm.$error.url = {{!!myForm.$error.url}}
\n
\n
\n \n var text = element(by.binding('text'));\n var valid = element(by.binding('myForm.input.$valid'));\n var input = element(by.model('text'));\n\n it('should initialize to model', function() {\n expect(text.getText()).toContain('http://google.com');\n expect(valid.getText()).toContain('true');\n });\n\n it('should be invalid if empty', function() {\n input.clear();\n input.sendKeys('');\n\n expect(text.getText()).toEqual('text =');\n expect(valid.getText()).toContain('false');\n });\n\n it('should be invalid if not url', function() {\n input.clear();\n input.sendKeys('box');\n\n expect(valid.getText()).toContain('false');\n });\n \n
\n */\n 'url': urlInputType,\n\n\n /**\n * @ngdoc input\n * @name input[email]\n *\n * @description\n * Text input with email validation. Sets the `email` validation error key if not a valid email\n * address.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} required Sets `required` validation error key if the value is not entered.\n * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n * `required` when you want to data-bind to the `required` attribute.\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n * minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n * maxlength.\n * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the\n * RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for\n * patterns defined as scope expressions.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n *\n * @example\n \n \n \n
\n Email: \n \n Required!\n \n Not valid email!\n text = {{text}}
\n myForm.input.$valid = {{myForm.input.$valid}}
\n myForm.input.$error = {{myForm.input.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n myForm.$error.email = {{!!myForm.$error.email}}
\n
\n
\n \n var text = element(by.binding('text'));\n var valid = element(by.binding('myForm.input.$valid'));\n var input = element(by.model('text'));\n\n it('should initialize to model', function() {\n expect(text.getText()).toContain('me@example.com');\n expect(valid.getText()).toContain('true');\n });\n\n it('should be invalid if empty', function() {\n input.clear();\n input.sendKeys('');\n expect(text.getText()).toEqual('text =');\n expect(valid.getText()).toContain('false');\n });\n\n it('should be invalid if not email', function() {\n input.clear();\n input.sendKeys('xxx');\n\n expect(valid.getText()).toContain('false');\n });\n \n
\n */\n 'email': emailInputType,\n\n\n /**\n * @ngdoc input\n * @name input[radio]\n *\n * @description\n * HTML radio button.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string} value The value to which the expression should be set when selected.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n * @param {string} ngValue Angular expression which sets the value to which the expression should\n * be set when selected.\n *\n * @example\n \n \n \n
\n Red
\n Green
\n Blue
\n color = {{color | json}}
\n
\n Note that `ng-value=\"specialValue\"` sets radio item's value to be the value of `$scope.specialValue`.\n
\n \n it('should change state', function() {\n var color = element(by.binding('color'));\n\n expect(color.getText()).toContain('blue');\n\n element.all(by.model('color')).get(0).click();\n\n expect(color.getText()).toContain('red');\n });\n \n
\n */\n 'radio': radioInputType,\n\n\n /**\n * @ngdoc input\n * @name input[checkbox]\n *\n * @description\n * HTML checkbox.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} ngTrueValue The value to which the expression should be set when selected.\n * @param {string=} ngFalseValue The value to which the expression should be set when not selected.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n *\n * @example\n \n \n \n
\n Value1:
\n Value2:
\n value1 = {{value1}}
\n value2 = {{value2}}
\n
\n
\n \n it('should change state', function() {\n var value1 = element(by.binding('value1'));\n var value2 = element(by.binding('value2'));\n\n expect(value1.getText()).toContain('true');\n expect(value2.getText()).toContain('YES');\n\n element(by.model('value1')).click();\n element(by.model('value2')).click();\n\n expect(value1.getText()).toContain('false');\n expect(value2.getText()).toContain('NO');\n });\n \n
\n */\n 'checkbox': checkboxInputType,\n\n 'hidden': noop,\n 'button': noop,\n 'submit': noop,\n 'reset': noop,\n 'file': noop\n};\n\n// A helper function to call $setValidity and return the value / undefined,\n// a pattern that is repeated a lot in the input validation logic.\nfunction validate(ctrl, validatorName, validity, value){\n ctrl.$setValidity(validatorName, validity);\n return validity ? value : undefined;\n}\n\nfunction testFlags(validity, flags) {\n var i, flag;\n if (flags) {\n for (i=0; i= minlength, value);\n };\n\n ctrl.$parsers.push(minLengthValidator);\n ctrl.$formatters.push(minLengthValidator);\n }\n\n // max length validator\n if (attr.ngMaxlength) {\n var maxlength = int(attr.ngMaxlength);\n var maxLengthValidator = function(value) {\n return validate(ctrl, 'maxlength', ctrl.$isEmpty(value) || value.length <= maxlength, value);\n };\n\n ctrl.$parsers.push(maxLengthValidator);\n ctrl.$formatters.push(maxLengthValidator);\n }\n}\n\nvar numberBadFlags = ['badInput'];\n\nfunction numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {\n textInputType(scope, element, attr, ctrl, $sniffer, $browser);\n\n ctrl.$parsers.push(function(value) {\n var empty = ctrl.$isEmpty(value);\n if (empty || NUMBER_REGEXP.test(value)) {\n ctrl.$setValidity('number', true);\n return value === '' ? null : (empty ? value : parseFloat(value));\n } else {\n ctrl.$setValidity('number', false);\n return undefined;\n }\n });\n\n addNativeHtml5Validators(ctrl, 'number', numberBadFlags, null, ctrl.$$validityState);\n\n ctrl.$formatters.push(function(value) {\n return ctrl.$isEmpty(value) ? '' : '' + value;\n });\n\n if (attr.min) {\n var minValidator = function(value) {\n var min = parseFloat(attr.min);\n return validate(ctrl, 'min', ctrl.$isEmpty(value) || value >= min, value);\n };\n\n ctrl.$parsers.push(minValidator);\n ctrl.$formatters.push(minValidator);\n }\n\n if (attr.max) {\n var maxValidator = function(value) {\n var max = parseFloat(attr.max);\n return validate(ctrl, 'max', ctrl.$isEmpty(value) || value <= max, value);\n };\n\n ctrl.$parsers.push(maxValidator);\n ctrl.$formatters.push(maxValidator);\n }\n\n ctrl.$formatters.push(function(value) {\n return validate(ctrl, 'number', ctrl.$isEmpty(value) || isNumber(value), value);\n });\n}\n\nfunction urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {\n textInputType(scope, element, attr, ctrl, $sniffer, $browser);\n\n var urlValidator = function(value) {\n return validate(ctrl, 'url', ctrl.$isEmpty(value) || URL_REGEXP.test(value), value);\n };\n\n ctrl.$formatters.push(urlValidator);\n ctrl.$parsers.push(urlValidator);\n}\n\nfunction emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {\n textInputType(scope, element, attr, ctrl, $sniffer, $browser);\n\n var emailValidator = function(value) {\n return validate(ctrl, 'email', ctrl.$isEmpty(value) || EMAIL_REGEXP.test(value), value);\n };\n\n ctrl.$formatters.push(emailValidator);\n ctrl.$parsers.push(emailValidator);\n}\n\nfunction radioInputType(scope, element, attr, ctrl) {\n // make the name unique, if not defined\n if (isUndefined(attr.name)) {\n element.attr('name', nextUid());\n }\n\n element.on('click', function() {\n if (element[0].checked) {\n scope.$apply(function() {\n ctrl.$setViewValue(attr.value);\n });\n }\n });\n\n ctrl.$render = function() {\n var value = attr.value;\n element[0].checked = (value == ctrl.$viewValue);\n };\n\n attr.$observe('value', ctrl.$render);\n}\n\nfunction checkboxInputType(scope, element, attr, ctrl) {\n var trueValue = attr.ngTrueValue,\n falseValue = attr.ngFalseValue;\n\n if (!isString(trueValue)) trueValue = true;\n if (!isString(falseValue)) falseValue = false;\n\n element.on('click', function() {\n scope.$apply(function() {\n ctrl.$setViewValue(element[0].checked);\n });\n });\n\n ctrl.$render = function() {\n element[0].checked = ctrl.$viewValue;\n };\n\n // Override the standard `$isEmpty` because a value of `false` means empty in a checkbox.\n ctrl.$isEmpty = function(value) {\n return value !== trueValue;\n };\n\n ctrl.$formatters.push(function(value) {\n return value === trueValue;\n });\n\n ctrl.$parsers.push(function(value) {\n return value ? trueValue : falseValue;\n });\n}\n\n\n/**\n * @ngdoc directive\n * @name textarea\n * @restrict E\n *\n * @description\n * HTML textarea element control with angular data-binding. The data-binding and validation\n * properties of this element are exactly the same as those of the\n * {@link ng.directive:input input element}.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} required Sets `required` validation error key if the value is not entered.\n * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n * `required` when you want to data-bind to the `required` attribute.\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n * minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n * maxlength.\n * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the\n * RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for\n * patterns defined as scope expressions.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.\n */\n\n\n/**\n * @ngdoc directive\n * @name input\n * @restrict E\n *\n * @description\n * HTML input element control with angular data-binding. Input control follows HTML5 input types\n * and polyfills the HTML5 validation behavior for older browsers.\n *\n * *NOTE* Not every feature offered is available for all input types.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} required Sets `required` validation error key if the value is not entered.\n * @param {boolean=} ngRequired Sets `required` attribute if set to true\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n * minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n * maxlength.\n * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the\n * RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for\n * patterns defined as scope expressions.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.\n * This parameter is ignored for input[type=password] controls, which will never trim the\n * input.\n *\n * @example\n \n \n \n
\n
\n User name: \n \n Required!
\n Last name: \n \n Too short!\n \n Too long!
\n
\n
\n user = {{user}}
\n myForm.userName.$valid = {{myForm.userName.$valid}}
\n myForm.userName.$error = {{myForm.userName.$error}}
\n myForm.lastName.$valid = {{myForm.lastName.$valid}}
\n myForm.lastName.$error = {{myForm.lastName.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n myForm.$error.minlength = {{!!myForm.$error.minlength}}
\n myForm.$error.maxlength = {{!!myForm.$error.maxlength}}
\n
\n
\n \n var user = element(by.binding('{{user}}'));\n var userNameValid = element(by.binding('myForm.userName.$valid'));\n var lastNameValid = element(by.binding('myForm.lastName.$valid'));\n var lastNameError = element(by.binding('myForm.lastName.$error'));\n var formValid = element(by.binding('myForm.$valid'));\n var userNameInput = element(by.model('user.name'));\n var userLastInput = element(by.model('user.last'));\n\n it('should initialize to model', function() {\n expect(user.getText()).toContain('{\"name\":\"guest\",\"last\":\"visitor\"}');\n expect(userNameValid.getText()).toContain('true');\n expect(formValid.getText()).toContain('true');\n });\n\n it('should be invalid if empty when required', function() {\n userNameInput.clear();\n userNameInput.sendKeys('');\n\n expect(user.getText()).toContain('{\"last\":\"visitor\"}');\n expect(userNameValid.getText()).toContain('false');\n expect(formValid.getText()).toContain('false');\n });\n\n it('should be valid if empty when min length is set', function() {\n userLastInput.clear();\n userLastInput.sendKeys('');\n\n expect(user.getText()).toContain('{\"name\":\"guest\",\"last\":\"\"}');\n expect(lastNameValid.getText()).toContain('true');\n expect(formValid.getText()).toContain('true');\n });\n\n it('should be invalid if less than required min length', function() {\n userLastInput.clear();\n userLastInput.sendKeys('xx');\n\n expect(user.getText()).toContain('{\"name\":\"guest\"}');\n expect(lastNameValid.getText()).toContain('false');\n expect(lastNameError.getText()).toContain('minlength');\n expect(formValid.getText()).toContain('false');\n });\n\n it('should be invalid if longer than max length', function() {\n userLastInput.clear();\n userLastInput.sendKeys('some ridiculously long name');\n\n expect(user.getText()).toContain('{\"name\":\"guest\"}');\n expect(lastNameValid.getText()).toContain('false');\n expect(lastNameError.getText()).toContain('maxlength');\n expect(formValid.getText()).toContain('false');\n });\n \n
\n */\nvar inputDirective = ['$browser', '$sniffer', function($browser, $sniffer) {\n return {\n restrict: 'E',\n require: '?ngModel',\n link: function(scope, element, attr, ctrl) {\n if (ctrl) {\n (inputType[lowercase(attr.type)] || inputType.text)(scope, element, attr, ctrl, $sniffer,\n $browser);\n }\n }\n };\n}];\n\nvar VALID_CLASS = 'ng-valid',\n INVALID_CLASS = 'ng-invalid',\n PRISTINE_CLASS = 'ng-pristine',\n DIRTY_CLASS = 'ng-dirty';\n\n/**\n * @ngdoc type\n * @name ngModel.NgModelController\n *\n * @property {string} $viewValue Actual string value in the view.\n * @property {*} $modelValue The value in the model, that the control is bound to.\n * @property {Array.} $parsers Array of functions to execute, as a pipeline, whenever\n the control reads value from the DOM. Each function is called, in turn, passing the value\n through to the next. The last return value is used to populate the model.\n Used to sanitize / convert the value as well as validation. For validation,\n the parsers should update the validity state using\n {@link ngModel.NgModelController#$setValidity $setValidity()},\n and return `undefined` for invalid values.\n\n *\n * @property {Array.} $formatters Array of functions to execute, as a pipeline, whenever\n the model value changes. Each function is called, in turn, passing the value through to the\n next. Used to format / convert values for display in the control and validation.\n * ```js\n * function formatter(value) {\n * if (value) {\n * return value.toUpperCase();\n * }\n * }\n * ngModel.$formatters.push(formatter);\n * ```\n *\n * @property {Array.} $viewChangeListeners Array of functions to execute whenever the\n * view value has changed. It is called with no arguments, and its return value is ignored.\n * This can be used in place of additional $watches against the model value.\n *\n * @property {Object} $error An object hash with all errors as keys.\n *\n * @property {boolean} $pristine True if user has not interacted with the control yet.\n * @property {boolean} $dirty True if user has already interacted with the control.\n * @property {boolean} $valid True if there is no error.\n * @property {boolean} $invalid True if at least one error on the control.\n *\n * @description\n *\n * `NgModelController` provides API for the `ng-model` directive. The controller contains\n * services for data-binding, validation, CSS updates, and value formatting and parsing. It\n * purposefully does not contain any logic which deals with DOM rendering or listening to\n * DOM events. Such DOM related logic should be provided by other directives which make use of\n * `NgModelController` for data-binding.\n *\n * ## Custom Control Example\n * This example shows how to use `NgModelController` with a custom control to achieve\n * data-binding. Notice how different directives (`contenteditable`, `ng-model`, and `required`)\n * collaborate together to achieve the desired result.\n *\n * Note that `contenteditable` is an HTML5 attribute, which tells the browser to let the element\n * contents be edited in place by the user. This will not work on older browsers.\n *\n * We are using the {@link ng.service:$sce $sce} service here and include the {@link ngSanitize $sanitize}\n * module to automatically remove \"bad\" content like inline event listener (e.g. ``).\n * However, as we are using `$sce` the model can still decide to provide unsafe content if it marks\n * that content using the `$sce` service.\n *\n * \n \n [contenteditable] {\n border: 1px solid black;\n background-color: white;\n min-height: 20px;\n }\n\n .ng-invalid {\n border: 1px solid red;\n }\n\n \n \n angular.module('customControl', ['ngSanitize']).\n directive('contenteditable', ['$sce', function($sce) {\n return {\n restrict: 'A', // only activate on element attribute\n require: '?ngModel', // get a hold of NgModelController\n link: function(scope, element, attrs, ngModel) {\n if(!ngModel) return; // do nothing if no ng-model\n\n // Specify how UI should be updated\n ngModel.$render = function() {\n element.html($sce.getTrustedHtml(ngModel.$viewValue || ''));\n };\n\n // Listen for change events to enable binding\n element.on('blur keyup change', function() {\n scope.$evalAsync(read);\n });\n read(); // initialize\n\n // Write data to the model\n function read() {\n var html = element.html();\n // When we clear the content editable the browser leaves a
behind\n // If strip-br attribute is provided then we strip this out\n if( attrs.stripBr && html == '
' ) {\n html = '';\n }\n ngModel.$setViewValue(html);\n }\n }\n };\n }]);\n
\n \n
\n
Change me!
\n Required!\n
\n \n
\n
\n \n it('should data-bind and become invalid', function() {\n if (browser.params.browser == 'safari' || browser.params.browser == 'firefox') {\n // SafariDriver can't handle contenteditable\n // and Firefox driver can't clear contenteditables very well\n return;\n }\n var contentEditable = element(by.css('[contenteditable]'));\n var content = 'Change me!';\n\n expect(contentEditable.getText()).toEqual(content);\n\n contentEditable.clear();\n contentEditable.sendKeys(protractor.Key.BACK_SPACE);\n expect(contentEditable.getText()).toEqual('');\n expect(contentEditable.getAttribute('class')).toMatch(/ng-invalid-required/);\n });\n \n *
\n *\n *\n */\nvar NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$parse', '$animate',\n function($scope, $exceptionHandler, $attr, $element, $parse, $animate) {\n this.$viewValue = Number.NaN;\n this.$modelValue = Number.NaN;\n this.$parsers = [];\n this.$formatters = [];\n this.$viewChangeListeners = [];\n this.$pristine = true;\n this.$dirty = false;\n this.$valid = true;\n this.$invalid = false;\n this.$name = $attr.name;\n\n var ngModelGet = $parse($attr.ngModel),\n ngModelSet = ngModelGet.assign;\n\n if (!ngModelSet) {\n throw minErr('ngModel')('nonassign', \"Expression '{0}' is non-assignable. Element: {1}\",\n $attr.ngModel, startingTag($element));\n }\n\n /**\n * @ngdoc method\n * @name ngModel.NgModelController#$render\n *\n * @description\n * Called when the view needs to be updated. It is expected that the user of the ng-model\n * directive will implement this method.\n */\n this.$render = noop;\n\n /**\n * @ngdoc method\n * @name ngModel.NgModelController#$isEmpty\n *\n * @description\n * This is called when we need to determine if the value of the input is empty.\n *\n * For instance, the required directive does this to work out if the input has data or not.\n * The default `$isEmpty` function checks whether the value is `undefined`, `''`, `null` or `NaN`.\n *\n * You can override this for input directives whose concept of being empty is different to the\n * default. The `checkboxInputType` directive does this because in its case a value of `false`\n * implies empty.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is empty.\n */\n this.$isEmpty = function(value) {\n return isUndefined(value) || value === '' || value === null || value !== value;\n };\n\n var parentForm = $element.inheritedData('$formController') || nullFormCtrl,\n invalidCount = 0, // used to easily determine if we are valid\n $error = this.$error = {}; // keep invalid keys here\n\n\n // Setup initial state of the control\n $element.addClass(PRISTINE_CLASS);\n toggleValidCss(true);\n\n // convenience method for easy toggling of classes\n function toggleValidCss(isValid, validationErrorKey) {\n validationErrorKey = validationErrorKey ? '-' + snake_case(validationErrorKey, '-') : '';\n $animate.removeClass($element, (isValid ? INVALID_CLASS : VALID_CLASS) + validationErrorKey);\n $animate.addClass($element, (isValid ? VALID_CLASS : INVALID_CLASS) + validationErrorKey);\n }\n\n /**\n * @ngdoc method\n * @name ngModel.NgModelController#$setValidity\n *\n * @description\n * Change the validity state, and notifies the form when the control changes validity. (i.e. it\n * does not notify form if given validator is already marked as invalid).\n *\n * This method should be called by validators - i.e. the parser or formatter functions.\n *\n * @param {string} validationErrorKey Name of the validator. the `validationErrorKey` will assign\n * to `$error[validationErrorKey]=!isValid` so that it is available for data-binding.\n * The `validationErrorKey` should be in camelCase and will get converted into dash-case\n * for class name. Example: `myError` will result in `ng-valid-my-error` and `ng-invalid-my-error`\n * class and can be bound to as `{{someForm.someControl.$error.myError}}` .\n * @param {boolean} isValid Whether the current state is valid (true) or invalid (false).\n */\n this.$setValidity = function(validationErrorKey, isValid) {\n // Purposeful use of ! here to cast isValid to boolean in case it is undefined\n // jshint -W018\n if ($error[validationErrorKey] === !isValid) return;\n // jshint +W018\n\n if (isValid) {\n if ($error[validationErrorKey]) invalidCount--;\n if (!invalidCount) {\n toggleValidCss(true);\n this.$valid = true;\n this.$invalid = false;\n }\n } else {\n toggleValidCss(false);\n this.$invalid = true;\n this.$valid = false;\n invalidCount++;\n }\n\n $error[validationErrorKey] = !isValid;\n toggleValidCss(isValid, validationErrorKey);\n\n parentForm.$setValidity(validationErrorKey, isValid, this);\n };\n\n /**\n * @ngdoc method\n * @name ngModel.NgModelController#$setPristine\n *\n * @description\n * Sets the control to its pristine state.\n *\n * This method can be called to remove the 'ng-dirty' class and set the control to its pristine\n * state (ng-pristine class).\n */\n this.$setPristine = function () {\n this.$dirty = false;\n this.$pristine = true;\n $animate.removeClass($element, DIRTY_CLASS);\n $animate.addClass($element, PRISTINE_CLASS);\n };\n\n /**\n * @ngdoc method\n * @name ngModel.NgModelController#$setViewValue\n *\n * @description\n * Update the view value.\n *\n * This method should be called when the view value changes, typically from within a DOM event handler.\n * For example {@link ng.directive:input input} and\n * {@link ng.directive:select select} directives call it.\n *\n * It will update the $viewValue, then pass this value through each of the functions in `$parsers`,\n * which includes any validators. The value that comes out of this `$parsers` pipeline, be applied to\n * `$modelValue` and the **expression** specified in the `ng-model` attribute.\n *\n * Lastly, all the registered change listeners, in the `$viewChangeListeners` list, are called.\n *\n * Note that calling this function does not trigger a `$digest`.\n *\n * @param {string} value Value from the view.\n */\n this.$setViewValue = function(value) {\n this.$viewValue = value;\n\n // change to dirty\n if (this.$pristine) {\n this.$dirty = true;\n this.$pristine = false;\n $animate.removeClass($element, PRISTINE_CLASS);\n $animate.addClass($element, DIRTY_CLASS);\n parentForm.$setDirty();\n }\n\n forEach(this.$parsers, function(fn) {\n value = fn(value);\n });\n\n if (this.$modelValue !== value) {\n this.$modelValue = value;\n ngModelSet($scope, value);\n forEach(this.$viewChangeListeners, function(listener) {\n try {\n listener();\n } catch(e) {\n $exceptionHandler(e);\n }\n });\n }\n };\n\n // model -> value\n var ctrl = this;\n\n $scope.$watch(function ngModelWatch() {\n var value = ngModelGet($scope);\n\n // if scope model value and ngModel value are out of sync\n if (ctrl.$modelValue !== value) {\n\n var formatters = ctrl.$formatters,\n idx = formatters.length;\n\n ctrl.$modelValue = value;\n while(idx--) {\n value = formatters[idx](value);\n }\n\n if (ctrl.$viewValue !== value) {\n ctrl.$viewValue = value;\n ctrl.$render();\n }\n }\n\n return value;\n });\n}];\n\n\n/**\n * @ngdoc directive\n * @name ngModel\n *\n * @element input\n *\n * @description\n * The `ngModel` directive binds an `input`,`select`, `textarea` (or custom form control) to a\n * property on the scope using {@link ngModel.NgModelController NgModelController},\n * which is created and exposed by this directive.\n *\n * `ngModel` is responsible for:\n *\n * - Binding the view into the model, which other directives such as `input`, `textarea` or `select`\n * require.\n * - Providing validation behavior (i.e. required, number, email, url).\n * - Keeping the state of the control (valid/invalid, dirty/pristine, validation errors).\n * - Setting related css classes on the element (`ng-valid`, `ng-invalid`, `ng-dirty`, `ng-pristine`) including animations.\n * - Registering the control with its parent {@link ng.directive:form form}.\n *\n * Note: `ngModel` will try to bind to the property given by evaluating the expression on the\n * current scope. If the property doesn't already exist on this scope, it will be created\n * implicitly and added to the scope.\n *\n * For best practices on using `ngModel`, see:\n *\n * - [Understanding Scopes](https://github.com/angular/angular.js/wiki/Understanding-Scopes)\n *\n * For basic examples, how to use `ngModel`, see:\n *\n * - {@link ng.directive:input input}\n * - {@link input[text] text}\n * - {@link input[checkbox] checkbox}\n * - {@link input[radio] radio}\n * - {@link input[number] number}\n * - {@link input[email] email}\n * - {@link input[url] url}\n * - {@link ng.directive:select select}\n * - {@link ng.directive:textarea textarea}\n *\n * # CSS classes\n * The following CSS classes are added and removed on the associated input/select/textarea element\n * depending on the validity of the model.\n *\n * - `ng-valid` is set if the model is valid.\n * - `ng-invalid` is set if the model is invalid.\n * - `ng-pristine` is set if the model is pristine.\n * - `ng-dirty` is set if the model is dirty.\n *\n * Keep in mind that ngAnimate can detect each of these classes when added and removed.\n *\n * ## Animation Hooks\n *\n * Animations within models are triggered when any of the associated CSS classes are added and removed\n * on the input element which is attached to the model. These classes are: `.ng-pristine`, `.ng-dirty`,\n * `.ng-invalid` and `.ng-valid` as well as any other validations that are performed on the model itself.\n * The animations that are triggered within ngModel are similar to how they work in ngClass and\n * animations can be hooked into using CSS transitions, keyframes as well as JS animations.\n *\n * The following example shows a simple way to utilize CSS transitions to style an input element\n * that has been rendered as invalid after it has been validated:\n *\n *
\n * //be sure to include ngAnimate as a module to hook into more\n * //advanced animations\n * .my-input {\n *   transition:0.5s linear all;\n *   background: white;\n * }\n * .my-input.ng-invalid {\n *   background: red;\n *   color:white;\n * }\n * 
\n *\n * @example\n * \n \n \n \n Update input to see transitions when valid/invalid.\n Integer is a valid value.\n
\n \n
\n
\n *
\n */\nvar ngModelDirective = function() {\n return {\n require: ['ngModel', '^?form'],\n controller: NgModelController,\n link: function(scope, element, attr, ctrls) {\n // notify others, especially parent forms\n\n var modelCtrl = ctrls[0],\n formCtrl = ctrls[1] || nullFormCtrl;\n\n formCtrl.$addControl(modelCtrl);\n\n scope.$on('$destroy', function() {\n formCtrl.$removeControl(modelCtrl);\n });\n }\n };\n};\n\n\n/**\n * @ngdoc directive\n * @name ngChange\n *\n * @description\n * Evaluate the given expression when the user changes the input.\n * The expression is evaluated immediately, unlike the JavaScript onchange event\n * which only triggers at the end of a change (usually, when the user leaves the\n * form element or presses the return key).\n * The expression is not evaluated when the value change is coming from the model.\n *\n * Note, this directive requires `ngModel` to be present.\n *\n * @element input\n * @param {expression} ngChange {@link guide/expression Expression} to evaluate upon change\n * in input value.\n *\n * @example\n * \n * \n * \n *
\n * \n * \n *
\n * debug = {{confirmed}}
\n * counter = {{counter}}
\n *
\n *
\n * \n * var counter = element(by.binding('counter'));\n * var debug = element(by.binding('confirmed'));\n *\n * it('should evaluate the expression if changing from view', function() {\n * expect(counter.getText()).toContain('0');\n *\n * element(by.id('ng-change-example1')).click();\n *\n * expect(counter.getText()).toContain('1');\n * expect(debug.getText()).toContain('true');\n * });\n *\n * it('should not evaluate the expression if changing from model', function() {\n * element(by.id('ng-change-example2')).click();\n\n * expect(counter.getText()).toContain('0');\n * expect(debug.getText()).toContain('true');\n * });\n * \n *
\n */\nvar ngChangeDirective = valueFn({\n require: 'ngModel',\n link: function(scope, element, attr, ctrl) {\n ctrl.$viewChangeListeners.push(function() {\n scope.$eval(attr.ngChange);\n });\n }\n});\n\n\nvar requiredDirective = function() {\n return {\n require: '?ngModel',\n link: function(scope, elm, attr, ctrl) {\n if (!ctrl) return;\n attr.required = true; // force truthy in case we are on non input element\n\n var validator = function(value) {\n if (attr.required && ctrl.$isEmpty(value)) {\n ctrl.$setValidity('required', false);\n return;\n } else {\n ctrl.$setValidity('required', true);\n return value;\n }\n };\n\n ctrl.$formatters.push(validator);\n ctrl.$parsers.unshift(validator);\n\n attr.$observe('required', function() {\n validator(ctrl.$viewValue);\n });\n }\n };\n};\n\n\n/**\n * @ngdoc directive\n * @name ngList\n *\n * @description\n * Text input that converts between a delimited string and an array of strings. The delimiter\n * can be a fixed string (by default a comma) or a regular expression.\n *\n * @element input\n * @param {string=} ngList optional delimiter that should be used to split the value. If\n * specified in form `/something/` then the value will be converted into a regular expression.\n *\n * @example\n \n \n \n
\n List: \n \n Required!\n
\n names = {{names}}
\n myForm.namesInput.$valid = {{myForm.namesInput.$valid}}
\n myForm.namesInput.$error = {{myForm.namesInput.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n
\n
\n \n var listInput = element(by.model('names'));\n var names = element(by.binding('{{names}}'));\n var valid = element(by.binding('myForm.namesInput.$valid'));\n var error = element(by.css('span.error'));\n\n it('should initialize to model', function() {\n expect(names.getText()).toContain('[\"igor\",\"misko\",\"vojta\"]');\n expect(valid.getText()).toContain('true');\n expect(error.getCssValue('display')).toBe('none');\n });\n\n it('should be invalid if empty', function() {\n listInput.clear();\n listInput.sendKeys('');\n\n expect(names.getText()).toContain('');\n expect(valid.getText()).toContain('false');\n expect(error.getCssValue('display')).not.toBe('none'); });\n \n
\n */\nvar ngListDirective = function() {\n return {\n require: 'ngModel',\n link: function(scope, element, attr, ctrl) {\n var match = /\\/(.*)\\//.exec(attr.ngList),\n separator = match && new RegExp(match[1]) || attr.ngList || ',';\n\n var parse = function(viewValue) {\n // If the viewValue is invalid (say required but empty) it will be `undefined`\n if (isUndefined(viewValue)) return;\n\n var list = [];\n\n if (viewValue) {\n forEach(viewValue.split(separator), function(value) {\n if (value) list.push(trim(value));\n });\n }\n\n return list;\n };\n\n ctrl.$parsers.push(parse);\n ctrl.$formatters.push(function(value) {\n if (isArray(value)) {\n return value.join(', ');\n }\n\n return undefined;\n });\n\n // Override the standard $isEmpty because an empty array means the input is empty.\n ctrl.$isEmpty = function(value) {\n return !value || !value.length;\n };\n }\n };\n};\n\n\nvar CONSTANT_VALUE_REGEXP = /^(true|false|\\d+)$/;\n/**\n * @ngdoc directive\n * @name ngValue\n *\n * @description\n * Binds the given expression to the value of `input[select]` or `input[radio]`, so\n * that when the element is selected, the `ngModel` of that element is set to the\n * bound value.\n *\n * `ngValue` is useful when dynamically generating lists of radio buttons using `ng-repeat`, as\n * shown below.\n *\n * @element input\n * @param {string=} ngValue angular expression, whose value will be bound to the `value` attribute\n * of the `input` element\n *\n * @example\n \n \n \n
\n

Which is your favorite?

\n \n
You chose {{my.favorite}}
\n
\n
\n \n var favorite = element(by.binding('my.favorite'));\n\n it('should initialize to model', function() {\n expect(favorite.getText()).toContain('unicorns');\n });\n it('should bind the values to the inputs', function() {\n element.all(by.model('my.favorite')).get(0).click();\n expect(favorite.getText()).toContain('pizza');\n });\n \n
\n */\nvar ngValueDirective = function() {\n return {\n priority: 100,\n compile: function(tpl, tplAttr) {\n if (CONSTANT_VALUE_REGEXP.test(tplAttr.ngValue)) {\n return function ngValueConstantLink(scope, elm, attr) {\n attr.$set('value', scope.$eval(attr.ngValue));\n };\n } else {\n return function ngValueLink(scope, elm, attr) {\n scope.$watch(attr.ngValue, function valueWatchAction(value) {\n attr.$set('value', value);\n });\n };\n }\n }\n };\n};\n\n/**\n * @ngdoc directive\n * @name ngBind\n * @restrict AC\n *\n * @description\n * The `ngBind` attribute tells Angular to replace the text content of the specified HTML element\n * with the value of a given expression, and to update the text content when the value of that\n * expression changes.\n *\n * Typically, you don't use `ngBind` directly, but instead you use the double curly markup like\n * `{{ expression }}` which is similar but less verbose.\n *\n * It is preferable to use `ngBind` instead of `{{ expression }}` if a template is momentarily\n * displayed by the browser in its raw state before Angular compiles it. Since `ngBind` is an\n * element attribute, it makes the bindings invisible to the user while the page is loading.\n *\n * An alternative solution to this problem would be using the\n * {@link ng.directive:ngCloak ngCloak} directive.\n *\n *\n * @element ANY\n * @param {expression} ngBind {@link guide/expression Expression} to evaluate.\n *\n * @example\n * Enter a name in the Live Preview text box; the greeting below the text box changes instantly.\n \n \n \n
\n Enter name:
\n Hello !\n
\n
\n \n it('should check ng-bind', function() {\n var nameInput = element(by.model('name'));\n\n expect(element(by.binding('name')).getText()).toBe('Whirled');\n nameInput.clear();\n nameInput.sendKeys('world');\n expect(element(by.binding('name')).getText()).toBe('world');\n });\n \n
\n */\nvar ngBindDirective = ngDirective({\n compile: function(templateElement) {\n templateElement.addClass('ng-binding');\n return function (scope, element, attr) {\n element.data('$binding', attr.ngBind);\n scope.$watch(attr.ngBind, function ngBindWatchAction(value) {\n // We are purposefully using == here rather than === because we want to\n // catch when value is \"null or undefined\"\n // jshint -W041\n element.text(value == undefined ? '' : value);\n });\n };\n }\n});\n\n\n/**\n * @ngdoc directive\n * @name ngBindTemplate\n *\n * @description\n * The `ngBindTemplate` directive specifies that the element\n * text content should be replaced with the interpolation of the template\n * in the `ngBindTemplate` attribute.\n * Unlike `ngBind`, the `ngBindTemplate` can contain multiple `{{` `}}`\n * expressions. This directive is needed since some HTML elements\n * (such as TITLE and OPTION) cannot contain SPAN elements.\n *\n * @element ANY\n * @param {string} ngBindTemplate template of form\n * {{ expression }} to eval.\n *\n * @example\n * Try it here: enter text in text box and watch the greeting change.\n \n \n \n
\n Salutation:
\n Name:
\n
\n       
\n
\n \n it('should check ng-bind', function() {\n var salutationElem = element(by.binding('salutation'));\n var salutationInput = element(by.model('salutation'));\n var nameInput = element(by.model('name'));\n\n expect(salutationElem.getText()).toBe('Hello World!');\n\n salutationInput.clear();\n salutationInput.sendKeys('Greetings');\n nameInput.clear();\n nameInput.sendKeys('user');\n\n expect(salutationElem.getText()).toBe('Greetings user!');\n });\n \n
\n */\nvar ngBindTemplateDirective = ['$interpolate', function($interpolate) {\n return function(scope, element, attr) {\n // TODO: move this to scenario runner\n var interpolateFn = $interpolate(element.attr(attr.$attr.ngBindTemplate));\n element.addClass('ng-binding').data('$binding', interpolateFn);\n attr.$observe('ngBindTemplate', function(value) {\n element.text(value);\n });\n };\n}];\n\n\n/**\n * @ngdoc directive\n * @name ngBindHtml\n *\n * @description\n * Creates a binding that will innerHTML the result of evaluating the `expression` into the current\n * element in a secure way. By default, the innerHTML-ed content will be sanitized using the {@link\n * ngSanitize.$sanitize $sanitize} service. To utilize this functionality, ensure that `$sanitize`\n * is available, for example, by including {@link ngSanitize} in your module's dependencies (not in\n * core Angular). In order to use {@link ngSanitize} in your module's dependencies, you need to\n * include \"angular-sanitize.js\" in your application.\n *\n * You may also bypass sanitization for values you know are safe. To do so, bind to\n * an explicitly trusted value via {@link ng.$sce#trustAsHtml $sce.trustAsHtml}. See the example\n * under {@link ng.$sce#Example Strict Contextual Escaping (SCE)}.\n *\n * Note: If a `$sanitize` service is unavailable and the bound value isn't explicitly trusted, you\n * will have an exception (instead of an exploit.)\n *\n * @element ANY\n * @param {expression} ngBindHtml {@link guide/expression Expression} to evaluate.\n *\n * @example\n\n \n \n
\n

\n
\n
\n\n \n angular.module('bindHtmlExample', ['ngSanitize'])\n .controller('ExampleController', ['$scope', function($scope) {\n $scope.myHTML =\n 'I am an HTMLstring with ' +\n 'links! and other stuff';\n }]);\n \n\n \n it('should check ng-bind-html', function() {\n expect(element(by.binding('myHTML')).getText()).toBe(\n 'I am an HTMLstring with links! and other stuff');\n });\n \n
\n */\nvar ngBindHtmlDirective = ['$sce', '$parse', function($sce, $parse) {\n return {\n compile: function (tElement) {\n tElement.addClass('ng-binding');\n\n return function (scope, element, attr) {\n element.data('$binding', attr.ngBindHtml);\n\n var parsed = $parse(attr.ngBindHtml);\n\n function getStringValue() {\n return (parsed(scope) || '').toString();\n }\n\n scope.$watch(getStringValue, function ngBindHtmlWatchAction(value) {\n element.html($sce.getTrustedHtml(parsed(scope)) || '');\n });\n };\n }\n };\n}];\n\nfunction classDirective(name, selector) {\n name = 'ngClass' + name;\n return ['$animate', function($animate) {\n return {\n restrict: 'AC',\n link: function(scope, element, attr) {\n var oldVal;\n\n scope.$watch(attr[name], ngClassWatchAction, true);\n\n attr.$observe('class', function(value) {\n ngClassWatchAction(scope.$eval(attr[name]));\n });\n\n\n if (name !== 'ngClass') {\n scope.$watch('$index', function($index, old$index) {\n // jshint bitwise: false\n var mod = $index & 1;\n if (mod !== (old$index & 1)) {\n var classes = arrayClasses(scope.$eval(attr[name]));\n mod === selector ?\n addClasses(classes) :\n removeClasses(classes);\n }\n });\n }\n\n function addClasses(classes) {\n var newClasses = digestClassCounts(classes, 1);\n attr.$addClass(newClasses);\n }\n\n function removeClasses(classes) {\n var newClasses = digestClassCounts(classes, -1);\n attr.$removeClass(newClasses);\n }\n\n function digestClassCounts (classes, count) {\n var classCounts = element.data('$classCounts') || {};\n var classesToUpdate = [];\n forEach(classes, function (className) {\n if (count > 0 || classCounts[className]) {\n classCounts[className] = (classCounts[className] || 0) + count;\n if (classCounts[className] === +(count > 0)) {\n classesToUpdate.push(className);\n }\n }\n });\n element.data('$classCounts', classCounts);\n return classesToUpdate.join(' ');\n }\n\n function updateClasses (oldClasses, newClasses) {\n var toAdd = arrayDifference(newClasses, oldClasses);\n var toRemove = arrayDifference(oldClasses, newClasses);\n toRemove = digestClassCounts(toRemove, -1);\n toAdd = digestClassCounts(toAdd, 1);\n\n if (toAdd.length === 0) {\n $animate.removeClass(element, toRemove);\n } else if (toRemove.length === 0) {\n $animate.addClass(element, toAdd);\n } else {\n $animate.setClass(element, toAdd, toRemove);\n }\n }\n\n function ngClassWatchAction(newVal) {\n if (selector === true || scope.$index % 2 === selector) {\n var newClasses = arrayClasses(newVal || []);\n if (!oldVal) {\n addClasses(newClasses);\n } else if (!equals(newVal,oldVal)) {\n var oldClasses = arrayClasses(oldVal);\n updateClasses(oldClasses, newClasses);\n }\n }\n oldVal = shallowCopy(newVal);\n }\n }\n };\n\n function arrayDifference(tokens1, tokens2) {\n var values = [];\n\n outer:\n for(var i = 0; i < tokens1.length; i++) {\n var token = tokens1[i];\n for(var j = 0; j < tokens2.length; j++) {\n if(token == tokens2[j]) continue outer;\n }\n values.push(token);\n }\n return values;\n }\n\n function arrayClasses (classVal) {\n if (isArray(classVal)) {\n return classVal;\n } else if (isString(classVal)) {\n return classVal.split(' ');\n } else if (isObject(classVal)) {\n var classes = [], i = 0;\n forEach(classVal, function(v, k) {\n if (v) {\n classes = classes.concat(k.split(' '));\n }\n });\n return classes;\n }\n return classVal;\n }\n }];\n}\n\n/**\n * @ngdoc directive\n * @name ngClass\n * @restrict AC\n *\n * @description\n * The `ngClass` directive allows you to dynamically set CSS classes on an HTML element by databinding\n * an expression that represents all classes to be added.\n *\n * The directive operates in three different ways, depending on which of three types the expression\n * evaluates to:\n *\n * 1. If the expression evaluates to a string, the string should be one or more space-delimited class\n * names.\n *\n * 2. If the expression evaluates to an array, each element of the array should be a string that is\n * one or more space-delimited class names.\n *\n * 3. If the expression evaluates to an object, then for each key-value pair of the\n * object with a truthy value the corresponding key is used as a class name.\n *\n * The directive won't add duplicate classes if a particular class was already set.\n *\n * When the expression changes, the previously added classes are removed and only then the\n * new classes are added.\n *\n * @animations\n * add - happens just before the class is applied to the element\n * remove - happens just before the class is removed from the element\n *\n * @element ANY\n * @param {expression} ngClass {@link guide/expression Expression} to eval. The result\n * of the evaluation can be a string representing space delimited class\n * names, an array, or a map of class names to boolean values. In the case of a map, the\n * names of the properties whose values are truthy will be added as css classes to the\n * element.\n *\n * @example Example that demonstrates basic bindings via ngClass directive.\n \n \n

Map Syntax Example

\n deleted (apply \"strike\" class)
\n important (apply \"bold\" class)
\n error (apply \"red\" class)\n
\n

Using String Syntax

\n \n
\n

Using Array Syntax

\n
\n
\n
\n
\n \n .strike {\n text-decoration: line-through;\n }\n .bold {\n font-weight: bold;\n }\n .red {\n color: red;\n }\n \n \n var ps = element.all(by.css('p'));\n\n it('should let you toggle the class', function() {\n\n expect(ps.first().getAttribute('class')).not.toMatch(/bold/);\n expect(ps.first().getAttribute('class')).not.toMatch(/red/);\n\n element(by.model('important')).click();\n expect(ps.first().getAttribute('class')).toMatch(/bold/);\n\n element(by.model('error')).click();\n expect(ps.first().getAttribute('class')).toMatch(/red/);\n });\n\n it('should let you toggle string example', function() {\n expect(ps.get(1).getAttribute('class')).toBe('');\n element(by.model('style')).clear();\n element(by.model('style')).sendKeys('red');\n expect(ps.get(1).getAttribute('class')).toBe('red');\n });\n\n it('array example should have 3 classes', function() {\n expect(ps.last().getAttribute('class')).toBe('');\n element(by.model('style1')).sendKeys('bold');\n element(by.model('style2')).sendKeys('strike');\n element(by.model('style3')).sendKeys('red');\n expect(ps.last().getAttribute('class')).toBe('bold strike red');\n });\n \n
\n\n ## Animations\n\n The example below demonstrates how to perform animations using ngClass.\n\n \n \n \n \n
\n Sample Text\n
\n \n .base-class {\n -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n }\n\n .base-class.my-class {\n color: red;\n font-size:3em;\n }\n \n \n it('should check ng-class', function() {\n expect(element(by.css('.base-class')).getAttribute('class')).not.\n toMatch(/my-class/);\n\n element(by.id('setbtn')).click();\n\n expect(element(by.css('.base-class')).getAttribute('class')).\n toMatch(/my-class/);\n\n element(by.id('clearbtn')).click();\n\n expect(element(by.css('.base-class')).getAttribute('class')).not.\n toMatch(/my-class/);\n });\n \n
\n\n\n ## ngClass and pre-existing CSS3 Transitions/Animations\n The ngClass directive still supports CSS3 Transitions/Animations even if they do not follow the ngAnimate CSS naming structure.\n Upon animation ngAnimate will apply supplementary CSS classes to track the start and end of an animation, but this will not hinder\n any pre-existing CSS transitions already on the element. To get an idea of what happens during a class-based animation, be sure\n to view the step by step details of {@link ngAnimate.$animate#addclass $animate.addClass} and\n {@link ngAnimate.$animate#removeclass $animate.removeClass}.\n */\nvar ngClassDirective = classDirective('', true);\n\n/**\n * @ngdoc directive\n * @name ngClassOdd\n * @restrict AC\n *\n * @description\n * The `ngClassOdd` and `ngClassEven` directives work exactly as\n * {@link ng.directive:ngClass ngClass}, except they work in\n * conjunction with `ngRepeat` and take effect only on odd (even) rows.\n *\n * This directive can be applied only within the scope of an\n * {@link ng.directive:ngRepeat ngRepeat}.\n *\n * @element ANY\n * @param {expression} ngClassOdd {@link guide/expression Expression} to eval. The result\n * of the evaluation can be a string representing space delimited class names or an array.\n *\n * @example\n \n \n
    \n
  1. \n \n {{name}}\n \n
  2. \n
\n
\n \n .odd {\n color: red;\n }\n .even {\n color: blue;\n }\n \n \n it('should check ng-class-odd and ng-class-even', function() {\n expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')).\n toMatch(/odd/);\n expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')).\n toMatch(/even/);\n });\n \n
\n */\nvar ngClassOddDirective = classDirective('Odd', 0);\n\n/**\n * @ngdoc directive\n * @name ngClassEven\n * @restrict AC\n *\n * @description\n * The `ngClassOdd` and `ngClassEven` directives work exactly as\n * {@link ng.directive:ngClass ngClass}, except they work in\n * conjunction with `ngRepeat` and take effect only on odd (even) rows.\n *\n * This directive can be applied only within the scope of an\n * {@link ng.directive:ngRepeat ngRepeat}.\n *\n * @element ANY\n * @param {expression} ngClassEven {@link guide/expression Expression} to eval. The\n * result of the evaluation can be a string representing space delimited class names or an array.\n *\n * @example\n \n \n
    \n
  1. \n \n {{name}}      \n \n
  2. \n
\n
\n \n .odd {\n color: red;\n }\n .even {\n color: blue;\n }\n \n \n it('should check ng-class-odd and ng-class-even', function() {\n expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')).\n toMatch(/odd/);\n expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')).\n toMatch(/even/);\n });\n \n
\n */\nvar ngClassEvenDirective = classDirective('Even', 1);\n\n/**\n * @ngdoc directive\n * @name ngCloak\n * @restrict AC\n *\n * @description\n * The `ngCloak` directive is used to prevent the Angular html template from being briefly\n * displayed by the browser in its raw (uncompiled) form while your application is loading. Use this\n * directive to avoid the undesirable flicker effect caused by the html template display.\n *\n * The directive can be applied to the `` element, but the preferred usage is to apply\n * multiple `ngCloak` directives to small portions of the page to permit progressive rendering\n * of the browser view.\n *\n * `ngCloak` works in cooperation with the following css rule embedded within `angular.js` and\n * `angular.min.js`.\n * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).\n *\n * ```css\n * [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n * display: none !important;\n * }\n * ```\n *\n * When this css rule is loaded by the browser, all html elements (including their children) that\n * are tagged with the `ngCloak` directive are hidden. When Angular encounters this directive\n * during the compilation of the template it deletes the `ngCloak` element attribute, making\n * the compiled element visible.\n *\n * For the best result, the `angular.js` script must be loaded in the head section of the html\n * document; alternatively, the css rule above must be included in the external stylesheet of the\n * application.\n *\n * Legacy browsers, like IE7, do not provide attribute selector support (added in CSS 2.1) so they\n * cannot match the `[ng\\:cloak]` selector. To work around this limitation, you must add the css\n * class `ng-cloak` in addition to the `ngCloak` directive as shown in the example below.\n *\n * @element ANY\n *\n * @example\n \n \n
{{ 'hello' }}
\n
{{ 'hello IE7' }}
\n
\n \n it('should remove the template directive and css class', function() {\n expect($('#template1').getAttribute('ng-cloak')).\n toBeNull();\n expect($('#template2').getAttribute('ng-cloak')).\n toBeNull();\n });\n \n
\n *\n */\nvar ngCloakDirective = ngDirective({\n compile: function(element, attr) {\n attr.$set('ngCloak', undefined);\n element.removeClass('ng-cloak');\n }\n});\n\n/**\n * @ngdoc directive\n * @name ngController\n *\n * @description\n * The `ngController` directive attaches a controller class to the view. This is a key aspect of how angular\n * supports the principles behind the Model-View-Controller design pattern.\n *\n * MVC components in angular:\n *\n * * Model — Models are the properties of a scope; scopes are attached to the DOM where scope properties\n * are accessed through bindings.\n * * View — The template (HTML with data bindings) that is rendered into the View.\n * * Controller — The `ngController` directive specifies a Controller class; the class contains business\n * logic behind the application to decorate the scope with functions and values\n *\n * Note that you can also attach controllers to the DOM by declaring it in a route definition\n * via the {@link ngRoute.$route $route} service. A common mistake is to declare the controller\n * again using `ng-controller` in the template itself. This will cause the controller to be attached\n * and executed twice.\n *\n * @element ANY\n * @scope\n * @priority 500\n * @param {expression} ngController Name of a globally accessible constructor function or an\n * {@link guide/expression expression} that on the current scope evaluates to a\n * constructor function. The controller instance can be published into a scope property\n * by specifying `as propertyName`.\n *\n * @example\n * Here is a simple form for editing user contact information. Adding, removing, clearing, and\n * greeting are methods declared on the controller (see source tab). These methods can\n * easily be called from the angular markup. Any changes to the data are automatically reflected\n * in the View without the need for a manual update.\n *\n * Two different declaration styles are included below:\n *\n * * one binds methods and properties directly onto the controller using `this`:\n * `ng-controller=\"SettingsController1 as settings\"`\n * * one injects `$scope` into the controller:\n * `ng-controller=\"SettingsController2\"`\n *\n * The second option is more common in the Angular community, and is generally used in boilerplates\n * and in this guide. However, there are advantages to binding properties directly to the controller\n * and avoiding scope.\n *\n * * Using `controller as` makes it obvious which controller you are accessing in the template when\n * multiple controllers apply to an element.\n * * If you are writing your controllers as classes you have easier access to the properties and\n * methods, which will appear on the scope, from inside the controller code.\n * * Since there is always a `.` in the bindings, you don't have to worry about prototypal\n * inheritance masking primitives.\n *\n * This example demonstrates the `controller as` syntax.\n *\n * \n * \n *
\n * Name: \n * [ greet ]
\n * Contact:\n *
    \n *
  • \n * \n * \n * [ clear\n * | X ]\n *
  • \n *
  • [ add ]
  • \n *
\n *
\n *
\n * \n * angular.module('controllerAsExample', [])\n * .controller('SettingsController1', SettingsController1);\n *\n * function SettingsController1() {\n * this.name = \"John Smith\";\n * this.contacts = [\n * {type: 'phone', value: '408 555 1212'},\n * {type: 'email', value: 'john.smith@example.org'} ];\n * }\n *\n * SettingsController1.prototype.greet = function() {\n * alert(this.name);\n * };\n *\n * SettingsController1.prototype.addContact = function() {\n * this.contacts.push({type: 'email', value: 'yourname@example.org'});\n * };\n *\n * SettingsController1.prototype.removeContact = function(contactToRemove) {\n * var index = this.contacts.indexOf(contactToRemove);\n * this.contacts.splice(index, 1);\n * };\n *\n * SettingsController1.prototype.clearContact = function(contact) {\n * contact.type = 'phone';\n * contact.value = '';\n * };\n * \n * \n * it('should check controller as', function() {\n * var container = element(by.id('ctrl-as-exmpl'));\n * expect(container.element(by.model('settings.name'))\n * .getAttribute('value')).toBe('John Smith');\n *\n * var firstRepeat =\n * container.element(by.repeater('contact in settings.contacts').row(0));\n * var secondRepeat =\n * container.element(by.repeater('contact in settings.contacts').row(1));\n *\n * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))\n * .toBe('408 555 1212');\n *\n * expect(secondRepeat.element(by.model('contact.value')).getAttribute('value'))\n * .toBe('john.smith@example.org');\n *\n * firstRepeat.element(by.linkText('clear')).click();\n *\n * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))\n * .toBe('');\n *\n * container.element(by.linkText('add')).click();\n *\n * expect(container.element(by.repeater('contact in settings.contacts').row(2))\n * .element(by.model('contact.value'))\n * .getAttribute('value'))\n * .toBe('yourname@example.org');\n * });\n * \n *
\n *\n * This example demonstrates the \"attach to `$scope`\" style of controller.\n *\n * \n * \n *
\n * Name: \n * [ greet ]
\n * Contact:\n *
    \n *
  • \n * \n * \n * [ clear\n * | X ]\n *
  • \n *
  • [ add ]
  • \n *
\n *
\n *
\n * \n * angular.module('controllerExample', [])\n * .controller('SettingsController2', ['$scope', SettingsController2]);\n *\n * function SettingsController2($scope) {\n * $scope.name = \"John Smith\";\n * $scope.contacts = [\n * {type:'phone', value:'408 555 1212'},\n * {type:'email', value:'john.smith@example.org'} ];\n *\n * $scope.greet = function() {\n * alert($scope.name);\n * };\n *\n * $scope.addContact = function() {\n * $scope.contacts.push({type:'email', value:'yourname@example.org'});\n * };\n *\n * $scope.removeContact = function(contactToRemove) {\n * var index = $scope.contacts.indexOf(contactToRemove);\n * $scope.contacts.splice(index, 1);\n * };\n *\n * $scope.clearContact = function(contact) {\n * contact.type = 'phone';\n * contact.value = '';\n * };\n * }\n * \n * \n * it('should check controller', function() {\n * var container = element(by.id('ctrl-exmpl'));\n *\n * expect(container.element(by.model('name'))\n * .getAttribute('value')).toBe('John Smith');\n *\n * var firstRepeat =\n * container.element(by.repeater('contact in contacts').row(0));\n * var secondRepeat =\n * container.element(by.repeater('contact in contacts').row(1));\n *\n * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))\n * .toBe('408 555 1212');\n * expect(secondRepeat.element(by.model('contact.value')).getAttribute('value'))\n * .toBe('john.smith@example.org');\n *\n * firstRepeat.element(by.linkText('clear')).click();\n *\n * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))\n * .toBe('');\n *\n * container.element(by.linkText('add')).click();\n *\n * expect(container.element(by.repeater('contact in contacts').row(2))\n * .element(by.model('contact.value'))\n * .getAttribute('value'))\n * .toBe('yourname@example.org');\n * });\n * \n *
\n\n */\nvar ngControllerDirective = [function() {\n return {\n scope: true,\n controller: '@',\n priority: 500\n };\n}];\n\n/**\n * @ngdoc directive\n * @name ngCsp\n *\n * @element html\n * @description\n * Enables [CSP (Content Security Policy)](https://developer.mozilla.org/en/Security/CSP) support.\n *\n * This is necessary when developing things like Google Chrome Extensions.\n *\n * CSP forbids apps to use `eval` or `Function(string)` generated functions (among other things).\n * For Angular to be CSP compatible there are only two things that we need to do differently:\n *\n * - don't use `Function` constructor to generate optimized value getters\n * - don't inject custom stylesheet into the document\n *\n * AngularJS uses `Function(string)` generated functions as a speed optimization. Applying the `ngCsp`\n * directive will cause Angular to use CSP compatibility mode. When this mode is on AngularJS will\n * evaluate all expressions up to 30% slower than in non-CSP mode, but no security violations will\n * be raised.\n *\n * CSP forbids JavaScript to inline stylesheet rules. In non CSP mode Angular automatically\n * includes some CSS rules (e.g. {@link ng.directive:ngCloak ngCloak}).\n * To make those directives work in CSP mode, include the `angular-csp.css` manually.\n *\n * Angular tries to autodetect if CSP is active and automatically turn on the CSP-safe mode. This\n * autodetection however triggers a CSP error to be logged in the console:\n *\n * ```\n * Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of\n * script in the following Content Security Policy directive: \"default-src 'self'\". Note that\n * 'script-src' was not explicitly set, so 'default-src' is used as a fallback.\n * ```\n *\n * This error is harmless but annoying. To prevent the error from showing up, put the `ngCsp`\n * directive on the root element of the application or on the `angular.js` script tag, whichever\n * appears first in the html document.\n *\n * *Note: This directive is only available in the `ng-csp` and `data-ng-csp` attribute form.*\n *\n * @example\n * This example shows how to apply the `ngCsp` directive to the `html` tag.\n ```html\n \n \n ...\n ...\n \n ```\n */\n\n// ngCsp is not implemented as a proper directive any more, because we need it be processed while we\n// bootstrap the system (before $parse is instantiated), for this reason we just have\n// the csp.isActive() fn that looks for ng-csp attribute anywhere in the current doc\n\n/**\n * @ngdoc directive\n * @name ngClick\n *\n * @description\n * The ngClick directive allows you to specify custom behavior when\n * an element is clicked.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngClick {@link guide/expression Expression} to evaluate upon\n * click. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n \n count: {{count}}\n \n \n \n it('should check ng-click', function() {\n expect(element(by.binding('count')).getText()).toMatch('0');\n element(by.css('button')).click();\n expect(element(by.binding('count')).getText()).toMatch('1');\n });\n \n \n */\n/*\n * A collection of directives that allows creation of custom event handlers that are defined as\n * angular expressions and are compiled and executed within the current scope.\n */\nvar ngEventDirectives = {};\n\n// For events that might fire synchronously during DOM manipulation\n// we need to execute their event handlers asynchronously using $evalAsync,\n// so that they are not executed in an inconsistent state.\nvar forceAsyncEvents = {\n 'blur': true,\n 'focus': true\n};\nforEach(\n 'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste'.split(' '),\n function(eventName) {\n var directiveName = directiveNormalize('ng-' + eventName);\n ngEventDirectives[directiveName] = ['$parse', '$rootScope', function($parse, $rootScope) {\n return {\n compile: function($element, attr) {\n // We expose the powerful $event object on the scope that provides access to the Window,\n // etc. that isn't protected by the fast paths in $parse. We explicitly request better\n // checks at the cost of speed since event handler expressions are not executed as\n // frequently as regular change detection.\n var fn = $parse(attr[directiveName], /* expensiveChecks */ true);\n return function ngEventHandler(scope, element) {\n element.on(eventName, function(event) {\n var callback = function() {\n fn(scope, {$event:event});\n };\n if (forceAsyncEvents[eventName] && $rootScope.$$phase) {\n scope.$evalAsync(callback);\n } else {\n scope.$apply(callback);\n }\n });\n };\n }\n };\n }];\n }\n);\n\n/**\n * @ngdoc directive\n * @name ngDblclick\n *\n * @description\n * The `ngDblclick` directive allows you to specify custom behavior on a dblclick event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngDblclick {@link guide/expression Expression} to evaluate upon\n * a dblclick. (The Event object is available as `$event`)\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngMousedown\n *\n * @description\n * The ngMousedown directive allows you to specify custom behavior on mousedown event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMousedown {@link guide/expression Expression} to evaluate upon\n * mousedown. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngMouseup\n *\n * @description\n * Specify custom behavior on mouseup event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMouseup {@link guide/expression Expression} to evaluate upon\n * mouseup. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n/**\n * @ngdoc directive\n * @name ngMouseover\n *\n * @description\n * Specify custom behavior on mouseover event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMouseover {@link guide/expression Expression} to evaluate upon\n * mouseover. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngMouseenter\n *\n * @description\n * Specify custom behavior on mouseenter event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMouseenter {@link guide/expression Expression} to evaluate upon\n * mouseenter. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngMouseleave\n *\n * @description\n * Specify custom behavior on mouseleave event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMouseleave {@link guide/expression Expression} to evaluate upon\n * mouseleave. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngMousemove\n *\n * @description\n * Specify custom behavior on mousemove event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMousemove {@link guide/expression Expression} to evaluate upon\n * mousemove. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngKeydown\n *\n * @description\n * Specify custom behavior on keydown event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngKeydown {@link guide/expression Expression} to evaluate upon\n * keydown. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)\n *\n * @example\n \n \n \n key down count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngKeyup\n *\n * @description\n * Specify custom behavior on keyup event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngKeyup {@link guide/expression Expression} to evaluate upon\n * keyup. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)\n *\n * @example\n \n \n

Typing in the input box below updates the key count

\n key up count: {{count}}\n\n

Typing in the input box below updates the keycode

\n \n

event keyCode: {{ event.keyCode }}

\n

event altKey: {{ event.altKey }}

\n
\n
\n */\n\n\n/**\n * @ngdoc directive\n * @name ngKeypress\n *\n * @description\n * Specify custom behavior on keypress event.\n *\n * @element ANY\n * @param {expression} ngKeypress {@link guide/expression Expression} to evaluate upon\n * keypress. ({@link guide/expression#-event- Event object is available as `$event`}\n * and can be interrogated for keyCode, altKey, etc.)\n *\n * @example\n \n \n \n key press count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngSubmit\n *\n * @description\n * Enables binding angular expressions to onsubmit events.\n *\n * Additionally it prevents the default action (which for form means sending the request to the\n * server and reloading the current page), but only if the form does not contain `action`,\n * `data-action`, or `x-action` attributes.\n *\n *
\n * **Warning:** Be careful not to cause \"double-submission\" by using both the `ngClick` and\n * `ngSubmit` handlers together. See the\n * {@link form#submitting-a-form-and-preventing-the-default-action `form` directive documentation}\n * for a detailed discussion of when `ngSubmit` may be triggered.\n *
\n *\n * @element form\n * @priority 0\n * @param {expression} ngSubmit {@link guide/expression Expression} to eval.\n * ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n
\n Enter text and hit enter:\n \n \n
list={{list}}
\n
\n
\n \n it('should check ng-submit', function() {\n expect(element(by.binding('list')).getText()).toBe('list=[]');\n element(by.css('#submit')).click();\n expect(element(by.binding('list')).getText()).toContain('hello');\n expect(element(by.model('text')).getAttribute('value')).toBe('');\n });\n it('should ignore empty strings', function() {\n expect(element(by.binding('list')).getText()).toBe('list=[]');\n element(by.css('#submit')).click();\n element(by.css('#submit')).click();\n expect(element(by.binding('list')).getText()).toContain('hello');\n });\n \n
\n */\n\n/**\n * @ngdoc directive\n * @name ngFocus\n *\n * @description\n * Specify custom behavior on focus event.\n *\n * Note: As the `focus` event is executed synchronously when calling `input.focus()`\n * AngularJS executes the expression using `scope.$evalAsync` if the event is fired\n * during an `$apply` to ensure a consistent state.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngFocus {@link guide/expression Expression} to evaluate upon\n * focus. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n * See {@link ng.directive:ngClick ngClick}\n */\n\n/**\n * @ngdoc directive\n * @name ngBlur\n *\n * @description\n * Specify custom behavior on blur event.\n *\n * A [blur event](https://developer.mozilla.org/en-US/docs/Web/Events/blur) fires when\n * an element has lost focus.\n *\n * Note: As the `blur` event is executed synchronously also during DOM manipulations\n * (e.g. removing a focussed input),\n * AngularJS executes the expression using `scope.$evalAsync` if the event is fired\n * during an `$apply` to ensure a consistent state.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngBlur {@link guide/expression Expression} to evaluate upon\n * blur. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n * See {@link ng.directive:ngClick ngClick}\n */\n\n/**\n * @ngdoc directive\n * @name ngCopy\n *\n * @description\n * Specify custom behavior on copy event.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngCopy {@link guide/expression Expression} to evaluate upon\n * copy. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n copied: {{copied}}\n \n \n */\n\n/**\n * @ngdoc directive\n * @name ngCut\n *\n * @description\n * Specify custom behavior on cut event.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngCut {@link guide/expression Expression} to evaluate upon\n * cut. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n cut: {{cut}}\n \n \n */\n\n/**\n * @ngdoc directive\n * @name ngPaste\n *\n * @description\n * Specify custom behavior on paste event.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngPaste {@link guide/expression Expression} to evaluate upon\n * paste. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n pasted: {{paste}}\n \n \n */\n\n/**\n * @ngdoc directive\n * @name ngIf\n * @restrict A\n *\n * @description\n * The `ngIf` directive removes or recreates a portion of the DOM tree based on an\n * {expression}. If the expression assigned to `ngIf` evaluates to a false\n * value then the element is removed from the DOM, otherwise a clone of the\n * element is reinserted into the DOM.\n *\n * `ngIf` differs from `ngShow` and `ngHide` in that `ngIf` completely removes and recreates the\n * element in the DOM rather than changing its visibility via the `display` css property. A common\n * case when this difference is significant is when using css selectors that rely on an element's\n * position within the DOM, such as the `:first-child` or `:last-child` pseudo-classes.\n *\n * Note that when an element is removed using `ngIf` its scope is destroyed and a new scope\n * is created when the element is restored. The scope created within `ngIf` inherits from\n * its parent scope using\n * [prototypal inheritance](https://github.com/angular/angular.js/wiki/Understanding-Scopes#javascript-prototypal-inheritance).\n * An important implication of this is if `ngModel` is used within `ngIf` to bind to\n * a javascript primitive defined in the parent scope. In this case any modifications made to the\n * variable within the child scope will override (hide) the value in the parent scope.\n *\n * Also, `ngIf` recreates elements using their compiled state. An example of this behavior\n * is if an element's class attribute is directly modified after it's compiled, using something like\n * jQuery's `.addClass()` method, and the element is later removed. When `ngIf` recreates the element\n * the added class will be lost because the original compiled state is used to regenerate the element.\n *\n * Additionally, you can provide animations via the `ngAnimate` module to animate the `enter`\n * and `leave` effects.\n *\n * @animations\n * enter - happens just after the `ngIf` contents change and a new DOM element is created and injected into the `ngIf` container\n * leave - happens just before the `ngIf` contents are removed from the DOM\n *\n * @element ANY\n * @scope\n * @priority 600\n * @param {expression} ngIf If the {@link guide/expression expression} is falsy then\n * the element is removed from the DOM tree. If it is truthy a copy of the compiled\n * element is added to the DOM tree.\n *\n * @example\n \n \n Click me:
\n Show when checked:\n \n I'm removed when the checkbox is unchecked.\n \n
\n \n .animate-if {\n background:white;\n border:1px solid black;\n padding:10px;\n }\n\n .animate-if.ng-enter, .animate-if.ng-leave {\n -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n }\n\n .animate-if.ng-enter,\n .animate-if.ng-leave.ng-leave-active {\n opacity:0;\n }\n\n .animate-if.ng-leave,\n .animate-if.ng-enter.ng-enter-active {\n opacity:1;\n }\n \n
\n */\nvar ngIfDirective = ['$animate', function($animate) {\n return {\n transclude: 'element',\n priority: 600,\n terminal: true,\n restrict: 'A',\n $$tlb: true,\n link: function ($scope, $element, $attr, ctrl, $transclude) {\n var block, childScope, previousElements;\n $scope.$watch($attr.ngIf, function ngIfWatchAction(value) {\n\n if (toBoolean(value)) {\n if (!childScope) {\n childScope = $scope.$new();\n $transclude(childScope, function (clone) {\n clone[clone.length++] = document.createComment(' end ngIf: ' + $attr.ngIf + ' ');\n // Note: We only need the first/last node of the cloned nodes.\n // However, we need to keep the reference to the jqlite wrapper as it might be changed later\n // by a directive with templateUrl when its template arrives.\n block = {\n clone: clone\n };\n $animate.enter(clone, $element.parent(), $element);\n });\n }\n } else {\n if(previousElements) {\n previousElements.remove();\n previousElements = null;\n }\n if(childScope) {\n childScope.$destroy();\n childScope = null;\n }\n if(block) {\n previousElements = getBlockElements(block.clone);\n $animate.leave(previousElements, function() {\n previousElements = null;\n });\n block = null;\n }\n }\n });\n }\n };\n}];\n\n/**\n * @ngdoc directive\n * @name ngInclude\n * @restrict ECA\n *\n * @description\n * Fetches, compiles and includes an external HTML fragment.\n *\n * By default, the template URL is restricted to the same domain and protocol as the\n * application document. This is done by calling {@link ng.$sce#getTrustedResourceUrl\n * $sce.getTrustedResourceUrl} on it. To load templates from other domains or protocols\n * you may either {@link ng.$sceDelegateProvider#resourceUrlWhitelist whitelist them} or\n * [wrap them](ng.$sce#trustAsResourceUrl) as trusted values. Refer to Angular's {@link\n * ng.$sce Strict Contextual Escaping}.\n *\n * In addition, the browser's\n * [Same Origin Policy](https://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest)\n * and [Cross-Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/)\n * policy may further restrict whether the template is successfully loaded.\n * For example, `ngInclude` won't work for cross-domain requests on all browsers and for `file://`\n * access on some browsers.\n *\n * @animations\n * enter - animation is used to bring new content into the browser.\n * leave - animation is used to animate existing content away.\n *\n * The enter and leave animation occur concurrently.\n *\n * @scope\n * @priority 400\n *\n * @param {string} ngInclude|src angular expression evaluating to URL. If the source is a string constant,\n * make sure you wrap it in **single** quotes, e.g. `src=\"'myPartialTemplate.html'\"`.\n * @param {string=} onload Expression to evaluate when a new partial is loaded.\n *\n * @param {string=} autoscroll Whether `ngInclude` should call {@link ng.$anchorScroll\n * $anchorScroll} to scroll the viewport after the content is loaded.\n *\n * - If the attribute is not set, disable scrolling.\n * - If the attribute is set without value, enable scrolling.\n * - Otherwise enable scrolling only if the expression evaluates to truthy value.\n *\n * @example\n \n \n
\n \n url of the template: {{template.url}}\n
\n
\n
\n
\n
\n
\n \n angular.module('includeExample', ['ngAnimate'])\n .controller('ExampleController', ['$scope', function($scope) {\n $scope.templates =\n [ { name: 'template1.html', url: 'template1.html'},\n { name: 'template2.html', url: 'template2.html'} ];\n $scope.template = $scope.templates[0];\n }]);\n \n \n Content of template1.html\n \n \n Content of template2.html\n \n \n .slide-animate-container {\n position:relative;\n background:white;\n border:1px solid black;\n height:40px;\n overflow:hidden;\n }\n\n .slide-animate {\n padding:10px;\n }\n\n .slide-animate.ng-enter, .slide-animate.ng-leave {\n -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n\n position:absolute;\n top:0;\n left:0;\n right:0;\n bottom:0;\n display:block;\n padding:10px;\n }\n\n .slide-animate.ng-enter {\n top:-50px;\n }\n .slide-animate.ng-enter.ng-enter-active {\n top:0;\n }\n\n .slide-animate.ng-leave {\n top:0;\n }\n .slide-animate.ng-leave.ng-leave-active {\n top:50px;\n }\n \n \n var templateSelect = element(by.model('template'));\n var includeElem = element(by.css('[ng-include]'));\n\n it('should load template1.html', function() {\n expect(includeElem.getText()).toMatch(/Content of template1.html/);\n });\n\n it('should load template2.html', function() {\n if (browser.params.browser == 'firefox') {\n // Firefox can't handle using selects\n // See https://github.com/angular/protractor/issues/480\n return;\n }\n templateSelect.click();\n templateSelect.all(by.css('option')).get(2).click();\n expect(includeElem.getText()).toMatch(/Content of template2.html/);\n });\n\n it('should change to blank', function() {\n if (browser.params.browser == 'firefox') {\n // Firefox can't handle using selects\n return;\n }\n templateSelect.click();\n templateSelect.all(by.css('option')).get(0).click();\n expect(includeElem.isPresent()).toBe(false);\n });\n \n
\n */\n\n\n/**\n * @ngdoc event\n * @name ngInclude#$includeContentRequested\n * @eventType emit on the scope ngInclude was declared in\n * @description\n * Emitted every time the ngInclude content is requested.\n */\n\n\n/**\n * @ngdoc event\n * @name ngInclude#$includeContentLoaded\n * @eventType emit on the current ngInclude scope\n * @description\n * Emitted every time the ngInclude content is reloaded.\n */\nvar ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$animate', '$sce',\n function($http, $templateCache, $anchorScroll, $animate, $sce) {\n return {\n restrict: 'ECA',\n priority: 400,\n terminal: true,\n transclude: 'element',\n controller: angular.noop,\n compile: function(element, attr) {\n var srcExp = attr.ngInclude || attr.src,\n onloadExp = attr.onload || '',\n autoScrollExp = attr.autoscroll;\n\n return function(scope, $element, $attr, ctrl, $transclude) {\n var changeCounter = 0,\n currentScope,\n previousElement,\n currentElement;\n\n var cleanupLastIncludeContent = function() {\n if(previousElement) {\n previousElement.remove();\n previousElement = null;\n }\n if(currentScope) {\n currentScope.$destroy();\n currentScope = null;\n }\n if(currentElement) {\n $animate.leave(currentElement, function() {\n previousElement = null;\n });\n previousElement = currentElement;\n currentElement = null;\n }\n };\n\n scope.$watch($sce.parseAsResourceUrl(srcExp), function ngIncludeWatchAction(src) {\n var afterAnimation = function() {\n if (isDefined(autoScrollExp) && (!autoScrollExp || scope.$eval(autoScrollExp))) {\n $anchorScroll();\n }\n };\n var thisChangeId = ++changeCounter;\n\n if (src) {\n $http.get(src, {cache: $templateCache}).success(function(response) {\n if (thisChangeId !== changeCounter) return;\n var newScope = scope.$new();\n ctrl.template = response;\n\n // Note: This will also link all children of ng-include that were contained in the original\n // html. If that content contains controllers, ... they could pollute/change the scope.\n // However, using ng-include on an element with additional content does not make sense...\n // Note: We can't remove them in the cloneAttchFn of $transclude as that\n // function is called before linking the content, which would apply child\n // directives to non existing elements.\n var clone = $transclude(newScope, function(clone) {\n cleanupLastIncludeContent();\n $animate.enter(clone, null, $element, afterAnimation);\n });\n\n currentScope = newScope;\n currentElement = clone;\n\n currentScope.$emit('$includeContentLoaded');\n scope.$eval(onloadExp);\n }).error(function() {\n if (thisChangeId === changeCounter) cleanupLastIncludeContent();\n });\n scope.$emit('$includeContentRequested');\n } else {\n cleanupLastIncludeContent();\n ctrl.template = null;\n }\n });\n };\n }\n };\n}];\n\n// This directive is called during the $transclude call of the first `ngInclude` directive.\n// It will replace and compile the content of the element with the loaded template.\n// We need this directive so that the element content is already filled when\n// the link function of another directive on the same element as ngInclude\n// is called.\nvar ngIncludeFillContentDirective = ['$compile',\n function($compile) {\n return {\n restrict: 'ECA',\n priority: -400,\n require: 'ngInclude',\n link: function(scope, $element, $attr, ctrl) {\n $element.html(ctrl.template);\n $compile($element.contents())(scope);\n }\n };\n }];\n\n/**\n * @ngdoc directive\n * @name ngInit\n * @restrict AC\n *\n * @description\n * The `ngInit` directive allows you to evaluate an expression in the\n * current scope.\n *\n *
\n * The only appropriate use of `ngInit` is for aliasing special properties of\n * {@link ng.directive:ngRepeat `ngRepeat`}, as seen in the demo below. Besides this case, you\n * should use {@link guide/controller controllers} rather than `ngInit`\n * to initialize values on a scope.\n *
\n *
\n * **Note**: If you have assignment in `ngInit` along with {@link ng.$filter `$filter`}, make\n * sure you have parenthesis for correct precedence:\n *
\n *   
\n *
\n *
\n *\n * @priority 450\n *\n * @element ANY\n * @param {expression} ngInit {@link guide/expression Expression} to eval.\n *\n * @example\n \n \n \n
\n
\n
\n list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}};\n
\n
\n
\n
\n \n it('should alias index positions', function() {\n var elements = element.all(by.css('.example-init'));\n expect(elements.get(0).getText()).toBe('list[ 0 ][ 0 ] = a;');\n expect(elements.get(1).getText()).toBe('list[ 0 ][ 1 ] = b;');\n expect(elements.get(2).getText()).toBe('list[ 1 ][ 0 ] = c;');\n expect(elements.get(3).getText()).toBe('list[ 1 ][ 1 ] = d;');\n });\n \n
\n */\nvar ngInitDirective = ngDirective({\n priority: 450,\n compile: function() {\n return {\n pre: function(scope, element, attrs) {\n scope.$eval(attrs.ngInit);\n }\n };\n }\n});\n\n/**\n * @ngdoc directive\n * @name ngNonBindable\n * @restrict AC\n * @priority 1000\n *\n * @description\n * The `ngNonBindable` directive tells Angular not to compile or bind the contents of the current\n * DOM element. This is useful if the element contains what appears to be Angular directives and\n * bindings but which should be ignored by Angular. This could be the case if you have a site that\n * displays snippets of code, for instance.\n *\n * @element ANY\n *\n * @example\n * In this example there are two locations where a simple interpolation binding (`{{}}`) is present,\n * but the one wrapped in `ngNonBindable` is left alone.\n *\n * @example\n \n \n
Normal: {{1 + 2}}
\n
Ignored: {{1 + 2}}
\n
\n \n it('should check ng-non-bindable', function() {\n expect(element(by.binding('1 + 2')).getText()).toContain('3');\n expect(element.all(by.css('div')).last().getText()).toMatch(/1 \\+ 2/);\n });\n \n
\n */\nvar ngNonBindableDirective = ngDirective({ terminal: true, priority: 1000 });\n\n/**\n * @ngdoc directive\n * @name ngPluralize\n * @restrict EA\n *\n * @description\n * `ngPluralize` is a directive that displays messages according to en-US localization rules.\n * These rules are bundled with angular.js, but can be overridden\n * (see {@link guide/i18n Angular i18n} dev guide). You configure ngPluralize directive\n * by specifying the mappings between\n * [plural categories](http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html)\n * and the strings to be displayed.\n *\n * # Plural categories and explicit number rules\n * There are two\n * [plural categories](http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html)\n * in Angular's default en-US locale: \"one\" and \"other\".\n *\n * While a plural category may match many numbers (for example, in en-US locale, \"other\" can match\n * any number that is not 1), an explicit number rule can only match one number. For example, the\n * explicit number rule for \"3\" matches the number 3. There are examples of plural categories\n * and explicit number rules throughout the rest of this documentation.\n *\n * # Configuring ngPluralize\n * You configure ngPluralize by providing 2 attributes: `count` and `when`.\n * You can also provide an optional attribute, `offset`.\n *\n * The value of the `count` attribute can be either a string or an {@link guide/expression\n * Angular expression}; these are evaluated on the current scope for its bound value.\n *\n * The `when` attribute specifies the mappings between plural categories and the actual\n * string to be displayed. The value of the attribute should be a JSON object.\n *\n * The following example shows how to configure ngPluralize:\n *\n * ```html\n * \n * \n *```\n *\n * In the example, `\"0: Nobody is viewing.\"` is an explicit number rule. If you did not\n * specify this rule, 0 would be matched to the \"other\" category and \"0 people are viewing\"\n * would be shown instead of \"Nobody is viewing\". You can specify an explicit number rule for\n * other numbers, for example 12, so that instead of showing \"12 people are viewing\", you can\n * show \"a dozen people are viewing\".\n *\n * You can use a set of closed braces (`{}`) as a placeholder for the number that you want substituted\n * into pluralized strings. In the previous example, Angular will replace `{}` with\n * `{{personCount}}`. The closed braces `{}` is a placeholder\n * for {{numberExpression}}.\n *\n * # Configuring ngPluralize with offset\n * The `offset` attribute allows further customization of pluralized text, which can result in\n * a better user experience. For example, instead of the message \"4 people are viewing this document\",\n * you might display \"John, Kate and 2 others are viewing this document\".\n * The offset attribute allows you to offset a number by any desired value.\n * Let's take a look at an example:\n *\n * ```html\n * \n * \n * ```\n *\n * Notice that we are still using two plural categories(one, other), but we added\n * three explicit number rules 0, 1 and 2.\n * When one person, perhaps John, views the document, \"John is viewing\" will be shown.\n * When three people view the document, no explicit number rule is found, so\n * an offset of 2 is taken off 3, and Angular uses 1 to decide the plural category.\n * In this case, plural category 'one' is matched and \"John, Mary and one other person are viewing\"\n * is shown.\n *\n * Note that when you specify offsets, you must provide explicit number rules for\n * numbers from 0 up to and including the offset. If you use an offset of 3, for example,\n * you must provide explicit number rules for 0, 1, 2 and 3. You must also provide plural strings for\n * plural categories \"one\" and \"other\".\n *\n * @param {string|expression} count The variable to be bound to.\n * @param {string} when The mapping between plural category to its corresponding strings.\n * @param {number=} offset Offset to deduct from the total number.\n *\n * @example\n \n \n \n
\n Person 1:
\n Person 2:
\n Number of People:
\n\n \n Without Offset:\n \n
\n\n \n With Offset(2):\n \n \n
\n
\n \n it('should show correct pluralized string', function() {\n var withoutOffset = element.all(by.css('ng-pluralize')).get(0);\n var withOffset = element.all(by.css('ng-pluralize')).get(1);\n var countInput = element(by.model('personCount'));\n\n expect(withoutOffset.getText()).toEqual('1 person is viewing.');\n expect(withOffset.getText()).toEqual('Igor is viewing.');\n\n countInput.clear();\n countInput.sendKeys('0');\n\n expect(withoutOffset.getText()).toEqual('Nobody is viewing.');\n expect(withOffset.getText()).toEqual('Nobody is viewing.');\n\n countInput.clear();\n countInput.sendKeys('2');\n\n expect(withoutOffset.getText()).toEqual('2 people are viewing.');\n expect(withOffset.getText()).toEqual('Igor and Misko are viewing.');\n\n countInput.clear();\n countInput.sendKeys('3');\n\n expect(withoutOffset.getText()).toEqual('3 people are viewing.');\n expect(withOffset.getText()).toEqual('Igor, Misko and one other person are viewing.');\n\n countInput.clear();\n countInput.sendKeys('4');\n\n expect(withoutOffset.getText()).toEqual('4 people are viewing.');\n expect(withOffset.getText()).toEqual('Igor, Misko and 2 other people are viewing.');\n });\n it('should show data-bound names', function() {\n var withOffset = element.all(by.css('ng-pluralize')).get(1);\n var personCount = element(by.model('personCount'));\n var person1 = element(by.model('person1'));\n var person2 = element(by.model('person2'));\n personCount.clear();\n personCount.sendKeys('4');\n person1.clear();\n person1.sendKeys('Di');\n person2.clear();\n person2.sendKeys('Vojta');\n expect(withOffset.getText()).toEqual('Di, Vojta and 2 other people are viewing.');\n });\n \n
\n */\nvar ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interpolate) {\n var BRACE = /{}/g;\n return {\n restrict: 'EA',\n link: function(scope, element, attr) {\n var numberExp = attr.count,\n whenExp = attr.$attr.when && element.attr(attr.$attr.when), // we have {{}} in attrs\n offset = attr.offset || 0,\n whens = scope.$eval(whenExp) || {},\n whensExpFns = {},\n startSymbol = $interpolate.startSymbol(),\n endSymbol = $interpolate.endSymbol(),\n isWhen = /^when(Minus)?(.+)$/;\n\n forEach(attr, function(expression, attributeName) {\n if (isWhen.test(attributeName)) {\n whens[lowercase(attributeName.replace('when', '').replace('Minus', '-'))] =\n element.attr(attr.$attr[attributeName]);\n }\n });\n forEach(whens, function(expression, key) {\n whensExpFns[key] =\n $interpolate(expression.replace(BRACE, startSymbol + numberExp + '-' +\n offset + endSymbol));\n });\n\n scope.$watch(function ngPluralizeWatch() {\n var value = parseFloat(scope.$eval(numberExp));\n\n if (!isNaN(value)) {\n //if explicit number rule such as 1, 2, 3... is defined, just use it. Otherwise,\n //check it against pluralization rules in $locale service\n if (!(value in whens)) value = $locale.pluralCat(value - offset);\n return whensExpFns[value](scope, element, true);\n } else {\n return '';\n }\n }, function ngPluralizeWatchAction(newVal) {\n element.text(newVal);\n });\n }\n };\n}];\n\n/**\n * @ngdoc directive\n * @name ngRepeat\n *\n * @description\n * The `ngRepeat` directive instantiates a template once per item from a collection. Each template\n * instance gets its own scope, where the given loop variable is set to the current collection item,\n * and `$index` is set to the item index or key.\n *\n * Special properties are exposed on the local scope of each template instance, including:\n *\n * | Variable | Type | Details |\n * |-----------|-----------------|-----------------------------------------------------------------------------|\n * | `$index` | {@type number} | iterator offset of the repeated element (0..length-1) |\n * | `$first` | {@type boolean} | true if the repeated element is first in the iterator. |\n * | `$middle` | {@type boolean} | true if the repeated element is between the first and last in the iterator. |\n * | `$last` | {@type boolean} | true if the repeated element is last in the iterator. |\n * | `$even` | {@type boolean} | true if the iterator position `$index` is even (otherwise false). |\n * | `$odd` | {@type boolean} | true if the iterator position `$index` is odd (otherwise false). |\n *\n * Creating aliases for these properties is possible with {@link ng.directive:ngInit `ngInit`}.\n * This may be useful when, for instance, nesting ngRepeats.\n *\n * # Special repeat start and end points\n * To repeat a series of elements instead of just one parent element, ngRepeat (as well as other ng directives) supports extending\n * the range of the repeater by defining explicit start and end points by using **ng-repeat-start** and **ng-repeat-end** respectively.\n * The **ng-repeat-start** directive works the same as **ng-repeat**, but will repeat all the HTML code (including the tag it's defined on)\n * up to and including the ending HTML tag where **ng-repeat-end** is placed.\n *\n * The example below makes use of this feature:\n * ```html\n *
\n * Header {{ item }}\n *
\n *
\n * Body {{ item }}\n *
\n *
\n * Footer {{ item }}\n *
\n * ```\n *\n * And with an input of {@type ['A','B']} for the items variable in the example above, the output will evaluate to:\n * ```html\n *
\n * Header A\n *
\n *
\n * Body A\n *
\n *
\n * Footer A\n *
\n *
\n * Header B\n *
\n *
\n * Body B\n *
\n *
\n * Footer B\n *
\n * ```\n *\n * The custom start and end points for ngRepeat also support all other HTML directive syntax flavors provided in AngularJS (such\n * as **data-ng-repeat-start**, **x-ng-repeat-start** and **ng:repeat-start**).\n *\n * @animations\n * **.enter** - when a new item is added to the list or when an item is revealed after a filter\n *\n * **.leave** - when an item is removed from the list or when an item is filtered out\n *\n * **.move** - when an adjacent item is filtered out causing a reorder or when the item contents are reordered\n *\n * @element ANY\n * @scope\n * @priority 1000\n * @param {repeat_expression} ngRepeat The expression indicating how to enumerate a collection. These\n * formats are currently supported:\n *\n * * `variable in expression` – where variable is the user defined loop variable and `expression`\n * is a scope expression giving the collection to enumerate.\n *\n * For example: `album in artist.albums`.\n *\n * * `(key, value) in expression` – where `key` and `value` can be any user defined identifiers,\n * and `expression` is the scope expression giving the collection to enumerate.\n *\n * For example: `(name, age) in {'adam':10, 'amalie':12}`.\n *\n * * `variable in expression track by tracking_expression` – You can also provide an optional tracking function\n * which can be used to associate the objects in the collection with the DOM elements. If no tracking function\n * is specified the ng-repeat associates elements by identity in the collection. It is an error to have\n * more than one tracking function to resolve to the same key. (This would mean that two distinct objects are\n * mapped to the same DOM element, which is not possible.) Filters should be applied to the expression,\n * before specifying a tracking expression.\n *\n * For example: `item in items` is equivalent to `item in items track by $id(item)`. This implies that the DOM elements\n * will be associated by item identity in the array.\n *\n * For example: `item in items track by $id(item)`. A built in `$id()` function can be used to assign a unique\n * `$$hashKey` property to each item in the array. This property is then used as a key to associated DOM elements\n * with the corresponding item in the array by identity. Moving the same object in array would move the DOM\n * element in the same way in the DOM.\n *\n * For example: `item in items track by item.id` is a typical pattern when the items come from the database. In this\n * case the object identity does not matter. Two objects are considered equivalent as long as their `id`\n * property is same.\n *\n * For example: `item in items | filter:searchText track by item.id` is a pattern that might be used to apply a filter\n * to items in conjunction with a tracking expression.\n *\n * @example\n * This example initializes the scope to a list of names and\n * then uses `ngRepeat` to display every person:\n \n \n
\n I have {{friends.length}} friends. They are:\n \n
    \n
  • \n [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old.\n
  • \n
\n
\n
\n \n .example-animate-container {\n background:white;\n border:1px solid black;\n list-style:none;\n margin:0;\n padding:0 10px;\n }\n\n .animate-repeat {\n line-height:40px;\n list-style:none;\n box-sizing:border-box;\n }\n\n .animate-repeat.ng-move,\n .animate-repeat.ng-enter,\n .animate-repeat.ng-leave {\n -webkit-transition:all linear 0.5s;\n transition:all linear 0.5s;\n }\n\n .animate-repeat.ng-leave.ng-leave-active,\n .animate-repeat.ng-move,\n .animate-repeat.ng-enter {\n opacity:0;\n max-height:0;\n }\n\n .animate-repeat.ng-leave,\n .animate-repeat.ng-move.ng-move-active,\n .animate-repeat.ng-enter.ng-enter-active {\n opacity:1;\n max-height:40px;\n }\n \n \n var friends = element.all(by.repeater('friend in friends'));\n\n it('should render initial data set', function() {\n expect(friends.count()).toBe(10);\n expect(friends.get(0).getText()).toEqual('[1] John who is 25 years old.');\n expect(friends.get(1).getText()).toEqual('[2] Jessie who is 30 years old.');\n expect(friends.last().getText()).toEqual('[10] Samantha who is 60 years old.');\n expect(element(by.binding('friends.length')).getText())\n .toMatch(\"I have 10 friends. They are:\");\n });\n\n it('should update repeater when filter predicate changes', function() {\n expect(friends.count()).toBe(10);\n\n element(by.model('q')).sendKeys('ma');\n\n expect(friends.count()).toBe(2);\n expect(friends.get(0).getText()).toEqual('[1] Mary who is 28 years old.');\n expect(friends.last().getText()).toEqual('[2] Samantha who is 60 years old.');\n });\n \n
\n */\nvar ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {\n var NG_REMOVED = '$$NG_REMOVED';\n var ngRepeatMinErr = minErr('ngRepeat');\n return {\n transclude: 'element',\n priority: 1000,\n terminal: true,\n $$tlb: true,\n link: function($scope, $element, $attr, ctrl, $transclude){\n var expression = $attr.ngRepeat;\n var match = expression.match(/^\\s*([\\s\\S]+?)\\s+in\\s+([\\s\\S]+?)(?:\\s+track\\s+by\\s+([\\s\\S]+?))?\\s*$/),\n trackByExp, trackByExpGetter, trackByIdExpFn, trackByIdArrayFn, trackByIdObjFn,\n lhs, rhs, valueIdentifier, keyIdentifier,\n hashFnLocals = {$id: hashKey};\n\n if (!match) {\n throw ngRepeatMinErr('iexp', \"Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.\",\n expression);\n }\n\n lhs = match[1];\n rhs = match[2];\n trackByExp = match[3];\n\n if (trackByExp) {\n trackByExpGetter = $parse(trackByExp);\n trackByIdExpFn = function(key, value, index) {\n // assign key, value, and $index to the locals so that they can be used in hash functions\n if (keyIdentifier) hashFnLocals[keyIdentifier] = key;\n hashFnLocals[valueIdentifier] = value;\n hashFnLocals.$index = index;\n return trackByExpGetter($scope, hashFnLocals);\n };\n } else {\n trackByIdArrayFn = function(key, value) {\n return hashKey(value);\n };\n trackByIdObjFn = function(key) {\n return key;\n };\n }\n\n match = lhs.match(/^(?:([\\$\\w]+)|\\(([\\$\\w]+)\\s*,\\s*([\\$\\w]+)\\))$/);\n if (!match) {\n throw ngRepeatMinErr('iidexp', \"'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.\",\n lhs);\n }\n valueIdentifier = match[3] || match[1];\n keyIdentifier = match[2];\n\n // Store a list of elements from previous run. This is a hash where key is the item from the\n // iterator, and the value is objects with following properties.\n // - scope: bound scope\n // - element: previous element.\n // - index: position\n var lastBlockMap = {};\n\n //watch props\n $scope.$watchCollection(rhs, function ngRepeatAction(collection){\n var index, length,\n previousNode = $element[0], // current position of the node\n nextNode,\n // Same as lastBlockMap but it has the current state. It will become the\n // lastBlockMap on the next iteration.\n nextBlockMap = {},\n arrayLength,\n childScope,\n key, value, // key/value of iteration\n trackById,\n trackByIdFn,\n collectionKeys,\n block, // last object information {scope, element, id}\n nextBlockOrder = [],\n elementsToRemove;\n\n\n if (isArrayLike(collection)) {\n collectionKeys = collection;\n trackByIdFn = trackByIdExpFn || trackByIdArrayFn;\n } else {\n trackByIdFn = trackByIdExpFn || trackByIdObjFn;\n // if object, extract keys, sort them and use to determine order of iteration over obj props\n collectionKeys = [];\n for (key in collection) {\n if (collection.hasOwnProperty(key) && key.charAt(0) != '$') {\n collectionKeys.push(key);\n }\n }\n collectionKeys.sort();\n }\n\n arrayLength = collectionKeys.length;\n\n // locate existing items\n length = nextBlockOrder.length = collectionKeys.length;\n for(index = 0; index < length; index++) {\n key = (collection === collectionKeys) ? index : collectionKeys[index];\n value = collection[key];\n trackById = trackByIdFn(key, value, index);\n assertNotHasOwnProperty(trackById, '`track by` id');\n if(lastBlockMap.hasOwnProperty(trackById)) {\n block = lastBlockMap[trackById];\n delete lastBlockMap[trackById];\n nextBlockMap[trackById] = block;\n nextBlockOrder[index] = block;\n } else if (nextBlockMap.hasOwnProperty(trackById)) {\n // restore lastBlockMap\n forEach(nextBlockOrder, function(block) {\n if (block && block.scope) lastBlockMap[block.id] = block;\n });\n // This is a duplicate and we need to throw an error\n throw ngRepeatMinErr('dupes',\n \"Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}\",\n expression, trackById, toJson(value));\n } else {\n // new never before seen block\n nextBlockOrder[index] = { id: trackById };\n nextBlockMap[trackById] = false;\n }\n }\n\n // remove existing items\n for (key in lastBlockMap) {\n // lastBlockMap is our own object so we don't need to use special hasOwnPropertyFn\n if (lastBlockMap.hasOwnProperty(key)) {\n block = lastBlockMap[key];\n elementsToRemove = getBlockElements(block.clone);\n $animate.leave(elementsToRemove);\n forEach(elementsToRemove, function(element) { element[NG_REMOVED] = true; });\n block.scope.$destroy();\n }\n }\n\n // we are not using forEach for perf reasons (trying to avoid #call)\n for (index = 0, length = collectionKeys.length; index < length; index++) {\n key = (collection === collectionKeys) ? index : collectionKeys[index];\n value = collection[key];\n block = nextBlockOrder[index];\n if (nextBlockOrder[index - 1]) previousNode = getBlockEnd(nextBlockOrder[index - 1]);\n\n if (block.scope) {\n // if we have already seen this object, then we need to reuse the\n // associated scope/element\n childScope = block.scope;\n\n nextNode = previousNode;\n do {\n nextNode = nextNode.nextSibling;\n } while(nextNode && nextNode[NG_REMOVED]);\n\n if (getBlockStart(block) != nextNode) {\n // existing item which got moved\n $animate.move(getBlockElements(block.clone), null, jqLite(previousNode));\n }\n previousNode = getBlockEnd(block);\n } else {\n // new item which we don't know about\n childScope = $scope.$new();\n }\n\n childScope[valueIdentifier] = value;\n if (keyIdentifier) childScope[keyIdentifier] = key;\n childScope.$index = index;\n childScope.$first = (index === 0);\n childScope.$last = (index === (arrayLength - 1));\n childScope.$middle = !(childScope.$first || childScope.$last);\n // jshint bitwise: false\n childScope.$odd = !(childScope.$even = (index&1) === 0);\n // jshint bitwise: true\n\n if (!block.scope) {\n $transclude(childScope, function(clone) {\n clone[clone.length++] = document.createComment(' end ngRepeat: ' + expression + ' ');\n $animate.enter(clone, null, jqLite(previousNode));\n previousNode = clone;\n block.scope = childScope;\n // Note: We only need the first/last node of the cloned nodes.\n // However, we need to keep the reference to the jqlite wrapper as it might be changed later\n // by a directive with templateUrl when its template arrives.\n block.clone = clone;\n nextBlockMap[block.id] = block;\n });\n }\n }\n lastBlockMap = nextBlockMap;\n });\n }\n };\n\n function getBlockStart(block) {\n return block.clone[0];\n }\n\n function getBlockEnd(block) {\n return block.clone[block.clone.length - 1];\n }\n}];\n\n/**\n * @ngdoc directive\n * @name ngShow\n *\n * @description\n * The `ngShow` directive shows or hides the given HTML element based on the expression\n * provided to the `ngShow` attribute. The element is shown or hidden by removing or adding\n * the `.ng-hide` CSS class onto the element. The `.ng-hide` CSS class is predefined\n * in AngularJS and sets the display style to none (using an !important flag).\n * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).\n *\n * ```html\n * \n *
\n *\n * \n *
\n * ```\n *\n * When the `ngShow` expression evaluates to false then the `.ng-hide` CSS class is added to the class attribute\n * on the element causing it to become hidden. When true, the `.ng-hide` CSS class is removed\n * from the element causing the element not to appear hidden.\n *\n *
\n * **Note:** Here is a list of values that ngShow will consider as a falsy value (case insensitive):
\n * \"f\" / \"0\" / \"false\" / \"no\" / \"n\" / \"[]\"\n *
\n *\n * ## Why is !important used?\n *\n * You may be wondering why !important is used for the `.ng-hide` CSS class. This is because the `.ng-hide` selector\n * can be easily overridden by heavier selectors. For example, something as simple\n * as changing the display style on a HTML list item would make hidden elements appear visible.\n * This also becomes a bigger issue when dealing with CSS frameworks.\n *\n * By using !important, the show and hide behavior will work as expected despite any clash between CSS selector\n * specificity (when !important isn't used with any conflicting styles). If a developer chooses to override the\n * styling to change how to hide an element then it is just a matter of using !important in their own CSS code.\n *\n * ### Overriding `.ng-hide`\n *\n * By default, the `.ng-hide` class will style the element with `display:none!important`. If you wish to change\n * the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the `.ng-hide`\n * class in CSS:\n *\n * ```css\n * .ng-hide {\n * //this is just another form of hiding an element\n * display:block!important;\n * position:absolute;\n * top:-9999px;\n * left:-9999px;\n * }\n * ```\n *\n * By default you don't need to override in CSS anything and the animations will work around the display style.\n *\n * ## A note about animations with `ngShow`\n *\n * Animations in ngShow/ngHide work with the show and hide events that are triggered when the directive expression\n * is true and false. This system works like the animation system present with ngClass except that\n * you must also include the !important flag to override the display property\n * so that you can perform an animation when the element is hidden during the time of the animation.\n *\n * ```css\n * //\n * //a working example can be found at the bottom of this page\n * //\n * .my-element.ng-hide-add, .my-element.ng-hide-remove {\n * transition:0.5s linear all;\n * }\n *\n * .my-element.ng-hide-add { ... }\n * .my-element.ng-hide-add.ng-hide-add-active { ... }\n * .my-element.ng-hide-remove { ... }\n * .my-element.ng-hide-remove.ng-hide-remove-active { ... }\n * ```\n *\n * Keep in mind that, as of AngularJS version 1.2.17 (and 1.3.0-beta.11), there is no need to change the display\n * property to block during animation states--ngAnimate will handle the style toggling automatically for you.\n *\n * @animations\n * addClass: `.ng-hide` - happens after the `ngShow` expression evaluates to a truthy value and the just before contents are set to visible\n * removeClass: `.ng-hide` - happens after the `ngShow` expression evaluates to a non truthy value and just before the contents are set to hidden\n *\n * @element ANY\n * @param {expression} ngShow If the {@link guide/expression expression} is truthy\n * then the element is shown or hidden respectively.\n *\n * @example\n \n \n Click me:
\n
\n Show:\n
\n I show up when your checkbox is checked.\n
\n
\n
\n Hide:\n
\n I hide when your checkbox is checked.\n
\n
\n
\n \n @import url(//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css);\n \n \n .animate-show {\n -webkit-transition:all linear 0.5s;\n transition:all linear 0.5s;\n line-height:20px;\n opacity:1;\n padding:10px;\n border:1px solid black;\n background:white;\n }\n\n .animate-show.ng-hide {\n line-height:0;\n opacity:0;\n padding:0 10px;\n }\n\n .check-element {\n padding:10px;\n border:1px solid black;\n background:white;\n }\n \n \n var thumbsUp = element(by.css('span.glyphicon-thumbs-up'));\n var thumbsDown = element(by.css('span.glyphicon-thumbs-down'));\n\n it('should check ng-show / ng-hide', function() {\n expect(thumbsUp.isDisplayed()).toBeFalsy();\n expect(thumbsDown.isDisplayed()).toBeTruthy();\n\n element(by.model('checked')).click();\n\n expect(thumbsUp.isDisplayed()).toBeTruthy();\n expect(thumbsDown.isDisplayed()).toBeFalsy();\n });\n \n
\n */\nvar ngShowDirective = ['$animate', function($animate) {\n return function(scope, element, attr) {\n scope.$watch(attr.ngShow, function ngShowWatchAction(value){\n $animate[toBoolean(value) ? 'removeClass' : 'addClass'](element, 'ng-hide');\n });\n };\n}];\n\n\n/**\n * @ngdoc directive\n * @name ngHide\n *\n * @description\n * The `ngHide` directive shows or hides the given HTML element based on the expression\n * provided to the `ngHide` attribute. The element is shown or hidden by removing or adding\n * the `ng-hide` CSS class onto the element. The `.ng-hide` CSS class is predefined\n * in AngularJS and sets the display style to none (using an !important flag).\n * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).\n *\n * ```html\n * \n *
\n *\n * \n *
\n * ```\n *\n * When the `.ngHide` expression evaluates to true then the `.ng-hide` CSS class is added to the class attribute\n * on the element causing it to become hidden. When false, the `.ng-hide` CSS class is removed\n * from the element causing the element not to appear hidden.\n *\n *
\n * **Note:** Here is a list of values that ngHide will consider as a falsy value (case insensitive):
\n * \"f\" / \"0\" / \"false\" / \"no\" / \"n\" / \"[]\"\n *
\n *\n * ## Why is !important used?\n *\n * You may be wondering why !important is used for the `.ng-hide` CSS class. This is because the `.ng-hide` selector\n * can be easily overridden by heavier selectors. For example, something as simple\n * as changing the display style on a HTML list item would make hidden elements appear visible.\n * This also becomes a bigger issue when dealing with CSS frameworks.\n *\n * By using !important, the show and hide behavior will work as expected despite any clash between CSS selector\n * specificity (when !important isn't used with any conflicting styles). If a developer chooses to override the\n * styling to change how to hide an element then it is just a matter of using !important in their own CSS code.\n *\n * ### Overriding `.ng-hide`\n *\n * By default, the `.ng-hide` class will style the element with `display:none!important`. If you wish to change\n * the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the `.ng-hide`\n * class in CSS:\n *\n * ```css\n * .ng-hide {\n * //this is just another form of hiding an element\n * display:block!important;\n * position:absolute;\n * top:-9999px;\n * left:-9999px;\n * }\n * ```\n *\n * By default you don't need to override in CSS anything and the animations will work around the display style.\n *\n * ## A note about animations with `ngHide`\n *\n * Animations in ngShow/ngHide work with the show and hide events that are triggered when the directive expression\n * is true and false. This system works like the animation system present with ngClass, except that the `.ng-hide`\n * CSS class is added and removed for you instead of your own CSS class.\n *\n * ```css\n * //\n * //a working example can be found at the bottom of this page\n * //\n * .my-element.ng-hide-add, .my-element.ng-hide-remove {\n * transition:0.5s linear all;\n * }\n *\n * .my-element.ng-hide-add { ... }\n * .my-element.ng-hide-add.ng-hide-add-active { ... }\n * .my-element.ng-hide-remove { ... }\n * .my-element.ng-hide-remove.ng-hide-remove-active { ... }\n * ```\n *\n * Keep in mind that, as of AngularJS version 1.2.17 (and 1.3.0-beta.11), there is no need to change the display\n * property to block during animation states--ngAnimate will handle the style toggling automatically for you.\n *\n * @animations\n * removeClass: `.ng-hide` - happens after the `ngHide` expression evaluates to a truthy value and just before the contents are set to hidden\n * addClass: `.ng-hide` - happens after the `ngHide` expression evaluates to a non truthy value and just before the contents are set to visible\n *\n * @element ANY\n * @param {expression} ngHide If the {@link guide/expression expression} is truthy then\n * the element is shown or hidden respectively.\n *\n * @example\n \n \n Click me:
\n
\n Show:\n
\n I show up when your checkbox is checked.\n
\n
\n
\n Hide:\n
\n I hide when your checkbox is checked.\n
\n
\n
\n \n @import url(//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css);\n \n \n .animate-hide {\n -webkit-transition:all linear 0.5s;\n transition:all linear 0.5s;\n line-height:20px;\n opacity:1;\n padding:10px;\n border:1px solid black;\n background:white;\n }\n\n .animate-hide.ng-hide {\n line-height:0;\n opacity:0;\n padding:0 10px;\n }\n\n .check-element {\n padding:10px;\n border:1px solid black;\n background:white;\n }\n \n \n var thumbsUp = element(by.css('span.glyphicon-thumbs-up'));\n var thumbsDown = element(by.css('span.glyphicon-thumbs-down'));\n\n it('should check ng-show / ng-hide', function() {\n expect(thumbsUp.isDisplayed()).toBeFalsy();\n expect(thumbsDown.isDisplayed()).toBeTruthy();\n\n element(by.model('checked')).click();\n\n expect(thumbsUp.isDisplayed()).toBeTruthy();\n expect(thumbsDown.isDisplayed()).toBeFalsy();\n });\n \n
\n */\nvar ngHideDirective = ['$animate', function($animate) {\n return function(scope, element, attr) {\n scope.$watch(attr.ngHide, function ngHideWatchAction(value){\n $animate[toBoolean(value) ? 'addClass' : 'removeClass'](element, 'ng-hide');\n });\n };\n}];\n\n/**\n * @ngdoc directive\n * @name ngStyle\n * @restrict AC\n *\n * @description\n * The `ngStyle` directive allows you to set CSS style on an HTML element conditionally.\n *\n * @element ANY\n * @param {expression} ngStyle\n *\n * {@link guide/expression Expression} which evals to an\n * object whose keys are CSS style names and values are corresponding values for those CSS\n * keys.\n *\n * Since some CSS style names are not valid keys for an object, they must be quoted.\n * See the 'background-color' style in the example below.\n *\n * @example\n \n \n \n \n \n
\n Sample Text\n
myStyle={{myStyle}}
\n
\n \n span {\n color: black;\n }\n \n \n var colorSpan = element(by.css('span'));\n\n it('should check ng-style', function() {\n expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');\n element(by.css('input[value=\\'set color\\']')).click();\n expect(colorSpan.getCssValue('color')).toBe('rgba(255, 0, 0, 1)');\n element(by.css('input[value=clear]')).click();\n expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');\n });\n \n
\n */\nvar ngStyleDirective = ngDirective(function(scope, element, attr) {\n scope.$watch(attr.ngStyle, function ngStyleWatchAction(newStyles, oldStyles) {\n if (oldStyles && (newStyles !== oldStyles)) {\n forEach(oldStyles, function(val, style) { element.css(style, '');});\n }\n if (newStyles) element.css(newStyles);\n }, true);\n});\n\n/**\n * @ngdoc directive\n * @name ngSwitch\n * @restrict EA\n *\n * @description\n * The `ngSwitch` directive is used to conditionally swap DOM structure on your template based on a scope expression.\n * Elements within `ngSwitch` but without `ngSwitchWhen` or `ngSwitchDefault` directives will be preserved at the location\n * as specified in the template.\n *\n * The directive itself works similar to ngInclude, however, instead of downloading template code (or loading it\n * from the template cache), `ngSwitch` simply chooses one of the nested elements and makes it visible based on which element\n * matches the value obtained from the evaluated expression. In other words, you define a container element\n * (where you place the directive), place an expression on the **`on=\"...\"` attribute**\n * (or the **`ng-switch=\"...\"` attribute**), define any inner elements inside of the directive and place\n * a when attribute per element. The when attribute is used to inform ngSwitch which element to display when the on\n * expression is evaluated. If a matching expression is not found via a when attribute then an element with the default\n * attribute is displayed.\n *\n *
\n * Be aware that the attribute values to match against cannot be expressions. They are interpreted\n * as literal string values to match against.\n * For example, **`ng-switch-when=\"someVal\"`** will match against the string `\"someVal\"` not against the\n * value of the expression `$scope.someVal`.\n *
\n\n * @animations\n * enter - happens after the ngSwitch contents change and the matched child element is placed inside the container\n * leave - happens just after the ngSwitch contents change and just before the former contents are removed from the DOM\n *\n * @usage\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n *\n * @scope\n * @priority 800\n * @param {*} ngSwitch|on expression to match against ng-switch-when.\n * On child elements add:\n *\n * * `ngSwitchWhen`: the case statement to match against. If match then this\n * case will be displayed. If the same match appears multiple times, all the\n * elements will be displayed.\n * * `ngSwitchDefault`: the default case when no other case match. If there\n * are multiple default cases, all of them will be displayed when no other\n * case match.\n *\n *\n * @example\n \n \n
\n \n selection={{selection}}\n
\n
\n
Settings Div
\n
Home Span
\n
default
\n
\n
\n
\n \n angular.module('switchExample', ['ngAnimate'])\n .controller('ExampleController', ['$scope', function($scope) {\n $scope.items = ['settings', 'home', 'other'];\n $scope.selection = $scope.items[0];\n }]);\n \n \n .animate-switch-container {\n position:relative;\n background:white;\n border:1px solid black;\n height:40px;\n overflow:hidden;\n }\n\n .animate-switch {\n padding:10px;\n }\n\n .animate-switch.ng-animate {\n -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n\n position:absolute;\n top:0;\n left:0;\n right:0;\n bottom:0;\n }\n\n .animate-switch.ng-leave.ng-leave-active,\n .animate-switch.ng-enter {\n top:-50px;\n }\n .animate-switch.ng-leave,\n .animate-switch.ng-enter.ng-enter-active {\n top:0;\n }\n \n \n var switchElem = element(by.css('[ng-switch]'));\n var select = element(by.model('selection'));\n\n it('should start in settings', function() {\n expect(switchElem.getText()).toMatch(/Settings Div/);\n });\n it('should change to home', function() {\n select.all(by.css('option')).get(1).click();\n expect(switchElem.getText()).toMatch(/Home Span/);\n });\n it('should select default', function() {\n select.all(by.css('option')).get(2).click();\n expect(switchElem.getText()).toMatch(/default/);\n });\n \n
\n */\nvar ngSwitchDirective = ['$animate', function($animate) {\n return {\n restrict: 'EA',\n require: 'ngSwitch',\n\n // asks for $scope to fool the BC controller module\n controller: ['$scope', function ngSwitchController() {\n this.cases = {};\n }],\n link: function(scope, element, attr, ngSwitchController) {\n var watchExpr = attr.ngSwitch || attr.on,\n selectedTranscludes = [],\n selectedElements = [],\n previousElements = [],\n selectedScopes = [];\n\n scope.$watch(watchExpr, function ngSwitchWatchAction(value) {\n var i, ii;\n for (i = 0, ii = previousElements.length; i < ii; ++i) {\n previousElements[i].remove();\n }\n previousElements.length = 0;\n\n for (i = 0, ii = selectedScopes.length; i < ii; ++i) {\n var selected = selectedElements[i];\n selectedScopes[i].$destroy();\n previousElements[i] = selected;\n $animate.leave(selected, function() {\n previousElements.splice(i, 1);\n });\n }\n\n selectedElements.length = 0;\n selectedScopes.length = 0;\n\n if ((selectedTranscludes = ngSwitchController.cases['!' + value] || ngSwitchController.cases['?'])) {\n scope.$eval(attr.change);\n forEach(selectedTranscludes, function(selectedTransclude) {\n var selectedScope = scope.$new();\n selectedScopes.push(selectedScope);\n selectedTransclude.transclude(selectedScope, function(caseElement) {\n var anchor = selectedTransclude.element;\n\n selectedElements.push(caseElement);\n $animate.enter(caseElement, anchor.parent(), anchor);\n });\n });\n }\n });\n }\n };\n}];\n\nvar ngSwitchWhenDirective = ngDirective({\n transclude: 'element',\n priority: 800,\n require: '^ngSwitch',\n link: function(scope, element, attrs, ctrl, $transclude) {\n ctrl.cases['!' + attrs.ngSwitchWhen] = (ctrl.cases['!' + attrs.ngSwitchWhen] || []);\n ctrl.cases['!' + attrs.ngSwitchWhen].push({ transclude: $transclude, element: element });\n }\n});\n\nvar ngSwitchDefaultDirective = ngDirective({\n transclude: 'element',\n priority: 800,\n require: '^ngSwitch',\n link: function(scope, element, attr, ctrl, $transclude) {\n ctrl.cases['?'] = (ctrl.cases['?'] || []);\n ctrl.cases['?'].push({ transclude: $transclude, element: element });\n }\n});\n\n/**\n * @ngdoc directive\n * @name ngTransclude\n * @restrict AC\n *\n * @description\n * Directive that marks the insertion point for the transcluded DOM of the nearest parent directive that uses transclusion.\n *\n * Any existing content of the element that this directive is placed on will be removed before the transcluded content is inserted.\n *\n * @element ANY\n *\n * @example\n \n \n \n
\n
\n
\n {{text}}\n
\n
\n \n it('should have transcluded', function() {\n var titleElement = element(by.model('title'));\n titleElement.clear();\n titleElement.sendKeys('TITLE');\n var textElement = element(by.model('text'));\n textElement.clear();\n textElement.sendKeys('TEXT');\n expect(element(by.binding('title')).getText()).toEqual('TITLE');\n expect(element(by.binding('text')).getText()).toEqual('TEXT');\n });\n \n
\n *\n */\nvar ngTranscludeDirective = ngDirective({\n link: function($scope, $element, $attrs, controller, $transclude) {\n if (!$transclude) {\n throw minErr('ngTransclude')('orphan',\n 'Illegal use of ngTransclude directive in the template! ' +\n 'No parent directive that requires a transclusion found. ' +\n 'Element: {0}',\n startingTag($element));\n }\n\n $transclude(function(clone) {\n $element.empty();\n $element.append(clone);\n });\n }\n});\n\n/**\n * @ngdoc directive\n * @name script\n * @restrict E\n *\n * @description\n * Load the content of a `\n\n Load inlined template\n
\n \n \n it('should load template defined inside script tag', function() {\n element(by.css('#tpl-link')).click();\n expect(element(by.css('#tpl-content')).getText()).toMatch(/Content of the template/);\n });\n \n \n */\nvar scriptDirective = ['$templateCache', function($templateCache) {\n return {\n restrict: 'E',\n terminal: true,\n compile: function(element, attr) {\n if (attr.type == 'text/ng-template') {\n var templateUrl = attr.id,\n text = element[0].text;\n\n $templateCache.put(templateUrl, text);\n }\n }\n };\n}];\n\nvar ngOptionsMinErr = minErr('ngOptions');\n/**\n * @ngdoc directive\n * @name select\n * @restrict E\n *\n * @description\n * HTML `SELECT` element with angular data-binding.\n *\n * # `ngOptions`\n *\n * The `ngOptions` attribute can be used to dynamically generate a list of ``\n * DOM element.\n * * `trackexpr`: Used when working with an array of objects. The result of this expression will be\n * used to identify the objects in the array. The `trackexpr` will most likely refer to the\n * `value` variable (e.g. `value.propertyName`).\n *\n * @example\n \n \n \n
\n
    \n
  • \n Name: \n [X]\n
  • \n
  • \n [add]\n
  • \n
\n
\n Color (null not allowed):\n
\n\n Color (null allowed):\n \n \n
\n\n Color grouped by shade:\n
\n\n\n Select bogus.
\n
\n Currently selected: {{ {selected_color:myColor} }}\n
\n
\n
\n
\n \n it('should check ng-options', function() {\n expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('red');\n element.all(by.model('myColor')).first().click();\n element.all(by.css('select[ng-model=\"myColor\"] option')).first().click();\n expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('black');\n element(by.css('.nullable select[ng-model=\"myColor\"]')).click();\n element.all(by.css('.nullable select[ng-model=\"myColor\"] option')).first().click();\n expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('null');\n });\n \n
\n */\n\nvar ngOptionsDirective = valueFn({ terminal: true });\n// jshint maxlen: false\nvar selectDirective = ['$compile', '$parse', function($compile, $parse) {\n //000011111111110000000000022222222220000000000000000000003333333333000000000000004444444444444440000000005555555555555550000000666666666666666000000000000000777777777700000000000000000008888888888\n var NG_OPTIONS_REGEXP = /^\\s*([\\s\\S]+?)(?:\\s+as\\s+([\\s\\S]+?))?(?:\\s+group\\s+by\\s+([\\s\\S]+?))?\\s+for\\s+(?:([\\$\\w][\\$\\w]*)|(?:\\(\\s*([\\$\\w][\\$\\w]*)\\s*,\\s*([\\$\\w][\\$\\w]*)\\s*\\)))\\s+in\\s+([\\s\\S]+?)(?:\\s+track\\s+by\\s+([\\s\\S]+?))?$/,\n nullModelCtrl = {$setViewValue: noop};\n// jshint maxlen: 100\n\n return {\n restrict: 'E',\n require: ['select', '?ngModel'],\n controller: ['$element', '$scope', '$attrs', function($element, $scope, $attrs) {\n var self = this,\n optionsMap = {},\n ngModelCtrl = nullModelCtrl,\n nullOption,\n unknownOption;\n\n\n self.databound = $attrs.ngModel;\n\n\n self.init = function(ngModelCtrl_, nullOption_, unknownOption_) {\n ngModelCtrl = ngModelCtrl_;\n nullOption = nullOption_;\n unknownOption = unknownOption_;\n };\n\n\n self.addOption = function(value) {\n assertNotHasOwnProperty(value, '\"option value\"');\n optionsMap[value] = true;\n\n if (ngModelCtrl.$viewValue == value) {\n $element.val(value);\n if (unknownOption.parent()) unknownOption.remove();\n }\n };\n\n\n self.removeOption = function(value) {\n if (this.hasOption(value)) {\n delete optionsMap[value];\n if (ngModelCtrl.$viewValue == value) {\n this.renderUnknownOption(value);\n }\n }\n };\n\n\n self.renderUnknownOption = function(val) {\n var unknownVal = '? ' + hashKey(val) + ' ?';\n unknownOption.val(unknownVal);\n $element.prepend(unknownOption);\n $element.val(unknownVal);\n unknownOption.prop('selected', true); // needed for IE\n };\n\n\n self.hasOption = function(value) {\n return optionsMap.hasOwnProperty(value);\n };\n\n $scope.$on('$destroy', function() {\n // disable unknown option so that we don't do work when the whole select is being destroyed\n self.renderUnknownOption = noop;\n });\n }],\n\n link: function(scope, element, attr, ctrls) {\n // if ngModel is not defined, we don't need to do anything\n if (!ctrls[1]) return;\n\n var selectCtrl = ctrls[0],\n ngModelCtrl = ctrls[1],\n multiple = attr.multiple,\n optionsExp = attr.ngOptions,\n nullOption = false, // if false, user will not be able to select it (used by ngOptions)\n emptyOption,\n // we can't just jqLite('\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\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 and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + 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 and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully does not implement inclusive descendent\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\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\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === doc ? -1 :\n\t\t\t\tb === doc ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn doc;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\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\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\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\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\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\tattrHandle: {},\n\n\tfind: {},\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( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\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 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\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[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\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 excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\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\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ 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( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && 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 ) {\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.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 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, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, diff, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\t\t\treturn false;\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\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && cache[2];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\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\n\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\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\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\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( 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// Potentially complex pseudos\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\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\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\ttext = text.replace( runescape, funescape );\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// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\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// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\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\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\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\"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\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\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\tvar i = 0;\n\t\t\tfor ( ; 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\tvar i = 1;\n\t\t\tfor ( ; 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\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --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\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++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\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ 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\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\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\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\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 toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && 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 ( elem.nodeType === 1 || checkNonElements ) {\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\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\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\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\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 ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\t\t\t\t\t\tif ( (oldCache = outerCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\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 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 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( 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( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !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\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\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 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).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 && toSelector( tokens )\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, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be \"00\" below\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (matcher = elementMatchers[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}\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\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[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\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ 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 ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[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\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is no seed and only one group\n\tif ( match.length === 1 ) {\n\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\trsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\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\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = (/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/);\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) >= 0 ) !== not;\n\t});\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t}));\n};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tlen = this.length,\n\t\t\tret = [],\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0; i < len; 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\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], false) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], true) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n});\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context ) {\n\t\tvar match, elem;\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 HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[0] === \"<\" && selector[ 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\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[1],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\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\treturn this;\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// Support: Blackberry 4.6\n\t\t\t\t\t// gEBID returns nodes no longer in the document (#6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// 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: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\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 typeof rootjQuery.ready !== \"undefined\" ?\n\t\t\t\trootjQuery.ready( selector ) :\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\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// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\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.extend({\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\ttruncate = until !== undefined;\n\n\t\twhile ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmatched.push( elem );\n\t\t\t}\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar matched = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tmatched.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn matched;\n\t}\n});\n\njQuery.fn.extend({\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; 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\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\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\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\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.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.unique(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\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\nfunction sibling( cur, dir ) {\n\twhile ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}\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 elem.contentDocument || jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.unique( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n});\nvar rnotwhite = (/\\S+/g);\n\n\n\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.match( rnotwhite ) || [], 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// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\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\tfiringLength = 0;\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\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\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};\n\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 fn = jQuery.isFunction( fns[ i ] ) && 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] ](function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\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\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 ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\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 = 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 ? 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});\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend({\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// 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.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n});\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed, false );\n\twindow.removeEventListener( \"load\", completed, false );\n\tjQuery.ready();\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 );\n\n\t\t} else {\n\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed, false );\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Kick off the DOM ready check even if the user does not\njQuery.ready.promise();\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\tjQuery.access( elems, fn, i, key[i], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlen ? fn( elems[0], key ) : emptyGet;\n};\n\n\n/**\n * Determines whether an object can have data\n */\njQuery.acceptData = function( owner ) {\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\t/* jshint -W018 */\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\nfunction Data() {\n\t// Support: Android<4,\n\t// Old WebKit does not have Object.preventExtensions/freeze method,\n\t// return new empty object instead with no [[set]] accessor\n\tObject.defineProperty( this.cache = {}, 0, {\n\t\tget: function() {\n\t\t\treturn {};\n\t\t}\n\t});\n\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\nData.accepts = jQuery.acceptData;\n\nData.prototype = {\n\tkey: function( owner ) {\n\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t// but we should not, see #8335.\n\t\t// Always return the key for a frozen object.\n\t\tif ( !Data.accepts( owner ) ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar descriptor = {},\n\t\t\t// Check if the owner object already has a cache key\n\t\t\tunlock = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !unlock ) {\n\t\t\tunlock = Data.uid++;\n\n\t\t\t// Secure it in a non-enumerable, non-writable property\n\t\t\ttry {\n\t\t\t\tdescriptor[ this.expando ] = { value: unlock };\n\t\t\t\tObject.defineProperties( owner, descriptor );\n\n\t\t\t// Support: Android<4\n\t\t\t// Fallback to a less secure definition\n\t\t\t} catch ( e ) {\n\t\t\t\tdescriptor[ this.expando ] = unlock;\n\t\t\t\tjQuery.extend( owner, descriptor );\n\t\t\t}\n\t\t}\n\n\t\t// Ensure the cache object\n\t\tif ( !this.cache[ unlock ] ) {\n\t\t\tthis.cache[ unlock ] = {};\n\t\t}\n\n\t\treturn unlock;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\t// There may be an unlock assigned to this node,\n\t\t\t// if there is no entry for this \"owner\", create one inline\n\t\t\t// and set the unlock as though an owner entry had always existed\n\t\t\tunlock = this.key( owner ),\n\t\t\tcache = this.cache[ unlock ];\n\n\t\t// Handle: [ owner, key, value ] args\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ data ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\t\t\t// Fresh assignments by object are shallow copied\n\t\t\tif ( jQuery.isEmptyObject( cache ) ) {\n\t\t\t\tjQuery.extend( this.cache[ unlock ], data );\n\t\t\t// Otherwise, copy the properties one-by-one to the cache object\n\t\t\t} else {\n\t\t\t\tfor ( prop in data ) {\n\t\t\t\t\tcache[ prop ] = data[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\t// Either a valid cache is found, or will be created.\n\t\t// New caches will be created and the unlock returned,\n\t\t// allowing direct access to the newly created\n\t\t// empty data object. A valid owner object must be provided.\n\t\tvar cache = this.cache[ this.key( owner ) ];\n\n\t\treturn key === undefined ?\n\t\t\tcache : cache[ key ];\n\t},\n\taccess: function( owner, key, value ) {\n\t\tvar stored;\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t((key && typeof key === \"string\") && value === undefined) ) {\n\n\t\t\tstored = this.get( owner, key );\n\n\t\t\treturn stored !== undefined ?\n\t\t\t\tstored : this.get( owner, jQuery.camelCase(key) );\n\t\t}\n\n\t\t// [*]When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i, name, camel,\n\t\t\tunlock = this.key( owner ),\n\t\t\tcache = this.cache[ unlock ];\n\n\t\tif ( key === undefined ) {\n\t\t\tthis.cache[ unlock ] = {};\n\n\t\t} else {\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( jQuery.isArray( key ) ) {\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = key.concat( key.map( jQuery.camelCase ) );\n\t\t\t} else {\n\t\t\t\tcamel = jQuery.camelCase( key );\n\t\t\t\t// Try the string as a key before any manipulation\n\t\t\t\tif ( key in cache ) {\n\t\t\t\t\tname = [ key, camel ];\n\t\t\t\t} else {\n\t\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\t\tname = camel;\n\t\t\t\t\tname = name in cache ?\n\t\t\t\t\t\t[ name ] : ( name.match( rnotwhite ) || [] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ name[ i ] ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\treturn !jQuery.isEmptyObject(\n\t\t\tthis.cache[ owner[ this.expando ] ] || {}\n\t\t);\n\t},\n\tdiscard: function( owner ) {\n\t\tif ( owner[ this.expando ] ) {\n\t\t\tdelete this.cache[ owner[ this.expando ] ];\n\t\t}\n\t}\n};\nvar data_priv = new Data();\n\nvar data_user = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\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\t\tname = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\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\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\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\tdata_user.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend({\n\thasData: function( elem ) {\n\t\treturn data_user.hasData( elem ) || data_priv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn data_user.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdata_user.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to data_priv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn data_priv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdata_priv.remove( elem, name );\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = data_user.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !data_priv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice(5) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\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\tdata_priv.set( elem, \"hasDataAttrs\", 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\tdata_user.set( this, key );\n\t\t\t});\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data,\n\t\t\t\tcamelKey = jQuery.camelCase( key );\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key as-is\n\t\t\t\tdata = data_user.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key camelized\n\t\t\t\tdata = data_user.get( elem, camelKey );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, camelKey, undefined );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each(function() {\n\t\t\t\t// First, attempt to store a copy or reference of any\n\t\t\t\t// data that might've been store with a camelCased key.\n\t\t\t\tvar data = data_user.get( this, camelKey );\n\n\t\t\t\t// For HTML5 data-* attribute interop, we have to\n\t\t\t\t// store property names with dashes in a camelCase form.\n\t\t\t\t// This might not apply to all properties...*\n\t\t\t\tdata_user.set( this, camelKey, value );\n\n\t\t\t\t// *... In the case of properties that might _actually_\n\t\t\t\t// have dashes, we need to also store a copy of that\n\t\t\t\t// unchanged property.\n\t\t\t\tif ( key.indexOf(\"-\") !== -1 && data !== undefined ) {\n\t\t\t\t\tdata_user.set( this, key, value );\n\t\t\t\t}\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tdata_user.remove( this, key );\n\t\t});\n\t}\n});\n\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 = data_priv.get( 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 = data_priv.access( 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 public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn data_priv.get( elem, key ) || data_priv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tdata_priv.remove( elem, [ type + \"queue\", key ] );\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\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 = data_priv.get( 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 pnum = (/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/).source;\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n\t};\n\nvar rcheckableType = (/^(?:checkbox|radio)$/i);\n\n\n\n(function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Safari<=5.1\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Safari<=5.1, Android<4.2\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<=11+\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n})();\nvar strundefined = typeof undefined;\n\n\n\nsupport.focusinBubbles = \"onfocusin\" in window;\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\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\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = data_priv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\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\tif ( !(events = elemData.events) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !(eventHandle = elemData.handle) ) {\n\t\t\teventHandle = elemData.handle = 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 !== strundefined && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\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: origType,\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\tif ( !(handlers = events[ type ]) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener 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\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\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},\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 j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = data_priv.hasData( elem ) && data_priv.get( 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 = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\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\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[2] && new RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ 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( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.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 ( origCount && !handlers.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\t\t\tdata_priv.remove( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split(\".\") : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\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// 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\t\tontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join(\".\");\n\t\tevent.namespace_re = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" ) :\n\t\t\tnull;\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 ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && 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\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = 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 ( tmp === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( data_priv.get( cur, \"events\" ) || {} )[ event.type ] && data_priv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && jQuery.acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\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( eventPath.pop(), data ) === false) &&\n\t\t\t\tjQuery.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// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && jQuery.isFunction( elem[ type ] ) && !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\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\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 ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\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 );\n\n\t\tvar i, j, ret, matched, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( data_priv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\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\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\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\tif ( (event.result = 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\thandlers: function( event, handlers ) {\n\t\tvar i, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG instance trees (#13180)\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== \"click\") ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.disabled !== true || event.type !== \"click\" ) {\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\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ 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 ( matches[ 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, handlers: 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 ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: \"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 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\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 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, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: Cordova 2.5 (WebKit) (#13255)\n\t\t// All events should have a target; Cordova deviceready doesn't\n\t\tif ( !event.target ) {\n\t\t\tevent.target = document;\n\t\t}\n\n\t\t// Support: Safari 6.0+, Chrome<28\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\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\t\tfocus: {\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && jQuery.nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\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{\n\t\t\t\ttype: 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\njQuery.removeEvent = function( elem, type, handle ) {\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle, false );\n\t}\n};\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 ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\t\t\t\t// Support: Android<4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\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\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\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && e.preventDefault ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopImmediatePropagation ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// Support: Chrome 15+\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\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\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// Support: Firefox, Chrome, Safari\n// Create \"bubbling\" focus and blur events\nif ( !support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = 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\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = data_priv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdata_priv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = data_priv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdata_priv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdata_priv.access( doc, fix, attaches );\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\" ) {\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\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\tvar elem = this[0];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n});\n\n\nvar\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /^$|\\/(?:java|ecma)script/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*\\s*$/g,\n\n\t// We have to close these tags to support XHTML (#13200)\n\twrapMap = {\n\n\t\t// Support: IE9\n\t\toption: [ 1, \"\" ],\n\n\t\tthead: [ 1, \"\", \"
\" ],\n\t\tcol: [ 2, \"\", \"
\" ],\n\t\ttr: [ 2, \"\", \"
\" ],\n\t\ttd: [ 3, \"\", \"
\" ],\n\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\n// Support: IE9\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: 1.x compatibility\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement(\"tbody\") ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute(\"type\");\n\t}\n\n\treturn elem;\n}\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdata_priv.set(\n\t\t\telems[ i ], \"globalEval\", !refElements || data_priv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( data_priv.hasData( src ) ) {\n\t\tpdataOld = data_priv.access( src );\n\t\tpdataCur = data_priv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( data_user.hasData( src ) ) {\n\t\tudataOld = data_user.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdata_user.set( dest, udataCur );\n\t}\n}\n\nfunction getAll( context, tag ) {\n\tvar ret = context.getElementsByTagName ? context.getElementsByTagName( tag || \"*\" ) :\n\t\t\tcontext.querySelectorAll ? context.querySelectorAll( tag || \"*\" ) :\n\t\t\t[];\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], ret ) :\n\t\tret;\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\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\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tbuildFragment: function( elems, context, scripts, selection ) {\n\t\tvar elem, tmp, tag, wrap, contains, j,\n\t\t\tfragment = context.createDocumentFragment(),\n\t\t\tnodes = [],\n\t\t\ti = 0,\n\t\t\tl = elems.length;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\t\t\t\t\t// Support: QtWebKit, PhantomJS\n\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement(\"div\") );\n\n\t\t\t\t\t// Deserialize a standard representation\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\ttmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, \"<$1>\" ) + wrap[ 2 ];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[ 0 ];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: QtWebKit, PhantomJS\n\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Remember the top-level container\n\t\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\t\ttmp.textContent = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Remove wrapper from fragment\n\t\tfragment.textContent = \"\";\n\n\t\ti = 0;\n\t\twhile ( (elem = nodes[ i++ ]) ) {\n\n\t\t\t// #4087 - If origin and destination elements are the same, and this is\n\t\t\t// that element, do not do anything\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn fragment;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type, key,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[ i ]) !== undefined; i++ ) {\n\t\t\tif ( jQuery.acceptData( elem ) ) {\n\t\t\t\tkey = elem[ data_priv.expando ];\n\n\t\t\t\tif ( key && (data = data_priv.cache[ key ]) ) {\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\t\t\t\t\tif ( data_priv.cache[ key ] ) {\n\t\t\t\t\t\t// Discard any remaining `private` data\n\t\t\t\t\t\tdelete data_priv.cache[ key ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Discard any remaining `user` data\n\t\t\tdelete data_user.cache[ elem[ data_user.expando ] ];\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each(function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t});\n\t},\n\n\tremove: function( selector, keepData /* Internal Use Only */ ) {\n\t\tvar elem,\n\t\t\telems = selector ? jQuery.filter( selector, this ) : this,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem ) );\n\t\t\t}\n\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( elem, \"script\" ) );\n\t\t\t\t}\n\t\t\t\telem.parentNode.removeChild( elem );\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\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\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 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 && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\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!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\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() {\n\t\tvar arg = arguments[ 0 ];\n\n\t\t// Make the changes, replacing each context element with the new content\n\t\tthis.domManip( arguments, function( elem ) {\n\t\t\targ = this.parentNode;\n\n\t\t\tjQuery.cleanData( getAll( this ) );\n\n\t\t\tif ( arg ) {\n\t\t\t\targ.replaceChild( elem, this );\n\t\t\t}\n\t\t});\n\n\t\t// Force removal if there was no new content (e.g., from empty arguments)\n\t\treturn arg && (arg.length || arg.nodeType) ? this : this.remove();\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = concat.apply( [], args );\n\n\t\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tset = this,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[ 0 ],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction ||\n\t\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\t\treturn this.each(function( index ) {\n\t\t\t\tvar self = set.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tself.domManip( args, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );\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\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\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\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\t\t// Support: QtWebKit\n\t\t\t\t\t\t\t// jQuery.merge because push.apply(_, arraylike) throws\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( this[ i ], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t\t!data_priv.access( node, \"globalEval\" ) && jQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\t\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.globalEval( node.textContent.replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\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\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: QtWebKit\n\t\t\t// .get() because push.apply(_, arraylike) throws\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\n\nvar iframe,\n\telemdisplay = {};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar style,\n\t\telem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\t// getDefaultComputedStyle might be reliably used only on attached element\n\t\tdisplay = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?\n\n\t\t\t// Use of this method is a temporary fix (more like optimization) until something better comes along,\n\t\t\t// since it was removed from specification and supported only in FF\n\t\t\tstyle.display : jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = (iframe || jQuery( \"'\n };\n }\n };\n\n init();\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/dashboard/index.js\n ** module id = 584\n ** module chunks = 0\n **/","define(function (require) {\n var module = require('modules').get('app/dashboard');\n var _ = require('lodash');\n var moment = require('moment');\n\n // Used only by the savedDashboards service, usually no reason to change this\n module.factory('SavedDashboard', function (courier) {\n\n // SavedDashboard constructor. Usually you'd interact with an instance of this.\n // ID is option, without it one will be generated on save.\n _.class(SavedDashboard).inherits(courier.SavedObject);\n function SavedDashboard(id) {\n // Gives our SavedDashboard the properties of a SavedObject\n courier.SavedObject.call(this, {\n type: SavedDashboard.type,\n mapping: SavedDashboard.mapping,\n searchSource: SavedDashboard.searchsource,\n\n // if this is null/undefined then the SavedObject will be assigned the defaults\n id: id,\n\n // default values that will get assigned if the doc is new\n defaults: {\n title: 'New Dashboard',\n hits: 0,\n description: '',\n panelsJSON: '[]',\n version: 1,\n timeRestore: false,\n timeTo: undefined,\n timeFrom: undefined\n },\n\n // if an indexPattern was saved with the searchsource of a SavedDashboard\n // object, clear it. It was a mistake\n clearSavedIndexPattern: true\n });\n }\n\n // save these objects with the 'dashboard' type\n SavedDashboard.type = 'dashboard';\n\n // if type:dashboard has no mapping, we push this mapping into ES\n SavedDashboard.mapping = {\n title: 'string',\n hits: 'integer',\n description: 'string',\n panelsJSON: 'string',\n version: 'integer',\n timeRestore: 'boolean',\n timeTo: 'string',\n timeFrom: 'string'\n };\n\n SavedDashboard.searchsource = true;\n\n return SavedDashboard;\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/dashboard/services/_saved_dashboard.js\n ** module id = 585\n ** module chunks = 0\n **/","define(function (require) {\n var module = require('modules').get('app/dashboard');\n var _ = require('lodash');\n // bring in the factory\n require('plugins/kibana/dashboard/services/_saved_dashboard');\n\n\n // Register this service with the saved object registry so it can be\n // edited by the object editor.\n require('plugins/kibana/settings/saved_object_registry').register({\n service: 'savedDashboards',\n title: 'dashboards'\n });\n\n // This is the only thing that gets injected into controllers\n module.service('savedDashboards', function (Promise, SavedDashboard, kbnIndex, es, kbnUrl) {\n this.type = SavedDashboard.type;\n this.Class = SavedDashboard;\n\n // Returns a single dashboard by ID, should be the name of the dashboard\n this.get = function (id) {\n\n // Returns a promise that contains a dashboard which is a subclass of docSource\n return (new SavedDashboard(id)).init();\n };\n\n this.urlFor = function (id) {\n return kbnUrl.eval('#/dashboard/{{id}}', {id: id});\n };\n\n this.delete = function (ids) {\n ids = !_.isArray(ids) ? [ids] : ids;\n return Promise.map(ids, function (id) {\n return (new SavedDashboard(id)).delete();\n });\n };\n\n\n this.find = function (searchString) {\n var self = this;\n var body;\n if (searchString) {\n body = {\n query: {\n simple_query_string: {\n query: searchString + '*',\n fields: ['title^3', 'description'],\n default_operator: 'AND'\n }\n }\n };\n } else {\n body = { query: {match_all: {}}};\n }\n\n return es.search({\n index: kbnIndex,\n type: 'dashboard',\n body: body,\n size: 100\n })\n .then(function (resp) {\n return {\n total: resp.hits.total,\n hits: resp.hits.hits.map(function (hit) {\n var source = hit._source;\n source.id = hit._id;\n source.url = self.urlFor(hit._id);\n return source;\n })\n };\n });\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/dashboard/services/saved_dashboards.js\n ** module id = 586\n ** module chunks = 0\n **/","define(function () {\n return function HitSortFnFactory() {\n\n /**\n * Creates a sort function that will resort hits based on the value\n * es used to sort them.\n *\n * background:\n * When a hit is sorted by elasticsearch, es will write the values that it used\n * to sort them into an array at the top level of the hit like so\n *\n * ```\n * hits: {\n * total: x,\n * hits: [\n * {\n * _id: i,\n * _source: {},\n * sort: [\n * // all values used to sort, in the order of precidance\n * ]\n * }\n * ]\n * };\n * ```\n *\n * @param {[type]} field [description]\n * @param {[type]} direction [description]\n * @return {[type]} [description]\n */\n return function createHitSortFn(direction) {\n var descending = (direction === 'desc');\n\n return function sortHits(hitA, hitB) {\n var bBelowa = null;\n\n var aSorts = hitA.sort || [];\n var bSorts = hitB.sort || [];\n\n // walk each sort value, and compair until one is different\n for (var i = 0; i < bSorts.length; i++) {\n var a = aSorts[i];\n var b = bSorts[i];\n\n if (a == null || b > a) {\n bBelowa = !descending;\n break;\n }\n\n if (b < a) {\n bBelowa = descending;\n break;\n }\n }\n\n if (bBelowa !== null) {\n return bBelowa ? -1 : 1;\n } else {\n return 0;\n }\n\n };\n };\n\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/discover/_hit_sort_fn.js\n ** module id = 587\n ** module chunks = 0\n **/","define(function (require) {\n var $ = require('jquery');\n var app = require('modules').get('apps/discover');\n var html = require('plugins/kibana/discover/components/field_chooser/discover_field.html');\n var _ = require('lodash');\n\n require('directives/css_truncate');\n require('directives/field_name');\n\n\n app.directive('discoverField', function ($compile) {\n return {\n restrict: 'E',\n template: html,\n replace: true,\n link: function ($scope, $elem) {\n var detailsElem;\n var detailScope = $scope.$new();\n\n var detailsHtml = require('plugins/kibana/discover/components/field_chooser/lib/detail_views/string.html');\n\n var init = function () {\n if ($scope.field.details) {\n $scope.toggleDetails($scope.field, true);\n }\n };\n\n var getWarnings = function (field) {\n var warnings = [];\n\n if (!field.scripted) {\n if (!field.doc_values && !(field.analyzed && field.type === 'string')) {\n warnings.push('Doc values are not enabled on this field. This may lead to excess heap consumption when visualizing.');\n }\n\n if (field.analyzed && field.type === 'string') {\n warnings.push('This is an analyzed string field.' +\n ' Analyzed strings are highly unique and can use a lot of memory to visualize.' +\n ' Values such as foo-bar will be broken into foo and bar.');\n }\n\n if (!field.indexed) {\n warnings.push('This field is not indexed and can not be visualized.');\n }\n }\n\n\n if (field.scripted) {\n warnings.push('Scripted fields can take a long time to execute.');\n }\n\n if (warnings.length > 1) {\n warnings = warnings.map(function (warning, i) {\n return (i > 0 ? '\\n' : '') + (i + 1) + ' - ' + warning;\n });\n }\n\n return warnings;\n\n };\n\n $scope.toggleDisplay = function (field) {\n // inheritted param to fieldChooser\n $scope.toggle(field.name);\n if (field.display) $scope.increaseFieldCounter(field);\n\n // we are now displaying the field, kill it's details\n if (field.details) {\n $scope.toggleDetails(field);\n }\n };\n\n $scope.toggleDetails = function (field, recompute) {\n if (_.isUndefined(field.details) || recompute) {\n // This is inherited from fieldChooser\n $scope.details(field, recompute);\n detailScope.$destroy();\n detailScope = $scope.$new();\n detailScope.warnings = getWarnings(field);\n\n detailsElem = $(detailsHtml);\n $compile(detailsElem)(detailScope);\n $elem.append(detailsElem);\n } else {\n delete field.details;\n detailsElem.remove();\n }\n };\n\n init();\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/discover/components/field_chooser/discover_field.js\n ** module id = 588\n ** module chunks = 0\n **/","define(function (require) {\n var app = require('modules').get('apps/discover');\n\n require('directives/css_truncate');\n require('directives/field_name');\n require('filters/unique');\n require('plugins/kibana/discover/components/field_chooser/discover_field');\n\n app.directive('discFieldChooser', function ($location, globalState, config, $route, Private) {\n var _ = require('lodash');\n var rison = require('utils/rison');\n var fieldCalculator = require('plugins/kibana/discover/components/field_chooser/lib/field_calculator');\n var FieldList = Private(require('components/index_patterns/_field_list'));\n\n return {\n restrict: 'E',\n scope: {\n columns: '=',\n hits: '=',\n fieldCounts: '=',\n state: '=',\n indexPattern: '=',\n indexPatternList: '=',\n updateFilterInQuery: '=filter'\n },\n template: require('plugins/kibana/discover/components/field_chooser/field_chooser.html'),\n link: function ($scope) {\n $scope.setIndexPattern = function (id) {\n $scope.state.index = id;\n $scope.state.save();\n };\n\n $scope.$watch('state.index', function (id, previousId) {\n if (previousId == null || previousId === id) return;\n $route.reload();\n });\n\n var filter = $scope.filter = {\n props: [\n 'type',\n 'indexed',\n 'analyzed',\n 'missing',\n 'name'\n ],\n defaults: {\n missing: true\n },\n boolOpts: [\n {label: 'any', value: undefined },\n {label: 'yes', value: true },\n {label: 'no', value: false }\n ],\n toggleVal: function (name, def) {\n if (filter.vals[name] !== def) filter.vals[name] = def;\n else filter.vals[name] = undefined;\n },\n reset: function () {\n filter.vals = _.clone(filter.defaults);\n },\n isFieldSelected: function (field) {\n return field.display;\n },\n isFieldFiltered: function (field) {\n var matchFilter = (filter.vals.type == null || field.type === filter.vals.type);\n var isAnalyzed = (filter.vals.analyzed == null || field.analyzed === filter.vals.analyzed);\n var isIndexed = (filter.vals.indexed == null || field.indexed === filter.vals.indexed);\n var scriptedOrMissing = (!filter.vals.missing || field.scripted || field.rowCount > 0);\n var matchName = (!filter.vals.name || field.name.indexOf(filter.vals.name) !== -1);\n\n return !field.display\n && matchFilter\n && isAnalyzed\n && isIndexed\n && scriptedOrMissing\n && matchName\n ;\n },\n popularity: function (field) {\n return field.count > 0;\n },\n getActive: function () {\n return _.some(filter.props, function (prop) {\n return filter.vals[prop] !== filter.defaults[prop];\n });\n }\n };\n\n // set the initial values to the defaults\n filter.reset();\n\n $scope.$watchCollection('filter.vals', function () {\n filter.active = filter.getActive();\n });\n\n $scope.toggle = function (fieldName) {\n $scope.increaseFieldCounter(fieldName);\n _.toggleInOut($scope.columns, fieldName);\n };\n\n $scope.$watchMulti([\n '[]fieldCounts',\n '[]columns',\n '[]hits'\n ], function (cur, prev) {\n var newHits = cur[2] !== prev[2];\n var fields = $scope.fields;\n var columns = $scope.columns || [];\n var fieldCounts = $scope.fieldCounts;\n\n if (!fields || newHits) {\n $scope.fields = fields = getFields();\n }\n\n if (!fields) return;\n\n // group the fields into popular and up-popular lists\n _.chain(fields)\n .each(function (field) {\n field.displayOrder = _.indexOf(columns, field.name) + 1;\n field.display = !!field.displayOrder;\n field.rowCount = fieldCounts[field.name];\n })\n .sortBy(function (field) {\n return (field.count || 0) * -1;\n })\n .groupBy(function (field) {\n if (field.display) return 'selected';\n return field.count > 0 ? 'popular' : 'unpopular';\n })\n .tap(function (groups) {\n groups.selected = _.sortBy(groups.selected || [], 'displayOrder');\n\n groups.popular = groups.popular || [];\n groups.unpopular = groups.unpopular || [];\n\n // move excess popular fields to un-popular list\n var extras = groups.popular.splice(config.get('fields:popularLimit'));\n groups.unpopular = extras.concat(groups.unpopular);\n })\n .each(function (group, name) {\n $scope[name + 'Fields'] = _.sortBy(group, name === 'selected' ? 'display' : 'name');\n })\n .commit();\n\n // include undefined so the user can clear the filter\n $scope.fieldTypes = _.union([undefined], _.pluck(fields, 'type'));\n });\n\n $scope.increaseFieldCounter = function (fieldName) {\n $scope.indexPattern.popularizeField(fieldName, 1);\n };\n\n $scope.runAgg = function (field) {\n var agg = {};\n var isGeoPoint = field.type === 'geo_point';\n var type = isGeoPoint ? 'tile_map' : 'histogram';\n // If we're visualizing a date field, and our index is time based (and thus has a time filter),\n // then run a date histogram\n if (field.type === 'date' && $scope.indexPattern.timeFieldName === field.name) {\n agg = {\n type: 'date_histogram',\n schema: 'segment',\n params: {\n field: field.name,\n interval: 'auto'\n }\n };\n\n } else if (isGeoPoint) {\n agg = {\n type: 'geohash_grid',\n schema: 'segment',\n params: {\n field: field.name,\n precision: 3\n }\n };\n } else {\n agg = {\n type: 'terms',\n schema: 'segment',\n params: {\n field: field.name,\n size: config.get('discover:aggs:terms:size', 20),\n orderBy: '2'\n }\n };\n }\n\n $location.path('/visualize/create').search({\n indexPattern: $scope.state.index,\n type: type,\n _a: rison.encode({\n filters: $scope.state.filters || [],\n query: $scope.state.query || undefined,\n vis: {\n type: type,\n aggs: [\n agg,\n {schema: 'metric', type: 'count', 'id': '2'}\n ]\n }\n })\n });\n };\n\n $scope.details = function (field, recompute) {\n if (_.isUndefined(field.details) || recompute) {\n field.details = fieldCalculator.getFieldValueCounts({\n hits: $scope.hits,\n field: field,\n count: 5,\n grouped: false\n });\n _.each(field.details.buckets, function (bucket) {\n bucket.display = field.format.convert(bucket.value);\n });\n $scope.increaseFieldCounter(field, 1);\n } else {\n delete field.details;\n }\n };\n\n function getFields() {\n var prevFields = $scope.fields;\n var indexPattern = $scope.indexPattern;\n var hits = $scope.hits;\n var fieldCounts = $scope.fieldCounts;\n\n if (!indexPattern || !hits || !fieldCounts) return;\n\n var fieldSpecs = indexPattern.fields.slice(0);\n var fieldNamesInDocs = _.keys(fieldCounts);\n var fieldNamesInIndexPattern = _.keys(indexPattern.fields.byName);\n\n _.difference(fieldNamesInDocs, fieldNamesInIndexPattern)\n .forEach(function (unknownFieldName) {\n fieldSpecs.push({\n name: unknownFieldName,\n type: 'unknown'\n });\n });\n\n var fields = new FieldList(indexPattern, fieldSpecs);\n\n if (prevFields) {\n fields.forEach(function (field) {\n field.details = _.get(prevFields, ['byName', field.name, 'details']);\n });\n }\n\n return fields;\n }\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/discover/components/field_chooser/field_chooser.js\n ** module id = 589\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n var getFieldValues = function (hits, field) {\n var name = field.name;\n var flattenHit = field.indexPattern.flattenHit;\n return _.map(hits, function (hit) {\n return flattenHit(hit)[name];\n });\n };\n\n var getFieldValueCounts = function (params) {\n params = _.defaults(params, {\n count: 5,\n grouped: false\n });\n\n if (\n params.field.type === 'geo_point'\n || params.field.type === 'geo_shape'\n || params.field.type === 'attachment'\n ) {\n return { error: 'Analysis is not available for geo fields.' };\n }\n\n var allValues = getFieldValues(params.hits, params.field);\n var counts;\n var missing = _countMissing(allValues);\n\n try {\n var groups = _groupValues(allValues, params);\n counts = _.map(\n _.sortBy(groups, 'count').reverse().slice(0, params.count),\n function (bucket) {\n return {\n value: bucket.value,\n count: bucket.count,\n percent: (bucket.count / (params.hits.length - missing) * 100).toFixed(1)\n };\n });\n\n if (params.hits.length - missing === 0) {\n return {\n error: 'This field is present in your elasticsearch mapping' +\n ' but not in any documents in the search results.' +\n ' You may still be able to visualize or search on it.'\n };\n }\n\n return {\n total: params.hits.length,\n exists: params.hits.length - missing,\n missing: missing,\n buckets: counts,\n };\n } catch (e) {\n return { error: e.message };\n }\n\n };\n\n // returns a count of fields in the array that are undefined or null\n var _countMissing = function (array) {\n return array.length - _.without(array, undefined, null).length;\n };\n\n\n var _groupValues = function (allValues, params) {\n var groups = {};\n var k;\n\n allValues.forEach(function (value) {\n if (_.isObject(value) && !_.isArray(value)) {\n throw new Error('Analysis is not available for object fields');\n }\n\n if (_.isArray(value) && !params.grouped) {\n k = value;\n } else {\n k = value == null ? undefined : [value];\n }\n\n _.each(k, function (key) {\n if (_.has(groups, key)) {\n groups[key].count++;\n } else {\n groups[key] = {\n value: (params.grouped ? value : key),\n count: 1\n };\n }\n });\n });\n\n return groups;\n };\n\n return {\n _groupValues: _groupValues,\n _countMissing: _countMissing,\n getFieldValues: getFieldValues,\n getFieldValueCounts: getFieldValueCounts\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/discover/components/field_chooser/lib/field_calculator.js\n ** module id = 590\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var angular = require('angular');\n var moment = require('moment');\n var ConfigTemplate = require('utils/config_template');\n var getSort = require('components/doc_table/lib/get_sort');\n var rison = require('utils/rison');\n\n var datemath = require('utils/datemath');\n\n require('components/doc_table/doc_table');\n require('components/visualize/visualize');\n require('components/notify/notify');\n require('components/timepicker/timepicker');\n require('components/fixedScroll');\n require('directives/validate_json');\n require('components/validate_query/validate_query');\n require('filters/moment');\n require('components/courier/courier');\n require('components/index_patterns/index_patterns');\n require('components/state_management/app_state');\n require('components/timefilter/timefilter');\n require('components/highlight/highlight_tags');\n\n var app = require('modules').get('apps/discover', [\n 'kibana/notify',\n 'kibana/courier',\n 'kibana/index_patterns'\n ]);\n\n require('routes')\n .when('/discover/:id?', {\n template: require('plugins/kibana/discover/index.html'),\n reloadOnSearch: false,\n resolve: {\n ip: function (Promise, courier, config, $location) {\n return courier.indexPatterns.getIds()\n .then(function (list) {\n var stateRison = $location.search()._a;\n var state;\n try { state = rison.decode(stateRison); } catch (e) {}\n state = state || {};\n\n var specified = !!state.index;\n var exists = _.contains(list, state.index);\n var id = exists ? state.index : config.get('defaultIndex');\n\n return Promise.props({\n list: list,\n loaded: courier.indexPatterns.get(id),\n stateVal: state.index,\n stateValFound: specified && exists\n });\n });\n },\n savedSearch: function (courier, savedSearches, $route) {\n return savedSearches.get($route.current.params.id)\n .catch(courier.redirectWhenMissing({\n 'search': '/discover',\n 'index-pattern': '/settings/objects/savedSearches/' + $route.current.params.id\n }));\n }\n }\n });\n\n app.controller('discover', function ($scope, config, courier, $route, $window, Notifier,\n AppState, timefilter, Promise, Private, kbnUrl, highlightTags) {\n\n var Vis = Private(require('components/vis/vis'));\n var docTitle = Private(require('components/doc_title/doc_title'));\n var brushEvent = Private(require('utils/brush_event'));\n var HitSortFn = Private(require('plugins/kibana/discover/_hit_sort_fn'));\n var queryFilter = Private(require('components/filter_bar/query_filter'));\n var filterManager = Private(require('components/filter_manager/filter_manager'));\n\n var notify = new Notifier({\n location: 'Discover'\n });\n\n $scope.intervalOptions = Private(require('components/agg_types/buckets/_interval_options'));\n $scope.showInterval = false;\n\n $scope.intervalEnabled = function (interval) {\n return interval.val !== 'custom';\n };\n\n $scope.toggleInterval = function () {\n $scope.showInterval = !$scope.showInterval;\n };\n\n // config panel templates\n $scope.configTemplate = new ConfigTemplate({\n load: require('plugins/kibana/discover/partials/load_search.html'),\n save: require('plugins/kibana/discover/partials/save_search.html')\n });\n\n $scope.timefilter = timefilter;\n\n // the saved savedSearch\n var savedSearch = $route.current.locals.savedSearch;\n $scope.$on('$destroy', savedSearch.destroy);\n\n // the actual courier.SearchSource\n $scope.searchSource = savedSearch.searchSource;\n $scope.indexPattern = resolveIndexPatternLoading();\n $scope.searchSource.set('index', $scope.indexPattern);\n\n if (savedSearch.id) {\n docTitle.change(savedSearch.title);\n }\n\n var $state = $scope.state = new AppState(getStateDefaults());\n function getStateDefaults() {\n return {\n query: $scope.searchSource.get('query') || '',\n sort: getSort.array(savedSearch.sort, $scope.indexPattern),\n columns: savedSearch.columns || ['_source'],\n index: $scope.indexPattern.id,\n interval: 'auto',\n filters: _.cloneDeep($scope.searchSource.getOwn('filter'))\n };\n }\n\n $state.index = $scope.indexPattern.id;\n $state.sort = getSort.array($state.sort, $scope.indexPattern);\n\n $scope.$watchCollection('state.columns', function () {\n $state.save();\n });\n\n $scope.opts = {\n // number of records to fetch, then paginate through\n sampleSize: config.get('discover:sampleSize'),\n // Index to match\n index: $scope.indexPattern.id,\n timefield: $scope.indexPattern.timeFieldName,\n savedSearch: savedSearch,\n indexPatternList: $route.current.locals.ip.list\n };\n\n var init = _.once(function () {\n var showTotal = 5;\n $scope.failuresShown = showTotal;\n $scope.showAllFailures = function () {\n $scope.failuresShown = $scope.failures.length;\n };\n $scope.showLessFailures = function () {\n $scope.failuresShown = showTotal;\n };\n\n $scope.updateDataSource()\n .then(function () {\n $scope.$listen(timefilter, 'fetch', function () {\n $scope.fetch();\n });\n\n $scope.$watchCollection('state.sort', function (sort) {\n if (!sort) return;\n\n // get the current sort from {key: val} to [\"key\", \"val\"];\n var currentSort = _.pairs($scope.searchSource.get('sort')).pop();\n\n // if the searchSource doesn't know, tell it so\n if (!angular.equals(sort, currentSort)) $scope.fetch();\n });\n\n // update data source when filters update\n $scope.$listen(queryFilter, 'update', function () {\n return $scope.updateDataSource().then(function () {\n $state.save();\n });\n });\n\n // update data source when hitting forward/back and the query changes\n $scope.$listen($state, 'fetch_with_changes', function (diff) {\n if (diff.indexOf('query') >= 0) $scope.fetch();\n });\n\n // fetch data when filters fire fetch event\n $scope.$listen(queryFilter, 'fetch', $scope.fetch);\n\n $scope.$watch('opts.timefield', function (timefield) {\n timefilter.enabled = !!timefield;\n });\n\n $scope.$watch('state.interval', function (interval, oldInterval) {\n if (interval !== oldInterval && interval === 'auto') {\n $scope.showInterval = false;\n }\n $scope.fetch();\n });\n\n $scope.$watch('vis.aggs', function () {\n var buckets = $scope.vis.aggs.bySchemaGroup.buckets;\n\n if (buckets && buckets.length === 1) {\n $scope.intervalName = 'by ' + buckets[0].buckets.getInterval().description;\n } else {\n $scope.intervalName = 'auto';\n }\n });\n\n $scope.$watchMulti([\n 'rows',\n 'fetchStatus'\n ], (function updateResultState() {\n var prev = {};\n var status = {\n LOADING: 'loading', // initial data load\n READY: 'ready', // results came back\n NO_RESULTS: 'none' // no results came back\n };\n\n function pick(rows, oldRows, fetchStatus) {\n // initial state, pretend we are loading\n if (rows == null && oldRows == null) return status.LOADING;\n\n var rowsEmpty = _.isEmpty(rows);\n if (rowsEmpty && fetchStatus) return status.LOADING;\n else if (!rowsEmpty) return status.READY;\n else return status.NO_RESULTS;\n }\n\n return function () {\n var current = {\n rows: $scope.rows,\n fetchStatus: $scope.fetchStatus\n };\n\n $scope.resultState = pick(\n current.rows,\n prev.rows,\n current.fetchStatus,\n prev.fetchStatus\n );\n\n prev = current;\n };\n }()));\n\n $scope.searchSource.onError(function (err) {\n console.log(err);\n notify.error('An error occurred with your request. Reset your inputs and try again.');\n }).catch(notify.fatal);\n\n function initForTime() {\n return setupVisualization().then($scope.updateTime);\n }\n\n return Promise.resolve($scope.opts.timefield && initForTime())\n .then(function () {\n init.complete = true;\n $state.replace();\n $scope.$emit('application.load');\n });\n });\n });\n\n $scope.opts.saveDataSource = function () {\n return $scope.updateDataSource()\n .then(function () {\n savedSearch.id = savedSearch.title;\n savedSearch.columns = $scope.state.columns;\n savedSearch.sort = $scope.state.sort;\n\n return savedSearch.save()\n .then(function (id) {\n $scope.configTemplate.close('save');\n\n if (id) {\n notify.info('Saved Data Source \"' + savedSearch.title + '\"');\n if (savedSearch.id !== $route.current.params.id) {\n kbnUrl.change('/discover/{{id}}', { id: savedSearch.id });\n } else {\n // Update defaults so that \"reload saved query\" functions correctly\n $state.setDefaults(getStateDefaults());\n }\n }\n });\n })\n .catch(notify.error);\n };\n\n $scope.opts.fetch = $scope.fetch = function () {\n // ignore requests to fetch before the app inits\n if (!init.complete) return;\n\n $scope.updateTime();\n\n $scope.updateDataSource()\n .then(setupVisualization)\n .then(function () {\n $state.save();\n return courier.fetch();\n })\n .catch(notify.error);\n };\n\n $scope.searchSource.onBeginSegmentedFetch(function (segmented) {\n\n function flushResponseData() {\n $scope.hits = 0;\n $scope.faliures = [];\n $scope.rows = [];\n $scope.fieldCounts = {};\n }\n\n if (!$scope.rows) flushResponseData();\n\n var sort = $state.sort;\n var timeField = $scope.indexPattern.timeFieldName;\n var totalSize = $scope.size || $scope.opts.sampleSize;\n\n /**\n * Basically an emum.\n *\n * opts:\n * \"time\" - sorted by the timefield\n * \"non-time\" - explicitly sorted by a non-time field, NOT THE SAME AS `sortBy !== \"time\"`\n * \"implicit\" - no sorting set, NOT THE SAME AS \"non-time\"\n *\n * @type {String}\n */\n var sortBy = (function () {\n if (!_.isArray(sort)) return 'implicit';\n else if (sort[0] === timeField) return 'time';\n else return 'non-time';\n }());\n\n var sortFn = null;\n if (sortBy === 'non-time') {\n sortFn = new HitSortFn(sort[1]);\n }\n\n $scope.updateTime();\n segmented.setDirection(sortBy === 'time' ? (sort[1] || 'desc') : 'desc');\n segmented.setSize(sortBy === 'time' ? $scope.opts.sampleSize : false);\n\n // triggered when the status updated\n segmented.on('status', function (status) {\n $scope.fetchStatus = status;\n });\n\n segmented.on('first', function () {\n flushResponseData();\n });\n\n segmented.on('segment', notify.timed('handle each segment', function (resp) {\n if (resp._shards.failed > 0) {\n $scope.failures = _.union($scope.failures, resp._shards.failures);\n $scope.failures = _.uniq($scope.failures, false, function (failure) {\n return failure.index + failure.shard + failure.reason;\n });\n }\n\n var rows = $scope.rows;\n var indexPattern = $scope.searchSource.get('index');\n\n // merge the rows and the hits, use a new array to help watchers\n rows = $scope.rows = rows.concat(resp.hits.hits);\n\n if (sortFn) {\n notify.event('resort rows', function () {\n rows.sort(sortFn);\n rows = $scope.rows = rows.slice(0, totalSize);\n $scope.fieldCounts = {};\n });\n }\n\n notify.event('flatten hit and count fields', function () {\n var counts = $scope.fieldCounts;\n $scope.rows.forEach(function (hit) {\n // skip this work if we have already done it and we are NOT sorting.\n // ---\n // when we are sorting results, we need to redo the counts each time because the\n // \"top 500\" may change with each response\n if (hit.$$_counted && !sortFn) return;\n hit.$$_counted = true;\n\n var fields = _.keys(indexPattern.flattenHit(hit));\n var n = fields.length;\n var field;\n while (field = fields[--n]) {\n if (counts[field]) counts[field] += 1;\n else counts[field] = 1;\n }\n });\n });\n\n }));\n\n segmented.on('mergedSegment', function (merged) {\n $scope.mergedEsResp = merged;\n $scope.hits = merged.hits.total;\n\n });\n\n segmented.on('complete', function () {\n if ($scope.fetchStatus.hitCount === 0) {\n flushResponseData();\n }\n\n $scope.fetchStatus = null;\n });\n }).catch(notify.fatal);\n\n $scope.updateTime = function () {\n $scope.timeRange = {\n from: datemath.parse(timefilter.time.from),\n to: datemath.parse(timefilter.time.to, true)\n };\n };\n\n $scope.resetQuery = function () {\n kbnUrl.change('/discover/{{id}}', { id: $route.current.params.id });\n };\n\n $scope.newQuery = function () {\n kbnUrl.change('/discover');\n };\n\n $scope.updateDataSource = Promise.method(function () {\n $scope.searchSource\n .size($scope.opts.sampleSize)\n .sort(getSort($state.sort, $scope.indexPattern))\n .query(!$state.query ? null : $state.query)\n .highlight({\n pre_tags: [highlightTags.pre],\n post_tags: [highlightTags.post],\n fields: {'*': {}},\n fragment_size: 2147483647 // Limit of an integer.\n })\n .set('filter', queryFilter.getFilters());\n });\n\n // TODO: On array fields, negating does not negate the combination, rather all terms\n $scope.filterQuery = function (field, values, operation) {\n $scope.indexPattern.popularizeField(field, 1);\n filterManager.add(field, values, operation, $state.index);\n };\n\n $scope.toTop = function () {\n $window.scrollTo(0, 0);\n };\n\n var loadingVis;\n var setupVisualization = function () {\n // If we're not setting anything up we need to return an empty promise\n if (!$scope.opts.timefield) return Promise.resolve();\n if (loadingVis) return loadingVis;\n\n var visStateAggs = [\n {\n type: 'count',\n schema: 'metric'\n },\n {\n type: 'date_histogram',\n schema: 'segment',\n params: {\n field: $scope.opts.timefield,\n interval: $state.interval,\n min_doc_count: 0\n }\n }\n ];\n\n // we have a vis, just modify the aggs\n if ($scope.vis) {\n var visState = $scope.vis.getState();\n visState.aggs = visStateAggs;\n\n $scope.vis.setState(visState);\n return Promise.resolve($scope.vis);\n }\n\n $scope.vis = new Vis($scope.indexPattern, {\n type: 'histogram',\n params: {\n addLegend: false,\n addTimeMarker: true\n },\n listeners: {\n click: function (e) {\n console.log(e);\n timefilter.time.from = moment(e.point.x);\n timefilter.time.to = moment(e.point.x + e.data.ordered.interval);\n timefilter.time.mode = 'absolute';\n },\n brush: brushEvent\n },\n aggs: visStateAggs\n });\n\n $scope.searchSource.aggs(function () {\n $scope.vis.requesting();\n return $scope.vis.aggs.toDsl();\n });\n\n // stash this promise so that other calls to setupVisualization will have to wait\n loadingVis = new Promise(function (resolve) {\n $scope.$on('ready:vis', function () {\n resolve($scope.vis);\n });\n })\n .finally(function () {\n // clear the loading flag\n loadingVis = null;\n });\n\n return loadingVis;\n };\n\n function resolveIndexPatternLoading() {\n var props = $route.current.locals.ip;\n var loaded = props.loaded;\n var stateVal = props.stateVal;\n var stateValFound = props.stateValFound;\n\n var own = $scope.searchSource.getOwn('index');\n\n if (own && !stateVal) return own;\n if (stateVal && !stateValFound) {\n var err = '\"' + stateVal + '\" is not a configured pattern. ';\n if (own) {\n notify.warning(err + ' Using the saved index pattern: \"' + own.id + '\"');\n return own;\n }\n\n notify.warning(err + ' Using the default index pattern: \"' + loaded.id + '\"');\n }\n return loaded;\n }\n\n init();\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/discover/controllers/discover.js\n ** module id = 591\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var $ = require('jquery');\n var vislib = require('components/vislib/index');\n\n var app = require('modules').get('apps/discover');\n\n app.directive('discoverTimechart', function ($compile) {\n return {\n restrict: 'E',\n scope : {\n data: '='\n },\n link: function ($scope, elem) {\n\n var init = function () {\n // This elem should already have a height/width\n var myChart = new vislib.Chart(elem[0], {\n\n });\n\n $scope.$watch('data', function (data) {\n if (data != null) {\n myChart.render(data);\n }\n });\n };\n\n // Start the directive\n init();\n }\n };\n });\n\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/discover/directives/timechart.js\n ** module id = 592\n ** module chunks = 0\n **/","define(function (require, module, exports) {\n require('plugins/kibana/discover/saved_searches/saved_searches');\n require('plugins/kibana/discover/directives/timechart');\n require('components/collapsible_sidebar/collapsible_sidebar');\n require('plugins/kibana/discover/components/field_chooser/field_chooser');\n require('plugins/kibana/discover/controllers/discover');\n require('plugins/kibana/discover/styles/main.less');\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/discover/index.js\n ** module id = 593\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n require('components/notify/notify');\n\n var module = require('modules').get('discover/saved_searches', [\n 'kibana/notify',\n 'kibana/courier'\n ]);\n\n module.factory('SavedSearch', function (courier) {\n _.class(SavedSearch).inherits(courier.SavedObject);\n function SavedSearch(id) {\n courier.SavedObject.call(this, {\n type: SavedSearch.type,\n mapping: SavedSearch.mapping,\n searchSource: SavedSearch.searchSource,\n\n id: id,\n defaults: {\n title: 'New Saved Search',\n description: '',\n columns: [],\n hits: 0,\n sort: [],\n version: 1\n }\n });\n }\n\n SavedSearch.type = 'search';\n\n SavedSearch.mapping = {\n title: 'string',\n description: 'string',\n hits: 'integer',\n columns: 'string',\n sort: 'string',\n version: 'integer'\n };\n\n SavedSearch.searchSource = true;\n\n return SavedSearch;\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/discover/saved_searches/_saved_search.js\n ** module id = 594\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var angular = require('angular');\n\n require('components/notify/notify');\n require('components/courier/courier');\n require('components/doc_viewer/doc_viewer');\n require('components/index_patterns/index_patterns');\n\n var app = require('modules').get('apps/doc', [\n 'kibana/notify',\n 'kibana/courier',\n 'kibana/index_patterns'\n ]);\n\n var html = require('plugins/kibana/doc/index.html');\n\n var resolveIndexPattern = {\n indexPattern: function (courier, savedSearches, $route) {\n return courier.indexPatterns.get($route.current.params.indexPattern);\n }\n };\n\n require('routes')\n .when('/doc/:indexPattern/:index/:type/:id', {\n template: html,\n resolve: resolveIndexPattern\n })\n .when('/doc/:indexPattern/:index/:type', {\n template: html,\n resolve: resolveIndexPattern\n });\n\n app.controller('doc', function ($scope, $route, es, timefilter) {\n\n timefilter.enabled = false;\n\n // Pretty much only need this for formatting, not actually using it for fetching anything.\n $scope.indexPattern = $route.current.locals.indexPattern;\n\n var computedFields = $scope.indexPattern.getComputedFields();\n\n es.search({\n index: $route.current.params.index,\n body: {\n query: {\n ids: {\n type: $route.current.params.type,\n values: [$route.current.params.id]\n }\n },\n fields: computedFields.fields,\n script_fields: computedFields.scriptFields,\n fielddata_fields: computedFields.fielddataFields\n }\n }).then(function (resp) {\n if (resp.hits) {\n if (resp.hits.total < 1) {\n $scope.status = 'notFound';\n } else {\n $scope.status = 'found';\n $scope.hit = resp.hits.hits[0];\n }\n }\n }).catch(function (err) {\n if (err.status === 404) {\n $scope.status = 'notFound';\n } else {\n $scope.status = 'error';\n $scope.resp = err;\n }\n });\n\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/doc/controllers/doc.js\n ** module id = 595\n ** module chunks = 0\n **/","define(function (require, module, exports) {\n require('plugins/kibana/doc/controllers/doc');\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/doc/index.js\n ** module id = 596\n ** module chunks = 0\n **/","define(function (require) {\n require('plugins/kibana/discover/index');\n require('plugins/kibana/visualize/index');\n require('plugins/kibana/dashboard/index');\n require('plugins/kibana/settings/index');\n require('plugins/kibana/doc/index');\n\n require('routes')\n .otherwise({\n redirectTo: '/discover'\n });\n\n require('chrome')\n .setLogo('url(/images/kibana.png) left no-repeat', true)\n .setNavBackground('#222222')\n .setTabs([\n {\n id: 'discover',\n title: 'Discover'\n },\n {\n id: 'visualize',\n title: 'Visualize'\n },\n {\n id: 'dashboard',\n title: 'Dashboard'\n },\n {\n id: 'settings',\n title: 'Settings'\n }\n ])\n .setRootController('kibana', function ($scope, courier) {\n // wait for the application to finish loading\n $scope.$on('application.load', function () {\n courier.start();\n });\n });\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/kibana.js\n ** module id = 597\n ** module chunks = 0\n **/","define(function (require, module, exports) {\n var _ = require('lodash');\n\n require('plugins/kibana/settings/styles/main.less');\n require('filters/start_from');\n\n require('routes')\n .when('/settings', {\n redirectTo: '/settings/indices'\n });\n\n require('modules').get('apps/settings')\n .directive('kbnSettingsApp', function (Private, $route, timefilter) {\n return {\n restrict: 'E',\n template: require('plugins/kibana/settings/app.html'),\n transclude: true,\n scope: {\n sectionName: '@section'\n },\n link: function ($scope, $el) {\n timefilter.enabled = false;\n $scope.sections = require('plugins/kibana/settings/sections/index');\n $scope.section = _.find($scope.sections, { name: $scope.sectionName });\n\n $scope.sections.forEach(function (section) {\n section.class = (section === $scope.section) ? 'active' : void 0;\n });\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/index.js\n ** module id = 598\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n require('routes')\n .when('/settings/about', {\n template: require('plugins/kibana/settings/sections/about/index.html')\n });\n\n require('modules').get('apps/settings')\n .controller('settingsAbout', function ($scope, kbnVersion, buildNum, commitSha) {\n $scope.kbnVersion = kbnVersion;\n $scope.buildNum = buildNum;\n $scope.commitSha = commitSha;\n });\n\n return {\n order: Infinity,\n name: 'about',\n display: 'About',\n url: '#/settings/about'\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/about/index.js\n ** module id = 599\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n require('components/elastic_textarea');\n\n require('modules').get('apps/settings')\n .directive('advancedRow', function (config, Notifier, Private) {\n return {\n restrict: 'A',\n replace: true,\n template: require('plugins/kibana/settings/sections/advanced/advanced_row.html'),\n scope: {\n conf: '=advancedRow',\n configs: '='\n },\n link: function ($scope) {\n var configDefaults = Private(require('components/config/defaults'));\n var notify = new Notifier();\n var keyCodes = {\n ESC: 27\n };\n\n // To allow passing form validation state back\n $scope.forms = {};\n\n // setup loading flag, run async op, then clear loading and editting flag (just in case)\n var loading = function (conf, fn) {\n conf.loading = true;\n fn()\n .finally(function () {\n conf.loading = conf.editting = false;\n })\n .catch(notify.fatal);\n };\n\n $scope.maybeCancel = function ($event, conf) {\n if ($event.keyCode === keyCodes.ESC) {\n $scope.cancelEdit(conf);\n }\n };\n\n $scope.edit = function (conf) {\n conf.unsavedValue = conf.value == null ? conf.defVal : conf.value;\n $scope.configs.forEach(function (c) {\n c.editting = (c === conf);\n });\n };\n\n $scope.save = function (conf) {\n loading(conf, function () {\n if (conf.unsavedValue === conf.defVal) {\n return config.clear(conf.name);\n }\n\n return config.set(conf.name, conf.unsavedValue);\n });\n };\n\n $scope.cancelEdit = function (conf) {\n conf.editting = false;\n };\n\n $scope.clear = function (conf) {\n return loading(conf, function () {\n return config.clear(conf.name);\n });\n };\n\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/advanced/advanced_row.js\n ** module id = 600\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var getValType = require('plugins/kibana/settings/sections/advanced/lib/get_val_type');\n\n\n require('plugins/kibana/settings/sections/advanced/advanced_row');\n\n require('routes')\n .when('/settings/advanced', {\n template: require('plugins/kibana/settings/sections/advanced/index.html')\n });\n\n require('modules').get('apps/settings')\n .directive('kbnSettingsAdvanced', function (config, Notifier, Private, $rootScope) {\n return {\n restrict: 'E',\n link: function ($scope) {\n var configDefaults = Private(require('components/config/defaults'));\n var keyCodes = {\n ESC: 27\n };\n\n var NAMED_EDITORS = ['json', 'array', 'boolean', 'select'];\n var NORMAL_EDITOR = ['number', 'string', 'null', 'undefined'];\n\n function getEditorType(conf) {\n if (_.contains(NAMED_EDITORS, conf.type)) return conf.type;\n if (_.contains(NORMAL_EDITOR, conf.type)) return 'normal';\n }\n\n function isTypeComplex(conf) {\n return !(conf.json || conf.array || conf.bool || conf.normal);\n }\n\n function readConfigVals() {\n var configVals = config._vals();\n\n $scope.configs = _.map(configDefaults, function (def, name) {\n var val = configVals[name];\n var conf = {\n name: name,\n defVal: def.value,\n type: getValType(def, val),\n description: def.description,\n options: def.options,\n value: val,\n };\n\n var editor = getEditorType(conf);\n conf.json = editor === 'json';\n conf.select = editor === 'select';\n conf.bool = editor === 'boolean';\n conf.array = editor === 'array';\n conf.normal = editor === 'normal';\n conf.tooComplex = !editor;\n\n return conf;\n });\n }\n\n readConfigVals();\n $rootScope.$on('change:config', readConfigVals);\n }\n };\n });\n\n return {\n order: 2,\n name: 'advanced',\n display: 'Advanced',\n url: '#/settings/advanced'\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/advanced/index.js\n ** module id = 601\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n /**\n * @param {object} advanced setting definition object\n * @param {?} current value of the setting\n * @returns {string} the type to use for determining the display and editor\n */\n function getValType(def, value) {\n if (def.type) {\n return def.type;\n }\n\n if (_.isArray(value) || _.isArray(def.value)) {\n return 'array';\n }\n\n return (def.value != null ? typeof def.value : typeof value);\n }\n\n return getValType;\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/advanced/lib/get_val_type.js\n ** module id = 602\n ** module chunks = 0\n **/","define(function (require) {\n // each of these private modules returns an object defining that section, their properties\n // are used to create the nav bar\n return [\n require('plugins/kibana/settings/sections/indices/index'),\n require('plugins/kibana/settings/sections/advanced/index'),\n require('plugins/kibana/settings/sections/objects/index'),\n require('plugins/kibana/settings/sections/about/index')\n ];\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/index.js\n ** module id = 603\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var moment = require('moment');\n var errors = require('errors');\n\n require('directives/validate_index_name');\n require('directives/auto_select_if_only_one');\n\n require('routes')\n .when('/settings/indices/', {\n template: require('plugins/kibana/settings/sections/indices/_create.html')\n });\n\n require('modules').get('apps/settings')\n .controller('settingsIndicesCreate', function ($scope, kbnUrl, Private, Notifier, indexPatterns, es, config, Promise) {\n var notify = new Notifier();\n var MissingIndices = errors.IndexPatternMissingIndices;\n var refreshKibanaIndex = Private(require('plugins/kibana/settings/sections/indices/_refresh_kibana_index'));\n var intervals = indexPatterns.intervals;\n var samplePromise;\n\n // this and child scopes will write pattern vars here\n var index = $scope.index = {\n name: 'logstash-*',\n\n isTimeBased: true,\n nameIsPattern: false,\n sampleCount: 5,\n nameIntervalOptions: intervals,\n\n fetchFieldsError: 'Loading'\n };\n\n index.nameInterval = _.find(index.nameIntervalOptions, { name: 'daily' });\n index.timeField = null;\n\n $scope.refreshFieldList = function () {\n fetchFieldList().then(updateFieldList);\n };\n\n $scope.createIndexPattern = function () {\n // get an empty indexPattern to start\n indexPatterns.get()\n .then(function (indexPattern) {\n // set both the id and title to the index index\n indexPattern.id = indexPattern.title = index.name;\n if (index.isTimeBased) {\n indexPattern.timeFieldName = index.timeField.name;\n if (index.nameIsPattern) {\n indexPattern.intervalName = index.nameInterval.name;\n }\n }\n\n // fetch the fields\n return indexPattern.create()\n .then(function (id) {\n if (id) {\n refreshKibanaIndex().then(function () {\n if (!config.get('defaultIndex')) {\n config.set('defaultIndex', indexPattern.id);\n }\n indexPatterns.cache.clear(indexPattern.id);\n kbnUrl.change('/settings/indices/' + indexPattern.id);\n });\n }\n });\n\n // refreshFields calls save() after a successfull fetch, no need to save again\n // .then(function () { indexPattern.save(); })\n })\n .catch(function (err) {\n if (err instanceof MissingIndices) {\n notify.error('Could not locate any indices matching that pattern. Please add the index to Elasticsearch');\n }\n else notify.fatal(err);\n });\n };\n\n\n $scope.$watchMulti([\n 'index.isTimeBased',\n 'index.nameIsPattern',\n 'index.nameInterval.name'\n ], function (newVal, oldVal) {\n var isTimeBased = newVal[0];\n var nameIsPattern = newVal[1];\n var newDefault = getPatternDefault(newVal[2]);\n var oldDefault = getPatternDefault(oldVal[2]);\n\n if (index.name === oldDefault) {\n index.name = newDefault;\n }\n\n if (!isTimeBased) {\n index.nameIsPattern = false;\n }\n\n if (!nameIsPattern) {\n delete index.nameInterval;\n delete index.timeField;\n } else {\n index.nameInterval = index.nameInterval || intervals.byName.days;\n index.name = index.name || getPatternDefault(index.nameInterval);\n }\n });\n\n $scope.moreSamples = function (andUpdate) {\n index.sampleCount += 5;\n if (andUpdate) updateSamples();\n };\n\n $scope.$watchMulti([\n 'index.name',\n 'index.nameInterval'\n ], function (newVal, oldVal) {\n var lastPromise;\n resetIndex();\n samplePromise = lastPromise = updateSamples()\n .then(function () {\n promiseMatch(lastPromise, function () {\n index.samples = null;\n index.patternErrors = [];\n });\n })\n .catch(function (errors) {\n promiseMatch(lastPromise, function () {\n index.existing = null;\n index.patternErrors = errors;\n });\n })\n .finally(function () {\n // prevent running when no change happened (ie, first watcher call)\n if (!_.isEqual(newVal, oldVal)) {\n fetchFieldList().then(function (results) {\n if (lastPromise === samplePromise) {\n updateFieldList(results);\n samplePromise = null;\n }\n });\n }\n });\n });\n\n $scope.$watchMulti([\n 'index.isTimeBased',\n 'index.sampleCount'\n ], $scope.refreshFieldList);\n\n function updateSamples() {\n var patternErrors = [];\n\n if (!index.nameInterval || !index.name) {\n return Promise.resolve();\n }\n\n var pattern = mockIndexPattern(index);\n\n return indexPatterns.mapper.getIndicesForIndexPattern(pattern)\n .catch(notify.error)\n .then(function (existing) {\n var all = existing.all;\n var matches = existing.matches;\n if (all.length) {\n index.existing = {\n class: 'success',\n all: all,\n matches: matches,\n matchPercent: Math.round((matches.length / all.length) * 100) + '%',\n failures: _.difference(all, matches)\n };\n return;\n }\n\n patternErrors.push('Pattern does not match any existing indices');\n var radius = Math.round(index.sampleCount / 2);\n var samples = intervals.toIndexList(index.name, index.nameInterval, -radius, radius);\n\n if (_.uniq(samples).length !== samples.length) {\n patternErrors.push('Invalid pattern, interval does not create unique index names');\n } else {\n index.samples = samples;\n }\n\n throw patternErrors;\n });\n }\n\n function fetchFieldList() {\n index.dateFields = index.timeField = index.listUsed = null;\n var useIndexList = index.isTimeBased && index.nameIsPattern;\n var fetchFieldsError;\n var dateFields;\n\n // we don't have enough info to continue\n if (!index.name) {\n fetchFieldsError = 'Set an index name first';\n return;\n }\n\n if (useIndexList && !index.nameInterval) {\n fetchFieldsError = 'Select the interval at which your indices are populated.';\n return;\n }\n\n return indexPatterns.mapper.clearCache(index.name)\n .then(function () {\n var pattern = mockIndexPattern(index);\n\n return indexPatterns.mapper.getFieldsForIndexPattern(pattern, true)\n .catch(function (err) {\n // TODO: we should probably display a message of some kind\n if (err instanceof MissingIndices) {\n fetchFieldsError = 'Unable to fetch mapping. Do you have indices matching the pattern?';\n return [];\n }\n\n throw err;\n });\n })\n .then(function (fields) {\n if (fields.length > 0) {\n fetchFieldsError = null;\n dateFields = fields.filter(function (field) {\n return field.type === 'date';\n });\n }\n\n return {\n fetchFieldsError: fetchFieldsError,\n dateFields: dateFields\n };\n }, notify.fatal);\n }\n\n function updateFieldList(results) {\n index.fetchFieldsError = results.fetchFieldsError;\n index.dateFields = results.dateFields;\n }\n\n function promiseMatch(lastPromise, cb) {\n if (lastPromise === samplePromise) {\n cb();\n } else if (samplePromise != null) {\n // haven't hit the last promise yet, reset index params\n resetIndex();\n }\n }\n\n function resetIndex() {\n index.patternErrors = [];\n index.samples = null;\n index.existing = null;\n index.fetchFieldsError = 'Loading';\n }\n\n function getPatternDefault(interval) {\n switch (interval) {\n case 'hours':\n return '[logstash-]YYYY.MM.DD.HH';\n case 'days':\n return '[logstash-]YYYY.MM.DD';\n case 'weeks':\n return '[logstash-]GGGG.WW';\n case 'months':\n return '[logstash-]YYYY.MM';\n case 'years':\n return '[logstash-]YYYY';\n default:\n return 'logstash-*';\n }\n }\n\n function mockIndexPattern(index) {\n // trick the mapper into thinking this is an indexPattern\n return {\n id: index.name,\n intervalName: index.nameInterval\n };\n }\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/indices/_create.js\n ** module id = 604\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n return function (indexPattern) {\n var dateScripts = {};\n var scripts = {\n __dayOfMonth: 'dayOfMonth',\n __dayOfWeek: 'dayOfWeek',\n __dayOfYear: 'dayOfYear',\n __hourOfDay: 'hourOfDay',\n __minuteOfDay: 'minuteOfDay',\n __minuteOfHour: 'minuteOfHour',\n __monthOfYear: 'monthOfYear',\n __weekOfYear: 'weekOfWeekyear',\n __year: 'year'\n };\n\n _.each(indexPattern.fields.byType.date, function (field) {\n if (field.indexed) {\n _.each(scripts, function (value, key) {\n dateScripts[field.name + '.' + key] = 'doc[\"' + field.name + '\"].date.' + value;\n });\n }\n });\n\n return dateScripts;\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/indices/_date_scripts.js\n ** module id = 605\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n require('plugins/kibana/settings/sections/indices/_indexed_fields');\n require('plugins/kibana/settings/sections/indices/_scripted_fields');\n require('plugins/kibana/settings/sections/indices/_index_header');\n\n require('routes')\n .when('/settings/indices/:indexPatternId', {\n template: require('plugins/kibana/settings/sections/indices/_edit.html'),\n resolve: {\n indexPattern: function ($route, courier) {\n return courier.indexPatterns.get($route.current.params.indexPatternId)\n .catch(courier.redirectWhenMissing('/settings/indices'));\n }\n }\n });\n\n require('modules').get('apps/settings')\n .controller('settingsIndicesEdit', function ($scope, $location, $route, config, courier, Notifier, Private, AppState, docTitle) {\n\n var notify = new Notifier();\n var $state = $scope.state = new AppState();\n var refreshKibanaIndex = Private(require('plugins/kibana/settings/sections/indices/_refresh_kibana_index'));\n\n $scope.kbnUrl = Private(require('components/url/url'));\n $scope.indexPattern = $route.current.locals.indexPattern;\n docTitle.change($scope.indexPattern.id);\n var otherIds = _.without($route.current.locals.indexPatternIds, $scope.indexPattern.id);\n\n var fieldTypes = Private(require('plugins/kibana/settings/sections/indices/_field_types'));\n $scope.$watch('indexPattern.fields', function () {\n $scope.fieldTypes = fieldTypes($scope.indexPattern);\n });\n\n $scope.changeTab = function (obj) {\n $state.tab = obj.index;\n $state.save();\n };\n\n $scope.$watch('state.tab', function (tab) {\n if (!tab) $scope.changeTab($scope.fieldTypes[0]);\n });\n\n $scope.$watchCollection('indexPattern.fields', function () {\n $scope.conflictFields = _.filter($scope.indexPattern.fields, {type: 'conflict'});\n });\n\n $scope.refreshFields = function () {\n $scope.indexPattern.refreshFields();\n };\n\n $scope.removePattern = function () {\n if ($scope.indexPattern.id === config.get('defaultIndex')) {\n config.delete('defaultIndex');\n if (otherIds.length) {\n config.set('defaultIndex', otherIds[0]);\n }\n }\n\n courier.indexPatterns.delete($scope.indexPattern)\n .then(refreshKibanaIndex)\n .then(function () {\n $location.url('/settings/indices');\n })\n .catch(notify.fatal);\n };\n\n $scope.setDefaultPattern = function () {\n config.set('defaultIndex', $scope.indexPattern.id);\n };\n\n $scope.setIndexPatternsTimeField = function (field) {\n if (field.type !== 'date') {\n notify.error('That field is a ' + field.type + ' not a date.');\n return;\n }\n $scope.indexPattern.timeFieldName = field.name;\n return $scope.indexPattern.save();\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/indices/_edit.js\n ** module id = 606\n ** module chunks = 0\n **/","define(function (require) {\n require('components/field_editor/field_editor');\n require('plugins/kibana/settings/sections/indices/_index_header');\n\n require('routes')\n .when('/settings/indices/:indexPatternId/field/:fieldName', { mode: 'edit' })\n .when('/settings/indices/:indexPatternId/create-field/', { mode: 'create' })\n .defaults(/settings\\/indices\\/[^\\/]+\\/(field|create-field)(\\/|$)/, {\n template: require('plugins/kibana/settings/sections/indices/_field_editor.html'),\n resolve: {\n indexPattern: function ($route, courier) {\n return courier.indexPatterns.get($route.current.params.indexPatternId)\n .catch(courier.redirectWhenMissing('/settings/indices'));\n }\n },\n controllerAs: 'fieldSettings',\n controller: function FieldEditorPageController($route, Private, Notifier, docTitle) {\n var Field = Private(require('components/index_patterns/_field'));\n var notify = new Notifier({ location: 'Field Editor' });\n var kbnUrl = Private(require('components/url/url'));\n\n\n this.mode = $route.current.mode;\n this.indexPattern = $route.current.locals.indexPattern;\n\n\n if (this.mode === 'edit') {\n var fieldName = $route.current.params.fieldName;\n this.field = this.indexPattern.fields.byName[fieldName];\n\n if (!this.field) {\n notify.error(this.indexPattern + ' does not have a \"' + fieldName + '\" field.');\n kbnUrl.redirectToRoute(this.indexPattern, 'edit');\n return;\n }\n\n }\n else if (this.mode === 'create') {\n this.field = new Field(this.indexPattern, {\n scripted: true,\n type: 'number'\n });\n }\n else {\n throw new Error('unknown fieldSettings mode ' + this.mode);\n }\n\n docTitle.change([this.field.name || 'New Scripted Field', this.indexPattern.id]);\n this.goBack = function () {\n kbnUrl.changeToRoute(this.indexPattern, 'edit');\n };\n }\n });\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/indices/_field_editor.js\n ** module id = 607\n ** module chunks = 0\n **/","define(function (require) {\n return function GetFieldTypes() {\n var _ = require('lodash');\n\n return function (indexPattern) {\n var fieldCount = _.countBy(indexPattern.fields, function (field) {\n return (field.scripted) ? 'scripted' : 'indexed';\n });\n\n _.defaults(fieldCount, {\n indexed: 0,\n scripted: 0\n });\n\n return [{\n title: 'fields',\n index: 'indexedFields',\n count: fieldCount.indexed\n }, {\n title: 'scripted fields',\n index: 'scriptedFields',\n count: fieldCount.scripted\n }];\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/indices/_field_types.js\n ** module id = 608\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n require('components/paginated_table/paginated_table');\n\n require('modules').get('apps/settings')\n .directive('indexedFields', function () {\n var yesTemplate = '';\n var noTemplate = '';\n var nameHtml = require('plugins/kibana/settings/sections/indices/_field_name.html');\n var typeHtml = require('plugins/kibana/settings/sections/indices/_field_type.html');\n var controlsHtml = require('plugins/kibana/settings/sections/indices/_field_controls.html');\n\n return {\n restrict: 'E',\n template: require('plugins/kibana/settings/sections/indices/_indexed_fields.html'),\n scope: true,\n link: function ($scope) {\n var rowScopes = []; // track row scopes, so they can be destroyed as needed\n $scope.perPage = 25;\n $scope.columns = [\n { title: 'name' },\n { title: 'type' },\n { title: 'format' },\n { title: 'analyzed', info: 'Analyzed fields may require extra memory to visualize' },\n { title: 'indexed', info: 'Fields that are not indexed are unavailable for search' },\n { title: 'controls', sortable: false }\n ];\n\n $scope.$watchCollection('indexPattern.fields', function () {\n // clear and destroy row scopes\n _.invoke(rowScopes.splice(0), '$destroy');\n\n $scope.rows = $scope.indexPattern.getNonScriptedFields().map(function (field) {\n var childScope = _.assign($scope.$new(), { field: field });\n rowScopes.push(childScope);\n\n return [\n {\n markup: nameHtml,\n scope: childScope,\n value: field.displayName\n },\n {\n markup: typeHtml,\n scope: childScope,\n value: field.type\n },\n _.get($scope.indexPattern, ['fieldFormatMap', field.name, 'type', 'title']),\n {\n markup: field.analyzed ? yesTemplate : noTemplate,\n value: field.analyzed\n },\n {\n markup: field.indexed ? yesTemplate : noTemplate,\n value: field.indexed\n },\n {\n markup: controlsHtml,\n scope: childScope\n }\n ];\n });\n });\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/indices/_indexed_fields.js\n ** module id = 609\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n require('components/paginated_table/paginated_table');\n\n require('modules').get('apps/settings')\n .directive('scriptedFields', function (kbnUrl, Notifier) {\n var rowScopes = []; // track row scopes, so they can be destroyed as needed\n var controlsHtml = require('plugins/kibana/settings/sections/indices/_field_controls.html');\n\n var notify = new Notifier();\n\n return {\n restrict: 'E',\n template: require('plugins/kibana/settings/sections/indices/_scripted_fields.html'),\n scope: true,\n link: function ($scope) {\n var dateScripts = require('plugins/kibana/settings/sections/indices/_date_scripts');\n\n var fieldCreatorPath = '/settings/indices/{{ indexPattern }}/scriptedField';\n var fieldEditorPath = fieldCreatorPath + '/{{ fieldName }}';\n\n $scope.perPage = 25;\n $scope.columns = [\n { title: 'name' },\n { title: 'script' },\n { title: 'format' },\n { title: 'controls', sortable: false }\n ];\n\n $scope.$watch('indexPattern.fields', function () {\n _.invoke(rowScopes, '$destroy');\n rowScopes.length = 0;\n\n $scope.rows = $scope.indexPattern.getScriptedFields().map(function (field) {\n var rowScope = $scope.$new();\n rowScope.field = field;\n rowScopes.push(rowScope);\n\n return [\n field.name,\n field.script,\n _.get($scope.indexPattern, ['fieldFormatMap', field.name, 'type', 'title']),\n {\n markup: controlsHtml,\n scope: rowScope\n }\n ];\n });\n });\n\n $scope.addDateScripts = function () {\n var conflictFields = [];\n var fieldsAdded = 0;\n _.each(dateScripts($scope.indexPattern), function (script, field) {\n try {\n $scope.indexPattern.addScriptedField(field, script, 'number');\n fieldsAdded++;\n } catch (e) {\n conflictFields.push(field);\n }\n });\n\n if (fieldsAdded > 0) {\n notify.info(fieldsAdded + ' script fields created');\n }\n\n if (conflictFields.length > 0) {\n notify.info('Not adding ' + conflictFields.length + ' duplicate fields: ' + conflictFields.join(', '));\n }\n };\n\n $scope.create = function () {\n var params = {\n indexPattern: $scope.indexPattern.id\n };\n\n kbnUrl.change(fieldCreatorPath, params);\n };\n\n $scope.edit = function (field) {\n var params = {\n indexPattern: $scope.indexPattern.id,\n fieldName: field.name\n };\n\n kbnUrl.change(fieldEditorPath, params);\n };\n\n $scope.remove = function (field) {\n $scope.indexPattern.removeScriptedField(field.name);\n };\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/indices/_scripted_fields.js\n ** module id = 610\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n require('plugins/kibana/settings/sections/indices/_create');\n require('plugins/kibana/settings/sections/indices/_edit');\n require('plugins/kibana/settings/sections/indices/_field_editor');\n\n // add a dependency to all of the subsection routes\n require('routes')\n .defaults(/settings\\/indices/, {\n resolve: {\n indexPatternIds: function (courier) {\n return courier.indexPatterns.getIds();\n }\n }\n });\n\n // wrapper directive, which sets some global stuff up like the left nav\n require('modules').get('apps/settings')\n .directive('kbnSettingsIndices', function ($route, config, kbnUrl) {\n return {\n restrict: 'E',\n transclude: true,\n template: require('plugins/kibana/settings/sections/indices/index.html'),\n link: function ($scope) {\n $scope.edittingId = $route.current.params.indexPatternId;\n config.$bind($scope, 'defaultIndex');\n\n $scope.$watch('defaultIndex', function () {\n var ids = $route.current.locals.indexPatternIds;\n $scope.indexPatternList = ids.map(function (id) {\n return {\n id: id,\n url: kbnUrl.eval('#/settings/indices/{{id}}', {id: id}),\n class: 'sidebar-item-title ' + ($scope.edittingId === id ? 'active' : ''),\n default: $scope.defaultIndex === id\n };\n });\n });\n\n $scope.$emit('application.load');\n }\n };\n });\n\n return {\n name: 'indices',\n display: 'Indices',\n url: '#/settings/indices',\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/indices/index.js\n ** module id = 611\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var angular = require('angular');\n var saveAs = require('file_saver');\n var registry = require('plugins/kibana/settings/saved_object_registry');\n var objectIndexHTML = require('plugins/kibana/settings/sections/objects/_objects.html');\n\n require('directives/file_upload');\n\n require('routes')\n .when('/settings/objects', {\n template: objectIndexHTML\n });\n\n require('modules').get('apps/settings')\n .directive('kbnSettingsObjects', function (kbnIndex, Notifier, Private, kbnUrl) {\n return {\n restrict: 'E',\n controller: function ($scope, $injector, $q, AppState, es) {\n var notify = new Notifier({ location: 'Saved Objects' });\n\n var $state = $scope.state = new AppState();\n $scope.currentTab = null;\n $scope.selectedItems = [];\n\n var getData = function (filter) {\n var services = registry.all().map(function (obj) {\n var service = $injector.get(obj.service);\n return service.find(filter).then(function (data) {\n return {\n service: service,\n serviceName: obj.service,\n title: obj.title,\n type: service.type,\n data: data.hits,\n total: data.total\n };\n });\n });\n\n $q.all(services).then(function (data) {\n $scope.services = _.sortBy(data, 'title');\n var tab = $scope.services[0];\n if ($state.tab) tab = _.find($scope.services, {title: $state.tab});\n $scope.changeTab(tab);\n });\n };\n\n $scope.$watch('state.tab', function (tab) {\n if (!tab) $scope.changeTab($scope.services[0]);\n });\n\n $scope.toggleAll = function () {\n if ($scope.selectedItems.length === $scope.currentTab.data.length) {\n $scope.selectedItems.length = 0;\n } else {\n $scope.selectedItems = [].concat($scope.currentTab.data);\n }\n };\n\n $scope.toggleItem = function (item) {\n var i = $scope.selectedItems.indexOf(item);\n if (i >= 0) {\n $scope.selectedItems.splice(i, 1);\n } else {\n $scope.selectedItems.push(item);\n }\n };\n\n $scope.open = function (item) {\n kbnUrl.change(item.url.substr(1));\n };\n\n $scope.edit = function (service, item) {\n var params = {\n service: service.serviceName,\n id: item.id\n };\n\n kbnUrl.change('/settings/objects/{{ service }}/{{ id }}', params);\n };\n\n $scope.bulkDelete = function () {\n $scope.currentTab.service.delete(_.pluck($scope.selectedItems, 'id')).then(refreshData);\n };\n\n $scope.bulkExport = function () {\n var objs = $scope.selectedItems.map(_.partialRight(_.extend, {type: $scope.currentTab.type}));\n retrieveAndExportDocs(objs);\n };\n\n $scope.exportAll = function () {\n var objs = $scope.services.map(function (service) {\n return service.data.map(_.partialRight(_.extend, {type: service.type}));\n });\n retrieveAndExportDocs(_.flattenDeep(objs));\n };\n\n function retrieveAndExportDocs(objs) {\n es.mget({\n index: kbnIndex,\n body: {docs: objs.map(transformToMget)}\n })\n .then(function (response) {\n saveToFile(response.docs.map(_.partialRight(_.pick, '_id', '_type', '_source')));\n });\n }\n\n // Takes an object and returns the associated data needed for an mget API request\n function transformToMget(obj) {\n return {_id: obj.id, _type: obj.type};\n }\n\n function saveToFile(results) {\n var blob = new Blob([angular.toJson(results, true)], {type: 'application/json'});\n saveAs(blob, 'export.json');\n }\n\n $scope.importAll = function (fileContents) {\n var docs;\n try {\n docs = JSON.parse(fileContents);\n } catch (e) {\n notify.error('The file could not be processed.');\n }\n\n return es.mget({\n index: kbnIndex,\n body: {docs: docs.map(_.partialRight(_.pick, '_id', '_type'))}\n })\n .then(function (response) {\n var existingDocs = _.where(response.docs, {found: true});\n var confirmMessage = 'The following objects will be overwritten:\\n\\n';\n if (existingDocs.length === 0 || window.confirm(confirmMessage + _.pluck(existingDocs, '_id').join('\\n'))) {\n return es.bulk({\n index: kbnIndex,\n body: _.flattenDeep(docs.map(transformToBulk))\n })\n .then(refreshIndex)\n .then(refreshData, notify.error);\n }\n });\n };\n\n // Takes a doc and returns the associated two entries for an index bulk API request\n function transformToBulk(doc) {\n return [\n {index: _.pick(doc, '_id', '_type')},\n doc._source\n ];\n }\n\n function refreshIndex() {\n return es.indices.refresh({\n index: kbnIndex\n });\n }\n\n function refreshData() {\n return getData($scope.advancedFilter);\n }\n\n $scope.changeTab = function (tab) {\n $scope.currentTab = tab;\n $scope.selectedItems.length = 0;\n $state.tab = tab.title;\n $state.save();\n };\n\n $scope.$watch('advancedFilter', function (filter) {\n getData(filter);\n });\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/objects/_objects.js\n ** module id = 612\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var angular = require('angular');\n var rison = require('utils/rison');\n var registry = require('plugins/kibana/settings/saved_object_registry');\n var objectViewHTML = require('plugins/kibana/settings/sections/objects/_view.html');\n\n require('routes')\n .when('/settings/objects/:service/:id', {\n template: objectViewHTML\n });\n\n require('modules').get('apps/settings')\n .directive('kbnSettingsObjectsView', function (kbnIndex, Notifier) {\n return {\n restrict: 'E',\n controller: function ($scope, $injector, $routeParams, $location, $window, $rootScope, es, Private) {\n var notify = new Notifier({ location: 'SavedObject view' });\n var castMappingType = Private(require('components/index_patterns/_cast_mapping_type'));\n var serviceObj = registry.get($routeParams.service);\n var service = $injector.get(serviceObj.service);\n\n /**\n * Creates a field definition and pushes it to the memo stack. This function\n * is designed to be used in conjunction with _.reduce(). If the\n * values is plain object it will recurse through all the keys till it hits\n * a string, number or an array.\n *\n * @param {array} memo The stack of fields\n * @param {mixed} value The value of the field\n * @param {string} key The key of the field\n * @param {object} collection This is a reference the collection being reduced\n * @param {array} parents The parent keys to the field\n * @returns {array}\n */\n var createField = function (memo, val, key, collection, parents) {\n if (_.isArray(parents)) {\n parents.push(key);\n } else {\n parents = [key];\n }\n\n var field = { type: 'text', name: parents.join('.'), value: val };\n\n if (_.isString(field.value)) {\n try {\n field.value = angular.toJson(JSON.parse(field.value), true);\n field.type = 'json';\n } catch (err) {\n field.value = field.value;\n }\n } else if (_.isNumeric(field.value)) {\n field.type = 'number';\n } else if (_.isArray(field.value)) {\n field.type = 'array';\n field.value = angular.toJson(field.value, true);\n } else if (_.isBoolean(field.value)) {\n field.type = 'boolean';\n field.value = field.value;\n } else if (_.isPlainObject(field.value)) {\n // do something recursive\n return _.reduce(field.value, _.partialRight(createField, parents), memo);\n }\n\n memo.push(field);\n\n // once the field is added to the object you need to pop the parents\n // to remove it since we've hit the end of the branch.\n parents.pop();\n return memo;\n };\n\n var readObjectClass = function (fields, Class) {\n var fieldMap = _.indexBy(fields, 'name');\n\n _.forOwn(Class.mapping, function (esType, name) {\n if (fieldMap[name]) return;\n\n fields.push({\n name: name,\n type: (function () {\n switch (castMappingType(esType)) {\n case 'string': return 'text';\n case 'number': return 'number';\n case 'boolean': return 'boolean';\n default: return 'json';\n }\n }())\n });\n });\n\n if (Class.searchSource && !fieldMap['kibanaSavedObjectMeta.searchSourceJSON']) {\n fields.push({\n name: 'kibanaSavedObjectMeta.searchSourceJSON',\n type: 'json',\n value: '{}'\n });\n }\n };\n\n $scope.notFound = $routeParams.notFound;\n\n $scope.title = service.type;\n\n es.get({\n index: kbnIndex,\n type: service.type,\n id: $routeParams.id\n })\n .then(function (obj) {\n $scope.obj = obj;\n $scope.link = service.urlFor(obj._id);\n\n var fields = _.reduce(obj._source, createField, []);\n if (service.Class) readObjectClass(fields, service.Class);\n $scope.fields = _.sortBy(fields, 'name');\n })\n .catch(notify.fatal);\n\n // This handles the validation of the Ace Editor. Since we don't have any\n // other hooks into the editors to tell us if the content is valid or not\n // we need to use the annotations to see if they have any errors. If they\n // do then we push the field.name to aceInvalidEditor variable.\n // Otherwise we remove it.\n var loadedEditors = [];\n $scope.aceInvalidEditors = [];\n\n $scope.aceLoaded = function (editor) {\n if (_.contains(loadedEditors, editor)) return;\n loadedEditors.push(editor);\n\n var session = editor.getSession();\n var fieldName = editor.container.id;\n\n session.setTabSize(2);\n session.setUseSoftTabs(true);\n session.on('changeAnnotation', function () {\n var annotations = session.getAnnotations();\n if (_.some(annotations, { type: 'error'})) {\n if (!_.contains($scope.aceInvalidEditors, fieldName)) {\n $scope.aceInvalidEditors.push(fieldName);\n }\n } else {\n $scope.aceInvalidEditors = _.without($scope.aceInvalidEditors, fieldName);\n }\n $rootScope.$$phase || $scope.$apply();\n });\n };\n\n $scope.cancel = function () {\n $window.history.back();\n return false;\n };\n\n /**\n * Deletes an object and sets the notification\n * @param {type} name description\n * @returns {type} description\n */\n $scope.delete = function () {\n es.delete({\n index: kbnIndex,\n type: service.type,\n id: $routeParams.id\n })\n .then(function (resp) {\n return redirectHandler('deleted');\n })\n .catch(notify.fatal);\n };\n\n $scope.submit = function () {\n var source = _.cloneDeep($scope.obj._source);\n\n _.each($scope.fields, function (field) {\n var value = field.value;\n\n if (field.type === 'number') {\n value = Number(field.value);\n }\n\n if (field.type === 'array') {\n value = JSON.parse(field.value);\n }\n\n _.set(source, field.name, value);\n });\n\n es.index({\n index: kbnIndex,\n type: service.type,\n id: $routeParams.id,\n body: source\n })\n .then(function (resp) {\n return redirectHandler('updated');\n })\n .catch(notify.fatal);\n };\n\n function redirectHandler(action) {\n return es.indices.refresh({\n index: kbnIndex\n })\n .then(function (resp) {\n var msg = 'You successfully ' + action + ' the \"' + $scope.obj._source.title + '\" ' + $scope.title.toLowerCase() + ' object';\n\n $location.path('/settings/objects').search({\n _a: rison.encode({\n tab: serviceObj.title\n })\n });\n notify.info(msg);\n });\n }\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/objects/_view.js\n ** module id = 613\n ** module chunks = 0\n **/","define(function (require) {\n require('plugins/kibana/settings/sections/objects/_view');\n require('plugins/kibana/settings/sections/objects/_objects');\n\n require('angular-ui-ace');\n require('angular-elastic');\n require('directives/confirm_click');\n\n // add the module deps to this module\n require('modules').get('apps/settings', ['ui.ace', 'monospaced.elastic']);\n\n return {\n name: 'objects',\n display: 'Objects',\n url: '#/settings/objects'\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/objects/index.js\n ** module id = 614\n ** module chunks = 0\n **/","define(function (require) {\n require('modules')\n .get('app/visualize')\n .directive('visEditorAgg', function ($compile, $parse, $filter, Private, Notifier) {\n require('plugins/kibana/visualize/editor/agg_params');\n require('plugins/kibana/visualize/editor/agg_add');\n\n var _ = require('lodash');\n var $ = require('jquery');\n var aggTypes = Private(require('components/agg_types/index'));\n var advancedToggleHtml = require('plugins/kibana/visualize/editor/advanced_toggle.html');\n\n var notify = new Notifier({\n location: 'visAggGroup'\n });\n\n return {\n restrict: 'A',\n template: require('plugins/kibana/visualize/editor/agg.html'),\n require: 'form',\n link: function ($scope, $el, attrs, kbnForm) {\n $scope.$bind('outputAgg', 'outputVis.aggs.byId[agg.id]', $scope);\n $scope.editorOpen = !!$scope.agg.brandNew;\n\n $scope.$watch('editorOpen', function (open) {\n // make sure that all of the form inputs are \"touched\"\n // so that their errors propogate\n if (!open) kbnForm.$setTouched();\n });\n\n $scope.$watchMulti([\n '$index',\n 'group.length'\n ], function () {\n $scope.aggIsTooLow = calcAggIsTooLow();\n });\n\n /**\n * Describe the aggregation, for display in the collapsed agg header\n * @return {[type]} [description]\n */\n $scope.describe = function () {\n if (!$scope.agg.type.makeLabel) return '';\n var label = $scope.agg.type.makeLabel($scope.agg);\n return label ? label : '';\n };\n\n function move(below, agg) {\n _.move($scope.vis.aggs, agg, below, function (otherAgg) {\n return otherAgg.schema.group === agg.schema.group;\n });\n }\n $scope.moveUp = _.partial(move, false);\n $scope.moveDown = _.partial(move, true);\n\n $scope.remove = function (agg) {\n var aggs = $scope.vis.aggs;\n\n var index = aggs.indexOf(agg);\n if (index === -1) return notify.log('already removed');\n\n aggs.splice(index, 1);\n };\n\n $scope.canRemove = function (aggregation) {\n var metricCount = _.reduce($scope.group, function (count, agg) {\n return (agg.schema.name === aggregation.schema.name) ? ++count : count;\n }, 0);\n\n // make sure the the number of these aggs is above the min\n return metricCount > aggregation.schema.min;\n };\n\n function calcAggIsTooLow() {\n if (!$scope.agg.schema.mustBeFirst) {\n return false;\n }\n\n var firstDifferentSchema = _.findIndex($scope.group, function (agg) {\n return agg.schema !== $scope.agg.schema;\n });\n\n if (firstDifferentSchema === -1) {\n return false;\n }\n\n return $scope.$index > firstDifferentSchema;\n }\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/editor/agg.js\n ** module id = 615\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var propFilter = require('filters/_prop_filter');\n\n require('modules')\n .get('kibana')\n .filter('aggFilter', function () {\n return propFilter('name');\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/editor/agg_filter.js\n ** module id = 616\n ** module chunks = 0\n **/","define(function (require) {\n require('modules')\n .get('app/visualize')\n .directive('visEditorAggGroup', function (Private) {\n require('plugins/kibana/visualize/editor/agg');\n require('plugins/kibana/visualize/editor/agg_add');\n require('plugins/kibana/visualize/editor/nesting_indicator');\n\n return {\n restrict: 'E',\n template: require('plugins/kibana/visualize/editor/agg_group.html'),\n scope: true,\n link: function ($scope, $el, attr) {\n $scope.groupName = attr.groupName;\n $scope.$bind('group', 'vis.aggs.bySchemaGroup[\"' + $scope.groupName + '\"]');\n $scope.$bind('schemas', 'vis.type.schemas[\"' + $scope.groupName + '\"]');\n\n $scope.$watchMulti([\n 'schemas',\n '[]group'\n ], function () {\n var stats = $scope.stats = {\n min: 0,\n max: 0,\n count: $scope.group ? $scope.group.length : 0\n };\n\n if (!$scope.schemas) return;\n\n $scope.schemas.forEach(function (schema) {\n stats.min += schema.min;\n stats.max += schema.max;\n });\n\n $scope.availableSchema = $scope.schemas.filter(function (schema) {\n var count = 0;\n\n if ($scope.group) {\n count = $scope.group.reduce(function (count, aggConfig) {\n if (aggConfig.schema === schema) count += 1;\n return count;\n }, 0);\n }\n\n if (count < schema.max) return true;\n });\n });\n }\n };\n\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/editor/agg_group.js\n ** module id = 617\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n require('modules')\n .get('app/visualize')\n .directive('visAggParamEditor', function (config, $parse, Private) {\n return {\n restrict: 'E',\n scope: true,\n template: function ($el) {\n return $el.html();\n },\n link: {\n pre: function ($scope, $el, attr) {\n $scope.$bind('aggParam', attr.aggParam);\n },\n post: function ($scope, $el, attr) {\n $scope.config = config;\n\n $scope.optionEnabled = function (option) {\n if (option && _.isFunction(option.enabled)) {\n return option.enabled($scope.agg);\n }\n\n return true;\n };\n }\n }\n };\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/editor/agg_param.js\n ** module id = 618\n ** module chunks = 0\n **/","define(function (require) {\n var IndexedArray = require('components/indexed_array/index');\n\n require('modules')\n .get('app/visualize')\n .directive('visEditorAggParams', function ($compile, $parse, Private, Notifier, $filter) {\n var _ = require('lodash');\n var $ = require('jquery');\n var aggTypes = Private(require('components/agg_types/index'));\n var aggSelectHtml = require('plugins/kibana/visualize/editor/agg_select.html');\n var advancedToggleHtml = require('plugins/kibana/visualize/editor/advanced_toggle.html');\n require('filters/match_any');\n require('plugins/kibana/visualize/editor/agg_param');\n\n var notify = new Notifier({\n location: 'visAggGroup'\n });\n\n return {\n restrict: 'E',\n template: require('plugins/kibana/visualize/editor/agg_params.html'),\n scope: true,\n link: function ($scope, $el, attr) {\n $scope.$bind('agg', attr.agg);\n $scope.$bind('groupName', attr.groupName);\n\n $scope.aggTypeOptions = aggTypes.byType[$scope.groupName];\n $scope.advancedToggled = false;\n\n // this will contain the controls for the schema (rows or columns?), which are unrelated to\n // controls for the agg, which is why they are first\n var $schemaEditor = $('
').addClass('schemaEditors').appendTo($el);\n\n if ($scope.agg.schema.editor) {\n $schemaEditor.append($scope.agg.schema.editor);\n $compile($schemaEditor)($scope.$new());\n }\n\n // allow selection of an aggregation\n var $aggSelect = $(aggSelectHtml).appendTo($el);\n $compile($aggSelect)($scope);\n\n // params for the selected agg, these are rebuilt every time the agg in $aggSelect changes\n var $aggParamEditors; // container for agg type param editors\n var $aggParamEditorsScope;\n $scope.$watch('agg.type', function updateAggParamEditor(newType, oldType) {\n if ($aggParamEditors) {\n $aggParamEditors.remove();\n $aggParamEditors = null;\n }\n\n // if there's an old scope, destroy it\n if ($aggParamEditorsScope) {\n $aggParamEditorsScope.$destroy();\n $aggParamEditorsScope = null;\n }\n\n // create child scope, used in the editors\n $aggParamEditorsScope = $scope.$new();\n\n var agg = $scope.agg;\n if (!agg) return;\n\n var type = $scope.agg.type;\n\n if (newType !== oldType) {\n // don't reset on initial load, the\n // saved params should persist\n agg.resetParams();\n }\n\n if (!type) return;\n\n var aggParamHTML = {\n basic: [],\n advanced: []\n };\n\n // build collection of agg params html\n type.params.forEach(function (param, i) {\n var aggParam;\n // if field param exists, compute allowed fields\n if (param.name === 'field') {\n $aggParamEditorsScope.indexedFields = getIndexedFields(param);\n }\n\n if ($aggParamEditorsScope.indexedFields) {\n var hasIndexedFields = $aggParamEditorsScope.indexedFields.length > 0;\n var isExtraParam = i > 0;\n if (!hasIndexedFields && isExtraParam) { // don't draw the rest of the options if their are no indexed fields.\n return;\n }\n }\n\n\n var type = 'basic';\n if (param.advanced) type = 'advanced';\n\n if (aggParam = getAggParamHTML(param, i)) {\n aggParamHTML[type].push(aggParam);\n }\n\n });\n\n // compile the paramEditors html elements\n var paramEditors = aggParamHTML.basic;\n\n if (aggParamHTML.advanced.length) {\n paramEditors.push($(advancedToggleHtml).get(0));\n paramEditors = paramEditors.concat(aggParamHTML.advanced);\n }\n\n $aggParamEditors = $(paramEditors).appendTo($el);\n $compile($aggParamEditors)($aggParamEditorsScope);\n });\n\n // build HTML editor given an aggParam and index\n function getAggParamHTML(param, idx) {\n // don't show params without an editor\n if (!param.editor) {\n return;\n }\n\n var attrs = {\n 'agg-param': 'agg.type.params[' + idx + ']'\n };\n\n if (param.advanced) {\n attrs['ng-show'] = 'advancedToggled';\n }\n\n return $('')\n .attr(attrs)\n .append(param.editor)\n .get(0);\n }\n\n function getIndexedFields(param) {\n var fields = $scope.agg.vis.indexPattern.fields.raw;\n var fieldTypes = param.filterFieldTypes;\n\n if (fieldTypes) {\n fields = $filter('fieldType')(fields, fieldTypes);\n fields = $filter('filter')(fields, { bucketable: true });\n fields = $filter('orderBy')(fields, ['type', 'name']);\n }\n\n return new IndexedArray({\n\n /**\n * @type {Array}\n */\n index: ['name'],\n\n /**\n * [group description]\n * @type {Array}\n */\n initialSet: fields\n });\n }\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/editor/agg_params.js\n ** module id = 619\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n require('plugins/kibana/visualize/saved_visualizations/saved_visualizations');\n require('plugins/kibana/visualize/editor/sidebar');\n require('plugins/kibana/visualize/editor/agg_filter');\n\n require('components/visualize/visualize');\n require('components/clipboard/clipboard');\n\n require('routes')\n .when('/visualize/create', {\n template: require('plugins/kibana/visualize/editor/editor.html'),\n resolve: {\n savedVis: function (savedVisualizations, courier, $route, Private) {\n var visTypes = Private(require('registry/vis_types'));\n var visType = _.find(visTypes, {name: $route.current.params.type});\n if (visType.requiresSearch && !$route.current.params.indexPattern && !$route.current.params.savedSearchId) {\n throw new Error('You must provide either an indexPattern or a savedSearchId');\n }\n\n return savedVisualizations.get($route.current.params)\n .catch(courier.redirectWhenMissing({\n '*': '/visualize'\n }));\n }\n }\n })\n .when('/visualize/edit/:id', {\n template: require('plugins/kibana/visualize/editor/editor.html'),\n resolve: {\n savedVis: function (savedVisualizations, courier, $route) {\n return savedVisualizations.get($route.current.params.id)\n .catch(courier.redirectWhenMissing({\n 'visualization': '/visualize',\n 'search': '/settings/objects/savedVisualizations/' + $route.current.params.id,\n 'index-pattern': '/settings/objects/savedVisualizations/' + $route.current.params.id,\n 'index-pattern-field': '/settings/objects/savedVisualizations/' + $route.current.params.id\n }));\n }\n }\n });\n\n require('modules')\n .get('app/visualize', [\n 'kibana/notify',\n 'kibana/courier'\n ])\n .controller('VisEditor', function ($scope, $route, timefilter, AppState, $location, kbnUrl, $timeout, courier, Private, Promise) {\n\n var _ = require('lodash');\n var angular = require('angular');\n var ConfigTemplate = require('utils/config_template');\n var Notifier = require('components/notify/_notifier');\n var docTitle = Private(require('components/doc_title/doc_title'));\n var brushEvent = Private(require('utils/brush_event'));\n var queryFilter = Private(require('components/filter_bar/query_filter'));\n var filterBarClickHandler = Private(require('components/filter_bar/filter_bar_click_handler'));\n\n var notify = new Notifier({\n location: 'Visualization Editor'\n });\n\n var savedVis = $route.current.locals.savedVis;\n\n var vis = savedVis.vis;\n var editableVis = vis.createEditableVis();\n vis.requesting = function () {\n var requesting = editableVis.requesting;\n requesting.call(vis);\n requesting.call(editableVis);\n };\n\n var searchSource = savedVis.searchSource;\n\n // config panel templates\n var configTemplate = new ConfigTemplate({\n save: require('plugins/kibana/visualize/editor/panels/save.html'),\n load: require('plugins/kibana/visualize/editor/panels/load.html'),\n share: require('plugins/kibana/visualize/editor/panels/share.html'),\n });\n\n if (savedVis.id) {\n docTitle.change(savedVis.title);\n }\n\n var $state = $scope.$state = (function initState() {\n var savedVisState = vis.getState();\n var stateDefaults = {\n linked: !!savedVis.savedSearchId,\n query: searchSource.getOwn('query') || {query_string: {query: '*'}},\n filters: searchSource.getOwn('filter') || [],\n vis: savedVisState\n };\n\n var $state = new AppState(stateDefaults);\n\n if (!angular.equals($state.vis, savedVisState)) {\n Promise.try(function () {\n vis.setState($state.vis);\n editableVis.setState($state.vis);\n })\n .catch(courier.redirectWhenMissing({\n 'index-pattern-field': '/visualize'\n }));\n }\n\n return $state;\n }());\n\n function init() {\n // export some objects\n $scope.savedVis = savedVis;\n $scope.searchSource = searchSource;\n $scope.vis = vis;\n $scope.indexPattern = vis.indexPattern;\n $scope.editableVis = editableVis;\n $scope.state = $state;\n $scope.conf = _.pick($scope, 'doSave', 'savedVis', 'shareData');\n $scope.configTemplate = configTemplate;\n\n editableVis.listeners.click = vis.listeners.click = filterBarClickHandler($state);\n editableVis.listeners.brush = vis.listeners.brush = brushEvent;\n\n // track state of editable vis vs. \"actual\" vis\n $scope.stageEditableVis = transferVisState(editableVis, vis, true);\n $scope.resetEditableVis = transferVisState(vis, editableVis);\n $scope.$watch(function () {\n return editableVis.getState();\n }, function (newState) {\n editableVis.dirty = !angular.equals(newState, vis.getState());\n\n $scope.responseValueAggs = null;\n try {\n $scope.responseValueAggs = editableVis.aggs.getResponseAggs().filter(function (agg) {\n return _.get(agg, 'schema.group') === 'metrics';\n });\n } catch (e) {\n // this can fail when the agg.type is changed but the\n // params have not been set yet. watcher will trigger again\n // when the params update\n }\n }, true);\n\n $state.replace();\n\n $scope.$watch('searchSource.get(\"index\").timeFieldName', function (timeField) {\n timefilter.enabled = !!timeField;\n });\n\n // update the searchSource when filters update\n $scope.$listen(queryFilter, 'update', function () {\n searchSource.set('filter', queryFilter.getFilters());\n $state.save();\n });\n\n // fetch data when filters fire fetch event\n $scope.$listen(queryFilter, 'fetch', $scope.fetch);\n\n\n $scope.$listen($state, 'fetch_with_changes', function (keys) {\n if (_.contains(keys, 'linked') && $state.linked === true) {\n // abort and reload route\n $route.reload();\n return;\n }\n\n if (_.contains(keys, 'vis')) {\n $state.vis.listeners = _.defaults($state.vis.listeners || {}, vis.listeners);\n\n // only update when we need to, otherwise colors change and we\n // risk loosing an in-progress result\n vis.setState($state.vis);\n editableVis.setState($state.vis);\n }\n\n // we use state to track query, must write before we fetch\n if ($state.query && !$state.linked) {\n searchSource.set('query', $state.query);\n } else {\n searchSource.set('query', null);\n }\n\n if (_.isEqual(keys, ['filters'])) {\n // updates will happen in filter watcher if needed\n return;\n }\n\n $scope.fetch();\n });\n\n // Without this manual emission, we'd miss filters and queries that were on the $state initially\n $state.emit('fetch_with_changes');\n\n $scope.$listen(timefilter, 'fetch', _.bindKey($scope, 'fetch'));\n\n $scope.$on('ready:vis', function () {\n $scope.$emit('application.load');\n });\n\n $scope.$on('$destroy', function () {\n savedVis.destroy();\n });\n }\n\n $scope.fetch = function () {\n $state.save();\n searchSource.set('filter', queryFilter.getFilters());\n if (!$state.linked) searchSource.set('query', $state.query);\n if ($scope.vis.type.requiresSearch) {\n courier.fetch();\n }\n };\n\n\n $scope.startOver = function () {\n kbnUrl.change('/visualize', {});\n };\n\n $scope.doSave = function () {\n savedVis.id = savedVis.title;\n savedVis.visState = $state.vis;\n\n savedVis.save()\n .then(function (id) {\n configTemplate.close('save');\n\n if (id) {\n notify.info('Saved Visualization \"' + savedVis.title + '\"');\n if (savedVis.id === $route.current.params.id) return;\n kbnUrl.change('/visualize/edit/{{id}}', {id: savedVis.id});\n }\n }, notify.fatal);\n };\n\n $scope.shareData = function () {\n return {\n link: $location.absUrl(),\n // This sucks, but seems like the cleanest way. Uhg.\n embed: ''\n };\n };\n\n $scope.unlink = function () {\n if (!$state.linked) return;\n\n $state.linked = false;\n var parent = searchSource.getParent(true);\n var parentsParent = parent.getParent(true);\n\n // display unlinking for 2 seconds, unless it is double clicked\n $scope.unlinking = $timeout($scope.clearUnlinking, 2000);\n\n delete savedVis.savedSearchId;\n parent.set('filter', _.union(searchSource.getOwn('filter'), parent.getOwn('filter')));\n\n // copy over all state except \"aggs\" and filter, which is already copied\n _(parent.toJSON())\n .omit('aggs')\n .forOwn(function (val, key) {\n searchSource.set(key, val);\n })\n .commit();\n\n $state.query = searchSource.get('query');\n $state.filters = searchSource.get('filter');\n searchSource.inherits(parentsParent);\n };\n\n $scope.clearUnlinking = function () {\n if ($scope.unlinking) {\n $timeout.cancel($scope.unlinking);\n $scope.unlinking = null;\n }\n };\n\n function transferVisState(fromVis, toVis, fetch) {\n return function () {\n toVis.setState(fromVis.getState());\n editableVis.dirty = false;\n $state.vis = vis.getState();\n $state.save();\n\n if (fetch) $scope.fetch();\n };\n }\n\n init();\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/editor/editor.js\n ** module id = 620\n ** module chunks = 0\n **/","define(function (require) {\n require('modules')\n .get('kibana')\n .directive('nestingIndicator', function ($rootScope, $parse, Private) {\n var _ = require('lodash');\n var $ = require('jquery');\n var getColors = Private(require('components/vislib/components/color/color_palette'));\n\n return {\n restrict: 'E',\n scope: {\n item: '=',\n list: '='\n },\n link: function ($scope, $el, attr) {\n $scope.$watchCollection('list', function () {\n if (!$scope.list || !$scope.item) return;\n\n var item = $scope.item;\n var index = $scope.list.indexOf($scope.item);\n var bars = $scope.list.slice(0, index + 1);\n var colors = getColors(bars.length);\n\n $el.html(bars.map(function (item, i) {\n return $(document.createElement('span'))\n .css('background-color', colors[i]);\n }));\n });\n }\n };\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/editor/nesting_indicator.js\n ** module id = 621\n ** module chunks = 0\n **/","define(function (require) {\n require('modules')\n .get('app/visualize')\n .directive('visEditorSidebar', function () {\n var _ = require('lodash');\n\n require('plugins/kibana/visualize/editor/agg_group');\n require('plugins/kibana/visualize/editor/vis_options');\n\n return {\n restrict: 'E',\n template: require('plugins/kibana/visualize/editor/sidebar.html'),\n scope: true,\n controllerAs: 'sidebar',\n controller: function ($scope) {\n $scope.$bind('vis', 'editableVis');\n $scope.$bind('outputVis', 'vis');\n this.section = _.get($scope, 'vis.type.requiresSearch') ? 'data' : 'options';\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/editor/sidebar.js\n ** module id = 622\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var $ = require('jquery');\n\n require('modules')\n .get('app/visualize')\n .directive('visEditorVisOptions', function (Private, $timeout, $compile) {\n return {\n restrict: 'E',\n template: require('plugins/kibana/visualize/editor/vis_options.html'),\n scope: {\n vis: '=',\n },\n link: function ($scope, $el) {\n var $optionContainer = $('.visualization-options');\n var $editor = $compile($scope.vis.type.params.editor)($scope);\n $optionContainer.append($editor);\n\n $scope.$watch('vis.type.schemas.all.length', function (len) {\n $scope.alwaysShowOptions = len === 0;\n });\n }\n };\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/editor/vis_options.js\n ** module id = 623\n ** module chunks = 0\n **/","define(function (require) {\n require('plugins/kibana/visualize/styles/main.less');\n\n require('plugins/kibana/visualize/editor/editor');\n require('plugins/kibana/visualize/wizard/wizard');\n\n require('routes')\n .when('/visualize', {\n redirectTo: '/visualize/step/1'\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/index.js\n ** module id = 624\n ** module chunks = 0\n **/","define(function (require) {\n require('modules')\n .get('app/visualize')\n .factory('SavedVis', function (config, $injector, courier, Promise, savedSearches, Private, Notifier) {\n var _ = require('lodash');\n var Vis = Private(require('components/vis/vis'));\n\n var notify = new Notifier({\n location: 'SavedVis'\n });\n\n _.class(SavedVis).inherits(courier.SavedObject);\n function SavedVis(opts) {\n var self = this;\n opts = opts || {};\n if (typeof opts !== 'object') opts = { id: opts };\n\n SavedVis.Super.call(self, {\n type: SavedVis.type,\n mapping: SavedVis.mapping,\n searchSource: SavedVis.searchSource,\n\n id: opts.id,\n indexPattern: opts.indexPattern,\n defaults: {\n title: 'New Visualization',\n visState: (function () {\n if (!opts.type) return null;\n var def = {};\n def.type = opts.type;\n return def;\n }()),\n description: '',\n savedSearchId: opts.savedSearchId,\n version: 1\n },\n\n afterESResp: this._afterEsResp\n });\n }\n\n SavedVis.type = 'visualization';\n\n SavedVis.mapping = {\n title: 'string',\n visState: 'json',\n description: 'string',\n savedSearchId: 'string',\n version: 'integer'\n };\n\n SavedVis.searchSource = true;\n\n SavedVis.prototype._afterEsResp = function () {\n var self = this;\n\n return self._getLinkedSavedSearch()\n .then(function () {\n self.searchSource.size(0);\n\n return self.vis ? self._updateVis() : self._createVis();\n })\n .then(function (vis) {\n self.searchSource.aggs(function () {\n self.vis.requesting();\n return self.vis.aggs.toDsl();\n });\n\n return self;\n });\n };\n\n SavedVis.prototype._getLinkedSavedSearch = Promise.method(function () {\n var self = this;\n var linkedSearch = !!self.savedSearchId;\n var current = self.savedSearch;\n\n if (linkedSearch && current && current.id === self.savedSearchId) {\n return;\n }\n\n if (self.savedSearch) {\n self.searchSource.inherits(self.savedSearch.searchSource.getParent());\n self.savedSearch.destroy();\n self.savedSearch = null;\n }\n\n if (linkedSearch) {\n return savedSearches.get(self.savedSearchId)\n .then(function (savedSearch) {\n self.savedSearch = savedSearch;\n self.searchSource.inherits(self.savedSearch.searchSource);\n });\n }\n });\n\n SavedVis.prototype._createVis = function () {\n var self = this;\n\n if (self.stateJSON) {\n self.visState = Vis.convertOldState(self.typeName, JSON.parse(self.stateJSON));\n }\n\n return self.vis = new Vis(\n self.searchSource.get('index'),\n self.visState\n );\n };\n\n SavedVis.prototype._updateVis = function () {\n var self = this;\n\n self.vis.indexPattern = self.searchSource.get('index');\n self.vis.setState(self.visState);\n };\n\n return SavedVis;\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/saved_visualizations/_saved_vis.js\n ** module id = 625\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n require('plugins/kibana/visualize/saved_visualizations/saved_visualizations');\n require('directives/saved_object_finder');\n require('plugins/kibana/discover/saved_searches/saved_searches');\n\n var templateStep = function (num, txt) {\n return '
' + txt + '
';\n };\n\n var module = require('modules').get('app/visualize', ['kibana/courier']);\n var routes = require('routes');\n\n /********\n /** Wizard Step 1\n /********/\n routes.when('/visualize/step/1', {\n template: templateStep(1, require('plugins/kibana/visualize/wizard/step_1.html'))\n });\n\n module.controller('VisualizeWizardStep1', function ($scope, $route, $location, timefilter, Private) {\n timefilter.enabled = false;\n\n $scope.visTypes = Private(require('registry/vis_types'));\n $scope.visTypeUrl = function (visType) {\n if (!visType.requiresSearch) return '#/visualize/create?type=' + encodeURIComponent(visType.name);\n else return '#/visualize/step/2?type=' + encodeURIComponent(visType.name);\n };\n });\n\n /********\n /** Wizard Step 2\n /********/\n routes.when('/visualize/step/2', {\n template: templateStep(2, require('plugins/kibana/visualize/wizard/step_2.html')),\n resolve: {\n indexPatternIds: function (courier) {\n return courier.indexPatterns.getIds();\n }\n }\n });\n\n module.controller('VisualizeWizardStep2', function ($route, $scope, $location, timefilter, kbnUrl) {\n var type = $route.current.params.type;\n\n $scope.step2WithSearchUrl = function (hit) {\n return kbnUrl.eval('#/visualize/create?&type={{type}}&savedSearchId={{id}}', {type: type, id: hit.id});\n };\n\n timefilter.enabled = false;\n\n $scope.indexPattern = {\n selection: null,\n list: $route.current.locals.indexPatternIds\n };\n\n $scope.$watch('stepTwoMode', function (mode) {\n if (mode === 'new') {\n if ($scope.indexPattern.list && $scope.indexPattern.list.length === 1) {\n $scope.indexPattern.selection = $scope.indexPattern.list[0];\n }\n }\n });\n\n $scope.$watch('indexPattern.selection', function (pattern) {\n if (!pattern) return;\n kbnUrl.change('/visualize/create?type={{type}}&indexPattern={{pattern}}', {type: type, pattern: pattern});\n });\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/wizard/wizard.js\n ** module id = 626\n ** module chunks = 0\n **/","define(function (require) {\n // we need to load the css ourselves\n require('plugins/markdown_vis/markdown_vis.less');\n\n // we also need to load the controller and used by the template\n require('plugins/markdown_vis/markdown_vis_controller');\n\n // register the provider with the visTypes registry so that other know it exists\n require('registry/vis_types').register(MarkdownVisProvider);\n\n function MarkdownVisProvider(Private) {\n var TemplateVisType = Private(require('components/template_vis_type/TemplateVisType'));\n\n // return the visType object, which kibana will use to display and configure new\n // Vis object of this type.\n return new TemplateVisType({\n name: 'markdown',\n title: 'Markdown widget',\n icon: 'fa-code',\n description: 'Useful for displaying explanations or instructions for dashboards.',\n template: require('plugins/markdown_vis/markdown_vis.html'),\n params: {\n editor: require('plugins/markdown_vis/markdown_vis_params.html')\n },\n requiresSearch: false\n });\n }\n\n // export the provider so that the visType can be required with Private()\n return MarkdownVisProvider;\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/markdown_vis/public/markdown_vis.js\n ** module id = 627\n ** module chunks = 0\n **/","define(function (require) {\n var marked = require('marked');\n marked.setOptions({\n gfm: true, // Github-flavored markdown\n sanitize: true // Sanitize HTML tags\n });\n\n var module = require('modules').get('kibana/markdown_vis', ['kibana']);\n module.controller('KbnMarkdownVisController', function ($scope, $sce) {\n $scope.$watch('vis.params.markdown', function (html) {\n if (!html) return;\n $scope.html = $sce.trustAsHtml(marked(html));\n });\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/markdown_vis/public/markdown_vis_controller.js\n ** module id = 628\n ** module chunks = 0\n **/","define(function (require) {\n // we need to load the css ourselves\n require('plugins/metric_vis/metric_vis.less');\n\n // we also need to load the controller and used by the template\n require('plugins/metric_vis/metric_vis_controller');\n\n // register the provider with the visTypes registry\n require('registry/vis_types').register(MetricVisProvider);\n\n function MetricVisProvider(Private) {\n var TemplateVisType = Private(require('components/template_vis_type/TemplateVisType'));\n var Schemas = Private(require('components/vis/Schemas'));\n\n // return the visType object, which kibana will use to display and configure new\n // Vis object of this type.\n return new TemplateVisType({\n name: 'metric',\n title: 'Metric',\n description: 'One big number for all of your one big number needs. Perfect for show ' +\n 'a count of hits, or the exact average a numeric field.',\n icon: 'fa-calculator',\n template: require('plugins/metric_vis/metric_vis.html'),\n params: {\n defaults: {\n fontSize: 60\n },\n editor: require('plugins/metric_vis/metric_vis_params.html')\n },\n schemas: new Schemas([\n {\n group: 'metrics',\n name: 'metric',\n title: 'Metric',\n min: 1,\n defaults: [\n { type: 'count', schema: 'metric' }\n ]\n }\n ])\n });\n }\n\n // export the provider so that the visType can be required with Private()\n return MetricVisProvider;\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/metric_vis/public/metric_vis.js\n ** module id = 629\n ** module chunks = 0\n **/","define(function (require) {\n // get the kibana/metric_vis module, and make sure that it requires the \"kibana\" module if it\n // didn't already\n var module = require('modules').get('kibana/metric_vis', ['kibana']);\n\n module.controller('KbnMetricVisController', function ($scope, Private) {\n var tabifyAggResponse = Private(require('components/agg_response/tabify/tabify'));\n\n var metrics = $scope.metrics = [];\n\n $scope.processTableGroups = function (tableGroups) {\n tableGroups.tables.forEach(function (table) {\n table.columns.forEach(function (column, i) {\n var fieldFormatter = table.aggConfig(column).fieldFormatter();\n metrics.push({\n label: column.title,\n value: fieldFormatter(table.rows[0][i])\n });\n });\n });\n };\n\n $scope.$watch('esResponse', function (resp) {\n if (resp) {\n metrics.length = 0;\n $scope.processTableGroups(tabifyAggResponse($scope.vis, resp));\n }\n });\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/metric_vis/public/metric_vis_controller.js\n ** module id = 630\n ** module chunks = 0\n **/","define(function (require) {\n // we need to load the css ourselves\n require('plugins/table_vis/table_vis.less');\n\n // we also need to load the controller and used by the template\n require('plugins/table_vis/table_vis_controller');\n\n // our params are a bit complex so we will manage them with a directive\n require('plugins/table_vis/table_vis_params');\n\n // require the directives that we use as well\n require('components/agg_table/agg_table');\n require('components/agg_table/agg_table_group');\n\n // register the provider with the visTypes registry\n require('registry/vis_types').register(TableVisTypeProvider);\n\n // define the TableVisType\n function TableVisTypeProvider(Private) {\n var TemplateVisType = Private(require('components/template_vis_type/TemplateVisType'));\n var Schemas = Private(require('components/vis/Schemas'));\n\n // define the TableVisController which is used in the template\n // by angular's ng-controller directive\n\n // return the visType object, which kibana will use to display and configure new\n // Vis object of this type.\n return new TemplateVisType({\n name: 'table',\n title: 'Data table',\n icon: 'fa-table',\n description: 'The data table provides a detailed breakdown, in tabular format, of the results of a composed ' +\n 'aggregation. Tip, a data table is available from many other charts by clicking grey bar at the bottom of the chart.',\n template: require('plugins/table_vis/table_vis.html'),\n params: {\n defaults: {\n perPage: 10,\n showPartialRows: false,\n showMeticsAtAllLevels: false\n },\n editor: ''\n },\n hierarchicalData: function (vis) {\n return Boolean(vis.params.showPartialRows || vis.params.showMeticsAtAllLevels);\n },\n schemas: new Schemas([\n {\n group: 'metrics',\n name: 'metric',\n title: 'Metric',\n min: 1,\n defaults: [\n { type: 'count', schema: 'metric' }\n ]\n },\n {\n group: 'buckets',\n name: 'bucket',\n title: 'Split Rows'\n },\n {\n group: 'buckets',\n name: 'split',\n title: 'Split Table'\n }\n ])\n });\n }\n\n return TableVisTypeProvider;\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/table_vis/public/table_vis.js\n ** module id = 632\n ** module chunks = 0\n **/","define(function (require) {\n // get the kibana/table_vis module, and make sure that it requires the \"kibana\" module if it\n // didn't already\n var module = require('modules').get('kibana/table_vis', ['kibana']);\n\n // add a controller to tha module, which will transform the esResponse into a\n // tabular format that we can pass to the table directive\n module.controller('KbnTableVisController', function ($scope, Private) {\n var tabifyAggResponse = Private(require('components/agg_response/tabify/tabify'));\n\n $scope.$watch('esResponse', function (resp, oldResp) {\n var tableGroups = $scope.tableGroups = null;\n var hasSomeRows = $scope.hasSomeRows = null;\n\n if (resp) {\n var vis = $scope.vis;\n var params = vis.params;\n\n tableGroups = tabifyAggResponse(vis, resp, {\n partialRows: params.showPartialRows,\n minimalColumns: vis.isHierarchical() && !params.showMeticsAtAllLevels,\n asAggConfigResults: true\n });\n\n hasSomeRows = tableGroups.tables.some(function haveRows(table) {\n if (table.tables) return table.tables.some(haveRows);\n return table.rows.length > 0;\n });\n }\n\n $scope.hasSomeRows = hasSomeRows;\n if (hasSomeRows) {\n $scope.tableGroups = tableGroups;\n }\n\n });\n });\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/table_vis/public/table_vis_controller.js\n ** module id = 633\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n require('modules').get('kibana/table_vis')\n .directive('tableVisParams', function () {\n return {\n restrict: 'E',\n template: require('plugins/table_vis/table_vis_params.html'),\n link: function ($scope) {\n $scope.$watchMulti([\n 'vis.params.showPartialRows',\n 'vis.params.showMeticsAtAllLevels'\n ], function () {\n if (!$scope.vis) return;\n\n var params = $scope.vis.params;\n if (params.showPartialRows || params.showMeticsAtAllLevels) {\n $scope.metricsAtAllLevels = true;\n } else {\n $scope.metricsAtAllLevels = false;\n }\n });\n }\n };\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/table_vis/public/table_vis_params.js\n ** module id = 634\n ** module chunks = 0\n **/","define(function (require) {\n // register the spy mode or it won't show up in the spys\n require('registry/spy_modes').register(VisDetailsSpyProvider);\n\n function VisDetailsSpyProvider(Notifier, $filter, $rootScope, config) {\n require('components/clipboard/clipboard');\n\n return {\n name: 'debug',\n display: 'Debug',\n template: require('plugins/vis_debug_spy/vis_debug_spy.html'),\n order: 5,\n link: function ($scope, $el) {\n $scope.$watch('vis.getState() | json', function (json) {\n $scope.visStateJson = json;\n });\n }\n };\n }\n\n return VisDetailsSpyProvider;\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/vis_debug_spy/public/vis_debug_spy.js\n ** module id = 635\n ** module chunks = 0\n **/","define(function (require) {\n return function TileMapTooltipFormatter($compile, $rootScope, Private) {\n var $ = require('jquery');\n var _ = require('lodash');\n\n var fieldFormats = Private(require('registry/field_formats'));\n var $tooltipScope = $rootScope.$new();\n var $el = $('
').html(require('components/agg_response/geo_json/_tooltip.html'));\n $compile($el)($tooltipScope);\n\n return function tooltipFormatter(feature) {\n if (!feature) return '';\n\n var value = feature.properties.value;\n var acr = feature.properties.aggConfigResult;\n var vis = acr.aggConfig.vis;\n\n var metricAgg = acr.aggConfig;\n var geoFormat = _.get(vis.aggs, 'byTypeName.geohash_grid[0].format');\n if (!geoFormat) geoFormat = fieldFormats.getDefaultInstance('geo_point');\n\n $tooltipScope.details = [\n {\n label: metricAgg.makeLabel(),\n value: metricAgg.fieldFormatter()(value)\n },\n {\n label: 'Center',\n value: geoFormat.convert({\n lat: feature.geometry.coordinates[1],\n lon: feature.geometry.coordinates[0]\n })\n }\n ];\n\n $tooltipScope.$apply();\n\n return $el.html();\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/geo_json/_tooltip_formatter.js\n ** module id = 636\n ** module chunks = 0\n **/","define(function (require) {\n var decodeGeoHash = require('utils/decode_geo_hash');\n var AggConfigResult = require('components/vis/AggConfigResult');\n var _ = require('lodash');\n\n function getAcr(val) {\n return val instanceof AggConfigResult ? val : null;\n }\n\n function unwrap(val) {\n return getAcr(val) ? val.value : val;\n }\n\n function convertRowsToFeatures(table, geoI, metricI) {\n return _.transform(table.rows, function (features, row) {\n var geohash = unwrap(row[geoI]);\n if (!geohash) return;\n\n var location = decodeGeoHash(geohash);\n var center = [\n location.longitude[2],\n location.latitude[2]\n ];\n\n var rectangle = [\n [location.longitude[0], location.latitude[0]],\n [location.longitude[1], location.latitude[0]],\n [location.longitude[1], location.latitude[1]],\n [location.longitude[0], location.latitude[1]]\n ];\n\n features.push({\n type: 'Feature',\n geometry: {\n type: 'Point',\n coordinates: center\n },\n properties: {\n geohash: geohash,\n value: unwrap(row[metricI]),\n aggConfigResult: getAcr(row[metricI]),\n center: center,\n rectangle: rectangle\n }\n });\n }, []);\n }\n\n return convertRowsToFeatures;\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/geo_json/rowsToFeatures.js\n ** module id = 637\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n return function (buckets) {\n var previous;\n _.each(buckets, function (bucket) {\n if (previous) {\n bucket._previous = previous;\n previous._next = bucket;\n }\n previous = bucket;\n });\n return buckets;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/hierarchical/_array_to_linked_list.js\n ** module id = 638\n ** module chunks = 0\n **/","define(function (require) {\n return function biuldSplitProvider(Private) {\n var transformer = Private(require('components/agg_response/hierarchical/_transform_aggregation'));\n var collectKeys = require('components/agg_response/hierarchical/_collect_keys');\n return function (agg, metric, aggData) {\n // Ceate the split structure\n var split = { label: '', slices: { children: [] } };\n\n // Transform the aggData into splits\n split.slices.children = transformer(agg, metric, aggData);\n\n // Collect all the keys\n split.names = collectKeys(split.slices.children);\n return split;\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/hierarchical/_build_split.js\n ** module id = 639\n ** module chunks = 0\n **/","define(function () {\n return function (leaf) {\n // walk up the branch for each parent\n function walk(item, memo) {\n // record the the depth\n var depth = item.depth - 1;\n\n // Using the aggConfig determine what the field name is. If the aggConfig\n // doesn't exist (which means it's an _all agg) then use the level for\n // the field name\n var col = item.aggConfig;\n var field = (col && col.params && col.params.field && col.params.field.displayName)\n || (col && col.label)\n || ('level ' + item.depth);\n\n // Add the row to the tooltipScope.rows\n memo.unshift({\n aggConfig: col,\n depth: depth,\n field: field,\n bucket: item.name,\n metric: item.size,\n item: item\n });\n\n // If the item has a parent and it's also a child then continue walking\n // up the branch\n if (item.parent && item.parent.parent) {\n return walk(item.parent, memo);\n } else {\n return memo;\n }\n }\n\n return walk(leaf, []);\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/hierarchical/_collect_branch.js\n ** module id = 640\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n return function collectKeys(children) {\n var nextChildren = _.pluck(children, 'children');\n var keys = _.pluck(children, 'name');\n return _(nextChildren)\n .map(collectKeys)\n .flattenDeep()\n .union(keys)\n .value();\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/hierarchical/_collect_keys.js\n ** module id = 641\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var extractBuckets = require('components/agg_response/hierarchical/_extract_buckets');\n return function (vis, resp) {\n\n // Create the initial results structure\n var results = { rows: [] };\n\n // Create a reference to the buckets and metrics\n var metrics = vis.aggs.bySchemaGroup.metrics;\n var buckets = vis.aggs.bySchemaGroup.buckets;\n var aggs = [];\n\n if (buckets) {\n _.each(buckets, function (bucket) {\n aggs.push(bucket);\n aggs.push(metrics);\n });\n } else {\n aggs.push(metrics);\n }\n\n // Create the columns\n results.columns = _(aggs)\n .flattenDeep()\n .map(function (agg) {\n return {\n categoryName: agg.schema.name,\n id: agg.id,\n aggConfig: agg,\n aggType: agg.type,\n field: agg.params.field,\n label: agg.type.makeLabel(agg)\n };\n })\n .value();\n\n\n // if there are no buckets then we need to just set the value and return\n if (!buckets) {\n var value = resp.aggregations\n && resp.aggregations[metrics[0].id]\n && resp.aggregations[metrics[0].id].value\n || resp.hits.total;\n results.rows.push([value]);\n return results;\n }\n\n /**\n * Walk the buckets and create records for each leaf\n * @param {aggConfig} agg The aggConfig for the current level\n * @param {object} data The aggergation object\n * @param {array} [record] The record that will eventually get pushed to the rows\n * @returns {void}\n */\n function walkBuckets(agg, data, record) {\n if (!_.isArray(record)) {\n record = [];\n }\n\n // iterate through all the buckets\n _.each(extractBuckets(data[agg.id]), function (bucket) {\n\n var _record = _.flattenDeep([record, bucket.key]);\n _.each(metrics, function (metric) {\n var value = bucket.doc_count;\n if (bucket[metric.id] && !_.isUndefined(bucket[metric.id].value)) {\n value = bucket[metric.id].value;\n }\n _record.push(value);\n });\n\n // If there is another agg to call we need to check to see if it has\n // buckets. If it does then we need to keep on walking the tree.\n // This is where the recursion happens.\n if (agg._next) {\n var nextBucket = bucket[agg._next.id];\n if (nextBucket && nextBucket.buckets) {\n walkBuckets(agg._next, bucket, _record);\n }\n }\n // if there are no more aggs to walk then push the record to the rows.\n else {\n results.rows.push(_record);\n }\n });\n }\n\n // Start walking the buckets at the beginning of the aggregations object.\n walkBuckets(buckets[0], resp.aggregations);\n\n return results;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/hierarchical/_create_raw_data.js\n ** module id = 642\n ** module chunks = 0\n **/","define(function (require) {\n return function HierarchicalTooltipFormaterProvider($rootScope, $compile, $sce) {\n var _ = require('lodash');\n var $ = require('jquery');\n var $tooltip = $(require('components/agg_response/hierarchical/_tooltip.html'));\n var collectBranch = require('components/agg_response/hierarchical/_collect_branch');\n var $tooltipScope = $rootScope.$new();\n var numeral = require('numeral');\n\n $compile($tooltip)($tooltipScope);\n\n return function (columns) {\n return function (event) {\n var datum = event.datum;\n\n // Collect the current leaf and parents into an array of values\n $tooltipScope.rows = collectBranch(datum);\n\n var metricCol = $tooltipScope.metricCol = _.find(columns, { categoryName: 'metric' });\n\n // Map those values to what the tooltipSource.rows format.\n _.forEachRight($tooltipScope.rows, function (row, i, rows) {\n row.spacer = $sce.trustAsHtml(_.repeat(' ', row.depth));\n\n var percent;\n if (row.item.percentOfGroup != null) {\n percent = row.item.percentOfGroup;\n }\n\n row.metric = metricCol.aggConfig.fieldFormatter()(row.metric);\n\n if (percent != null) {\n row.metric += ' (' + numeral(percent).format('0.[00]%') + ')';\n }\n\n return row;\n });\n\n $tooltipScope.$apply();\n return $tooltip[0].outerHTML;\n };\n\n };\n\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js\n ** module id = 643\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var extractBuckets = require('components/agg_response/hierarchical/_extract_buckets');\n return function transformAggregationProvider(Private) {\n var AggConfigResult = require('components/vis/AggConfigResult');\n return function transformAggregation(agg, metric, aggData, parent) {\n return _.map(extractBuckets(aggData), function (bucket) {\n var aggConfigResult = new AggConfigResult(\n agg,\n parent && parent.aggConfigResult,\n metric.getValue(bucket),\n agg.getKey(bucket)\n );\n\n var branch = {\n name: agg.fieldFormatter()(bucket.key),\n size: aggConfigResult.value,\n aggConfig: agg,\n aggConfigResult: aggConfigResult\n };\n\n // if the parent is defined then we need to set the parent of the branch\n // this will be used later for filters for waking up the parent path.\n if (parent) {\n branch.parent = parent;\n }\n\n // If the next bucket exists and it has children the we need to\n // transform it as well. This is where the recursion happens.\n if (agg._next) {\n var nextBucket = bucket[agg._next.id];\n if (nextBucket && nextBucket.buckets) {\n branch.children = transformAggregation(agg._next, metric, nextBucket, branch);\n }\n }\n\n return branch;\n });\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/hierarchical/_transform_aggregation.js\n ** module id = 644\n ** module chunks = 0\n **/","define(function (require) {\n return function buildHierarchicalDataProvider(Private, Notifier) {\n var _ = require('lodash');\n var buildSplit = Private(require('components/agg_response/hierarchical/_build_split'));\n var extractBuckets = require('components/agg_response/hierarchical/_extract_buckets');\n var createRawData = require('components/agg_response/hierarchical/_create_raw_data');\n var arrayToLinkedList = require('components/agg_response/hierarchical/_array_to_linked_list');\n var tooltipFormatter = Private(require('components/agg_response/hierarchical/_hierarchical_tooltip_formatter'));\n\n var AggConfigResult = require('components/vis/AggConfigResult');\n\n var notify = new Notifier({\n location: 'Pie chart response converter'\n });\n\n return function (vis, resp) {\n // Create a refrenece to the buckets\n var buckets = vis.aggs.bySchemaGroup.buckets;\n\n\n // Find the metric so it's easier to reference.\n // TODO: Change this to support multiple metrics.\n var metric = vis.aggs.bySchemaGroup.metrics[0];\n\n // Link each agg to the next agg. This will be\n // to identify the next bucket aggregation\n buckets = arrayToLinkedList(buckets);\n\n // Create the raw data to be used in the spy panel\n var raw = createRawData(vis, resp);\n\n // If buckets is falsy then we should just return the aggs\n if (!buckets) {\n var value = resp.aggregations\n && resp.aggregations[metric.id]\n && resp.aggregations[metric.id].value\n || resp.hits.total;\n return {\n hits: resp.hits.total,\n raw: raw,\n names: ['_all'],\n tooltipFormatter: tooltipFormatter(raw.columns),\n slices: {\n children: [\n { name: '_all', size: value }\n ]\n }\n };\n }\n\n var firstAgg = buckets[0];\n var aggData = resp.aggregations[firstAgg.id];\n\n if (!firstAgg._next && firstAgg.schema.name === 'split') {\n notify.error('Splitting charts without splitting slices is not supported. Pretending that we are just splitting slices.');\n }\n\n // start with splitting slices\n if (!firstAgg._next || firstAgg.schema.name === 'segment') {\n var split = buildSplit(firstAgg, metric, aggData);\n split.hits = resp.hits.total;\n split.raw = raw;\n split.tooltipFormatter = tooltipFormatter(raw.columns);\n return split;\n }\n\n // map the split aggregations into rows.\n var rows = _.map(extractBuckets(aggData), function (bucket) {\n var agg = firstAgg._next;\n var split = buildSplit(agg, metric, bucket[agg.id]);\n // Since splits display labels we need to set it.\n split.label = firstAgg.fieldFormatter()(bucket.key);\n\n var displayName = firstAgg.fieldDisplayName();\n if (!_.isEmpty(displayName)) split.label += ': ' + displayName;\n\n split.tooltipFormatter = tooltipFormatter(raw.columns);\n var aggConfigResult = new AggConfigResult(firstAgg, null, null, firstAgg.getKey(bucket));\n split.split = { aggConfig: firstAgg, aggConfigResult: aggConfigResult, key: bucket.key };\n _.each(split.slices.children, function (child) {\n child.aggConfigResult.$parent = aggConfigResult;\n });\n return split;\n });\n\n var result = { hits: resp.hits.total, raw: raw };\n if (firstAgg.params.row) {\n result.rows = rows;\n } else {\n result.columns = rows;\n }\n\n return result;\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/hierarchical/build_hierarchical_data.js\n ** module id = 645\n ** module chunks = 0\n **/","define(function (require) {\n return function NormalizeChartDataFactory(Private) {\n return {\n hierarchical: Private(require('components/agg_response/hierarchical/build_hierarchical_data')),\n pointSeries: Private(require('components/agg_response/point_series/point_series')),\n tabify: Private(require('components/agg_response/tabify/tabify')),\n geoJson: Private(require('components/agg_response/geo_json/geo_json'))\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/index.js\n ** module id = 646\n ** module chunks = 0\n **/","define(function (require) {\n return function PointSeriesAddToSiri() {\n return function addToSiri(series, point, id, label) {\n id = id == null ? '' : id + '';\n\n if (series[id]) {\n series[id].values.push(point);\n return;\n }\n\n series[id] = {\n label: label == null ? id : label,\n values: [point]\n };\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/point_series/_add_to_siri.js\n ** module id = 647\n ** module chunks = 0\n **/","define(function (require) {\n return function PointSeriesFakeXAxis(Private) {\n var AggConfig = Private(require('components/vis/AggConfig'));\n var AggType = Private(require('components/agg_types/_agg_type'));\n\n var allAgg = new AggType({\n name: 'all',\n title: 'All docs',\n ordered: false,\n hasNoDsl: true\n });\n\n return function makeFakeXAxis(vis) {\n var fake = new AggConfig(vis, {\n type: allAgg,\n schema: vis.type.schemas.all.byName.segment\n });\n\n return {\n i: -1,\n agg: fake,\n col: {\n aggConfig: fake,\n label: fake.makeLabel()\n }\n };\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/point_series/_fake_x_aspect.js\n ** module id = 648\n ** module chunks = 0\n **/","define(function (require) {\n return function PointSeriesGetAspects(Private) {\n var _ = require('lodash');\n var fakeXAspect = Private(require('components/agg_response/point_series/_fake_x_aspect'));\n\n var map = {\n segment: 'x',\n metric: 'y',\n radius: 'z',\n width: 'width',\n group: 'series'\n };\n\n function columnToAspect(aspects, col, i) {\n var schema = col.aggConfig.schema.name;\n\n var name = map[schema];\n if (!name) throw new TypeError('unknown schema name \"' + schema + '\"');\n\n var aspect = {\n i: i,\n col: col,\n agg: col.aggConfig\n };\n\n if (!aspects[name]) aspects[name] = [];\n aspects[name].push(aspect);\n }\n\n /**\n * Identify and group the columns based on the aspect of the pointSeries\n * they represent.\n *\n * @param {array} columns - the list of columns\n * @return {object} - an object with a key for each aspect (see map). The values\n * may be undefined, a single aspect, or an array of aspects.\n */\n return function getAspects(vis, table) {\n var aspects = _(table.columns)\n // write each column into the aspects under it's group\n .transform(columnToAspect, {})\n // unwrap groups that only have one value, and validate groups that have more\n .transform(function (aspects, group, name) {\n if (name !== 'y' && group.length > 1) {\n throw new TypeError('Only multiple metrics are supported in point series');\n }\n\n aspects[name] = group.length > 1 ? group : group[0];\n })\n .value();\n\n if (!aspects.x) {\n aspects.x = fakeXAspect(vis);\n }\n\n return aspects;\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/point_series/_get_aspects.js\n ** module id = 649\n ** module chunks = 0\n **/","define(function (require) {\n return function PointSeriesGetPoint() {\n var _ = require('lodash');\n function unwrap(aggConfigResult, def) {\n return aggConfigResult ? aggConfigResult.value : def;\n }\n\n return function getPoint(x, series, yScale, row, y, z) {\n var zRow = z && row[z.i];\n var xRow = row[x.i];\n\n var point = {\n x: unwrap(xRow, '_all'),\n xi: xRow && xRow.$order,\n y: unwrap(row[y.i]),\n z: zRow && unwrap(zRow),\n aggConfigResult: row[y.i],\n extraMetrics: _.compact([zRow]),\n yScale: yScale\n };\n\n if (point.y === 'NaN' || point.y == null) {\n // filter out NaN from stats and null\n // from metrics that are not based at zero\n return;\n }\n\n if (series) {\n point.series = series.agg.fieldFormatter()(unwrap(row[series.i]));\n }\n\n if (yScale) {\n point.y *= yScale;\n }\n\n return point;\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/point_series/_get_point.js\n ** module id = 650\n ** module chunks = 0\n **/","define(function (require) {\n return function PointSeriesGetSeries(Private) {\n var _ = require('lodash');\n var getPoint = Private(require('components/agg_response/point_series/_get_point'));\n var addToSiri = Private(require('components/agg_response/point_series/_add_to_siri'));\n\n return function getSeries(rows, chart) {\n var aspects = chart.aspects;\n var multiY = _.isArray(aspects.y);\n var yScale = chart.yScale;\n var partGetPoint = _.partial(getPoint, aspects.x, aspects.series, yScale);\n\n var series = _(rows)\n .transform(function (series, row) {\n\n if (!multiY) {\n var point = partGetPoint(row, aspects.y, aspects.z);\n if (point) addToSiri(series, point, point.series);\n return;\n }\n\n aspects.y.forEach(function (y) {\n var point = partGetPoint(row, y, aspects.z);\n if (!point) return;\n\n var prefix = point.series ? point.series + ': ' : '';\n var seriesId = prefix + y.agg.id;\n var seriesLabel = prefix + y.col.title;\n\n addToSiri(series, point, seriesId, seriesLabel);\n });\n\n }, {})\n .values()\n .value();\n\n if (multiY) {\n series = _.sortBy(series, function (siri) {\n var firstVal = siri.values[0];\n var y;\n\n if (firstVal) {\n var agg = firstVal.aggConfigResult.aggConfig;\n y = _.find(aspects.y, function (y) {\n return y.agg === agg;\n });\n }\n\n return y ? y.i : series.length;\n });\n }\n\n return series;\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/point_series/_get_series.js\n ** module id = 651\n ** module chunks = 0\n **/","define(function () {\n return function PointSeriesInitX() {\n return function initXAxis(chart) {\n var x = chart.aspects.x;\n chart.xAxisFormatter = x.agg ? x.agg.fieldFormatter() : String;\n chart.xAxisLabel = x.col.title;\n\n if (!x.agg || !x.agg.type.ordered) return;\n\n chart.ordered = {};\n var xAggOutput = x.agg.write();\n if (xAggOutput.params.interval) {\n chart.ordered.interval = xAggOutput.params.interval;\n }\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/point_series/_init_x_axis.js\n ** module id = 652\n ** module chunks = 0\n **/","define(function (require) {\n return function PointSeriesInitYAxis() {\n var _ = require('lodash');\n\n return function initYAxis(chart) {\n var y = chart.aspects.y;\n var x = chart.aspects.x;\n\n if (_.isArray(y)) {\n // TODO: vis option should allow choosing this format\n chart.yAxisFormatter = y[0].agg.fieldFormatter();\n chart.yAxisLabel = ''; // use the legend\n } else {\n chart.yAxisFormatter = y.agg.fieldFormatter();\n chart.yAxisLabel = y.col.title;\n }\n\n var xAggOutput = x.agg.write();\n chart.yScale = xAggOutput.metricScale || null;\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/point_series/_init_y_axis.js\n ** module id = 653\n ** module chunks = 0\n **/","define(function (require) {\n return function PointSeriesOrderedDateAxis(timefilter) {\n var moment = require('moment');\n\n return function orderedDateAxis(vis, chart) {\n var xAgg = chart.aspects.x.agg;\n var buckets = xAgg.buckets;\n var format = buckets.getScaledDateFormat();\n\n chart.xAxisFormatter = function (val) {\n return moment(val).format(format);\n };\n\n chart.ordered = {\n date: true,\n interval: buckets.getInterval(),\n };\n\n var axisOnTimeField = xAgg.fieldIsTimeField();\n var bounds = buckets.getBounds();\n if (bounds && axisOnTimeField) {\n chart.ordered.min = bounds.min;\n chart.ordered.max = bounds.max;\n } else {\n chart.ordered.endzones = false;\n }\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/point_series/_ordered_date_axis.js\n ** module id = 654\n ** module chunks = 0\n **/","define(function (require) {\n return function PointSeriesTooltipFormatter($compile, $rootScope) {\n var $ = require('jquery');\n\n var $tooltipScope = $rootScope.$new();\n var $tooltip = $(require('components/agg_response/point_series/_tooltip.html'));\n $compile($tooltip)($tooltipScope);\n\n return function tooltipFormatter(event) {\n var datum = event.datum;\n if (!datum || !datum.aggConfigResult) return '';\n\n var details = $tooltipScope.details = [];\n var result = { $parent: datum.aggConfigResult };\n\n function addDetail(result) {\n var agg = result.aggConfig;\n var value = result.value;\n\n var detail = {\n value: agg.fieldFormatter()(value),\n label: agg.makeLabel()\n };\n\n if (agg === datum.aggConfigResult.aggConfig) {\n detail.percent = event.percent;\n if (datum.yScale != null) {\n detail.value = agg.fieldFormatter()(value * datum.yScale);\n }\n }\n\n details.push(detail);\n }\n\n datum.extraMetrics.forEach(addDetail);\n while ((result = result.$parent) && result.aggConfig) {\n addDetail(result);\n }\n\n\n $tooltipScope.$apply();\n return $tooltip[0].outerHTML;\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/point_series/_tooltip_formatter.js\n ** module id = 655\n ** module chunks = 0\n **/","define(function (require) {\n return function AggResponseBucketsProvider() {\n var _ = require('lodash');\n\n function Buckets(aggResp) {\n aggResp = aggResp || false;\n this.buckets = aggResp.buckets || [];\n this.objectMode = _.isPlainObject(this.buckets);\n\n if (this.objectMode) {\n this._keys = _.keys(this.buckets);\n this.length = this._keys.length;\n } else {\n this.length = this.buckets.length;\n }\n }\n\n Buckets.prototype.forEach = function (fn) {\n var buckets = this.buckets;\n\n if (this.objectMode) {\n this._keys.forEach(function (key) {\n fn(buckets[key], key);\n });\n } else {\n buckets.forEach(function (bucket) {\n fn(bucket, bucket.key);\n });\n }\n };\n\n return Buckets;\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/tabify/_buckets.js\n ** module id = 656\n ** module chunks = 0\n **/","define(function (require) {\n return function GetColumnsProvider(Private) {\n var _ = require('lodash');\n var AggConfig = Private(require('components/vis/AggConfig'));\n\n return function getColumns(vis, minimal) {\n var aggs = vis.aggs.getResponseAggs();\n\n if (minimal == null) minimal = !vis.isHierarchical();\n\n if (!vis.aggs.bySchemaGroup.metrics) {\n aggs.push(new AggConfig(vis, {\n type: 'count',\n schema: vis.type.schemas.metrics[0].name\n }));\n }\n\n // pick the columns\n if (minimal) {\n return aggs.map(function (agg) {\n return { aggConfig: agg };\n });\n }\n\n // supposed to be bucket,...metrics,bucket,...metrics\n var columns = [];\n\n // seperate the metrics\n var grouped = _.groupBy(aggs, function (agg) {\n return agg.schema.group;\n });\n\n if (!grouped.buckets) {\n // return just the metrics, in column format\n return grouped.metrics.map(function (agg) {\n return { aggConfig: agg };\n });\n }\n\n // return the buckets, and after each place all of the metrics\n grouped.buckets.forEach(function (agg, i) {\n columns.push({ aggConfig: agg });\n grouped.metrics.forEach(function (metric) {\n columns.push({ aggConfig: metric });\n });\n });\n\n return columns;\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/tabify/_get_columns.js\n ** module id = 657\n ** module chunks = 0\n **/","define(function (require) {\n return function TabbedAggResponseWriterProvider(Private) {\n var _ = require('lodash');\n var Table = Private(require('components/agg_response/tabify/_table'));\n var TableGroup = Private(require('components/agg_response/tabify/_table_group'));\n var getColumns = Private(require('components/agg_response/tabify/_get_columns'));\n\n var AggConfigResult = require('components/vis/AggConfigResult');\n\n _.class(SplitAcr).inherits(AggConfigResult);\n function SplitAcr(agg, parent, key) {\n SplitAcr.Super.call(this, agg, parent, key, key);\n }\n\n /**\n * Writer class that collects information about an aggregation response and\n * produces a table, or a series of tables.\n *\n * @param {Vis} vis - the vis object to which the aggregation response correlates\n */\n function TabbedAggResponseWriter(vis, opts) {\n this.vis = vis;\n this.opts = opts || {};\n this.rowBuffer = [];\n\n var visIsHier = vis.isHierarchical();\n\n // do the options allow for splitting? we will only split if true and\n // tabify calls the split method.\n this.canSplit = this.opts.canSplit !== false;\n\n // should we allow partial rows to be included in the tables? if a\n // partial row is found, it is filled with empty strings ''\n this.partialRows = this.opts.partialRows == null ? visIsHier : this.opts.partialRows;\n\n // if true, we will not place metric columns after every bucket\n // even if the vis is hierarchical. if false, and the vis is\n // hierarchical, then we will display metric columns after\n // every bucket col\n this.minimalColumns = visIsHier ? !!this.opts.minimalColumns : true;\n\n // true if we can expect metrics to have been calculated\n // for every bucket\n this.metricsForAllBuckets = visIsHier;\n\n // if true, values will be wrapped in aggConfigResult objects which link them\n // to their aggConfig and enable the filterbar and tooltip formatters\n this.asAggConfigResults = !!this.opts.asAggConfigResults;\n\n this.columns = getColumns(vis, this.minimalColumns);\n this.aggStack = _.pluck(this.columns, 'aggConfig');\n\n this.root = new TableGroup();\n this.acrStack = [];\n this.splitStack = [this.root];\n }\n\n /**\n * Create a Table of TableGroup object, link it to it's parent (if any), and determine if\n * it's the root\n *\n * @param {boolean} group - is this a TableGroup or just a normal Table\n * @param {AggConfig} agg - the aggregation that create this table, only applies to groups\n * @param {any} key - the bucketKey that this table relates to\n * @return {Table/TableGroup} table - the created table\n */\n TabbedAggResponseWriter.prototype._table = function (group, agg, key) {\n var Class = (group) ? TableGroup : Table;\n var table = new Class();\n var parent = this.splitStack[0];\n\n if (group) {\n table.aggConfig = agg;\n table.key = key;\n table.title = (table.fieldFormatter()(key)) + ': ' + agg.makeLabel() ;\n }\n\n // link the parent and child\n table.$parent = parent;\n parent.tables.push(table);\n\n return table;\n };\n\n /**\n * Enter into a split table, called for each bucket of a splitting agg. The new table\n * is either created or located using the agg and key arguments, and then the block is\n * executed with the table as it's this context. Within this function, you should\n * walk into the remaining branches and end up writing some rows to the table.\n *\n * @param {aggConfig} agg - the aggConfig that created this split\n * @param {Buckets} buckets - the buckets produces by the agg\n * @param {function} block - a function to execute for each sub bucket\n */\n TabbedAggResponseWriter.prototype.split = function (agg, buckets, block) {\n var self = this;\n\n if (!self.canSplit) {\n throw new Error('attempted to split when splitting is disabled');\n }\n\n self._removeAggFromColumns(agg);\n\n buckets.forEach(function (bucket, key) {\n // find the existing split that we should extend\n var tableGroup = _.find(self.splitStack[0].tables, { aggConfig: agg, key: key });\n // create the split if it doesn't exist yet\n if (!tableGroup) tableGroup = self._table(true, agg, key);\n\n var splitAcr = false;\n if (self.asAggConfigResults) {\n splitAcr = self._injectParentSplit(agg, key);\n }\n\n // push the split onto the stack so that it will receive written tables\n self.splitStack.unshift(tableGroup);\n\n // call the block\n if (_.isFunction(block)) block.call(self, bucket, key);\n\n // remove the split from the stack\n self.splitStack.shift();\n splitAcr && _.pull(self.acrStack, splitAcr);\n });\n };\n\n TabbedAggResponseWriter.prototype._removeAggFromColumns = function (agg) {\n var i = _.findIndex(this.columns, function (col) {\n return col.aggConfig === agg;\n });\n\n // we must have already removed this column\n if (i === -1) return;\n\n this.columns.splice(i, 1);\n\n if (this.minimalColumns) return;\n\n // hierarchical vis creats additional columns for each bucket\n // we will remove those too\n var mCol = this.columns.splice(i, 1).pop();\n var mI = _.findIndex(this.aggStack, function (agg) {\n return agg === mCol.aggConfig;\n });\n\n if (mI > -1) this.aggStack.splice(mI, 1);\n };\n\n /**\n * When a split is found while building the aggConfigResult tree, we\n * want to push the split into the tree at another point. Since each\n * branch in the tree is a double-linked list we need do some special\n * shit to pull this off.\n *\n * @private\n * @param {AggConfig} - The agg which produced the split bucket\n * @param {any} - The value which identifies the bucket\n * @return {SplitAcr} - the AggConfigResult created for the split bucket\n */\n TabbedAggResponseWriter.prototype._injectParentSplit = function (agg, key) {\n var oldList = this.acrStack;\n var newList = this.acrStack = [];\n\n // walk from right to left through the old stack\n // and move things to the new stack\n var injected = false;\n\n if (!oldList.length) {\n injected = new SplitAcr(agg, null, key);\n newList.unshift(injected);\n return injected;\n }\n\n // walk from right to left, emptying the previous list\n while (oldList.length) {\n var acr = oldList.pop();\n\n // ignore other splits\n if (acr instanceof SplitAcr) {\n newList.unshift(acr);\n continue;\n }\n\n // inject the split\n if (!injected) {\n injected = new SplitAcr(agg, newList[0], key);\n newList.unshift(injected);\n }\n\n var newAcr = new AggConfigResult(acr.aggConfig, newList[0], acr.value, acr.aggConfig.getKey(acr));\n newList.unshift(newAcr);\n\n // and replace the acr in the row buffer if its there\n var rowI = this.rowBuffer.indexOf(acr);\n if (rowI > -1) {\n this.rowBuffer[rowI] = newAcr;\n }\n }\n\n return injected;\n };\n\n /**\n * Push a value into the row, then run a block. Once the block is\n * complete the value is pulled from the stack.\n *\n * @param {any} value - the value that should be added to the row\n * @param {function} block - the function to run while this value is in the row\n * @return {any} - the value that was added\n */\n TabbedAggResponseWriter.prototype.cell = function (agg, value, block) {\n if (this.asAggConfigResults) {\n value = new AggConfigResult(agg, this.acrStack[0], value, value);\n }\n\n var staskResult = this.asAggConfigResults && value.type === 'bucket';\n\n this.rowBuffer.push(value);\n if (staskResult) this.acrStack.unshift(value);\n\n if (_.isFunction(block)) block.call(this);\n\n this.rowBuffer.pop(value);\n if (staskResult) this.acrStack.shift();\n\n return value;\n };\n\n /**\n * Create a new row by reading the row buffer. This will do nothing if\n * the row is incomplete and the vis this data came from is NOT flagged as\n * hierarchical.\n *\n * @param {array} [buffer] - optional buffer to use in place of the stored rowBuffer\n * @return {undefined}\n */\n TabbedAggResponseWriter.prototype.row = function (buffer) {\n var cells = buffer || this.rowBuffer.slice(0);\n\n if (!this.partialRows && cells.length < this.columns.length) {\n return;\n }\n\n var split = this.splitStack[0];\n var table = split.tables[0] || this._table(false);\n\n while (cells.length < this.columns.length) cells.push('');\n table.rows.push(cells);\n return table;\n };\n\n /**\n * Get the actual response\n *\n * @return {object} - the final table-tree\n */\n TabbedAggResponseWriter.prototype.response = function () {\n var columns = this.columns;\n\n // give the columns some metadata\n columns.map(function (col) {\n col.title = col.aggConfig.makeLabel();\n });\n\n // walk the tree and write the columns to each table\n (function step(table, group) {\n if (table.tables) table.tables.forEach(step);\n else table.columns = columns.slice(0);\n }(this.root));\n\n if (this.canSplit) return this.root;\n\n var table = this.root.tables[0];\n if (!table) return;\n\n delete table.$parent;\n return table;\n };\n\n return TabbedAggResponseWriter;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/tabify/_response_writer.js\n ** module id = 658\n ** module chunks = 0\n **/","define(function (require) {\n return function TableGroupProvider() {\n var _ = require('lodash');\n\n /**\n * Simple object that wraps multiple tables. It contains information about the aggConfig\n * and bucket that created this group and a list of the tables within it.\n */\n function TableGroup() {\n this.aggConfig = null;\n this.key = null;\n this.title = null;\n this.tables = [];\n }\n\n TableGroup.prototype.field = function () {\n if (this.aggConfig) return this.aggConfig.field();\n };\n\n TableGroup.prototype.fieldFormatter = function () {\n if (this.aggConfig) return this.aggConfig.fieldFormatter();\n };\n\n return TableGroup;\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/tabify/_table_group.js\n ** module id = 659\n ** module chunks = 0\n **/","define(function (require) {\n require('components/compile_recursive_directive');\n require('components/agg_table/agg_table');\n\n require('modules')\n .get('kibana')\n .directive('kbnAggTableGroup', function (compileRecursiveDirective) {\n return {\n restrict: 'E',\n template: require('components/agg_table/agg_table_group.html'),\n scope: {\n group: '=',\n perPage: '=?'\n },\n compile: function ($el) {\n // Use the compile function from the RecursionHelper,\n // And return the linking function(s) which it returns\n return compileRecursiveDirective.compile($el, {\n post: function ($scope) {\n $scope.$watch('group', function (group) {\n // clear the previous \"state\"\n $scope.rows = $scope.columns = false;\n\n if (!group || !group.tables.length) return;\n\n var firstTable = group.tables[0];\n var params = firstTable.aggConfig && firstTable.aggConfig.params;\n // render groups that have Table children as if they were rows, because itteration is cleaner\n var childLayout = (params && !params.row) ? 'columns' : 'rows';\n\n $scope[childLayout] = group.tables;\n });\n }\n });\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_table/agg_table_group.js\n ** module id = 660\n ** module chunks = 0\n **/","define(function (require) {\n return function BucketCountBetweenUtil() {\n\n /**\n * Count the number of bucket aggs between two agg config objects owned\n * by the same vis.\n *\n * If one of the two aggs was not found in the agg list, returns null.\n * If a was found after b, the count will be negative\n * If a was found first, the count will be positive.\n *\n * @param {AggConfig} aggConfigA - the aggConfig that is expected first\n * @param {AggConfig} aggConfigB - the aggConfig that is expected second\n * @return {null|number}\n */\n function bucketCountBetween(aggConfigA, aggConfigB) {\n var aggs = aggConfigA.vis.aggs.getRequestAggs();\n\n var aIndex = aggs.indexOf(aggConfigA);\n var bIndex = aggs.indexOf(aggConfigB);\n\n if (aIndex === -1 || bIndex === -1) {\n return null;\n }\n\n // return a negative distance, if b is before a\n var negative = (aIndex > bIndex);\n\n var count = aggs\n .slice(Math.min(aIndex, bIndex), Math.max(aIndex, bIndex))\n .reduce(function (count, cfg) {\n if (cfg === aggConfigA || cfg === aggConfigB || cfg.schema.group !== 'buckets') {\n return count;\n } else {\n return count + 1;\n }\n }, 0);\n\n return (negative ? -1 : 1) * count;\n }\n\n return bucketCountBetween;\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/_bucket_count_between.js\n ** module id = 661\n ** module chunks = 0\n **/","define(function (require) {\n return function createDateHistogramFilterProvider(Private) {\n var moment = require('moment');\n var buildRangeFilter = require('components/filter_manager/lib/range');\n\n return function (agg, key) {\n var start = moment(key);\n var interval = agg.buckets.getInterval();\n\n return buildRangeFilter(agg.params.field, {\n gte: start.valueOf(),\n lte: start.add(interval).subtract(1, 'ms').valueOf()\n }, agg.vis.indexPattern);\n };\n\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/create_filter/date_histogram.js\n ** module id = 662\n ** module chunks = 0\n **/","define(function (require) {\n var dateRange = require('utils/date_range');\n\n return function createDateRangeFilterProvider(config) {\n var buildRangeFilter = require('components/filter_manager/lib/range');\n\n return function (agg, key) {\n var range = dateRange.parse(key, config.get('dateFormat'));\n\n var filter = {};\n if (range.from) filter.gte = +range.from;\n if (range.to) filter.lt = +range.to;\n if (range.to && range.from) filter.format = 'epoch_millis';\n\n return buildRangeFilter(agg.params.field, filter, agg.vis.indexPattern);\n };\n\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/create_filter/date_range.js\n ** module id = 663\n ** module chunks = 0\n **/","define(function (require) {\n var buildQueryFilter = require('components/filter_manager/lib/query');\n var _ = require('lodash');\n return function CreateFilterFiltersProvider(Private) {\n return function (aggConfig, key) {\n // have the aggConfig write agg dsl params\n var dslFilters = _.get(aggConfig.toDsl(), 'filters.filters');\n var filter = dslFilters[key];\n\n if (filter) {\n return buildQueryFilter(filter.query, aggConfig.vis.indexPattern.id);\n }\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/create_filter/filters.js\n ** module id = 664\n ** module chunks = 0\n **/","define(function (require) {\n var buildRangeFilter = require('components/filter_manager/lib/range');\n\n return function createHistogramFitlerProvider(Private) {\n return function (aggConfig, key) {\n var value = parseInt(key, 10);\n\n return buildRangeFilter(aggConfig.params.field, {\n gte: value,\n lt: value + aggConfig.params.interval\n }, aggConfig.vis.indexPattern);\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/create_filter/histogram.js\n ** module id = 665\n ** module chunks = 0\n **/","define(function (require) {\n var CidrMask = require('utils/cidr_mask');\n var buildRangeFilter = require('components/filter_manager/lib/range');\n return function createIpRangeFilterProvider() {\n return function (aggConfig, key) {\n var range;\n if (aggConfig.params.ipRangeType === 'mask') {\n range = new CidrMask(key).getRange();\n } else {\n var addresses = key.split(/\\-/);\n range = {\n from: addresses[0],\n to: addresses[1]\n };\n }\n\n return buildRangeFilter(aggConfig.params.field, {gte: range.from, lte: range.to}, aggConfig.vis.indexPattern);\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/create_filter/ip_range.js\n ** module id = 666\n ** module chunks = 0\n **/","define(function (require) {\n var buildRangeFilter = require('components/filter_manager/lib/range');\n return function createRangeFilterProvider(Private) {\n return function (aggConfig, key) {\n var splits = key.split(/\\-/);\n var gte = Number(splits[0]);\n var lt = Number(splits[1]);\n return buildRangeFilter(aggConfig.params.field, {\n gte: gte,\n lt: lt\n }, aggConfig.vis.indexPattern);\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/create_filter/range.js\n ** module id = 667\n ** module chunks = 0\n **/","define(function (require) {\n return function DateHistogramAggType(timefilter, config, Private) {\n var _ = require('lodash');\n var moment = require('moment');\n var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type'));\n var TimeBuckets = Private(require('components/time_buckets/time_buckets'));\n var createFilter = Private(require('components/agg_types/buckets/create_filter/date_histogram'));\n var intervalOptions = Private(require('components/agg_types/buckets/_interval_options'));\n\n var tzOffset = moment().format('Z');\n\n function getInterval(agg) {\n var interval = _.get(agg, ['params', 'interval']);\n if (interval && interval.val === 'custom') interval = _.get(agg, ['params', 'customInterval']);\n return interval;\n }\n\n function setBounds(agg, force) {\n if (agg.buckets._alreadySet && !force) return;\n agg.buckets._alreadySet = true;\n agg.buckets.setBounds(agg.fieldIsTimeField() && timefilter.getActiveBounds());\n }\n\n require('filters/field_type');\n require('components/validateDateInterval');\n\n return new BucketAggType({\n name: 'date_histogram',\n title: 'Date Histogram',\n ordered: {\n date: true\n },\n makeLabel: function (agg) {\n var output = this.params.write(agg);\n var params = output.params;\n return params.field + ' per ' + (output.metricScaleText || output.bucketInterval.description);\n },\n createFilter: createFilter,\n decorateAggConfig: function () {\n var buckets;\n return {\n buckets: {\n configurable: true,\n get: function () {\n if (buckets) return buckets;\n\n buckets = new TimeBuckets();\n buckets.setInterval(getInterval(this));\n setBounds(this);\n\n return buckets;\n }\n }\n };\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: 'date',\n default: function (agg) {\n return agg.vis.indexPattern.timeFieldName;\n },\n onChange: function (agg) {\n if (_.get(agg, 'params.interval.val') === 'auto' && !agg.fieldIsTimeField()) {\n delete agg.params.interval;\n }\n\n setBounds(agg, true);\n }\n },\n\n {\n name: 'interval',\n type: 'optioned',\n deserialize: function (state) {\n var interval = _.find(intervalOptions, {val: state});\n return interval || _.find(intervalOptions, function (option) {\n // For upgrading from 4.0.x to 4.1.x - intervals are now stored as 'y' instead of 'year',\n // but this maps the old values to the new values\n return Number(moment.duration(1, state)) === Number(moment.duration(1, option.val));\n });\n },\n default: 'auto',\n options: intervalOptions,\n editor: require('components/agg_types/controls/interval.html'),\n onRequest: function (agg) {\n setBounds(agg, true);\n },\n write: function (agg, output) {\n setBounds(agg);\n agg.buckets.setInterval(getInterval(agg));\n\n var interval = agg.buckets.getInterval();\n output.bucketInterval = interval;\n output.params.interval = interval.expression;\n output.params.time_zone = tzOffset;\n\n var scaleMetrics = interval.scaled && interval.scale < 1;\n if (scaleMetrics) {\n scaleMetrics = _.every(agg.vis.aggs.bySchemaGroup.metrics, function (agg) {\n return agg.type && (agg.type.name === 'count' || agg.type.name === 'sum');\n });\n }\n\n if (scaleMetrics) {\n output.metricScale = interval.scale;\n output.metricScaleText = interval.preScaled.description;\n }\n }\n },\n\n {\n name: 'customInterval',\n default: '2h',\n write: _.noop\n },\n\n {\n name: 'format'\n },\n\n {\n name: 'min_doc_count',\n default: 1\n },\n\n {\n name: 'extended_bounds',\n default: {},\n write: function (agg, output) {\n var val = agg.params.extended_bounds;\n\n if (val.min != null || val.max != null) {\n output.params.extended_bounds = {\n min: moment(val.min).valueOf(),\n max: moment(val.max).valueOf()\n };\n\n return;\n }\n\n var bounds = timefilter.getActiveBounds();\n if (bounds) {\n output.params.extended_bounds = {\n min: moment(bounds.min).valueOf(),\n max: moment(bounds.max).valueOf()\n };\n }\n }\n }\n ]\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/date_histogram.js\n ** module id = 668\n ** module chunks = 0\n **/","define(function (require) {\n var moment = require('moment');\n var dateRange = require('utils/date_range');\n require('directives/validate_date_math');\n\n return function DateRangeAggDefinition(Private, config) {\n var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type'));\n var createFilter = Private(require('components/agg_types/buckets/create_filter/date_range'));\n var fieldFormats = Private(require('registry/field_formats'));\n\n\n return new BucketAggType({\n name: 'date_range',\n title: 'Date Range',\n createFilter: createFilter,\n getKey: function (bucket, key, agg) {\n var formatter;\n if (agg.field()) {\n formatter = agg.field().format.getConverterFor('text');\n } else {\n formatter = fieldFormats.getDefaultInstance('date').getConverterFor('text');\n }\n return dateRange.toString(bucket, formatter);\n },\n getFormat: function () {\n return fieldFormats.getDefaultInstance('string');\n },\n makeLabel: function (aggConfig) {\n return aggConfig.params.field.displayName + ' date ranges';\n },\n params: [{\n name: 'field',\n filterFieldTypes: 'date',\n default: function (agg) {\n return agg.vis.indexPattern.timeFieldName;\n }\n }, {\n name: 'ranges',\n default: [{\n from: 'now-1w/w',\n to: 'now'\n }],\n editor: require('components/agg_types/controls/date_ranges.html')\n }]\n });\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/date_range.js\n ** module id = 669\n ** module chunks = 0\n **/","define(function (require) {\n return function FiltersAggDefinition(Private, Notifier) {\n var _ = require('lodash');\n var angular = require('angular');\n var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type'));\n var createFilter = Private(require('components/agg_types/buckets/create_filter/filters'));\n var decorateQuery = Private(require('components/courier/data_source/_decorate_query'));\n var notif = new Notifier({ location: 'Filters Agg' });\n\n return new BucketAggType({\n name: 'filters',\n title: 'Filters',\n createFilter: createFilter,\n params: [\n {\n name: 'filters',\n editor: require('components/agg_types/controls/filters.html'),\n default: [ {input: {}, label: ''} ],\n write: function (aggConfig, output) {\n var inFilters = aggConfig.params.filters;\n if (!_.size(inFilters)) return;\n\n var outFilters = _.transform(inFilters, function (filters, filter) {\n var input = filter.input;\n if (!input) return notif.log('malformed filter agg params, missing \"input\" query');\n\n var query = input.query;\n if (!query) return notif.log('malformed filter agg params, missing \"query\" on input');\n\n decorateQuery(query);\n\n var label = filter.label || _.get(query, 'query_string.query') || angular.toJson(query);\n filters[label] = input;\n }, {});\n\n if (!_.size(outFilters)) return;\n\n var params = output.params || (output.params = {});\n params.filters = outFilters;\n }\n }\n ]\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/filters.js\n ** module id = 670\n ** module chunks = 0\n **/","define(function (require) {\n return function GeoHashAggDefinition(Private, config) {\n var _ = require('lodash');\n var moment = require('moment');\n var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type'));\n var defaultPrecision = 2;\n\n function getPrecision(precision) {\n var maxPrecision = _.parseInt(config.get('visualization:tileMap:maxPrecision'));\n\n precision = parseInt(precision, 10);\n\n if (isNaN(precision)) {\n precision = defaultPrecision;\n }\n\n if (precision > maxPrecision) {\n return maxPrecision;\n }\n\n return precision;\n }\n\n return new BucketAggType({\n name: 'geohash_grid',\n title: 'Geohash',\n params: [\n {\n name: 'field',\n filterFieldTypes: 'geo_point'\n },\n {\n name: 'autoPrecision',\n default: true,\n write: _.noop\n },\n {\n name: 'mapZoom',\n write: _.noop\n },\n {\n name: 'mapCenter',\n write: _.noop\n },\n {\n name: 'precision',\n default: defaultPrecision,\n editor: require('components/agg_types/controls/precision.html'),\n controller: function ($scope) {\n $scope.$watchMulti([\n 'agg.params.autoPrecision',\n 'outputAgg.params.precision'\n ], function (cur, prev) {\n if (cur[1]) $scope.agg.params.precision = cur[1];\n });\n },\n deserialize: getPrecision,\n write: function (aggConfig, output) {\n output.params.precision = getPrecision(aggConfig.params.precision);\n }\n }\n ]\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/geo_hash.js\n ** module id = 671\n ** module chunks = 0\n **/","define(function (require) {\n return function HistogramAggDefinition(Private) {\n var _ = require('lodash');\n var moment = require('moment');\n var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type'));\n var createFilter = Private(require('components/agg_types/buckets/create_filter/histogram'));\n\n require('components/validateDateInterval');\n\n return new BucketAggType({\n name: 'histogram',\n title: 'Histogram',\n ordered: {},\n makeLabel: function (aggConfig) {\n return aggConfig.params.field.displayName;\n },\n createFilter: createFilter,\n params: [\n {\n name: 'field',\n filterFieldTypes: 'number'\n },\n\n {\n name: 'interval',\n editor: require('components/agg_types/controls/interval.html'),\n write: function (aggConfig, output) {\n output.params.interval = parseInt(aggConfig.params.interval, 10);\n }\n },\n\n {\n name: 'min_doc_count',\n default: null,\n editor: require('components/agg_types/controls/min_doc_count.html'),\n write: function (aggConfig, output) {\n if (aggConfig.params.min_doc_count) {\n output.params.min_doc_count = 0;\n }\n }\n },\n\n {\n name: 'extended_bounds',\n default: {},\n editor: require('components/agg_types/controls/extended_bounds.html'),\n write: function (aggConfig, output) {\n var val = aggConfig.params.extended_bounds;\n\n if (val.min != null || val.max != null) {\n output.params.extended_bounds = {\n min: val.min,\n max: val.max\n };\n }\n },\n\n // called from the editor\n shouldShow: function (aggConfig) {\n var field = aggConfig.params.field;\n if (\n field\n && (field.type === 'number' || field.type === 'date')\n ) {\n return aggConfig.params.min_doc_count;\n }\n }\n }\n ]\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/histogram.js\n ** module id = 672\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n require('directives/validate_ip');\n require('directives/validate_cidr_mask');\n\n return function RangeAggDefinition(Private) {\n var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type'));\n var createFilter = Private(require('components/agg_types/buckets/create_filter/ip_range'));\n\n return new BucketAggType({\n name: 'ip_range',\n title: 'IPv4 Range',\n createFilter: createFilter,\n makeLabel: function (aggConfig) {\n return aggConfig.params.field.displayName + ' IP ranges';\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: 'ip'\n }, {\n name: 'ipRangeType',\n default: 'fromTo',\n write: _.noop\n }, {\n name: 'ranges',\n default: {\n fromTo: [\n {from: '0.0.0.0', to: '127.255.255.255'},\n {from: '128.0.0.0', to: '191.255.255.255'}\n ],\n mask: [\n {mask: '0.0.0.0/1'},\n {mask: '128.0.0.0/2'}\n ]\n },\n editor: require('components/agg_types/controls/ip_ranges.html'),\n write: function (aggConfig, output) {\n var ipRangeType = aggConfig.params.ipRangeType;\n output.params.ranges = aggConfig.params.ranges[ipRangeType];\n }\n }\n ]\n });\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/ip_range.js\n ** module id = 673\n ** module chunks = 0\n **/","define(function (require) {\n return function RangeAggDefinition(Private) {\n var _ = require('lodash');\n var moment = require('moment');\n var angular = require('angular');\n var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type'));\n var createFilter = Private(require('components/agg_types/buckets/create_filter/range'));\n\n return new BucketAggType({\n name: 'range',\n title: 'Range',\n createFilter: createFilter,\n makeLabel: function (aggConfig) {\n return aggConfig.params.field.displayName + ' ranges';\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: ['number']\n },\n {\n name: 'ranges',\n default: [\n { from: 0, to: 1000 },\n { from: 1000, to: 2000 }\n ],\n editor: require('components/agg_types/controls/ranges.html'),\n write: function (aggConfig, output) {\n output.params.ranges = aggConfig.params.ranges;\n output.params.keyed = true;\n }\n }\n ]\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/range.js\n ** module id = 674\n ** module chunks = 0\n **/","define(function (require) {\n return function SignificantTermsAggDefinition(Private) {\n var _ = require('lodash');\n var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type'));\n var createFilter = Private(require('components/agg_types/buckets/create_filter/terms'));\n\n return new BucketAggType({\n name: 'significant_terms',\n title: 'Significant Terms',\n makeLabel: function (aggConfig) {\n return 'Top ' + aggConfig.params.size + ' unusual terms in ' + aggConfig.params.field.displayName;\n },\n createFilter: createFilter,\n params: [\n {\n name: 'field',\n filterFieldTypes: 'string'\n },\n {\n name: 'size',\n editor: require('components/agg_types/controls/order_and_size.html'),\n },\n {\n name: 'exclude',\n type: 'regex',\n advanced: true\n },\n {\n name: 'include',\n type: 'regex',\n advanced: true\n }\n ]\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/significant_terms.js\n ** module id = 675\n ** module chunks = 0\n **/","define(function (require) {\n return function TermsAggDefinition(Private) {\n var _ = require('lodash');\n var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type'));\n var bucketCountBetween = Private(require('components/agg_types/buckets/_bucket_count_between'));\n var AggConfig = Private(require('components/vis/AggConfig'));\n var Schemas = Private(require('components/vis/Schemas'));\n var createFilter = Private(require('components/agg_types/buckets/create_filter/terms'));\n\n var orderAggSchema = (new Schemas([\n {\n group: 'none',\n name: 'orderAgg',\n title: 'Order Agg',\n aggFilter: ['!percentiles', '!std_dev']\n }\n ])).all[0];\n\n function isNotType(type) {\n return function (agg) {\n var field = agg.params.field;\n return !field || field.type !== type;\n };\n }\n\n return new BucketAggType({\n name: 'terms',\n title: 'Terms',\n makeLabel: function (agg) {\n var params = agg.params;\n return params.field.displayName + ': ' + params.order.display;\n },\n createFilter: createFilter,\n params: [\n {\n name: 'field',\n scriptable: true,\n filterFieldTypes: ['number', 'boolean', 'date', 'ip', 'string']\n },\n {\n name: 'exclude',\n type: 'regex',\n advanced: true,\n disabled: isNotType('string')\n },\n {\n name: 'include',\n type: 'regex',\n advanced: true,\n disabled: isNotType('string')\n },\n {\n name: 'size',\n default: 5\n },\n {\n name: 'orderAgg',\n type: AggConfig,\n default: null,\n editor: require('components/agg_types/controls/order_agg.html'),\n serialize: function (orderAgg) {\n return orderAgg.toJSON();\n },\n deserialize: function (state, agg) {\n return this.makeOrderAgg(agg, state);\n },\n makeOrderAgg: function (termsAgg, state) {\n state = state || {};\n state.schema = orderAggSchema;\n var orderAgg = new AggConfig(termsAgg.vis, state);\n orderAgg.id = termsAgg.id + '-orderAgg';\n return orderAgg;\n },\n controller: function ($scope) {\n $scope.safeMakeLabel = function (agg) {\n try {\n return agg.makeLabel();\n } catch (e) {\n return '- agg not valid -';\n }\n };\n\n var INIT = {}; // flag to know when prevOrderBy has changed\n var prevOrderBy = INIT;\n\n $scope.$watch('responseValueAggs', updateOrderAgg);\n $scope.$watch('agg.params.orderBy', updateOrderAgg);\n\n function updateOrderAgg() {\n var agg = $scope.agg;\n var aggs = agg.vis.aggs;\n var params = agg.params;\n var orderBy = params.orderBy;\n var paramDef = agg.type.params.byName.orderAgg;\n\n // setup the initial value of orderBy\n if (!orderBy && prevOrderBy === INIT) {\n // abort until we get the responseValueAggs\n if (!$scope.responseValueAggs) return;\n params.orderBy = (_.first($scope.responseValueAggs) || { id: 'custom' }).id;\n return;\n }\n\n // track the previous value\n prevOrderBy = orderBy;\n\n // we aren't creating a custom aggConfig\n if (!orderBy || orderBy !== 'custom') {\n params.orderAgg = null;\n\n if (orderBy === '_term') {\n params.orderBy = '_term';\n return;\n }\n\n // ensure that orderBy is set to a valid agg\n if (!_.find($scope.responseValueAggs, { id: orderBy })) {\n params.orderBy = null;\n }\n return;\n }\n\n params.orderAgg = params.orderAgg || paramDef.makeOrderAgg(agg);\n }\n },\n write: function (agg, output) {\n var vis = agg.vis;\n var dir = agg.params.order.val;\n var order = output.params.order = {};\n\n var orderAgg = agg.params.orderAgg || vis.aggs.getResponseAggById(agg.params.orderBy);\n\n // TODO: This works around an Elasticsearch bug the always casts terms agg scripts to strings\n // thus causing issues with filtering. This probably causes other issues since float might not\n // be able to contain the number on the elasticsearch side\n if (output.params.script) {\n output.params.valueType = agg.field().type === 'number' ? 'float' : agg.field().type;\n }\n\n if (!orderAgg) {\n order[agg.params.orderBy || '_count'] = dir;\n return;\n }\n\n if (orderAgg.type.name === 'count') {\n order._count = dir;\n return;\n }\n\n var orderAggId = orderAgg.id;\n if (orderAgg.parentId) {\n orderAgg = vis.aggs.byId[orderAgg.parentId];\n }\n\n output.subAggs = (output.subAggs || []).concat(orderAgg);\n order[orderAggId] = dir;\n }\n },\n {\n name: 'order',\n type: 'optioned',\n default: 'desc',\n editor: require('components/agg_types/controls/order_and_size.html'),\n options: [\n { display: 'Descending', val: 'desc' },\n { display: 'Ascending', val: 'asc' }\n ],\n write: _.noop // prevent default write, it's handled by orderAgg\n },\n {\n name: 'orderBy',\n write: _.noop // prevent default write, it's handled by orderAgg\n }\n ]\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/terms.js\n ** module id = 676\n ** module chunks = 0\n **/","define(function (require) {\n return function AggTypeMetricAvgProvider(Private) {\n var MetricAggType = Private(require('components/agg_types/metrics/_metric_agg_type'));\n\n return new MetricAggType({\n name: 'avg',\n title: 'Average',\n makeLabel: function (aggConfig) {\n return 'Average ' + aggConfig.params.field.displayName;\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: 'number'\n }\n ]\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/metrics/avg.js\n ** module id = 677\n ** module chunks = 0\n **/","define(function (require) {\n return function AggTypeMetricCardinalityProvider(Private) {\n var MetricAggType = Private(require('components/agg_types/metrics/_metric_agg_type'));\n var fieldFormats = Private(require('registry/field_formats'));\n\n return new MetricAggType({\n name: 'cardinality',\n title: 'Unique Count',\n makeLabel: function (aggConfig) {\n return 'Unique count of ' + aggConfig.params.field.displayName;\n },\n getFormat: function () {\n return fieldFormats.getDefaultInstance('number');\n },\n params: [\n {\n name: 'field'\n }\n ]\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/metrics/cardinality.js\n ** module id = 678\n ** module chunks = 0\n **/","define(function (require) {\n return function AggTypeMetricCountProvider(Private) {\n var MetricAggType = Private(require('components/agg_types/metrics/_metric_agg_type'));\n var fieldFormats = Private(require('registry/field_formats'));\n\n return new MetricAggType({\n name: 'count',\n title: 'Count',\n hasNoDsl: true,\n makeLabel: function () {\n return 'Count';\n },\n getFormat: function () {\n return fieldFormats.getDefaultInstance('number');\n },\n getValue: function (agg, bucket) {\n return bucket.doc_count;\n }\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/metrics/count.js\n ** module id = 679\n ** module chunks = 0\n **/","define(function (require) {\n return function AggTypeMetricMaxProvider(Private) {\n var MetricAggType = Private(require('components/agg_types/metrics/_metric_agg_type'));\n\n return new MetricAggType({\n name: 'max',\n title: 'Max',\n makeLabel: function (aggConfig) {\n return 'Max ' + aggConfig.params.field.displayName;\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: 'number,date'\n }\n ]\n });\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/metrics/max.js\n ** module id = 680\n ** module chunks = 0\n **/","define(function (require) {\n return function AggTypeMetricMinProvider(Private) {\n var MetricAggType = Private(require('components/agg_types/metrics/_metric_agg_type'));\n\n return new MetricAggType({\n name: 'min',\n title: 'Min',\n makeLabel: function (aggConfig) {\n return 'Min ' + aggConfig.params.field.displayName;\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: 'number,date'\n }\n ]\n });\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/metrics/min.js\n ** module id = 681\n ** module chunks = 0\n **/","define(function (require) {\n return function AggTypeMetricPercentileRanksProvider(Private) {\n var _ = require('lodash');\n\n var MetricAggType = Private(require('components/agg_types/metrics/_metric_agg_type'));\n var getResponseAggConfig = Private(require('components/agg_types/metrics/_get_response_agg_config'));\n var fieldFormats = Private(require('registry/field_formats'));\n\n var valuesEditor = require('components/agg_types/controls/percentile_ranks.html');\n // required by the values editor\n require('components/number_list/number_list');\n\n var valueProps = {\n makeLabel: function () {\n var field = this.field();\n var format = (field && field.format) || fieldFormats.getDefaultInstance('number');\n\n return 'Percentile rank ' + format.convert(this.key, 'text') + ' of \"' + this.fieldDisplayName() + '\"';\n }\n };\n\n return new MetricAggType({\n name: 'percentile_ranks',\n title: 'Percentile Ranks',\n makeLabel: function (agg) {\n return 'Percentile ranks of ' + agg.fieldDisplayName();\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: 'number'\n },\n {\n name: 'values',\n editor: valuesEditor,\n default: []\n }\n ],\n getResponseAggs: function (agg) {\n var ValueAggConfig = getResponseAggConfig(agg, valueProps);\n\n return agg.params.values.map(function (value) {\n return new ValueAggConfig(value);\n });\n },\n getFormat: function () {\n return fieldFormats.getInstance('percent') || fieldFormats.getDefaultInstance('number');\n },\n getValue: function (agg, bucket) {\n // values for 1, 5, and 10 will come back as 1.0, 5.0, and 10.0 so we\n // parse the keys and respond with the value that matches\n return _.find(bucket[agg.parentId].values, function (value, key) {\n return agg.key === parseFloat(key);\n }) / 100;\n }\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/metrics/percentile_ranks.js\n ** module id = 682\n ** module chunks = 0\n **/","define(function (require) {\n return function AggTypeMetricPercentilesProvider(Private) {\n var _ = require('lodash');\n\n var MetricAggType = Private(require('components/agg_types/metrics/_metric_agg_type'));\n var getResponseAggConfig = Private(require('components/agg_types/metrics/_get_response_agg_config'));\n var ordinalSuffix = require('utils/ordinal_suffix');\n var fieldFormats = Private(require('registry/field_formats'));\n\n var percentsEditor = require('components/agg_types/controls/percentiles.html');\n // required by the percentiles editor\n require('components/number_list/number_list');\n\n var valueProps = {\n makeLabel: function () {\n return ordinalSuffix(this.key) + ' percentile of ' + this.fieldDisplayName();\n }\n };\n\n return new MetricAggType({\n name: 'percentiles',\n title: 'Percentiles',\n makeLabel: function (agg) {\n return 'Percentiles of ' + agg.fieldDisplayName();\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: 'number'\n },\n {\n name: 'percents',\n editor: percentsEditor,\n default: [1, 5, 25, 50, 75, 95, 99]\n }\n ],\n getResponseAggs: function (agg) {\n var ValueAggConfig = getResponseAggConfig(agg, valueProps);\n\n return agg.params.percents.map(function (percent) {\n return new ValueAggConfig(percent);\n });\n },\n getValue: function (agg, bucket) {\n // percentiles for 1, 5, and 10 will come back as 1.0, 5.0, and 10.0 so we\n // parse the keys and respond with the value that matches\n return _.find(bucket[agg.parentId].values, function (value, key) {\n return agg.key === parseFloat(key);\n });\n }\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/metrics/percentiles.js\n ** module id = 683\n ** module chunks = 0\n **/","define(function (require) {\n return function AggTypeMetricStandardDeviationProvider(Private) {\n var _ = require('lodash');\n var MetricAggType = Private(require('components/agg_types/metrics/_metric_agg_type'));\n var getResponseAggConfig = Private(require('components/agg_types/metrics/_get_response_agg_config'));\n\n var responseAggConfigProps = {\n valProp: function () {\n var details = this.keyedDetails[this.key];\n return details.valProp;\n },\n makeLabel: function () {\n var details = this.keyedDetails[this.key];\n return details.title + ' of ' + this.fieldDisplayName();\n },\n keyedDetails: {\n std_lower: {\n valProp: ['std_deviation_bounds', 'lower'],\n title: 'Lower Standard Deviation'\n },\n avg: {\n valProp: 'avg',\n title: 'Average'\n },\n std_upper: {\n valProp: ['std_deviation_bounds', 'upper'],\n title: 'Upper Standard Deviation'\n }\n }\n };\n\n return new MetricAggType({\n name: 'std_dev',\n dslName: 'extended_stats',\n title: 'Standard Deviation',\n makeLabel: function (agg) {\n return 'Standard Deviation of ' + agg.fieldDisplayName();\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: 'number'\n }\n ],\n\n getResponseAggs: function (agg) {\n var ValueAggConfig = getResponseAggConfig(agg, responseAggConfigProps);\n\n return [\n new ValueAggConfig('std_lower'),\n new ValueAggConfig('avg'),\n new ValueAggConfig('std_upper')\n ];\n },\n\n getValue: function (agg, bucket) {\n return _.get(bucket[agg.parentId], agg.valProp());\n }\n });\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/metrics/std_deviation.js\n ** module id = 684\n ** module chunks = 0\n **/","define(function (require) {\n return function AggTypeMetricSumProvider(Private) {\n var MetricAggType = Private(require('components/agg_types/metrics/_metric_agg_type'));\n\n return new MetricAggType({\n name: 'sum',\n title: 'Sum',\n makeLabel: function (aggConfig) {\n return 'Sum of ' + aggConfig.params.field.displayName;\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: 'number'\n }\n ]\n });\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/metrics/sum.js\n ** module id = 685\n ** module chunks = 0\n **/","define(function (require) {\n return function FieldAggParamFactory(Private) {\n var _ = require('lodash');\n\n var editorHtml = require('components/agg_types/controls/field.html');\n var BaseAggParam = Private(require('components/agg_types/param_types/base'));\n var SavedObjectNotFound = require('errors').SavedObjectNotFound;\n\n _.class(FieldAggParam).inherits(BaseAggParam);\n function FieldAggParam(config) {\n FieldAggParam.Super.call(this, config);\n }\n\n FieldAggParam.prototype.editor = editorHtml;\n FieldAggParam.prototype.scriptable = false;\n FieldAggParam.prototype.filterFieldTypes = '*';\n\n /**\n * Called to serialize values for saving an aggConfig object\n *\n * @param {field} field - the field that was selected\n * @return {string}\n */\n FieldAggParam.prototype.serialize = function (field) {\n return field.name;\n };\n\n /**\n * Called to read values from a database record into the\n * aggConfig object\n *\n * @param {string} fieldName\n * @return {field}\n */\n FieldAggParam.prototype.deserialize = function (fieldName, aggConfig) {\n var field = aggConfig.vis.indexPattern.fields.byName[fieldName];\n\n if (!field) {\n throw new SavedObjectNotFound('index-pattern-field', fieldName);\n }\n\n return field;\n };\n\n /**\n * Write the aggregation parameter.\n *\n * @param {AggConfig} aggConfig - the entire configuration for this agg\n * @param {object} output - the result of calling write on all of the aggregations\n * parameters.\n * @param {object} output.params - the final object that will be included as the params\n * for the agg\n * @return {undefined}\n */\n FieldAggParam.prototype.write = function (aggConfig, output) {\n var field = aggConfig.params.field;\n\n if (field.scripted) {\n output.params.script = field.script;\n output.params.lang = field.lang;\n } else {\n output.params.field = field.name;\n }\n };\n\n return FieldAggParam;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/param_types/field.js\n ** module id = 686\n ** module chunks = 0\n **/","define(function (require) {\n return function OptionedAggParamFactory(Private) {\n var _ = require('lodash');\n\n var IndexedArray = require('components/indexed_array/index');\n var BaseAggParam = Private(require('components/agg_types/param_types/base'));\n\n _.class(OptionedAggParam).inherits(BaseAggParam);\n function OptionedAggParam(config) {\n OptionedAggParam.Super.call(this, config);\n\n this.options = new IndexedArray({\n index: ['val'],\n immutable: true,\n initialSet: this.options\n });\n }\n\n /**\n * Serialize a selection to be stored in the database\n * @param {object} selected - the option that was selected\n * @return {any}\n */\n OptionedAggParam.prototype.serialize = function (selected) {\n return selected.val;\n };\n\n /**\n * Take a value that was serialized to the database and\n * return the option that is represents\n *\n * @param {any} val - the value that was saved\n * @return {object}\n */\n OptionedAggParam.prototype.deserialize = function (val) {\n return this.options.byVal[val];\n };\n\n /**\n * Write the aggregation parameter.\n *\n * @param {AggConfig} aggConfig - the entire configuration for this agg\n * @param {object} output - the result of calling write on all of the aggregations\n * parameters.\n * @param {object} output.params - the final object that will be included as the params\n * for the agg\n * @return {undefined}\n */\n OptionedAggParam.prototype.write = function (aggConfig, output) {\n output.params[this.name] = aggConfig.params[this.name].val;\n };\n\n return OptionedAggParam;\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/param_types/optioned.js\n ** module id = 687\n ** module chunks = 0\n **/","define(function (require) {\n return function RawJSONAggParamFactory(Private) {\n var _ = require('lodash');\n\n var BaseAggParam = Private(require('components/agg_types/param_types/base'));\n var editorHtml = require('components/agg_types/controls/raw_json.html');\n\n _.class(RawJSONAggParam).inherits(BaseAggParam);\n function RawJSONAggParam(config) {\n // force name override\n config = _.defaults(config, { name: 'json' });\n RawJSONAggParam.Super.call(this, config);\n }\n\n RawJSONAggParam.prototype.editor = editorHtml;\n\n /**\n * Write the aggregation parameter.\n *\n * @param {AggConfig} aggConfig - the entire configuration for this agg\n * @param {object} output - the result of calling write on all of the aggregations\n * parameters.\n * @param {object} output.params - the final object that will be included as the params\n * for the agg\n * @return {undefined}\n */\n RawJSONAggParam.prototype.write = function (aggConfig, output) {\n var paramJSON;\n var param = aggConfig.params[this.name];\n\n if (!param) {\n return;\n }\n\n // handle invalid JSON input\n try {\n paramJSON = JSON.parse(param);\n } catch (err) {\n return;\n }\n\n function filteredCombine(srcA, srcB) {\n function mergeObjs(a, b) {\n return _(a)\n .keys()\n .union(_.keys(b))\n .transform(function (dest, key) {\n var val = compare(a[key], b[key]);\n if (val !== undefined) dest[key] = val;\n }, {})\n .value();\n }\n\n function mergeArrays(a, b) {\n // attempt to merge each value\n return _.times(Math.max(a.length, b.length), function (i) {\n return compare(a[i], b[i]);\n });\n }\n\n function compare(a, b) {\n if (_.isPlainObject(a) && _.isPlainObject(b)) return mergeObjs(a, b);\n if (_.isArray(a) && _.isArray(b)) return mergeArrays(a, b);\n if (b === null) return undefined;\n if (b !== undefined) return b;\n return a;\n }\n\n return compare(srcA, srcB);\n }\n\n output.params = filteredCombine(output.params, paramJSON);\n return;\n };\n\n return RawJSONAggParam;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/param_types/raw_json.js\n ** module id = 688\n ** module chunks = 0\n **/","define(function (require) {\n return function RegexAggParamFactory(Private) {\n var _ = require('lodash');\n\n var BaseAggParam = Private(require('components/agg_types/param_types/base'));\n var editorHtml = require('components/agg_types/controls/regular_expression.html');\n\n _.class(RegexAggParam).inherits(BaseAggParam);\n function RegexAggParam(config) {\n // Java RegExp flags\n var flags = [\n 'CANON_EQ',\n 'CASE_INSENSITIVE',\n 'COMMENTS',\n 'DOTALL',\n 'LITERAL',\n 'MULTILINE',\n 'UNICODE_CASE',\n 'UNICODE_CHARACTER_CLASS',\n 'UNIX_LINES'\n ];\n\n _.defaults(config, { pattern: '', flags: flags });\n RegexAggParam.Super.call(this, config);\n }\n\n RegexAggParam.prototype.editor = editorHtml;\n\n /**\n * Disabled state of the agg param\n *\n * @return {bool}\n */\n RegexAggParam.prototype.disabled = function (aggConfig) {\n return false;\n };\n\n /**\n * Write the aggregation parameter.\n *\n * @param {AggConfig} aggConfig - the entire configuration for this agg\n * @param {object} output - the result of calling write on all of the aggregations\n * parameters.\n * @param {object} output.params - the final object that will be included as the params\n * for the agg\n * @return {undefined}\n */\n RegexAggParam.prototype.write = function (aggConfig, output) {\n var param = aggConfig.params[this.name];\n var paramType = aggConfig.type.params.byName[this.name];\n\n // clear aggParam if pattern is not set or is disabled\n if (!param || !param.pattern || !param.pattern.length || paramType.disabled(aggConfig)) {\n return;\n }\n\n var obj = {\n pattern: param.pattern\n };\n\n // include any selected flags\n if (_.isArray(param.flags) && param.flags.length) {\n obj.flags = param.flags.join('|');\n }\n\n output.params[this.name] = obj;\n };\n\n return RegexAggParam;\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/param_types/regex.js\n ** module id = 689\n ** module chunks = 0\n **/","define(function (require) {\n return function FieldAggParamFactory(Private) {\n var _ = require('lodash');\n\n var editorHtml = require('components/agg_types/controls/string.html');\n var BaseAggParam = Private(require('components/agg_types/param_types/base'));\n\n _.class(ScriptAggParam).inherits(BaseAggParam);\n function ScriptAggParam(config) {\n ScriptAggParam.Super.call(this, config);\n }\n\n ScriptAggParam.prototype.editor = editorHtml;\n\n /**\n * Write the aggregation parameter.\n *\n * @param {AggConfig} aggConfig - the entire configuration for this agg\n * @param {object} output - the result of calling write on all of the aggregations\n * parameters.\n * @param {object} output.params - the final object that will be included as the params\n * for the agg\n * @return {undefined}\n */\n ScriptAggParam.prototype.write = function (aggConfig, output) {\n if (aggConfig.params[this.name] && aggConfig.params[this.name].length)\n output.params[this.name] = aggConfig.params[this.name];\n };\n\n return ScriptAggParam;\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/param_types/string.js\n ** module id = 690\n ** module chunks = 0\n **/","define(function (require) {\n require('components/collapsible_sidebar/collapsible_sidebar.less');\n\n var _ = require('lodash');\n var $ = require('jquery');\n\n require('modules')\n .get('kibana')\n .directive('collapsibleSidebar', function () {\n // simply a list of all of all of angulars .col-md-* classes except 12\n var listOfWidthClasses = _.times(11, function (i) { return 'col-md-' + i; });\n\n return {\n restrict: 'C',\n link: function ($scope, $elem) {\n var $collapser = $('
');\n var $siblings = $elem.siblings();\n\n var siblingsClass = listOfWidthClasses.reduce(function (prev, className) {\n if (prev) return prev;\n return $siblings.hasClass(className) && className;\n }, false);\n\n $collapser.on('click', function () {\n $elem.toggleClass('closed');\n // if there is are only two elements we can assume the other one will take 100% of the width\n if ($siblings.length === 1 && siblingsClass) {\n $siblings.toggleClass(siblingsClass + ' col-md-12');\n }\n })\n\n .appendTo($elem);\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/collapsible_sidebar/collapsible_sidebar.js\n ** module id = 691\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var module = require('modules').get('app/discover');\n\n require('filters/short_dots');\n\n module.directive('kbnTableHeader', function (shortDotsFilter) {\n var headerHtml = require('components/doc_table/components/table_header.html');\n return {\n restrict: 'A',\n scope: {\n columns: '=',\n sorting: '=',\n indexPattern: '=',\n },\n template: headerHtml,\n controller: function ($scope) {\n\n var sortableField = function (field) {\n if (!$scope.indexPattern) return;\n var sortable = _.get($scope.indexPattern.fields.byName[field], 'sortable');\n return sortable;\n };\n\n $scope.tooltip = function (column) {\n if (!sortableField(column)) return '';\n return 'Sort by ' + shortDotsFilter(column);\n };\n\n $scope.canRemove = function (name) {\n return (name !== '_source' || $scope.columns.length !== 1);\n };\n\n $scope.headerClass = function (column) {\n if (!sortableField(column)) return;\n\n var sorting = $scope.sorting;\n var defaultClass = ['fa', 'fa-sort-up', 'table-header-sortchange'];\n\n if (!sorting || column !== sorting[0]) return defaultClass;\n return ['fa', sorting[1] === 'asc' ? 'fa-sort-up' : 'fa-sort-down'];\n };\n\n $scope.moveLeft = function (column) {\n var index = _.indexOf($scope.columns, column);\n if (index === 0) return;\n\n _.move($scope.columns, index, --index);\n };\n\n $scope.moveRight = function (column) {\n var index = _.indexOf($scope.columns, column);\n if (index === $scope.columns.length - 1) return;\n\n _.move($scope.columns, index, ++index);\n };\n\n $scope.toggleColumn = function (fieldName) {\n _.toggleInOut($scope.columns, fieldName);\n };\n\n $scope.sort = function (column) {\n if (!column || !sortableField(column)) return;\n\n var sorting = $scope.sorting = $scope.sorting || [];\n\n var direction = sorting[1] || 'asc';\n if (sorting[0] !== column) {\n direction = 'asc';\n } else {\n direction = sorting[1] === 'asc' ? 'desc' : 'asc';\n }\n\n $scope.sorting[0] = column;\n $scope.sorting[1] = direction;\n };\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/doc_table/components/table_header.js\n ** module id = 692\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var $ = require('jquery');\n var addWordBreaks = require('utils/add_word_breaks');\n var module = require('modules').get('app/discover');\n\n require('components/highlight/highlight');\n require('components/highlight/highlight_tags');\n require('components/doc_viewer/doc_viewer');\n require('filters/trust_as_html');\n require('filters/short_dots');\n\n\n // guesstimate at the minimum number of chars wide cells in the table should be\n var MIN_LINE_LENGTH = 20;\n\n /**\n * kbnTableRow directive\n *\n * Display a row in the table\n * ```\n *
\n * \n * \n * \n * \n * \n * \n *
{{heading}}
{{fill}}
\n *

\n * \n * \n * var app = angular.module('multi-bootstrap', [])\n *\n * .controller('BrokenTable', function($scope) {\n * $scope.headings = ['One', 'Two', 'Three'];\n * $scope.fillings = [[1, 2, 3], ['A', 'B', 'C'], [7, 8, 9]];\n * });\n * \n * \n * it('should only insert one table cell for each item in $scope.fillings', function() {\n * expect(element.all(by.css('td')).count())\n * .toBe(9);\n * });\n * \n * \n *\n * @param {DOMElement} element DOM element which is the root of angular application.\n * @param {Array=} modules an array of modules to load into the application.\n * Each item in the array should be the name of a predefined module or a (DI annotated)\n * function that will be invoked by the injector as a run block.\n * See: {@link angular.module modules}\n * @returns {auto.$injector} Returns the newly created injector for this app.\n */\nfunction bootstrap(element, modules) {\n var doBootstrap = function() {\n element = jqLite(element);\n\n if (element.injector()) {\n var tag = (element[0] === document) ? 'document' : startingTag(element);\n //Encode angle brackets to prevent input from being sanitized to empty string #8683\n throw ngMinErr(\n 'btstrpd',\n \"App Already Bootstrapped with this Element '{0}'\",\n tag.replace(//,'>'));\n }\n\n modules = modules || [];\n modules.unshift(['$provide', function($provide) {\n $provide.value('$rootElement', element);\n }]);\n modules.unshift('ng');\n var injector = createInjector(modules);\n injector.invoke(['$rootScope', '$rootElement', '$compile', '$injector', '$animate',\n function(scope, element, compile, injector, animate) {\n scope.$apply(function() {\n element.data('$injector', injector);\n compile(element)(scope);\n });\n }]\n );\n return injector;\n };\n\n var NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/;\n\n if (window && !NG_DEFER_BOOTSTRAP.test(window.name)) {\n return doBootstrap();\n }\n\n window.name = window.name.replace(NG_DEFER_BOOTSTRAP, '');\n angular.resumeBootstrap = function(extraModules) {\n forEach(extraModules, function(module) {\n modules.push(module);\n });\n doBootstrap();\n };\n}\n\nvar SNAKE_CASE_REGEXP = /[A-Z]/g;\nfunction snake_case(name, separator) {\n separator = separator || '_';\n return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {\n return (pos ? separator : '') + letter.toLowerCase();\n });\n}\n\nfunction bindJQuery() {\n // bind to jQuery if present;\n jQuery = window.jQuery;\n // Use jQuery if it exists with proper functionality, otherwise default to us.\n // Angular 1.2+ requires jQuery 1.7.1+ for on()/off() support.\n if (jQuery && jQuery.fn.on) {\n jqLite = jQuery;\n extend(jQuery.fn, {\n scope: JQLitePrototype.scope,\n isolateScope: JQLitePrototype.isolateScope,\n controller: JQLitePrototype.controller,\n injector: JQLitePrototype.injector,\n inheritedData: JQLitePrototype.inheritedData\n });\n // Method signature:\n // jqLitePatchJQueryRemove(name, dispatchThis, filterElems, getterIfNoArguments)\n jqLitePatchJQueryRemove('remove', true, true, false);\n jqLitePatchJQueryRemove('empty', false, false, false);\n jqLitePatchJQueryRemove('html', false, false, true);\n } else {\n jqLite = JQLite;\n }\n angular.element = jqLite;\n}\n\n/**\n * throw error if the argument is falsy.\n */\nfunction assertArg(arg, name, reason) {\n if (!arg) {\n throw ngMinErr('areq', \"Argument '{0}' is {1}\", (name || '?'), (reason || \"required\"));\n }\n return arg;\n}\n\nfunction assertArgFn(arg, name, acceptArrayAnnotation) {\n if (acceptArrayAnnotation && isArray(arg)) {\n arg = arg[arg.length - 1];\n }\n\n assertArg(isFunction(arg), name, 'not a function, got ' +\n (arg && typeof arg === 'object' ? arg.constructor.name || 'Object' : typeof arg));\n return arg;\n}\n\n/**\n * throw error if the name given is hasOwnProperty\n * @param {String} name the name to test\n * @param {String} context the context in which the name is used, such as module or directive\n */\nfunction assertNotHasOwnProperty(name, context) {\n if (name === 'hasOwnProperty') {\n throw ngMinErr('badname', \"hasOwnProperty is not a valid {0} name\", context);\n }\n}\n\n/**\n * Return the value accessible from the object by path. Any undefined traversals are ignored\n * @param {Object} obj starting object\n * @param {String} path path to traverse\n * @param {boolean} [bindFnToScope=true]\n * @returns {Object} value as accessible by path\n */\n//TODO(misko): this function needs to be removed\nfunction getter(obj, path, bindFnToScope) {\n if (!path) return obj;\n var keys = path.split('.');\n var key;\n var lastInstance = obj;\n var len = keys.length;\n\n for (var i = 0; i < len; i++) {\n key = keys[i];\n if (obj) {\n obj = (lastInstance = obj)[key];\n }\n }\n if (!bindFnToScope && isFunction(obj)) {\n return bind(lastInstance, obj);\n }\n return obj;\n}\n\n/**\n * Return the DOM siblings between the first and last node in the given array.\n * @param {Array} array like object\n * @returns {DOMElement} object containing the elements\n */\nfunction getBlockElements(nodes) {\n var startNode = nodes[0],\n endNode = nodes[nodes.length - 1];\n if (startNode === endNode) {\n return jqLite(startNode);\n }\n\n var element = startNode;\n var elements = [element];\n\n do {\n element = element.nextSibling;\n if (!element) break;\n elements.push(element);\n } while (element !== endNode);\n\n return jqLite(elements);\n}\n\n/**\n * @ngdoc type\n * @name angular.Module\n * @module ng\n * @description\n *\n * Interface for configuring angular {@link angular.module modules}.\n */\n\nfunction setupModuleLoader(window) {\n\n var $injectorMinErr = minErr('$injector');\n var ngMinErr = minErr('ng');\n\n function ensure(obj, name, factory) {\n return obj[name] || (obj[name] = factory());\n }\n\n var angular = ensure(window, 'angular', Object);\n\n // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap\n angular.$$minErr = angular.$$minErr || minErr;\n\n return ensure(angular, 'module', function() {\n /** @type {Object.} */\n var modules = {};\n\n /**\n * @ngdoc function\n * @name angular.module\n * @module ng\n * @description\n *\n * The `angular.module` is a global place for creating, registering and retrieving Angular\n * modules.\n * All modules (angular core or 3rd party) that should be available to an application must be\n * registered using this mechanism.\n *\n * When passed two or more arguments, a new module is created. If passed only one argument, an\n * existing module (the name passed as the first argument to `module`) is retrieved.\n *\n *\n * # Module\n *\n * A module is a collection of services, directives, controllers, filters, and configuration information.\n * `angular.module` is used to configure the {@link auto.$injector $injector}.\n *\n * ```js\n * // Create a new module\n * var myModule = angular.module('myModule', []);\n *\n * // register a new service\n * myModule.value('appName', 'MyCoolApp');\n *\n * // configure existing services inside initialization blocks.\n * myModule.config(['$locationProvider', function($locationProvider) {\n * // Configure existing providers\n * $locationProvider.hashPrefix('!');\n * }]);\n * ```\n *\n * Then you can create an injector and load your modules like this:\n *\n * ```js\n * var injector = angular.injector(['ng', 'myModule'])\n * ```\n *\n * However it's more likely that you'll just use\n * {@link ng.directive:ngApp ngApp} or\n * {@link angular.bootstrap} to simplify this process for you.\n *\n * @param {!string} name The name of the module to create or retrieve.\n * @param {!Array.=} requires If specified then new module is being created. If\n * unspecified then the module is being retrieved for further configuration.\n * @param {Function=} configFn Optional configuration function for the module. Same as\n * {@link angular.Module#config Module#config()}.\n * @returns {module} new module with the {@link angular.Module} api.\n */\n return function module(name, requires, configFn) {\n var assertNotHasOwnProperty = function(name, context) {\n if (name === 'hasOwnProperty') {\n throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);\n }\n };\n\n assertNotHasOwnProperty(name, 'module');\n if (requires && modules.hasOwnProperty(name)) {\n modules[name] = null;\n }\n return ensure(modules, name, function() {\n if (!requires) {\n throw $injectorMinErr('nomod', \"Module '{0}' is not available! You either misspelled \" +\n \"the module name or forgot to load it. If registering a module ensure that you \" +\n \"specify the dependencies as the second argument.\", name);\n }\n\n /** @type {!Array.>} */\n var invokeQueue = [];\n\n /** @type {!Array.} */\n var runBlocks = [];\n\n var config = invokeLater('$injector', 'invoke');\n\n /** @type {angular.Module} */\n var moduleInstance = {\n // Private state\n _invokeQueue: invokeQueue,\n _runBlocks: runBlocks,\n\n /**\n * @ngdoc property\n * @name angular.Module#requires\n * @module ng\n *\n * @description\n * Holds the list of modules which the injector will load before the current module is\n * loaded.\n */\n requires: requires,\n\n /**\n * @ngdoc property\n * @name angular.Module#name\n * @module ng\n *\n * @description\n * Name of the module.\n */\n name: name,\n\n\n /**\n * @ngdoc method\n * @name angular.Module#provider\n * @module ng\n * @param {string} name service name\n * @param {Function} providerType Construction function for creating new instance of the\n * service.\n * @description\n * See {@link auto.$provide#provider $provide.provider()}.\n */\n provider: invokeLater('$provide', 'provider'),\n\n /**\n * @ngdoc method\n * @name angular.Module#factory\n * @module ng\n * @param {string} name service name\n * @param {Function} providerFunction Function for creating new instance of the service.\n * @description\n * See {@link auto.$provide#factory $provide.factory()}.\n */\n factory: invokeLater('$provide', 'factory'),\n\n /**\n * @ngdoc method\n * @name angular.Module#service\n * @module ng\n * @param {string} name service name\n * @param {Function} constructor A constructor function that will be instantiated.\n * @description\n * See {@link auto.$provide#service $provide.service()}.\n */\n service: invokeLater('$provide', 'service'),\n\n /**\n * @ngdoc method\n * @name angular.Module#value\n * @module ng\n * @param {string} name service name\n * @param {*} object Service instance object.\n * @description\n * See {@link auto.$provide#value $provide.value()}.\n */\n value: invokeLater('$provide', 'value'),\n\n /**\n * @ngdoc method\n * @name angular.Module#constant\n * @module ng\n * @param {string} name constant name\n * @param {*} object Constant value.\n * @description\n * Because the constant are fixed, they get applied before other provide methods.\n * See {@link auto.$provide#constant $provide.constant()}.\n */\n constant: invokeLater('$provide', 'constant', 'unshift'),\n\n /**\n * @ngdoc method\n * @name angular.Module#animation\n * @module ng\n * @param {string} name animation name\n * @param {Function} animationFactory Factory function for creating new instance of an\n * animation.\n * @description\n *\n * **NOTE**: animations take effect only if the **ngAnimate** module is loaded.\n *\n *\n * Defines an animation hook that can be later used with\n * {@link ngAnimate.$animate $animate} service and directives that use this service.\n *\n * ```js\n * module.animation('.animation-name', function($inject1, $inject2) {\n * return {\n * eventName : function(element, done) {\n * //code to run the animation\n * //once complete, then run done()\n * return function cancellationFunction(element) {\n * //code to cancel the animation\n * }\n * }\n * }\n * })\n * ```\n *\n * See {@link ngAnimate.$animateProvider#register $animateProvider.register()} and\n * {@link ngAnimate ngAnimate module} for more information.\n */\n animation: invokeLater('$animateProvider', 'register'),\n\n /**\n * @ngdoc method\n * @name angular.Module#filter\n * @module ng\n * @param {string} name Filter name.\n * @param {Function} filterFactory Factory function for creating new instance of filter.\n * @description\n * See {@link ng.$filterProvider#register $filterProvider.register()}.\n */\n filter: invokeLater('$filterProvider', 'register'),\n\n /**\n * @ngdoc method\n * @name angular.Module#controller\n * @module ng\n * @param {string|Object} name Controller name, or an object map of controllers where the\n * keys are the names and the values are the constructors.\n * @param {Function} constructor Controller constructor function.\n * @description\n * See {@link ng.$controllerProvider#register $controllerProvider.register()}.\n */\n controller: invokeLater('$controllerProvider', 'register'),\n\n /**\n * @ngdoc method\n * @name angular.Module#directive\n * @module ng\n * @param {string|Object} name Directive name, or an object map of directives where the\n * keys are the names and the values are the factories.\n * @param {Function} directiveFactory Factory function for creating new instance of\n * directives.\n * @description\n * See {@link ng.$compileProvider#directive $compileProvider.directive()}.\n */\n directive: invokeLater('$compileProvider', 'directive'),\n\n /**\n * @ngdoc method\n * @name angular.Module#config\n * @module ng\n * @param {Function} configFn Execute this function on module load. Useful for service\n * configuration.\n * @description\n * Use this method to register work which needs to be performed on module loading.\n * For more about how to configure services, see\n * {@link providers#providers_provider-recipe Provider Recipe}.\n */\n config: config,\n\n /**\n * @ngdoc method\n * @name angular.Module#run\n * @module ng\n * @param {Function} initializationFn Execute this function after injector creation.\n * Useful for application initialization.\n * @description\n * Use this method to register work which should be performed when the injector is done\n * loading all modules.\n */\n run: function(block) {\n runBlocks.push(block);\n return this;\n }\n };\n\n if (configFn) {\n config(configFn);\n }\n\n return moduleInstance;\n\n /**\n * @param {string} provider\n * @param {string} method\n * @param {String=} insertMethod\n * @returns {angular.Module}\n */\n function invokeLater(provider, method, insertMethod) {\n return function() {\n invokeQueue[insertMethod || 'push']([provider, method, arguments]);\n return moduleInstance;\n };\n }\n });\n };\n });\n\n}\n\n/* global angularModule: true,\n version: true,\n\n $LocaleProvider,\n $CompileProvider,\n\n htmlAnchorDirective,\n inputDirective,\n inputDirective,\n formDirective,\n scriptDirective,\n selectDirective,\n styleDirective,\n optionDirective,\n ngBindDirective,\n ngBindHtmlDirective,\n ngBindTemplateDirective,\n ngClassDirective,\n ngClassEvenDirective,\n ngClassOddDirective,\n ngCspDirective,\n ngCloakDirective,\n ngControllerDirective,\n ngFormDirective,\n ngHideDirective,\n ngIfDirective,\n ngIncludeDirective,\n ngIncludeFillContentDirective,\n ngInitDirective,\n ngNonBindableDirective,\n ngPluralizeDirective,\n ngRepeatDirective,\n ngShowDirective,\n ngStyleDirective,\n ngSwitchDirective,\n ngSwitchWhenDirective,\n ngSwitchDefaultDirective,\n ngOptionsDirective,\n ngTranscludeDirective,\n ngModelDirective,\n ngListDirective,\n ngChangeDirective,\n requiredDirective,\n requiredDirective,\n ngValueDirective,\n ngAttributeAliasDirectives,\n ngEventDirectives,\n\n $AnchorScrollProvider,\n $AnimateProvider,\n $BrowserProvider,\n $CacheFactoryProvider,\n $ControllerProvider,\n $DocumentProvider,\n $ExceptionHandlerProvider,\n $FilterProvider,\n $InterpolateProvider,\n $IntervalProvider,\n $HttpProvider,\n $HttpBackendProvider,\n $LocationProvider,\n $LogProvider,\n $ParseProvider,\n $RootScopeProvider,\n $QProvider,\n $$SanitizeUriProvider,\n $SceProvider,\n $SceDelegateProvider,\n $SnifferProvider,\n $TemplateCacheProvider,\n $TimeoutProvider,\n $$RAFProvider,\n $$AsyncCallbackProvider,\n $WindowProvider\n*/\n\n\n/**\n * @ngdoc object\n * @name angular.version\n * @module ng\n * @description\n * An object that contains information about the current AngularJS version. This object has the\n * following properties:\n *\n * - `full` – `{string}` – Full version string, such as \"0.9.18\".\n * - `major` – `{number}` – Major version number, such as \"0\".\n * - `minor` – `{number}` – Minor version number, such as \"9\".\n * - `dot` – `{number}` – Dot version number, such as \"18\".\n * - `codeName` – `{string}` – Code name of the release, such as \"jiggling-armfat\".\n */\nvar version = {\n full: '1.2.28', // all of these placeholder strings will be replaced by grunt's\n major: 1, // package task\n minor: 2,\n dot: 28,\n codeName: 'finnish-disembarkation'\n};\n\n\nfunction publishExternalAPI(angular){\n extend(angular, {\n 'bootstrap': bootstrap,\n 'copy': copy,\n 'extend': extend,\n 'equals': equals,\n 'element': jqLite,\n 'forEach': forEach,\n 'injector': createInjector,\n 'noop': noop,\n 'bind': bind,\n 'toJson': toJson,\n 'fromJson': fromJson,\n 'identity': identity,\n 'isUndefined': isUndefined,\n 'isDefined': isDefined,\n 'isString': isString,\n 'isFunction': isFunction,\n 'isObject': isObject,\n 'isNumber': isNumber,\n 'isElement': isElement,\n 'isArray': isArray,\n 'version': version,\n 'isDate': isDate,\n 'lowercase': lowercase,\n 'uppercase': uppercase,\n 'callbacks': {counter: 0},\n '$$minErr': minErr,\n '$$csp': csp\n });\n\n angularModule = setupModuleLoader(window);\n try {\n angularModule('ngLocale');\n } catch (e) {\n angularModule('ngLocale', []).provider('$locale', $LocaleProvider);\n }\n\n angularModule('ng', ['ngLocale'], ['$provide',\n function ngModule($provide) {\n // $$sanitizeUriProvider needs to be before $compileProvider as it is used by it.\n $provide.provider({\n $$sanitizeUri: $$SanitizeUriProvider\n });\n $provide.provider('$compile', $CompileProvider).\n directive({\n a: htmlAnchorDirective,\n input: inputDirective,\n textarea: inputDirective,\n form: formDirective,\n script: scriptDirective,\n select: selectDirective,\n style: styleDirective,\n option: optionDirective,\n ngBind: ngBindDirective,\n ngBindHtml: ngBindHtmlDirective,\n ngBindTemplate: ngBindTemplateDirective,\n ngClass: ngClassDirective,\n ngClassEven: ngClassEvenDirective,\n ngClassOdd: ngClassOddDirective,\n ngCloak: ngCloakDirective,\n ngController: ngControllerDirective,\n ngForm: ngFormDirective,\n ngHide: ngHideDirective,\n ngIf: ngIfDirective,\n ngInclude: ngIncludeDirective,\n ngInit: ngInitDirective,\n ngNonBindable: ngNonBindableDirective,\n ngPluralize: ngPluralizeDirective,\n ngRepeat: ngRepeatDirective,\n ngShow: ngShowDirective,\n ngStyle: ngStyleDirective,\n ngSwitch: ngSwitchDirective,\n ngSwitchWhen: ngSwitchWhenDirective,\n ngSwitchDefault: ngSwitchDefaultDirective,\n ngOptions: ngOptionsDirective,\n ngTransclude: ngTranscludeDirective,\n ngModel: ngModelDirective,\n ngList: ngListDirective,\n ngChange: ngChangeDirective,\n required: requiredDirective,\n ngRequired: requiredDirective,\n ngValue: ngValueDirective\n }).\n directive({\n ngInclude: ngIncludeFillContentDirective\n }).\n directive(ngAttributeAliasDirectives).\n directive(ngEventDirectives);\n $provide.provider({\n $anchorScroll: $AnchorScrollProvider,\n $animate: $AnimateProvider,\n $browser: $BrowserProvider,\n $cacheFactory: $CacheFactoryProvider,\n $controller: $ControllerProvider,\n $document: $DocumentProvider,\n $exceptionHandler: $ExceptionHandlerProvider,\n $filter: $FilterProvider,\n $interpolate: $InterpolateProvider,\n $interval: $IntervalProvider,\n $http: $HttpProvider,\n $httpBackend: $HttpBackendProvider,\n $location: $LocationProvider,\n $log: $LogProvider,\n $parse: $ParseProvider,\n $rootScope: $RootScopeProvider,\n $q: $QProvider,\n $sce: $SceProvider,\n $sceDelegate: $SceDelegateProvider,\n $sniffer: $SnifferProvider,\n $templateCache: $TemplateCacheProvider,\n $timeout: $TimeoutProvider,\n $window: $WindowProvider,\n $$rAF: $$RAFProvider,\n $$asyncCallback : $$AsyncCallbackProvider\n });\n }\n ]);\n}\n\n/* global JQLitePrototype: true,\n addEventListenerFn: true,\n removeEventListenerFn: true,\n BOOLEAN_ATTR: true\n*/\n\n//////////////////////////////////\n//JQLite\n//////////////////////////////////\n\n/**\n * @ngdoc function\n * @name angular.element\n * @module ng\n * @kind function\n *\n * @description\n * Wraps a raw DOM element or HTML string as a [jQuery](http://jquery.com) element.\n *\n * If jQuery is available, `angular.element` is an alias for the\n * [jQuery](http://api.jquery.com/jQuery/) function. If jQuery is not available, `angular.element`\n * delegates to Angular's built-in subset of jQuery, called \"jQuery lite\" or \"jqLite.\"\n *\n *
jqLite is a tiny, API-compatible subset of jQuery that allows\n * Angular to manipulate the DOM in a cross-browser compatible way. **jqLite** implements only the most\n * commonly needed functionality with the goal of having a very small footprint.
\n *\n * To use jQuery, simply load it before `DOMContentLoaded` event fired.\n *\n *
**Note:** all element references in Angular are always wrapped with jQuery or\n * jqLite; they are never raw DOM references.
\n *\n * ## Angular's jqLite\n * jqLite provides only the following jQuery methods:\n *\n * - [`addClass()`](http://api.jquery.com/addClass/)\n * - [`after()`](http://api.jquery.com/after/)\n * - [`append()`](http://api.jquery.com/append/)\n * - [`attr()`](http://api.jquery.com/attr/)\n * - [`bind()`](http://api.jquery.com/bind/) - Does not support namespaces, selectors or eventData\n * - [`children()`](http://api.jquery.com/children/) - Does not support selectors\n * - [`clone()`](http://api.jquery.com/clone/)\n * - [`contents()`](http://api.jquery.com/contents/)\n * - [`css()`](http://api.jquery.com/css/) - Only retrieves inline-styles, does not call `getComputedStyles()`\n * - [`data()`](http://api.jquery.com/data/)\n * - [`empty()`](http://api.jquery.com/empty/)\n * - [`eq()`](http://api.jquery.com/eq/)\n * - [`find()`](http://api.jquery.com/find/) - Limited to lookups by tag name\n * - [`hasClass()`](http://api.jquery.com/hasClass/)\n * - [`html()`](http://api.jquery.com/html/)\n * - [`next()`](http://api.jquery.com/next/) - Does not support selectors\n * - [`on()`](http://api.jquery.com/on/) - Does not support namespaces, selectors or eventData\n * - [`off()`](http://api.jquery.com/off/) - Does not support namespaces or selectors\n * - [`one()`](http://api.jquery.com/one/) - Does not support namespaces or selectors\n * - [`parent()`](http://api.jquery.com/parent/) - Does not support selectors\n * - [`prepend()`](http://api.jquery.com/prepend/)\n * - [`prop()`](http://api.jquery.com/prop/)\n * - [`ready()`](http://api.jquery.com/ready/)\n * - [`remove()`](http://api.jquery.com/remove/)\n * - [`removeAttr()`](http://api.jquery.com/removeAttr/)\n * - [`removeClass()`](http://api.jquery.com/removeClass/)\n * - [`removeData()`](http://api.jquery.com/removeData/)\n * - [`replaceWith()`](http://api.jquery.com/replaceWith/)\n * - [`text()`](http://api.jquery.com/text/)\n * - [`toggleClass()`](http://api.jquery.com/toggleClass/)\n * - [`triggerHandler()`](http://api.jquery.com/triggerHandler/) - Passes a dummy event object to handlers.\n * - [`unbind()`](http://api.jquery.com/unbind/) - Does not support namespaces\n * - [`val()`](http://api.jquery.com/val/)\n * - [`wrap()`](http://api.jquery.com/wrap/)\n *\n * ## jQuery/jqLite Extras\n * Angular also provides the following additional methods and events to both jQuery and jqLite:\n *\n * ### Events\n * - `$destroy` - AngularJS intercepts all jqLite/jQuery's DOM destruction apis and fires this event\n * on all DOM nodes being removed. This can be used to clean up any 3rd party bindings to the DOM\n * element before it is removed.\n *\n * ### Methods\n * - `controller(name)` - retrieves the controller of the current element or its parent. By default\n * retrieves controller associated with the `ngController` directive. If `name` is provided as\n * camelCase directive name, then the controller for this directive will be retrieved (e.g.\n * `'ngModel'`).\n * - `injector()` - retrieves the injector of the current element or its parent.\n * - `scope()` - retrieves the {@link ng.$rootScope.Scope scope} of the current\n * element or its parent.\n * - `isolateScope()` - retrieves an isolate {@link ng.$rootScope.Scope scope} if one is attached directly to the\n * current element. This getter should be used only on elements that contain a directive which starts a new isolate\n * scope. Calling `scope()` on this element always returns the original non-isolate scope.\n * - `inheritedData()` - same as `data()`, but walks up the DOM until a value is found or the top\n * parent element is reached.\n *\n * @param {string|DOMElement} element HTML string or DOMElement to be wrapped into jQuery.\n * @returns {Object} jQuery object.\n */\n\nJQLite.expando = 'ng339';\n\nvar jqCache = JQLite.cache = {},\n jqId = 1,\n addEventListenerFn = (window.document.addEventListener\n ? function(element, type, fn) {element.addEventListener(type, fn, false);}\n : function(element, type, fn) {element.attachEvent('on' + type, fn);}),\n removeEventListenerFn = (window.document.removeEventListener\n ? function(element, type, fn) {element.removeEventListener(type, fn, false); }\n : function(element, type, fn) {element.detachEvent('on' + type, fn); });\n\n/*\n * !!! This is an undocumented \"private\" function !!!\n */\nvar jqData = JQLite._data = function(node) {\n //jQuery always returns an object on cache miss\n return this.cache[node[this.expando]] || {};\n};\n\nfunction jqNextId() { return ++jqId; }\n\n\nvar SPECIAL_CHARS_REGEXP = /([\\:\\-\\_]+(.))/g;\nvar MOZ_HACK_REGEXP = /^moz([A-Z])/;\nvar jqLiteMinErr = minErr('jqLite');\n\n/**\n * Converts snake_case to camelCase.\n * Also there is special case for Moz prefix starting with upper case letter.\n * @param name Name to normalize\n */\nfunction camelCase(name) {\n return name.\n replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {\n return offset ? letter.toUpperCase() : letter;\n }).\n replace(MOZ_HACK_REGEXP, 'Moz$1');\n}\n\n/////////////////////////////////////////////\n// jQuery mutation patch\n//\n// In conjunction with bindJQuery intercepts all jQuery's DOM destruction apis and fires a\n// $destroy event on all DOM nodes being removed.\n//\n/////////////////////////////////////////////\n\nfunction jqLitePatchJQueryRemove(name, dispatchThis, filterElems, getterIfNoArguments) {\n var originalJqFn = jQuery.fn[name];\n originalJqFn = originalJqFn.$original || originalJqFn;\n removePatch.$original = originalJqFn;\n jQuery.fn[name] = removePatch;\n\n function removePatch(param) {\n // jshint -W040\n var list = filterElems && param ? [this.filter(param)] : [this],\n fireEvent = dispatchThis,\n set, setIndex, setLength,\n element, childIndex, childLength, children;\n\n if (!getterIfNoArguments || param != null) {\n while(list.length) {\n set = list.shift();\n for(setIndex = 0, setLength = set.length; setIndex < setLength; setIndex++) {\n element = jqLite(set[setIndex]);\n if (fireEvent) {\n element.triggerHandler('$destroy');\n } else {\n fireEvent = !fireEvent;\n }\n for(childIndex = 0, childLength = (children = element.children()).length;\n childIndex < childLength;\n childIndex++) {\n list.push(jQuery(children[childIndex]));\n }\n }\n }\n }\n return originalJqFn.apply(this, arguments);\n }\n}\n\nvar SINGLE_TAG_REGEXP = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/;\nvar HTML_REGEXP = /<|&#?\\w+;/;\nvar TAG_NAME_REGEXP = /<([\\w:]+)/;\nvar XHTML_TAG_REGEXP = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi;\n\nvar wrapMap = {\n 'option': [1, ''],\n\n 'thead': [1, '', '
'],\n 'col': [2, '', '
'],\n 'tr': [2, '', '
'],\n 'td': [3, '', '
'],\n '_default': [0, \"\", \"\"]\n};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\nfunction jqLiteIsTextNode(html) {\n return !HTML_REGEXP.test(html);\n}\n\nfunction jqLiteBuildFragment(html, context) {\n var elem, tmp, tag, wrap,\n fragment = context.createDocumentFragment(),\n nodes = [], i, j, jj;\n\n if (jqLiteIsTextNode(html)) {\n // Convert non-html into a text node\n nodes.push(context.createTextNode(html));\n } else {\n tmp = fragment.appendChild(context.createElement('div'));\n // Convert html into DOM nodes\n tag = (TAG_NAME_REGEXP.exec(html) || [\"\", \"\"])[1].toLowerCase();\n wrap = wrapMap[tag] || wrapMap._default;\n tmp.innerHTML = '
 
' +\n wrap[1] + html.replace(XHTML_TAG_REGEXP, \"<$1>\") + wrap[2];\n tmp.removeChild(tmp.firstChild);\n\n // Descend through wrappers to the right content\n i = wrap[0];\n while (i--) {\n tmp = tmp.lastChild;\n }\n\n for (j=0, jj=tmp.childNodes.length; j -1);\n}\n\nfunction jqLiteRemoveClass(element, cssClasses) {\n if (cssClasses && element.setAttribute) {\n forEach(cssClasses.split(' '), function(cssClass) {\n element.setAttribute('class', trim(\n (\" \" + (element.getAttribute('class') || '') + \" \")\n .replace(/[\\n\\t]/g, \" \")\n .replace(\" \" + trim(cssClass) + \" \", \" \"))\n );\n });\n }\n}\n\nfunction jqLiteAddClass(element, cssClasses) {\n if (cssClasses && element.setAttribute) {\n var existingClasses = (' ' + (element.getAttribute('class') || '') + ' ')\n .replace(/[\\n\\t]/g, \" \");\n\n forEach(cssClasses.split(' '), function(cssClass) {\n cssClass = trim(cssClass);\n if (existingClasses.indexOf(' ' + cssClass + ' ') === -1) {\n existingClasses += cssClass + ' ';\n }\n });\n\n element.setAttribute('class', trim(existingClasses));\n }\n}\n\nfunction jqLiteAddNodes(root, elements) {\n if (elements) {\n elements = (!elements.nodeName && isDefined(elements.length) && !isWindow(elements))\n ? elements\n : [ elements ];\n for(var i=0; i < elements.length; i++) {\n root.push(elements[i]);\n }\n }\n}\n\nfunction jqLiteController(element, name) {\n return jqLiteInheritedData(element, '$' + (name || 'ngController' ) + 'Controller');\n}\n\nfunction jqLiteInheritedData(element, name, value) {\n // if element is the document object work with the html element instead\n // this makes $(document).scope() possible\n if(element.nodeType == 9) {\n element = element.documentElement;\n }\n var names = isArray(name) ? name : [name];\n\n while (element) {\n for (var i = 0, ii = names.length; i < ii; i++) {\n if ((value = jqLite.data(element, names[i])) !== undefined) return value;\n }\n\n // If dealing with a document fragment node with a host element, and no parent, use the host\n // element as the parent. This enables directives within a Shadow DOM or polyfilled Shadow DOM\n // to lookup parent controllers.\n element = element.parentNode || (element.nodeType === 11 && element.host);\n }\n}\n\nfunction jqLiteEmpty(element) {\n for (var i = 0, childNodes = element.childNodes; i < childNodes.length; i++) {\n jqLiteDealoc(childNodes[i]);\n }\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n}\n\n//////////////////////////////////////////\n// Functions which are declared directly.\n//////////////////////////////////////////\nvar JQLitePrototype = JQLite.prototype = {\n ready: function(fn) {\n var fired = false;\n\n function trigger() {\n if (fired) return;\n fired = true;\n fn();\n }\n\n // check if document already is loaded\n if (document.readyState === 'complete'){\n setTimeout(trigger);\n } else {\n this.on('DOMContentLoaded', trigger); // works for modern browsers and IE9\n // we can not use jqLite since we are not done loading and jQuery could be loaded later.\n // jshint -W064\n JQLite(window).on('load', trigger); // fallback to window.onload for others\n // jshint +W064\n }\n },\n toString: function() {\n var value = [];\n forEach(this, function(e){ value.push('' + e);});\n return '[' + value.join(', ') + ']';\n },\n\n eq: function(index) {\n return (index >= 0) ? jqLite(this[index]) : jqLite(this[this.length + index]);\n },\n\n length: 0,\n push: push,\n sort: [].sort,\n splice: [].splice\n};\n\n//////////////////////////////////////////\n// Functions iterating getter/setters.\n// these functions return self on setter and\n// value on get.\n//////////////////////////////////////////\nvar BOOLEAN_ATTR = {};\nforEach('multiple,selected,checked,disabled,readOnly,required,open'.split(','), function(value) {\n BOOLEAN_ATTR[lowercase(value)] = value;\n});\nvar BOOLEAN_ELEMENTS = {};\nforEach('input,select,option,textarea,button,form,details'.split(','), function(value) {\n BOOLEAN_ELEMENTS[uppercase(value)] = true;\n});\n\nfunction getBooleanAttrName(element, name) {\n // check dom last since we will most likely fail on name\n var booleanAttr = BOOLEAN_ATTR[name.toLowerCase()];\n\n // booleanAttr is here twice to minimize DOM access\n return booleanAttr && BOOLEAN_ELEMENTS[element.nodeName] && booleanAttr;\n}\n\nforEach({\n data: jqLiteData,\n removeData: jqLiteRemoveData\n}, function(fn, name) {\n JQLite[name] = fn;\n});\n\nforEach({\n data: jqLiteData,\n inheritedData: jqLiteInheritedData,\n\n scope: function(element) {\n // Can't use jqLiteData here directly so we stay compatible with jQuery!\n return jqLite.data(element, '$scope') || jqLiteInheritedData(element.parentNode || element, ['$isolateScope', '$scope']);\n },\n\n isolateScope: function(element) {\n // Can't use jqLiteData here directly so we stay compatible with jQuery!\n return jqLite.data(element, '$isolateScope') || jqLite.data(element, '$isolateScopeNoTemplate');\n },\n\n controller: jqLiteController,\n\n injector: function(element) {\n return jqLiteInheritedData(element, '$injector');\n },\n\n removeAttr: function(element,name) {\n element.removeAttribute(name);\n },\n\n hasClass: jqLiteHasClass,\n\n css: function(element, name, value) {\n name = camelCase(name);\n\n if (isDefined(value)) {\n element.style[name] = value;\n } else {\n var val;\n\n if (msie <= 8) {\n // this is some IE specific weirdness that jQuery 1.6.4 does not sure why\n val = element.currentStyle && element.currentStyle[name];\n if (val === '') val = 'auto';\n }\n\n val = val || element.style[name];\n\n if (msie <= 8) {\n // jquery weirdness :-/\n val = (val === '') ? undefined : val;\n }\n\n return val;\n }\n },\n\n attr: function(element, name, value){\n var lowercasedName = lowercase(name);\n if (BOOLEAN_ATTR[lowercasedName]) {\n if (isDefined(value)) {\n if (!!value) {\n element[name] = true;\n element.setAttribute(name, lowercasedName);\n } else {\n element[name] = false;\n element.removeAttribute(lowercasedName);\n }\n } else {\n return (element[name] ||\n (element.attributes.getNamedItem(name)|| noop).specified)\n ? lowercasedName\n : undefined;\n }\n } else if (isDefined(value)) {\n element.setAttribute(name, value);\n } else if (element.getAttribute) {\n // the extra argument \"2\" is to get the right thing for a.href in IE, see jQuery code\n // some elements (e.g. Document) don't have get attribute, so return undefined\n var ret = element.getAttribute(name, 2);\n // normalize non-existing attributes to undefined (as jQuery)\n return ret === null ? undefined : ret;\n }\n },\n\n prop: function(element, name, value) {\n if (isDefined(value)) {\n element[name] = value;\n } else {\n return element[name];\n }\n },\n\n text: (function() {\n var NODE_TYPE_TEXT_PROPERTY = [];\n if (msie < 9) {\n NODE_TYPE_TEXT_PROPERTY[1] = 'innerText'; /** Element **/\n NODE_TYPE_TEXT_PROPERTY[3] = 'nodeValue'; /** Text **/\n } else {\n NODE_TYPE_TEXT_PROPERTY[1] = /** Element **/\n NODE_TYPE_TEXT_PROPERTY[3] = 'textContent'; /** Text **/\n }\n getText.$dv = '';\n return getText;\n\n function getText(element, value) {\n var textProp = NODE_TYPE_TEXT_PROPERTY[element.nodeType];\n if (isUndefined(value)) {\n return textProp ? element[textProp] : '';\n }\n element[textProp] = value;\n }\n })(),\n\n val: function(element, value) {\n if (isUndefined(value)) {\n if (nodeName_(element) === 'SELECT' && element.multiple) {\n var result = [];\n forEach(element.options, function (option) {\n if (option.selected) {\n result.push(option.value || option.text);\n }\n });\n return result.length === 0 ? null : result;\n }\n return element.value;\n }\n element.value = value;\n },\n\n html: function(element, value) {\n if (isUndefined(value)) {\n return element.innerHTML;\n }\n for (var i = 0, childNodes = element.childNodes; i < childNodes.length; i++) {\n jqLiteDealoc(childNodes[i]);\n }\n element.innerHTML = value;\n },\n\n empty: jqLiteEmpty\n}, function(fn, name){\n /**\n * Properties: writes return selection, reads return first value\n */\n JQLite.prototype[name] = function(arg1, arg2) {\n var i, key;\n var nodeCount = this.length;\n\n // jqLiteHasClass has only two arguments, but is a getter-only fn, so we need to special-case it\n // in a way that survives minification.\n // jqLiteEmpty takes no arguments but is a setter.\n if (fn !== jqLiteEmpty &&\n (((fn.length == 2 && (fn !== jqLiteHasClass && fn !== jqLiteController)) ? arg1 : arg2) === undefined)) {\n if (isObject(arg1)) {\n\n // we are a write, but the object properties are the key/values\n for (i = 0; i < nodeCount; i++) {\n if (fn === jqLiteData) {\n // data() takes the whole object in jQuery\n fn(this[i], arg1);\n } else {\n for (key in arg1) {\n fn(this[i], key, arg1[key]);\n }\n }\n }\n // return self for chaining\n return this;\n } else {\n // we are a read, so read the first child.\n // TODO: do we still need this?\n var value = fn.$dv;\n // Only if we have $dv do we iterate over all, otherwise it is just the first element.\n var jj = (value === undefined) ? Math.min(nodeCount, 1) : nodeCount;\n for (var j = 0; j < jj; j++) {\n var nodeValue = fn(this[j], arg1, arg2);\n value = value ? value + nodeValue : nodeValue;\n }\n return value;\n }\n } else {\n // we are a write, so apply to all children\n for (i = 0; i < nodeCount; i++) {\n fn(this[i], arg1, arg2);\n }\n // return self for chaining\n return this;\n }\n };\n});\n\nfunction createEventHandler(element, events) {\n var eventHandler = function (event, type) {\n if (!event.preventDefault) {\n event.preventDefault = function() {\n event.returnValue = false; //ie\n };\n }\n\n if (!event.stopPropagation) {\n event.stopPropagation = function() {\n event.cancelBubble = true; //ie\n };\n }\n\n if (!event.target) {\n event.target = event.srcElement || document;\n }\n\n if (isUndefined(event.defaultPrevented)) {\n var prevent = event.preventDefault;\n event.preventDefault = function() {\n event.defaultPrevented = true;\n prevent.call(event);\n };\n event.defaultPrevented = false;\n }\n\n event.isDefaultPrevented = function() {\n return event.defaultPrevented || event.returnValue === false;\n };\n\n // Copy event handlers in case event handlers array is modified during execution.\n var eventHandlersCopy = shallowCopy(events[type || event.type] || []);\n\n forEach(eventHandlersCopy, function(fn) {\n fn.call(element, event);\n });\n\n // Remove monkey-patched methods (IE),\n // as they would cause memory leaks in IE8.\n if (msie <= 8) {\n // IE7/8 does not allow to delete property on native object\n event.preventDefault = null;\n event.stopPropagation = null;\n event.isDefaultPrevented = null;\n } else {\n // It shouldn't affect normal browsers (native methods are defined on prototype).\n delete event.preventDefault;\n delete event.stopPropagation;\n delete event.isDefaultPrevented;\n }\n };\n eventHandler.elem = element;\n return eventHandler;\n}\n\n//////////////////////////////////////////\n// Functions iterating traversal.\n// These functions chain results into a single\n// selector.\n//////////////////////////////////////////\nforEach({\n removeData: jqLiteRemoveData,\n\n dealoc: jqLiteDealoc,\n\n on: function onFn(element, type, fn, unsupported){\n if (isDefined(unsupported)) throw jqLiteMinErr('onargs', 'jqLite#on() does not support the `selector` or `eventData` parameters');\n\n var events = jqLiteExpandoStore(element, 'events'),\n handle = jqLiteExpandoStore(element, 'handle');\n\n if (!events) jqLiteExpandoStore(element, 'events', events = {});\n if (!handle) jqLiteExpandoStore(element, 'handle', handle = createEventHandler(element, events));\n\n forEach(type.split(' '), function(type){\n var eventFns = events[type];\n\n if (!eventFns) {\n if (type == 'mouseenter' || type == 'mouseleave') {\n var contains = document.body.contains || document.body.compareDocumentPosition ?\n function( a, b ) {\n // jshint bitwise: false\n var adown = a.nodeType === 9 ? a.documentElement : a,\n bup = b && b.parentNode;\n return a === bup || !!( bup && bup.nodeType === 1 && (\n adown.contains ?\n adown.contains( bup ) :\n a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n ));\n } :\n function( a, b ) {\n if ( b ) {\n while ( (b = b.parentNode) ) {\n if ( b === a ) {\n return true;\n }\n }\n }\n return false;\n };\n\n events[type] = [];\n\n // Refer to jQuery's implementation of mouseenter & mouseleave\n // Read about mouseenter and mouseleave:\n // http://www.quirksmode.org/js/events_mouse.html#link8\n var eventmap = { mouseleave : \"mouseout\", mouseenter : \"mouseover\"};\n\n onFn(element, eventmap[type], function(event) {\n var target = this, related = event.relatedTarget;\n // For mousenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n if ( !related || (related !== target && !contains(target, related)) ){\n handle(event, type);\n }\n });\n\n } else {\n addEventListenerFn(element, type, handle);\n events[type] = [];\n }\n eventFns = events[type];\n }\n eventFns.push(fn);\n });\n },\n\n off: jqLiteOff,\n\n one: function(element, type, fn) {\n element = jqLite(element);\n\n //add the listener twice so that when it is called\n //you can remove the original function and still be\n //able to call element.off(ev, fn) normally\n element.on(type, function onFn() {\n element.off(type, fn);\n element.off(type, onFn);\n });\n element.on(type, fn);\n },\n\n replaceWith: function(element, replaceNode) {\n var index, parent = element.parentNode;\n jqLiteDealoc(element);\n forEach(new JQLite(replaceNode), function(node){\n if (index) {\n parent.insertBefore(node, index.nextSibling);\n } else {\n parent.replaceChild(node, element);\n }\n index = node;\n });\n },\n\n children: function(element) {\n var children = [];\n forEach(element.childNodes, function(element){\n if (element.nodeType === 1)\n children.push(element);\n });\n return children;\n },\n\n contents: function(element) {\n return element.contentDocument || element.childNodes || [];\n },\n\n append: function(element, node) {\n forEach(new JQLite(node), function(child){\n if (element.nodeType === 1 || element.nodeType === 11) {\n element.appendChild(child);\n }\n });\n },\n\n prepend: function(element, node) {\n if (element.nodeType === 1) {\n var index = element.firstChild;\n forEach(new JQLite(node), function(child){\n element.insertBefore(child, index);\n });\n }\n },\n\n wrap: function(element, wrapNode) {\n wrapNode = jqLite(wrapNode)[0];\n var parent = element.parentNode;\n if (parent) {\n parent.replaceChild(wrapNode, element);\n }\n wrapNode.appendChild(element);\n },\n\n remove: function(element) {\n jqLiteDealoc(element);\n var parent = element.parentNode;\n if (parent) parent.removeChild(element);\n },\n\n after: function(element, newElement) {\n var index = element, parent = element.parentNode;\n forEach(new JQLite(newElement), function(node){\n parent.insertBefore(node, index.nextSibling);\n index = node;\n });\n },\n\n addClass: jqLiteAddClass,\n removeClass: jqLiteRemoveClass,\n\n toggleClass: function(element, selector, condition) {\n if (selector) {\n forEach(selector.split(' '), function(className){\n var classCondition = condition;\n if (isUndefined(classCondition)) {\n classCondition = !jqLiteHasClass(element, className);\n }\n (classCondition ? jqLiteAddClass : jqLiteRemoveClass)(element, className);\n });\n }\n },\n\n parent: function(element) {\n var parent = element.parentNode;\n return parent && parent.nodeType !== 11 ? parent : null;\n },\n\n next: function(element) {\n if (element.nextElementSibling) {\n return element.nextElementSibling;\n }\n\n // IE8 doesn't have nextElementSibling\n var elm = element.nextSibling;\n while (elm != null && elm.nodeType !== 1) {\n elm = elm.nextSibling;\n }\n return elm;\n },\n\n find: function(element, selector) {\n if (element.getElementsByTagName) {\n return element.getElementsByTagName(selector);\n } else {\n return [];\n }\n },\n\n clone: jqLiteClone,\n\n triggerHandler: function(element, event, extraParameters) {\n\n var dummyEvent, eventFnsCopy, handlerArgs;\n var eventName = event.type || event;\n var eventFns = (jqLiteExpandoStore(element, 'events') || {})[eventName];\n\n if (eventFns) {\n\n // Create a dummy event to pass to the handlers\n dummyEvent = {\n preventDefault: function() { this.defaultPrevented = true; },\n isDefaultPrevented: function() { return this.defaultPrevented === true; },\n stopPropagation: noop,\n type: eventName,\n target: element\n };\n\n // If a custom event was provided then extend our dummy event with it\n if (event.type) {\n dummyEvent = extend(dummyEvent, event);\n }\n\n // Copy event handlers in case event handlers array is modified during execution.\n eventFnsCopy = shallowCopy(eventFns);\n handlerArgs = extraParameters ? [dummyEvent].concat(extraParameters) : [dummyEvent];\n\n forEach(eventFnsCopy, function(fn) {\n fn.apply(element, handlerArgs);\n });\n\n }\n }\n}, function(fn, name){\n /**\n * chaining functions\n */\n JQLite.prototype[name] = function(arg1, arg2, arg3) {\n var value;\n for(var i=0; i < this.length; i++) {\n if (isUndefined(value)) {\n value = fn(this[i], arg1, arg2, arg3);\n if (isDefined(value)) {\n // any function which returns a value needs to be wrapped\n value = jqLite(value);\n }\n } else {\n jqLiteAddNodes(value, fn(this[i], arg1, arg2, arg3));\n }\n }\n return isDefined(value) ? value : this;\n };\n\n // bind legacy bind/unbind to on/off\n JQLite.prototype.bind = JQLite.prototype.on;\n JQLite.prototype.unbind = JQLite.prototype.off;\n});\n\n/**\n * Computes a hash of an 'obj'.\n * Hash of a:\n * string is string\n * number is number as string\n * object is either result of calling $$hashKey function on the object or uniquely generated id,\n * that is also assigned to the $$hashKey property of the object.\n *\n * @param obj\n * @returns {string} hash string such that the same input will have the same hash string.\n * The resulting string key is in 'type:hashKey' format.\n */\nfunction hashKey(obj, nextUidFn) {\n var objType = typeof obj,\n key;\n\n if (objType == 'function' || (objType == 'object' && obj !== null)) {\n if (typeof (key = obj.$$hashKey) == 'function') {\n // must invoke on object to keep the right this\n key = obj.$$hashKey();\n } else if (key === undefined) {\n key = obj.$$hashKey = (nextUidFn || nextUid)();\n }\n } else {\n key = obj;\n }\n\n return objType + ':' + key;\n}\n\n/**\n * HashMap which can use objects as keys\n */\nfunction HashMap(array, isolatedUid) {\n if (isolatedUid) {\n var uid = 0;\n this.nextUid = function() {\n return ++uid;\n };\n }\n forEach(array, this.put, this);\n}\nHashMap.prototype = {\n /**\n * Store key value pair\n * @param key key to store can be any type\n * @param value value to store can be any type\n */\n put: function(key, value) {\n this[hashKey(key, this.nextUid)] = value;\n },\n\n /**\n * @param key\n * @returns {Object} the value for the key\n */\n get: function(key) {\n return this[hashKey(key, this.nextUid)];\n },\n\n /**\n * Remove the key/value pair\n * @param key\n */\n remove: function(key) {\n var value = this[key = hashKey(key, this.nextUid)];\n delete this[key];\n return value;\n }\n};\n\n/**\n * @ngdoc function\n * @module ng\n * @name angular.injector\n * @kind function\n *\n * @description\n * Creates an injector object that can be used for retrieving services as well as for\n * dependency injection (see {@link guide/di dependency injection}).\n *\n\n * @param {Array.} modules A list of module functions or their aliases. See\n * {@link angular.module}. The `ng` module must be explicitly added.\n * @returns {injector} Injector object. See {@link auto.$injector $injector}.\n *\n * @example\n * Typical usage\n * ```js\n * // create an injector\n * var $injector = angular.injector(['ng']);\n *\n * // use the injector to kick off your application\n * // use the type inference to auto inject arguments, or use implicit injection\n * $injector.invoke(function($rootScope, $compile, $document){\n * $compile($document)($rootScope);\n * $rootScope.$digest();\n * });\n * ```\n *\n * Sometimes you want to get access to the injector of a currently running Angular app\n * from outside Angular. Perhaps, you want to inject and compile some markup after the\n * application has been bootstrapped. You can do this using the extra `injector()` added\n * to JQuery/jqLite elements. See {@link angular.element}.\n *\n * *This is fairly rare but could be the case if a third party library is injecting the\n * markup.*\n *\n * In the following example a new block of HTML containing a `ng-controller`\n * directive is added to the end of the document body by JQuery. We then compile and link\n * it into the current AngularJS scope.\n *\n * ```js\n * var $div = $('
{{content.label}}
');\n * $(document.body).append($div);\n *\n * angular.element(document).injector().invoke(function($compile) {\n * var scope = angular.element($div).scope();\n * $compile($div)(scope);\n * });\n * ```\n */\n\n\n/**\n * @ngdoc module\n * @name auto\n * @description\n *\n * Implicit module which gets automatically added to each {@link auto.$injector $injector}.\n */\n\nvar FN_ARGS = /^function\\s*[^\\(]*\\(\\s*([^\\)]*)\\)/m;\nvar FN_ARG_SPLIT = /,/;\nvar FN_ARG = /^\\s*(_?)(\\S+?)\\1\\s*$/;\nvar STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/mg;\nvar $injectorMinErr = minErr('$injector');\nfunction annotate(fn) {\n var $inject,\n fnText,\n argDecl,\n last;\n\n if (typeof fn === 'function') {\n if (!($inject = fn.$inject)) {\n $inject = [];\n if (fn.length) {\n fnText = fn.toString().replace(STRIP_COMMENTS, '');\n argDecl = fnText.match(FN_ARGS);\n forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg){\n arg.replace(FN_ARG, function(all, underscore, name){\n $inject.push(name);\n });\n });\n }\n fn.$inject = $inject;\n }\n } else if (isArray(fn)) {\n last = fn.length - 1;\n assertArgFn(fn[last], 'fn');\n $inject = fn.slice(0, last);\n } else {\n assertArgFn(fn, 'fn', true);\n }\n return $inject;\n}\n\n///////////////////////////////////////\n\n/**\n * @ngdoc service\n * @name $injector\n *\n * @description\n *\n * `$injector` is used to retrieve object instances as defined by\n * {@link auto.$provide provider}, instantiate types, invoke methods,\n * and load modules.\n *\n * The following always holds true:\n *\n * ```js\n * var $injector = angular.injector();\n * expect($injector.get('$injector')).toBe($injector);\n * expect($injector.invoke(function($injector){\n * return $injector;\n * })).toBe($injector);\n * ```\n *\n * # Injection Function Annotation\n *\n * JavaScript does not have annotations, and annotations are needed for dependency injection. The\n * following are all valid ways of annotating function with injection arguments and are equivalent.\n *\n * ```js\n * // inferred (only works if code not minified/obfuscated)\n * $injector.invoke(function(serviceA){});\n *\n * // annotated\n * function explicit(serviceA) {};\n * explicit.$inject = ['serviceA'];\n * $injector.invoke(explicit);\n *\n * // inline\n * $injector.invoke(['serviceA', function(serviceA){}]);\n * ```\n *\n * ## Inference\n *\n * In JavaScript calling `toString()` on a function returns the function definition. The definition\n * can then be parsed and the function arguments can be extracted. *NOTE:* This does not work with\n * minification, and obfuscation tools since these tools change the argument names.\n *\n * ## `$inject` Annotation\n * By adding an `$inject` property onto a function the injection parameters can be specified.\n *\n * ## Inline\n * As an array of injection names, where the last item in the array is the function to call.\n */\n\n/**\n * @ngdoc method\n * @name $injector#get\n *\n * @description\n * Return an instance of the service.\n *\n * @param {string} name The name of the instance to retrieve.\n * @return {*} The instance.\n */\n\n/**\n * @ngdoc method\n * @name $injector#invoke\n *\n * @description\n * Invoke the method and supply the method arguments from the `$injector`.\n *\n * @param {!Function} fn The function to invoke. Function parameters are injected according to the\n * {@link guide/di $inject Annotation} rules.\n * @param {Object=} self The `this` for the invoked method.\n * @param {Object=} locals Optional object. If preset then any argument names are read from this\n * object first, before the `$injector` is consulted.\n * @returns {*} the value returned by the invoked `fn` function.\n */\n\n/**\n * @ngdoc method\n * @name $injector#has\n *\n * @description\n * Allows the user to query if the particular service exists.\n *\n * @param {string} name Name of the service to query.\n * @returns {boolean} `true` if injector has given service.\n */\n\n/**\n * @ngdoc method\n * @name $injector#instantiate\n * @description\n * Create a new instance of JS type. The method takes a constructor function, invokes the new\n * operator, and supplies all of the arguments to the constructor function as specified by the\n * constructor annotation.\n *\n * @param {Function} Type Annotated constructor function.\n * @param {Object=} locals Optional object. If preset then any argument names are read from this\n * object first, before the `$injector` is consulted.\n * @returns {Object} new instance of `Type`.\n */\n\n/**\n * @ngdoc method\n * @name $injector#annotate\n *\n * @description\n * Returns an array of service names which the function is requesting for injection. This API is\n * used by the injector to determine which services need to be injected into the function when the\n * function is invoked. There are three ways in which the function can be annotated with the needed\n * dependencies.\n *\n * # Argument names\n *\n * The simplest form is to extract the dependencies from the arguments of the function. This is done\n * by converting the function into a string using `toString()` method and extracting the argument\n * names.\n * ```js\n * // Given\n * function MyController($scope, $route) {\n * // ...\n * }\n *\n * // Then\n * expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);\n * ```\n *\n * This method does not work with code minification / obfuscation. For this reason the following\n * annotation strategies are supported.\n *\n * # The `$inject` property\n *\n * If a function has an `$inject` property and its value is an array of strings, then the strings\n * represent names of services to be injected into the function.\n * ```js\n * // Given\n * var MyController = function(obfuscatedScope, obfuscatedRoute) {\n * // ...\n * }\n * // Define function dependencies\n * MyController['$inject'] = ['$scope', '$route'];\n *\n * // Then\n * expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);\n * ```\n *\n * # The array notation\n *\n * It is often desirable to inline Injected functions and that's when setting the `$inject` property\n * is very inconvenient. In these situations using the array notation to specify the dependencies in\n * a way that survives minification is a better choice:\n *\n * ```js\n * // We wish to write this (not minification / obfuscation safe)\n * injector.invoke(function($compile, $rootScope) {\n * // ...\n * });\n *\n * // We are forced to write break inlining\n * var tmpFn = function(obfuscatedCompile, obfuscatedRootScope) {\n * // ...\n * };\n * tmpFn.$inject = ['$compile', '$rootScope'];\n * injector.invoke(tmpFn);\n *\n * // To better support inline function the inline annotation is supported\n * injector.invoke(['$compile', '$rootScope', function(obfCompile, obfRootScope) {\n * // ...\n * }]);\n *\n * // Therefore\n * expect(injector.annotate(\n * ['$compile', '$rootScope', function(obfus_$compile, obfus_$rootScope) {}])\n * ).toEqual(['$compile', '$rootScope']);\n * ```\n *\n * @param {Function|Array.} fn Function for which dependent service names need to\n * be retrieved as described above.\n *\n * @returns {Array.} The names of the services which the function requires.\n */\n\n\n\n\n/**\n * @ngdoc service\n * @name $provide\n *\n * @description\n *\n * The {@link auto.$provide $provide} service has a number of methods for registering components\n * with the {@link auto.$injector $injector}. Many of these functions are also exposed on\n * {@link angular.Module}.\n *\n * An Angular **service** is a singleton object created by a **service factory**. These **service\n * factories** are functions which, in turn, are created by a **service provider**.\n * The **service providers** are constructor functions. When instantiated they must contain a\n * property called `$get`, which holds the **service factory** function.\n *\n * When you request a service, the {@link auto.$injector $injector} is responsible for finding the\n * correct **service provider**, instantiating it and then calling its `$get` **service factory**\n * function to get the instance of the **service**.\n *\n * Often services have no configuration options and there is no need to add methods to the service\n * provider. The provider will be no more than a constructor function with a `$get` property. For\n * these cases the {@link auto.$provide $provide} service has additional helper methods to register\n * services without specifying a provider.\n *\n * * {@link auto.$provide#provider provider(provider)} - registers a **service provider** with the\n * {@link auto.$injector $injector}\n * * {@link auto.$provide#constant constant(obj)} - registers a value/object that can be accessed by\n * providers and services.\n * * {@link auto.$provide#value value(obj)} - registers a value/object that can only be accessed by\n * services, not providers.\n * * {@link auto.$provide#factory factory(fn)} - registers a service **factory function**, `fn`,\n * that will be wrapped in a **service provider** object, whose `$get` property will contain the\n * given factory function.\n * * {@link auto.$provide#service service(class)} - registers a **constructor function**, `class`\n * that will be wrapped in a **service provider** object, whose `$get` property will instantiate\n * a new object using the given constructor function.\n *\n * See the individual methods for more information and examples.\n */\n\n/**\n * @ngdoc method\n * @name $provide#provider\n * @description\n *\n * Register a **provider function** with the {@link auto.$injector $injector}. Provider functions\n * are constructor functions, whose instances are responsible for \"providing\" a factory for a\n * service.\n *\n * Service provider names start with the name of the service they provide followed by `Provider`.\n * For example, the {@link ng.$log $log} service has a provider called\n * {@link ng.$logProvider $logProvider}.\n *\n * Service provider objects can have additional methods which allow configuration of the provider\n * and its service. Importantly, you can configure what kind of service is created by the `$get`\n * method, or how that service will act. For example, the {@link ng.$logProvider $logProvider} has a\n * method {@link ng.$logProvider#debugEnabled debugEnabled}\n * which lets you specify whether the {@link ng.$log $log} service will log debug messages to the\n * console or not.\n *\n * @param {string} name The name of the instance. NOTE: the provider will be available under `name +\n 'Provider'` key.\n * @param {(Object|function())} provider If the provider is:\n *\n * - `Object`: then it should have a `$get` method. The `$get` method will be invoked using\n * {@link auto.$injector#invoke $injector.invoke()} when an instance needs to be created.\n * - `Constructor`: a new instance of the provider will be created using\n * {@link auto.$injector#instantiate $injector.instantiate()}, then treated as `object`.\n *\n * @returns {Object} registered provider instance\n\n * @example\n *\n * The following example shows how to create a simple event tracking service and register it using\n * {@link auto.$provide#provider $provide.provider()}.\n *\n * ```js\n * // Define the eventTracker provider\n * function EventTrackerProvider() {\n * var trackingUrl = '/track';\n *\n * // A provider method for configuring where the tracked events should been saved\n * this.setTrackingUrl = function(url) {\n * trackingUrl = url;\n * };\n *\n * // The service factory function\n * this.$get = ['$http', function($http) {\n * var trackedEvents = {};\n * return {\n * // Call this to track an event\n * event: function(event) {\n * var count = trackedEvents[event] || 0;\n * count += 1;\n * trackedEvents[event] = count;\n * return count;\n * },\n * // Call this to save the tracked events to the trackingUrl\n * save: function() {\n * $http.post(trackingUrl, trackedEvents);\n * }\n * };\n * }];\n * }\n *\n * describe('eventTracker', function() {\n * var postSpy;\n *\n * beforeEach(module(function($provide) {\n * // Register the eventTracker provider\n * $provide.provider('eventTracker', EventTrackerProvider);\n * }));\n *\n * beforeEach(module(function(eventTrackerProvider) {\n * // Configure eventTracker provider\n * eventTrackerProvider.setTrackingUrl('/custom-track');\n * }));\n *\n * it('tracks events', inject(function(eventTracker) {\n * expect(eventTracker.event('login')).toEqual(1);\n * expect(eventTracker.event('login')).toEqual(2);\n * }));\n *\n * it('saves to the tracking url', inject(function(eventTracker, $http) {\n * postSpy = spyOn($http, 'post');\n * eventTracker.event('login');\n * eventTracker.save();\n * expect(postSpy).toHaveBeenCalled();\n * expect(postSpy.mostRecentCall.args[0]).not.toEqual('/track');\n * expect(postSpy.mostRecentCall.args[0]).toEqual('/custom-track');\n * expect(postSpy.mostRecentCall.args[1]).toEqual({ 'login': 1 });\n * }));\n * });\n * ```\n */\n\n/**\n * @ngdoc method\n * @name $provide#factory\n * @description\n *\n * Register a **service factory**, which will be called to return the service instance.\n * This is short for registering a service where its provider consists of only a `$get` property,\n * which is the given service factory function.\n * You should use {@link auto.$provide#factory $provide.factory(getFn)} if you do not need to\n * configure your service in a provider.\n *\n * @param {string} name The name of the instance.\n * @param {function()} $getFn The $getFn for the instance creation. Internally this is a short hand\n * for `$provide.provider(name, {$get: $getFn})`.\n * @returns {Object} registered provider instance\n *\n * @example\n * Here is an example of registering a service\n * ```js\n * $provide.factory('ping', ['$http', function($http) {\n * return function ping() {\n * return $http.send('/ping');\n * };\n * }]);\n * ```\n * You would then inject and use this service like this:\n * ```js\n * someModule.controller('Ctrl', ['ping', function(ping) {\n * ping();\n * }]);\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#service\n * @description\n *\n * Register a **service constructor**, which will be invoked with `new` to create the service\n * instance.\n * This is short for registering a service where its provider's `$get` property is the service\n * constructor function that will be used to instantiate the service instance.\n *\n * You should use {@link auto.$provide#service $provide.service(class)} if you define your service\n * as a type/class.\n *\n * @param {string} name The name of the instance.\n * @param {Function} constructor A class (constructor function) that will be instantiated.\n * @returns {Object} registered provider instance\n *\n * @example\n * Here is an example of registering a service using\n * {@link auto.$provide#service $provide.service(class)}.\n * ```js\n * var Ping = function($http) {\n * this.$http = $http;\n * };\n *\n * Ping.$inject = ['$http'];\n *\n * Ping.prototype.send = function() {\n * return this.$http.get('/ping');\n * };\n * $provide.service('ping', Ping);\n * ```\n * You would then inject and use this service like this:\n * ```js\n * someModule.controller('Ctrl', ['ping', function(ping) {\n * ping.send();\n * }]);\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#value\n * @description\n *\n * Register a **value service** with the {@link auto.$injector $injector}, such as a string, a\n * number, an array, an object or a function. This is short for registering a service where its\n * provider's `$get` property is a factory function that takes no arguments and returns the **value\n * service**.\n *\n * Value services are similar to constant services, except that they cannot be injected into a\n * module configuration function (see {@link angular.Module#config}) but they can be overridden by\n * an Angular\n * {@link auto.$provide#decorator decorator}.\n *\n * @param {string} name The name of the instance.\n * @param {*} value The value.\n * @returns {Object} registered provider instance\n *\n * @example\n * Here are some examples of creating value services.\n * ```js\n * $provide.value('ADMIN_USER', 'admin');\n *\n * $provide.value('RoleLookup', { admin: 0, writer: 1, reader: 2 });\n *\n * $provide.value('halfOf', function(value) {\n * return value / 2;\n * });\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#constant\n * @description\n *\n * Register a **constant service**, such as a string, a number, an array, an object or a function,\n * with the {@link auto.$injector $injector}. Unlike {@link auto.$provide#value value} it can be\n * injected into a module configuration function (see {@link angular.Module#config}) and it cannot\n * be overridden by an Angular {@link auto.$provide#decorator decorator}.\n *\n * @param {string} name The name of the constant.\n * @param {*} value The constant value.\n * @returns {Object} registered instance\n *\n * @example\n * Here a some examples of creating constants:\n * ```js\n * $provide.constant('SHARD_HEIGHT', 306);\n *\n * $provide.constant('MY_COLOURS', ['red', 'blue', 'grey']);\n *\n * $provide.constant('double', function(value) {\n * return value * 2;\n * });\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#decorator\n * @description\n *\n * Register a **service decorator** with the {@link auto.$injector $injector}. A service decorator\n * intercepts the creation of a service, allowing it to override or modify the behaviour of the\n * service. The object returned by the decorator may be the original service, or a new service\n * object which replaces or wraps and delegates to the original service.\n *\n * @param {string} name The name of the service to decorate.\n * @param {function()} decorator This function will be invoked when the service needs to be\n * instantiated and should return the decorated service instance. The function is called using\n * the {@link auto.$injector#invoke injector.invoke} method and is therefore fully injectable.\n * Local injection arguments:\n *\n * * `$delegate` - The original service instance, which can be monkey patched, configured,\n * decorated or delegated to.\n *\n * @example\n * Here we decorate the {@link ng.$log $log} service to convert warnings to errors by intercepting\n * calls to {@link ng.$log#error $log.warn()}.\n * ```js\n * $provide.decorator('$log', ['$delegate', function($delegate) {\n * $delegate.warn = $delegate.error;\n * return $delegate;\n * }]);\n * ```\n */\n\n\nfunction createInjector(modulesToLoad) {\n var INSTANTIATING = {},\n providerSuffix = 'Provider',\n path = [],\n loadedModules = new HashMap([], true),\n providerCache = {\n $provide: {\n provider: supportObject(provider),\n factory: supportObject(factory),\n service: supportObject(service),\n value: supportObject(value),\n constant: supportObject(constant),\n decorator: decorator\n }\n },\n providerInjector = (providerCache.$injector =\n createInternalInjector(providerCache, function() {\n throw $injectorMinErr('unpr', \"Unknown provider: {0}\", path.join(' <- '));\n })),\n instanceCache = {},\n instanceInjector = (instanceCache.$injector =\n createInternalInjector(instanceCache, function(servicename) {\n var provider = providerInjector.get(servicename + providerSuffix);\n return instanceInjector.invoke(provider.$get, provider);\n }));\n\n\n forEach(loadModules(modulesToLoad), function(fn) { instanceInjector.invoke(fn || noop); });\n\n return instanceInjector;\n\n ////////////////////////////////////\n // $provider\n ////////////////////////////////////\n\n function supportObject(delegate) {\n return function(key, value) {\n if (isObject(key)) {\n forEach(key, reverseParams(delegate));\n } else {\n return delegate(key, value);\n }\n };\n }\n\n function provider(name, provider_) {\n assertNotHasOwnProperty(name, 'service');\n if (isFunction(provider_) || isArray(provider_)) {\n provider_ = providerInjector.instantiate(provider_);\n }\n if (!provider_.$get) {\n throw $injectorMinErr('pget', \"Provider '{0}' must define $get factory method.\", name);\n }\n return providerCache[name + providerSuffix] = provider_;\n }\n\n function factory(name, factoryFn) { return provider(name, { $get: factoryFn }); }\n\n function service(name, constructor) {\n return factory(name, ['$injector', function($injector) {\n return $injector.instantiate(constructor);\n }]);\n }\n\n function value(name, val) { return factory(name, valueFn(val)); }\n\n function constant(name, value) {\n assertNotHasOwnProperty(name, 'constant');\n providerCache[name] = value;\n instanceCache[name] = value;\n }\n\n function decorator(serviceName, decorFn) {\n var origProvider = providerInjector.get(serviceName + providerSuffix),\n orig$get = origProvider.$get;\n\n origProvider.$get = function() {\n var origInstance = instanceInjector.invoke(orig$get, origProvider);\n return instanceInjector.invoke(decorFn, null, {$delegate: origInstance});\n };\n }\n\n ////////////////////////////////////\n // Module Loading\n ////////////////////////////////////\n function loadModules(modulesToLoad){\n var runBlocks = [], moduleFn, invokeQueue, i, ii;\n forEach(modulesToLoad, function(module) {\n if (loadedModules.get(module)) return;\n loadedModules.put(module, true);\n\n try {\n if (isString(module)) {\n moduleFn = angularModule(module);\n runBlocks = runBlocks.concat(loadModules(moduleFn.requires)).concat(moduleFn._runBlocks);\n\n for(invokeQueue = moduleFn._invokeQueue, i = 0, ii = invokeQueue.length; i < ii; i++) {\n var invokeArgs = invokeQueue[i],\n provider = providerInjector.get(invokeArgs[0]);\n\n provider[invokeArgs[1]].apply(provider, invokeArgs[2]);\n }\n } else if (isFunction(module)) {\n runBlocks.push(providerInjector.invoke(module));\n } else if (isArray(module)) {\n runBlocks.push(providerInjector.invoke(module));\n } else {\n assertArgFn(module, 'module');\n }\n } catch (e) {\n if (isArray(module)) {\n module = module[module.length - 1];\n }\n if (e.message && e.stack && e.stack.indexOf(e.message) == -1) {\n // Safari & FF's stack traces don't contain error.message content\n // unlike those of Chrome and IE\n // So if stack doesn't contain message, we create a new string that contains both.\n // Since error.stack is read-only in Safari, I'm overriding e and not e.stack here.\n /* jshint -W022 */\n e = e.message + '\\n' + e.stack;\n }\n throw $injectorMinErr('modulerr', \"Failed to instantiate module {0} due to:\\n{1}\",\n module, e.stack || e.message || e);\n }\n });\n return runBlocks;\n }\n\n ////////////////////////////////////\n // internal Injector\n ////////////////////////////////////\n\n function createInternalInjector(cache, factory) {\n\n function getService(serviceName) {\n if (cache.hasOwnProperty(serviceName)) {\n if (cache[serviceName] === INSTANTIATING) {\n throw $injectorMinErr('cdep', 'Circular dependency found: {0}',\n serviceName + ' <- ' + path.join(' <- '));\n }\n return cache[serviceName];\n } else {\n try {\n path.unshift(serviceName);\n cache[serviceName] = INSTANTIATING;\n return cache[serviceName] = factory(serviceName);\n } catch (err) {\n if (cache[serviceName] === INSTANTIATING) {\n delete cache[serviceName];\n }\n throw err;\n } finally {\n path.shift();\n }\n }\n }\n\n function invoke(fn, self, locals){\n var args = [],\n $inject = annotate(fn),\n length, i,\n key;\n\n for(i = 0, length = $inject.length; i < length; i++) {\n key = $inject[i];\n if (typeof key !== 'string') {\n throw $injectorMinErr('itkn',\n 'Incorrect injection token! Expected service name as string, got {0}', key);\n }\n args.push(\n locals && locals.hasOwnProperty(key)\n ? locals[key]\n : getService(key)\n );\n }\n if (isArray(fn)) {\n fn = fn[length];\n }\n\n // http://jsperf.com/angularjs-invoke-apply-vs-switch\n // #5388\n return fn.apply(self, args);\n }\n\n function instantiate(Type, locals) {\n var Constructor = function() {},\n instance, returnedValue;\n\n // Check if Type is annotated and use just the given function at n-1 as parameter\n // e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]);\n Constructor.prototype = (isArray(Type) ? Type[Type.length - 1] : Type).prototype;\n instance = new Constructor();\n returnedValue = invoke(Type, instance, locals);\n\n return isObject(returnedValue) || isFunction(returnedValue) ? returnedValue : instance;\n }\n\n return {\n invoke: invoke,\n instantiate: instantiate,\n get: getService,\n annotate: annotate,\n has: function(name) {\n return providerCache.hasOwnProperty(name + providerSuffix) || cache.hasOwnProperty(name);\n }\n };\n }\n}\n\n/**\n * @ngdoc service\n * @name $anchorScroll\n * @kind function\n * @requires $window\n * @requires $location\n * @requires $rootScope\n *\n * @description\n * When called, it checks current value of `$location.hash()` and scrolls to the related element,\n * according to rules specified in\n * [Html5 spec](http://dev.w3.org/html5/spec/Overview.html#the-indicated-part-of-the-document).\n *\n * It also watches the `$location.hash()` and scrolls whenever it changes to match any anchor.\n * This can be disabled by calling `$anchorScrollProvider.disableAutoScrolling()`.\n *\n * @example\n \n \n
\n Go to bottom\n You're at the bottom!\n
\n
\n \n function ScrollCtrl($scope, $location, $anchorScroll) {\n $scope.gotoBottom = function (){\n // set the location.hash to the id of\n // the element you wish to scroll to.\n $location.hash('bottom');\n\n // call $anchorScroll()\n $anchorScroll();\n };\n }\n \n \n #scrollArea {\n height: 350px;\n overflow: auto;\n }\n\n #bottom {\n display: block;\n margin-top: 2000px;\n }\n \n
\n */\nfunction $AnchorScrollProvider() {\n\n var autoScrollingEnabled = true;\n\n /**\n * @ngdoc method\n * @name $anchorScrollProvider#disableAutoScrolling\n *\n * @description\n * By default, {@link ng.$anchorScroll $anchorScroll()} will automatically detect changes to\n * {@link ng.$location#hash $location.hash()} and scroll to the element matching the new hash.
\n * Use this method to disable automatic scrolling.\n *\n * If automatic scrolling is disabled, one must explicitly call\n * {@link ng.$anchorScroll $anchorScroll()} in order to scroll to the element related to the\n * current hash.\n */\n this.disableAutoScrolling = function() {\n autoScrollingEnabled = false;\n };\n\n this.$get = ['$window', '$location', '$rootScope', function($window, $location, $rootScope) {\n var document = $window.document;\n\n // helper function to get first anchor from a NodeList\n // can't use filter.filter, as it accepts only instances of Array\n // and IE can't convert NodeList to an array using [].slice\n // TODO(vojta): use filter if we change it to accept lists as well\n function getFirstAnchor(list) {\n var result = null;\n forEach(list, function(element) {\n if (!result && lowercase(element.nodeName) === 'a') result = element;\n });\n return result;\n }\n\n function scroll() {\n var hash = $location.hash(), elm;\n\n // empty hash, scroll to the top of the page\n if (!hash) $window.scrollTo(0, 0);\n\n // element with given id\n else if ((elm = document.getElementById(hash))) elm.scrollIntoView();\n\n // first anchor with given name :-D\n else if ((elm = getFirstAnchor(document.getElementsByName(hash)))) elm.scrollIntoView();\n\n // no element and hash == 'top', scroll to the top of the page\n else if (hash === 'top') $window.scrollTo(0, 0);\n }\n\n // does not scroll when user clicks on anchor link that is currently on\n // (no url change, no $location.hash() change), browser native does scroll\n if (autoScrollingEnabled) {\n $rootScope.$watch(function autoScrollWatch() {return $location.hash();},\n function autoScrollWatchAction() {\n $rootScope.$evalAsync(scroll);\n });\n }\n\n return scroll;\n }];\n}\n\nvar $animateMinErr = minErr('$animate');\n\n/**\n * @ngdoc provider\n * @name $animateProvider\n *\n * @description\n * Default implementation of $animate that doesn't perform any animations, instead just\n * synchronously performs DOM\n * updates and calls done() callbacks.\n *\n * In order to enable animations the ngAnimate module has to be loaded.\n *\n * To see the functional implementation check out src/ngAnimate/animate.js\n */\nvar $AnimateProvider = ['$provide', function($provide) {\n\n\n this.$$selectors = {};\n\n\n /**\n * @ngdoc method\n * @name $animateProvider#register\n *\n * @description\n * Registers a new injectable animation factory function. The factory function produces the\n * animation object which contains callback functions for each event that is expected to be\n * animated.\n *\n * * `eventFn`: `function(Element, doneFunction)` The element to animate, the `doneFunction`\n * must be called once the element animation is complete. If a function is returned then the\n * animation service will use this function to cancel the animation whenever a cancel event is\n * triggered.\n *\n *\n * ```js\n * return {\n * eventFn : function(element, done) {\n * //code to run the animation\n * //once complete, then run done()\n * return function cancellationFunction() {\n * //code to cancel the animation\n * }\n * }\n * }\n * ```\n *\n * @param {string} name The name of the animation.\n * @param {Function} factory The factory function that will be executed to return the animation\n * object.\n */\n this.register = function(name, factory) {\n var key = name + '-animation';\n if (name && name.charAt(0) != '.') throw $animateMinErr('notcsel',\n \"Expecting class selector starting with '.' got '{0}'.\", name);\n this.$$selectors[name.substr(1)] = key;\n $provide.factory(key, factory);\n };\n\n /**\n * @ngdoc method\n * @name $animateProvider#classNameFilter\n *\n * @description\n * Sets and/or returns the CSS class regular expression that is checked when performing\n * an animation. Upon bootstrap the classNameFilter value is not set at all and will\n * therefore enable $animate to attempt to perform an animation on any element.\n * When setting the classNameFilter value, animations will only be performed on elements\n * that successfully match the filter expression. This in turn can boost performance\n * for low-powered devices as well as applications containing a lot of structural operations.\n * @param {RegExp=} expression The className expression which will be checked against all animations\n * @return {RegExp} The current CSS className expression value. If null then there is no expression value\n */\n this.classNameFilter = function(expression) {\n if(arguments.length === 1) {\n this.$$classNameFilter = (expression instanceof RegExp) ? expression : null;\n }\n return this.$$classNameFilter;\n };\n\n this.$get = ['$timeout', '$$asyncCallback', function($timeout, $$asyncCallback) {\n\n function async(fn) {\n fn && $$asyncCallback(fn);\n }\n\n /**\n *\n * @ngdoc service\n * @name $animate\n * @description The $animate service provides rudimentary DOM manipulation functions to\n * insert, remove and move elements within the DOM, as well as adding and removing classes.\n * This service is the core service used by the ngAnimate $animator service which provides\n * high-level animation hooks for CSS and JavaScript.\n *\n * $animate is available in the AngularJS core, however, the ngAnimate module must be included\n * to enable full out animation support. Otherwise, $animate will only perform simple DOM\n * manipulation operations.\n *\n * To learn more about enabling animation support, click here to visit the {@link ngAnimate\n * ngAnimate module page} as well as the {@link ngAnimate.$animate ngAnimate $animate service\n * page}.\n */\n return {\n\n /**\n *\n * @ngdoc method\n * @name $animate#enter\n * @kind function\n * @description Inserts the element into the DOM either after the `after` element or within\n * the `parent` element. Once complete, the done() callback will be fired (if provided).\n * @param {DOMElement} element the element which will be inserted into the DOM\n * @param {DOMElement} parent the parent element which will append the element as\n * a child (if the after element is not present)\n * @param {DOMElement} after the sibling element which will append the element\n * after itself\n * @param {Function=} done callback function that will be called after the element has been\n * inserted into the DOM\n */\n enter : function(element, parent, after, done) {\n if (after) {\n after.after(element);\n } else {\n if (!parent || !parent[0]) {\n parent = after.parent();\n }\n parent.append(element);\n }\n async(done);\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#leave\n * @kind function\n * @description Removes the element from the DOM. Once complete, the done() callback will be\n * fired (if provided).\n * @param {DOMElement} element the element which will be removed from the DOM\n * @param {Function=} done callback function that will be called after the element has been\n * removed from the DOM\n */\n leave : function(element, done) {\n element.remove();\n async(done);\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#move\n * @kind function\n * @description Moves the position of the provided element within the DOM to be placed\n * either after the `after` element or inside of the `parent` element. Once complete, the\n * done() callback will be fired (if provided).\n *\n * @param {DOMElement} element the element which will be moved around within the\n * DOM\n * @param {DOMElement} parent the parent element where the element will be\n * inserted into (if the after element is not present)\n * @param {DOMElement} after the sibling element where the element will be\n * positioned next to\n * @param {Function=} done the callback function (if provided) that will be fired after the\n * element has been moved to its new position\n */\n move : function(element, parent, after, done) {\n // Do not remove element before insert. Removing will cause data associated with the\n // element to be dropped. Insert will implicitly do the remove.\n this.enter(element, parent, after, done);\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#addClass\n * @kind function\n * @description Adds the provided className CSS class value to the provided element. Once\n * complete, the done() callback will be fired (if provided).\n * @param {DOMElement} element the element which will have the className value\n * added to it\n * @param {string} className the CSS class which will be added to the element\n * @param {Function=} done the callback function (if provided) that will be fired after the\n * className value has been added to the element\n */\n addClass : function(element, className, done) {\n className = isString(className) ?\n className :\n isArray(className) ? className.join(' ') : '';\n forEach(element, function (element) {\n jqLiteAddClass(element, className);\n });\n async(done);\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#removeClass\n * @kind function\n * @description Removes the provided className CSS class value from the provided element.\n * Once complete, the done() callback will be fired (if provided).\n * @param {DOMElement} element the element which will have the className value\n * removed from it\n * @param {string} className the CSS class which will be removed from the element\n * @param {Function=} done the callback function (if provided) that will be fired after the\n * className value has been removed from the element\n */\n removeClass : function(element, className, done) {\n className = isString(className) ?\n className :\n isArray(className) ? className.join(' ') : '';\n forEach(element, function (element) {\n jqLiteRemoveClass(element, className);\n });\n async(done);\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#setClass\n * @kind function\n * @description Adds and/or removes the given CSS classes to and from the element.\n * Once complete, the done() callback will be fired (if provided).\n * @param {DOMElement} element the element which will have its CSS classes changed\n * removed from it\n * @param {string} add the CSS classes which will be added to the element\n * @param {string} remove the CSS class which will be removed from the element\n * @param {Function=} done the callback function (if provided) that will be fired after the\n * CSS classes have been set on the element\n */\n setClass : function(element, add, remove, done) {\n forEach(element, function (element) {\n jqLiteAddClass(element, add);\n jqLiteRemoveClass(element, remove);\n });\n async(done);\n },\n\n enabled : noop\n };\n }];\n}];\n\nfunction $$AsyncCallbackProvider(){\n this.$get = ['$$rAF', '$timeout', function($$rAF, $timeout) {\n return $$rAF.supported\n ? function(fn) { return $$rAF(fn); }\n : function(fn) {\n return $timeout(fn, 0, false);\n };\n }];\n}\n\n/* global stripHash: true */\n\n/**\n * ! This is a private undocumented service !\n *\n * @name $browser\n * @requires $log\n * @description\n * This object has two goals:\n *\n * - hide all the global state in the browser caused by the window object\n * - abstract away all the browser specific features and inconsistencies\n *\n * For tests we provide {@link ngMock.$browser mock implementation} of the `$browser`\n * service, which can be used for convenient testing of the application without the interaction with\n * the real browser apis.\n */\n/**\n * @param {object} window The global window object.\n * @param {object} document jQuery wrapped document.\n * @param {function()} XHR XMLHttpRequest constructor.\n * @param {object} $log console.log or an object with the same interface.\n * @param {object} $sniffer $sniffer service\n */\nfunction Browser(window, document, $log, $sniffer) {\n var self = this,\n rawDocument = document[0],\n location = window.location,\n history = window.history,\n setTimeout = window.setTimeout,\n clearTimeout = window.clearTimeout,\n pendingDeferIds = {};\n\n self.isMock = false;\n\n var outstandingRequestCount = 0;\n var outstandingRequestCallbacks = [];\n\n // TODO(vojta): remove this temporary api\n self.$$completeOutstandingRequest = completeOutstandingRequest;\n self.$$incOutstandingRequestCount = function() { outstandingRequestCount++; };\n\n /**\n * Executes the `fn` function(supports currying) and decrements the `outstandingRequestCallbacks`\n * counter. If the counter reaches 0, all the `outstandingRequestCallbacks` are executed.\n */\n function completeOutstandingRequest(fn) {\n try {\n fn.apply(null, sliceArgs(arguments, 1));\n } finally {\n outstandingRequestCount--;\n if (outstandingRequestCount === 0) {\n while(outstandingRequestCallbacks.length) {\n try {\n outstandingRequestCallbacks.pop()();\n } catch (e) {\n $log.error(e);\n }\n }\n }\n }\n }\n\n /**\n * @private\n * Note: this method is used only by scenario runner\n * TODO(vojta): prefix this method with $$ ?\n * @param {function()} callback Function that will be called when no outstanding request\n */\n self.notifyWhenNoOutstandingRequests = function(callback) {\n // force browser to execute all pollFns - this is needed so that cookies and other pollers fire\n // at some deterministic time in respect to the test runner's actions. Leaving things up to the\n // regular poller would result in flaky tests.\n forEach(pollFns, function(pollFn){ pollFn(); });\n\n if (outstandingRequestCount === 0) {\n callback();\n } else {\n outstandingRequestCallbacks.push(callback);\n }\n };\n\n //////////////////////////////////////////////////////////////\n // Poll Watcher API\n //////////////////////////////////////////////////////////////\n var pollFns = [],\n pollTimeout;\n\n /**\n * @name $browser#addPollFn\n *\n * @param {function()} fn Poll function to add\n *\n * @description\n * Adds a function to the list of functions that poller periodically executes,\n * and starts polling if not started yet.\n *\n * @returns {function()} the added function\n */\n self.addPollFn = function(fn) {\n if (isUndefined(pollTimeout)) startPoller(100, setTimeout);\n pollFns.push(fn);\n return fn;\n };\n\n /**\n * @param {number} interval How often should browser call poll functions (ms)\n * @param {function()} setTimeout Reference to a real or fake `setTimeout` function.\n *\n * @description\n * Configures the poller to run in the specified intervals, using the specified\n * setTimeout fn and kicks it off.\n */\n function startPoller(interval, setTimeout) {\n (function check() {\n forEach(pollFns, function(pollFn){ pollFn(); });\n pollTimeout = setTimeout(check, interval);\n })();\n }\n\n //////////////////////////////////////////////////////////////\n // URL API\n //////////////////////////////////////////////////////////////\n\n var lastBrowserUrl = location.href,\n baseElement = document.find('base'),\n reloadLocation = null;\n\n /**\n * @name $browser#url\n *\n * @description\n * GETTER:\n * Without any argument, this method just returns current value of location.href.\n *\n * SETTER:\n * With at least one argument, this method sets url to new value.\n * If html5 history api supported, pushState/replaceState is used, otherwise\n * location.href/location.replace is used.\n * Returns its own instance to allow chaining\n *\n * NOTE: this api is intended for use only by the $location service. Please use the\n * {@link ng.$location $location service} to change url.\n *\n * @param {string} url New url (when used as setter)\n * @param {boolean=} replace Should new url replace current history record ?\n */\n self.url = function(url, replace) {\n // Android Browser BFCache causes location, history reference to become stale.\n if (location !== window.location) location = window.location;\n if (history !== window.history) history = window.history;\n\n // setter\n if (url) {\n if (lastBrowserUrl == url) return;\n var sameBase = lastBrowserUrl && stripHash(lastBrowserUrl) === stripHash(url);\n lastBrowserUrl = url;\n // Don't use history API if only the hash changed\n // due to a bug in IE10/IE11 which leads\n // to not firing a `hashchange` nor `popstate` event\n // in some cases (see #9143).\n if (!sameBase && $sniffer.history) {\n if (replace) history.replaceState(null, '', url);\n else {\n history.pushState(null, '', url);\n // Crazy Opera Bug: http://my.opera.com/community/forums/topic.dml?id=1185462\n baseElement.attr('href', baseElement.attr('href'));\n }\n } else {\n if (!sameBase) {\n reloadLocation = url;\n }\n if (replace) {\n location.replace(url);\n } else {\n location.href = url;\n }\n }\n return self;\n // getter\n } else {\n // - reloadLocation is needed as browsers don't allow to read out\n // the new location.href if a reload happened.\n // - the replacement is a workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=407172\n return reloadLocation || location.href.replace(/%27/g,\"'\");\n }\n };\n\n var urlChangeListeners = [],\n urlChangeInit = false;\n\n function fireUrlChange() {\n if (lastBrowserUrl == self.url()) return;\n\n lastBrowserUrl = self.url();\n forEach(urlChangeListeners, function(listener) {\n listener(self.url());\n });\n }\n\n /**\n * @name $browser#onUrlChange\n *\n * @description\n * Register callback function that will be called, when url changes.\n *\n * It's only called when the url is changed from outside of angular:\n * - user types different url into address bar\n * - user clicks on history (forward/back) button\n * - user clicks on a link\n *\n * It's not called when url is changed by $browser.url() method\n *\n * The listener gets called with new url as parameter.\n *\n * NOTE: this api is intended for use only by the $location service. Please use the\n * {@link ng.$location $location service} to monitor url changes in angular apps.\n *\n * @param {function(string)} listener Listener function to be called when url changes.\n * @return {function(string)} Returns the registered listener fn - handy if the fn is anonymous.\n */\n self.onUrlChange = function(callback) {\n // TODO(vojta): refactor to use node's syntax for events\n if (!urlChangeInit) {\n // We listen on both (hashchange/popstate) when available, as some browsers (e.g. Opera)\n // don't fire popstate when user change the address bar and don't fire hashchange when url\n // changed by push/replaceState\n\n // html5 history api - popstate event\n if ($sniffer.history) jqLite(window).on('popstate', fireUrlChange);\n // hashchange event\n if ($sniffer.hashchange) jqLite(window).on('hashchange', fireUrlChange);\n // polling\n else self.addPollFn(fireUrlChange);\n\n urlChangeInit = true;\n }\n\n urlChangeListeners.push(callback);\n return callback;\n };\n\n /**\n * Checks whether the url has changed outside of Angular.\n * Needs to be exported to be able to check for changes that have been done in sync,\n * as hashchange/popstate events fire in async.\n */\n self.$$checkUrlChange = fireUrlChange;\n\n //////////////////////////////////////////////////////////////\n // Misc API\n //////////////////////////////////////////////////////////////\n\n /**\n * @name $browser#baseHref\n *\n * @description\n * Returns current \n * (always relative - without domain)\n *\n * @returns {string} The current base href\n */\n self.baseHref = function() {\n var href = baseElement.attr('href');\n return href ? href.replace(/^(https?\\:)?\\/\\/[^\\/]*/, '') : '';\n };\n\n //////////////////////////////////////////////////////////////\n // Cookies API\n //////////////////////////////////////////////////////////////\n var lastCookies = {};\n var lastCookieString = '';\n var cookiePath = self.baseHref();\n\n /**\n * @name $browser#cookies\n *\n * @param {string=} name Cookie name\n * @param {string=} value Cookie value\n *\n * @description\n * The cookies method provides a 'private' low level access to browser cookies.\n * It is not meant to be used directly, use the $cookie service instead.\n *\n * The return values vary depending on the arguments that the method was called with as follows:\n *\n * - cookies() -> hash of all cookies, this is NOT a copy of the internal state, so do not modify\n * it\n * - cookies(name, value) -> set name to value, if value is undefined delete the cookie\n * - cookies(name) -> the same as (name, undefined) == DELETES (no one calls it right now that\n * way)\n *\n * @returns {Object} Hash of all cookies (if called without any parameter)\n */\n self.cookies = function(name, value) {\n /* global escape: false, unescape: false */\n var cookieLength, cookieArray, cookie, i, index;\n\n if (name) {\n if (value === undefined) {\n rawDocument.cookie = escape(name) + \"=;path=\" + cookiePath +\n \";expires=Thu, 01 Jan 1970 00:00:00 GMT\";\n } else {\n if (isString(value)) {\n cookieLength = (rawDocument.cookie = escape(name) + '=' + escape(value) +\n ';path=' + cookiePath).length + 1;\n\n // per http://www.ietf.org/rfc/rfc2109.txt browser must allow at minimum:\n // - 300 cookies\n // - 20 cookies per unique domain\n // - 4096 bytes per cookie\n if (cookieLength > 4096) {\n $log.warn(\"Cookie '\"+ name +\n \"' possibly not set or overflowed because it was too large (\"+\n cookieLength + \" > 4096 bytes)!\");\n }\n }\n }\n } else {\n if (rawDocument.cookie !== lastCookieString) {\n lastCookieString = rawDocument.cookie;\n cookieArray = lastCookieString.split(\"; \");\n lastCookies = {};\n\n for (i = 0; i < cookieArray.length; i++) {\n cookie = cookieArray[i];\n index = cookie.indexOf('=');\n if (index > 0) { //ignore nameless cookies\n name = unescape(cookie.substring(0, index));\n // the first value that is seen for a cookie is the most\n // specific one. values for the same cookie name that\n // follow are for less specific paths.\n if (lastCookies[name] === undefined) {\n lastCookies[name] = unescape(cookie.substring(index + 1));\n }\n }\n }\n }\n return lastCookies;\n }\n };\n\n\n /**\n * @name $browser#defer\n * @param {function()} fn A function, who's execution should be deferred.\n * @param {number=} [delay=0] of milliseconds to defer the function execution.\n * @returns {*} DeferId that can be used to cancel the task via `$browser.defer.cancel()`.\n *\n * @description\n * Executes a fn asynchronously via `setTimeout(fn, delay)`.\n *\n * Unlike when calling `setTimeout` directly, in test this function is mocked and instead of using\n * `setTimeout` in tests, the fns are queued in an array, which can be programmatically flushed\n * via `$browser.defer.flush()`.\n *\n */\n self.defer = function(fn, delay) {\n var timeoutId;\n outstandingRequestCount++;\n timeoutId = setTimeout(function() {\n delete pendingDeferIds[timeoutId];\n completeOutstandingRequest(fn);\n }, delay || 0);\n pendingDeferIds[timeoutId] = true;\n return timeoutId;\n };\n\n\n /**\n * @name $browser#defer.cancel\n *\n * @description\n * Cancels a deferred task identified with `deferId`.\n *\n * @param {*} deferId Token returned by the `$browser.defer` function.\n * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully\n * canceled.\n */\n self.defer.cancel = function(deferId) {\n if (pendingDeferIds[deferId]) {\n delete pendingDeferIds[deferId];\n clearTimeout(deferId);\n completeOutstandingRequest(noop);\n return true;\n }\n return false;\n };\n\n}\n\nfunction $BrowserProvider(){\n this.$get = ['$window', '$log', '$sniffer', '$document',\n function( $window, $log, $sniffer, $document){\n return new Browser($window, $document, $log, $sniffer);\n }];\n}\n\n/**\n * @ngdoc service\n * @name $cacheFactory\n *\n * @description\n * Factory that constructs {@link $cacheFactory.Cache Cache} objects and gives access to\n * them.\n *\n * ```js\n *\n * var cache = $cacheFactory('cacheId');\n * expect($cacheFactory.get('cacheId')).toBe(cache);\n * expect($cacheFactory.get('noSuchCacheId')).not.toBeDefined();\n *\n * cache.put(\"key\", \"value\");\n * cache.put(\"another key\", \"another value\");\n *\n * // We've specified no options on creation\n * expect(cache.info()).toEqual({id: 'cacheId', size: 2});\n *\n * ```\n *\n *\n * @param {string} cacheId Name or id of the newly created cache.\n * @param {object=} options Options object that specifies the cache behavior. Properties:\n *\n * - `{number=}` `capacity` — turns the cache into LRU cache.\n *\n * @returns {object} Newly created cache object with the following set of methods:\n *\n * - `{object}` `info()` — Returns id, size, and options of cache.\n * - `{{*}}` `put({string} key, {*} value)` — Puts a new key-value pair into the cache and returns\n * it.\n * - `{{*}}` `get({string} key)` — Returns cached value for `key` or undefined for cache miss.\n * - `{void}` `remove({string} key)` — Removes a key-value pair from the cache.\n * - `{void}` `removeAll()` — Removes all cached values.\n * - `{void}` `destroy()` — Removes references to this cache from $cacheFactory.\n *\n * @example\n \n \n
\n \n \n \n\n

Cached Values

\n
\n \n : \n \n
\n\n

Cache Info

\n
\n \n : \n \n
\n
\n
\n \n angular.module('cacheExampleApp', []).\n controller('CacheController', ['$scope', '$cacheFactory', function($scope, $cacheFactory) {\n $scope.keys = [];\n $scope.cache = $cacheFactory('cacheId');\n $scope.put = function(key, value) {\n if ($scope.cache.get(key) === undefined) {\n $scope.keys.push(key);\n }\n $scope.cache.put(key, value === undefined ? null : value);\n };\n }]);\n \n \n p {\n margin: 10px 0 3px;\n }\n \n
\n */\nfunction $CacheFactoryProvider() {\n\n this.$get = function() {\n var caches = {};\n\n function cacheFactory(cacheId, options) {\n if (cacheId in caches) {\n throw minErr('$cacheFactory')('iid', \"CacheId '{0}' is already taken!\", cacheId);\n }\n\n var size = 0,\n stats = extend({}, options, {id: cacheId}),\n data = {},\n capacity = (options && options.capacity) || Number.MAX_VALUE,\n lruHash = {},\n freshEnd = null,\n staleEnd = null;\n\n /**\n * @ngdoc type\n * @name $cacheFactory.Cache\n *\n * @description\n * A cache object used to store and retrieve data, primarily used by\n * {@link $http $http} and the {@link ng.directive:script script} directive to cache\n * templates and other data.\n *\n * ```js\n * angular.module('superCache')\n * .factory('superCache', ['$cacheFactory', function($cacheFactory) {\n * return $cacheFactory('super-cache');\n * }]);\n * ```\n *\n * Example test:\n *\n * ```js\n * it('should behave like a cache', inject(function(superCache) {\n * superCache.put('key', 'value');\n * superCache.put('another key', 'another value');\n *\n * expect(superCache.info()).toEqual({\n * id: 'super-cache',\n * size: 2\n * });\n *\n * superCache.remove('another key');\n * expect(superCache.get('another key')).toBeUndefined();\n *\n * superCache.removeAll();\n * expect(superCache.info()).toEqual({\n * id: 'super-cache',\n * size: 0\n * });\n * }));\n * ```\n */\n return caches[cacheId] = {\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#put\n * @kind function\n *\n * @description\n * Inserts a named entry into the {@link $cacheFactory.Cache Cache} object to be\n * retrieved later, and incrementing the size of the cache if the key was not already\n * present in the cache. If behaving like an LRU cache, it will also remove stale\n * entries from the set.\n *\n * It will not insert undefined values into the cache.\n *\n * @param {string} key the key under which the cached data is stored.\n * @param {*} value the value to store alongside the key. If it is undefined, the key\n * will not be stored.\n * @returns {*} the value stored.\n */\n put: function(key, value) {\n if (capacity < Number.MAX_VALUE) {\n var lruEntry = lruHash[key] || (lruHash[key] = {key: key});\n\n refresh(lruEntry);\n }\n\n if (isUndefined(value)) return;\n if (!(key in data)) size++;\n data[key] = value;\n\n if (size > capacity) {\n this.remove(staleEnd.key);\n }\n\n return value;\n },\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#get\n * @kind function\n *\n * @description\n * Retrieves named data stored in the {@link $cacheFactory.Cache Cache} object.\n *\n * @param {string} key the key of the data to be retrieved\n * @returns {*} the value stored.\n */\n get: function(key) {\n if (capacity < Number.MAX_VALUE) {\n var lruEntry = lruHash[key];\n\n if (!lruEntry) return;\n\n refresh(lruEntry);\n }\n\n return data[key];\n },\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#remove\n * @kind function\n *\n * @description\n * Removes an entry from the {@link $cacheFactory.Cache Cache} object.\n *\n * @param {string} key the key of the entry to be removed\n */\n remove: function(key) {\n if (capacity < Number.MAX_VALUE) {\n var lruEntry = lruHash[key];\n\n if (!lruEntry) return;\n\n if (lruEntry == freshEnd) freshEnd = lruEntry.p;\n if (lruEntry == staleEnd) staleEnd = lruEntry.n;\n link(lruEntry.n,lruEntry.p);\n\n delete lruHash[key];\n }\n\n delete data[key];\n size--;\n },\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#removeAll\n * @kind function\n *\n * @description\n * Clears the cache object of any entries.\n */\n removeAll: function() {\n data = {};\n size = 0;\n lruHash = {};\n freshEnd = staleEnd = null;\n },\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#destroy\n * @kind function\n *\n * @description\n * Destroys the {@link $cacheFactory.Cache Cache} object entirely,\n * removing it from the {@link $cacheFactory $cacheFactory} set.\n */\n destroy: function() {\n data = null;\n stats = null;\n lruHash = null;\n delete caches[cacheId];\n },\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#info\n * @kind function\n *\n * @description\n * Retrieve information regarding a particular {@link $cacheFactory.Cache Cache}.\n *\n * @returns {object} an object with the following properties:\n *
    \n *
  • **id**: the id of the cache instance
  • \n *
  • **size**: the number of entries kept in the cache instance
  • \n *
  • **...**: any additional properties from the options object when creating the\n * cache.
  • \n *
\n */\n info: function() {\n return extend({}, stats, {size: size});\n }\n };\n\n\n /**\n * makes the `entry` the freshEnd of the LRU linked list\n */\n function refresh(entry) {\n if (entry != freshEnd) {\n if (!staleEnd) {\n staleEnd = entry;\n } else if (staleEnd == entry) {\n staleEnd = entry.n;\n }\n\n link(entry.n, entry.p);\n link(entry, freshEnd);\n freshEnd = entry;\n freshEnd.n = null;\n }\n }\n\n\n /**\n * bidirectionally links two entries of the LRU linked list\n */\n function link(nextEntry, prevEntry) {\n if (nextEntry != prevEntry) {\n if (nextEntry) nextEntry.p = prevEntry; //p stands for previous, 'prev' didn't minify\n if (prevEntry) prevEntry.n = nextEntry; //n stands for next, 'next' didn't minify\n }\n }\n }\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory#info\n *\n * @description\n * Get information about all the caches that have been created\n *\n * @returns {Object} - key-value map of `cacheId` to the result of calling `cache#info`\n */\n cacheFactory.info = function() {\n var info = {};\n forEach(caches, function(cache, cacheId) {\n info[cacheId] = cache.info();\n });\n return info;\n };\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory#get\n *\n * @description\n * Get access to a cache object by the `cacheId` used when it was created.\n *\n * @param {string} cacheId Name or id of a cache to access.\n * @returns {object} Cache object identified by the cacheId or undefined if no such cache.\n */\n cacheFactory.get = function(cacheId) {\n return caches[cacheId];\n };\n\n\n return cacheFactory;\n };\n}\n\n/**\n * @ngdoc service\n * @name $templateCache\n *\n * @description\n * The first time a template is used, it is loaded in the template cache for quick retrieval. You\n * can load templates directly into the cache in a `script` tag, or by consuming the\n * `$templateCache` service directly.\n *\n * Adding via the `script` tag:\n *\n * ```html\n * \n * ```\n *\n * **Note:** the `script` tag containing the template does not need to be included in the `head` of\n * the document, but it must be a descendent of the {@link ng.$rootElement $rootElement} (IE,\n * element with ng-app attribute), otherwise the template will be ignored.\n *\n * Adding via the $templateCache service:\n *\n * ```js\n * var myApp = angular.module('myApp', []);\n * myApp.run(function($templateCache) {\n * $templateCache.put('templateId.html', 'This is the content of the template');\n * });\n * ```\n *\n * To retrieve the template later, simply use it in your HTML:\n * ```html\n *
\n * ```\n *\n * or get it via Javascript:\n * ```js\n * $templateCache.get('templateId.html')\n * ```\n *\n * See {@link ng.$cacheFactory $cacheFactory}.\n *\n */\nfunction $TemplateCacheProvider() {\n this.$get = ['$cacheFactory', function($cacheFactory) {\n return $cacheFactory('templates');\n }];\n}\n\n/* ! VARIABLE/FUNCTION NAMING CONVENTIONS THAT APPLY TO THIS FILE!\n *\n * DOM-related variables:\n *\n * - \"node\" - DOM Node\n * - \"element\" - DOM Element or Node\n * - \"$node\" or \"$element\" - jqLite-wrapped node or element\n *\n *\n * Compiler related stuff:\n *\n * - \"linkFn\" - linking fn of a single directive\n * - \"nodeLinkFn\" - function that aggregates all linking fns for a particular node\n * - \"childLinkFn\" - function that aggregates all linking fns for child nodes of a particular node\n * - \"compositeLinkFn\" - function that aggregates all linking fns for a compilation root (nodeList)\n */\n\n\n/**\n * @ngdoc service\n * @name $compile\n * @kind function\n *\n * @description\n * Compiles an HTML string or DOM into a template and produces a template function, which\n * can then be used to link {@link ng.$rootScope.Scope `scope`} and the template together.\n *\n * The compilation is a process of walking the DOM tree and matching DOM elements to\n * {@link ng.$compileProvider#directive directives}.\n *\n *
\n * **Note:** This document is an in-depth reference of all directive options.\n * For a gentle introduction to directives with examples of common use cases,\n * see the {@link guide/directive directive guide}.\n *
\n *\n * ## Comprehensive Directive API\n *\n * There are many different options for a directive.\n *\n * The difference resides in the return value of the factory function.\n * You can either return a \"Directive Definition Object\" (see below) that defines the directive properties,\n * or just the `postLink` function (all other properties will have the default values).\n *\n *
\n * **Best Practice:** It's recommended to use the \"directive definition object\" form.\n *
\n *\n * Here's an example directive declared with a Directive Definition Object:\n *\n * ```js\n * var myModule = angular.module(...);\n *\n * myModule.directive('directiveName', function factory(injectables) {\n * var directiveDefinitionObject = {\n * priority: 0,\n * template: '
', // or // function(tElement, tAttrs) { ... },\n * // or\n * // templateUrl: 'directive.html', // or // function(tElement, tAttrs) { ... },\n * transclude: false,\n * restrict: 'A',\n * scope: false,\n * controller: function($scope, $element, $attrs, $transclude, otherInjectables) { ... },\n * controllerAs: 'stringAlias',\n * require: 'siblingDirectiveName', // or // ['^parentDirectiveName', '?optionalDirectiveName', '?^optionalParent'],\n * compile: function compile(tElement, tAttrs, transclude) {\n * return {\n * pre: function preLink(scope, iElement, iAttrs, controller) { ... },\n * post: function postLink(scope, iElement, iAttrs, controller) { ... }\n * }\n * // or\n * // return function postLink( ... ) { ... }\n * },\n * // or\n * // link: {\n * // pre: function preLink(scope, iElement, iAttrs, controller) { ... },\n * // post: function postLink(scope, iElement, iAttrs, controller) { ... }\n * // }\n * // or\n * // link: function postLink( ... ) { ... }\n * };\n * return directiveDefinitionObject;\n * });\n * ```\n *\n *
\n * **Note:** Any unspecified options will use the default value. You can see the default values below.\n *
\n *\n * Therefore the above can be simplified as:\n *\n * ```js\n * var myModule = angular.module(...);\n *\n * myModule.directive('directiveName', function factory(injectables) {\n * var directiveDefinitionObject = {\n * link: function postLink(scope, iElement, iAttrs) { ... }\n * };\n * return directiveDefinitionObject;\n * // or\n * // return function postLink(scope, iElement, iAttrs) { ... }\n * });\n * ```\n *\n *\n *\n * ### Directive Definition Object\n *\n * The directive definition object provides instructions to the {@link ng.$compile\n * compiler}. The attributes are:\n *\n * #### `priority`\n * When there are multiple directives defined on a single DOM element, sometimes it\n * is necessary to specify the order in which the directives are applied. The `priority` is used\n * to sort the directives before their `compile` functions get called. Priority is defined as a\n * number. Directives with greater numerical `priority` are compiled first. Pre-link functions\n * are also run in priority order, but post-link functions are run in reverse order. The order\n * of directives with the same priority is undefined. The default priority is `0`.\n *\n * #### `terminal`\n * If set to true then the current `priority` will be the last set of directives\n * which will execute (any directives at the current priority will still execute\n * as the order of execution on same `priority` is undefined).\n *\n * #### `scope`\n * **If set to `true`,** then a new scope will be created for this directive. If multiple directives on the\n * same element request a new scope, only one new scope is created. The new scope rule does not\n * apply for the root of the template since the root of the template always gets a new scope.\n *\n * **If set to `{}` (object hash),** then a new \"isolate\" scope is created. The 'isolate' scope differs from\n * normal scope in that it does not prototypically inherit from the parent scope. This is useful\n * when creating reusable components, which should not accidentally read or modify data in the\n * parent scope.\n *\n * The 'isolate' scope takes an object hash which defines a set of local scope properties\n * derived from the parent scope. These local properties are useful for aliasing values for\n * templates. Locals definition is a hash of local scope property to its source:\n *\n * * `@` or `@attr` - bind a local scope property to the value of DOM attribute. The result is\n * always a string since DOM attributes are strings. If no `attr` name is specified then the\n * attribute name is assumed to be the same as the local name.\n * Given `` and widget definition\n * of `scope: { localName:'@myAttr' }`, then widget scope property `localName` will reflect\n * the interpolated value of `hello {{name}}`. As the `name` attribute changes so will the\n * `localName` property on the widget scope. The `name` is read from the parent scope (not\n * component scope).\n *\n * * `=` or `=attr` - set up bi-directional binding between a local scope property and the\n * parent scope property of name defined via the value of the `attr` attribute. If no `attr`\n * name is specified then the attribute name is assumed to be the same as the local name.\n * Given `` and widget definition of\n * `scope: { localModel:'=myAttr' }`, then widget scope property `localModel` will reflect the\n * value of `parentModel` on the parent scope. Any changes to `parentModel` will be reflected\n * in `localModel` and any changes in `localModel` will reflect in `parentModel`. If the parent\n * scope property doesn't exist, it will throw a NON_ASSIGNABLE_MODEL_EXPRESSION exception. You\n * can avoid this behavior using `=?` or `=?attr` in order to flag the property as optional.\n *\n * * `&` or `&attr` - provides a way to execute an expression in the context of the parent scope.\n * If no `attr` name is specified then the attribute name is assumed to be the same as the\n * local name. Given `` and widget definition of\n * `scope: { localFn:'&myAttr' }`, then isolate scope property `localFn` will point to\n * a function wrapper for the `count = count + value` expression. Often it's desirable to\n * pass data from the isolated scope via an expression to the parent scope, this can be\n * done by passing a map of local variable names and values into the expression wrapper fn.\n * For example, if the expression is `increment(amount)` then we can specify the amount value\n * by calling the `localFn` as `localFn({amount: 22})`.\n *\n *\n *\n * #### `controller`\n * Controller constructor function. The controller is instantiated before the\n * pre-linking phase and it is shared with other directives (see\n * `require` attribute). This allows the directives to communicate with each other and augment\n * each other's behavior. The controller is injectable (and supports bracket notation) with the following locals:\n *\n * * `$scope` - Current scope associated with the element\n * * `$element` - Current element\n * * `$attrs` - Current attributes object for the element\n * * `$transclude` - A transclude linking function pre-bound to the correct transclusion scope.\n * The scope can be overridden by an optional first argument.\n * `function([scope], cloneLinkingFn)`.\n *\n *\n * #### `require`\n * Require another directive and inject its controller as the fourth argument to the linking function. The\n * `require` takes a string name (or array of strings) of the directive(s) to pass in. If an array is used, the\n * injected argument will be an array in corresponding order. If no such directive can be\n * found, or if the directive does not have a controller, then an error is raised. The name can be prefixed with:\n *\n * * (no prefix) - Locate the required controller on the current element. Throw an error if not found.\n * * `?` - Attempt to locate the required controller or pass `null` to the `link` fn if not found.\n * * `^` - Locate the required controller by searching the element and its parents. Throw an error if not found.\n * * `?^` - Attempt to locate the required controller by searching the element and its parents or pass\n * `null` to the `link` fn if not found.\n *\n *\n * #### `controllerAs`\n * Controller alias at the directive scope. An alias for the controller so it\n * can be referenced at the directive template. The directive needs to define a scope for this\n * configuration to be used. Useful in the case when directive is used as component.\n *\n *\n * #### `restrict`\n * String of subset of `EACM` which restricts the directive to a specific directive\n * declaration style. If omitted, the default (attributes only) is used.\n *\n * * `E` - Element name: ``\n * * `A` - Attribute (default): `
`\n * * `C` - Class: `
`\n * * `M` - Comment: ``\n *\n *\n * #### `template`\n * HTML markup that may:\n * * Replace the contents of the directive's element (default).\n * * Replace the directive's element itself (if `replace` is true - DEPRECATED).\n * * Wrap the contents of the directive's element (if `transclude` is true).\n *\n * Value may be:\n *\n * * A string. For example `
{{delete_str}}
`.\n * * A function which takes two arguments `tElement` and `tAttrs` (described in the `compile`\n * function api below) and returns a string value.\n *\n *\n * #### `templateUrl`\n * Same as `template` but the template is loaded from the specified URL. Because\n * the template loading is asynchronous the compilation/linking is suspended until the template\n * is loaded.\n *\n * You can specify `templateUrl` as a string representing the URL or as a function which takes two\n * arguments `tElement` and `tAttrs` (described in the `compile` function api below) and returns\n * a string value representing the url. In either case, the template URL is passed through {@link\n * api/ng.$sce#getTrustedResourceUrl $sce.getTrustedResourceUrl}.\n *\n *\n * #### `replace` ([*DEPRECATED*!], will be removed in next major release)\n * specify what the template should replace. Defaults to `false`.\n *\n * * `true` - the template will replace the directive's element.\n * * `false` - the template will replace the contents of the directive's element.\n *\n * The replacement process migrates all of the attributes / classes from the old element to the new\n * one. See the {@link guide/directive#creating-custom-directives_creating-directives_template-expanding-directive\n * Directives Guide} for an example.\n *\n * #### `transclude`\n * compile the content of the element and make it available to the directive.\n * Typically used with {@link ng.directive:ngTransclude\n * ngTransclude}. The advantage of transclusion is that the linking function receives a\n * transclusion function which is pre-bound to the correct scope. In a typical setup the widget\n * creates an `isolate` scope, but the transclusion is not a child, but a sibling of the `isolate`\n * scope. This makes it possible for the widget to have private state, and the transclusion to\n * be bound to the parent (pre-`isolate`) scope.\n *\n * There are two kinds of transclusion depending upon whether you want to transclude just the contents of the\n * directive's element or the entire element:\n *\n * * `true` - transclude the content (i.e. the child nodes) of the directive's element.\n * * `'element'` - transclude the whole of the directive's element including any directives on this\n * element that defined at a lower priority than this directive. When used, the `template`\n * property is ignored.\n *\n *
\n * **Note:** When testing an element transclude directive you must not place the directive at the root of the\n * DOM fragment that is being compiled. See {@link guide/unit-testing#testing-transclusion-directives\n * Testing Transclusion Directives}.\n *
\n *\n * #### `compile`\n *\n * ```js\n * function compile(tElement, tAttrs, transclude) { ... }\n * ```\n *\n * The compile function deals with transforming the template DOM. Since most directives do not do\n * template transformation, it is not used often. The compile function takes the following arguments:\n *\n * * `tElement` - template element - The element where the directive has been declared. It is\n * safe to do template transformation on the element and child elements only.\n *\n * * `tAttrs` - template attributes - Normalized list of attributes declared on this element shared\n * between all directive compile functions.\n *\n * * `transclude` - [*DEPRECATED*!] A transclude linking function: `function(scope, cloneLinkingFn)`\n *\n *
\n * **Note:** The template instance and the link instance may be different objects if the template has\n * been cloned. For this reason it is **not** safe to do anything other than DOM transformations that\n * apply to all cloned DOM nodes within the compile function. Specifically, DOM listener registration\n * should be done in a linking function rather than in a compile function.\n *
\n\n *
\n * **Note:** The compile function cannot handle directives that recursively use themselves in their\n * own templates or compile functions. Compiling these directives results in an infinite loop and a\n * stack overflow errors.\n *\n * This can be avoided by manually using $compile in the postLink function to imperatively compile\n * a directive's template instead of relying on automatic template compilation via `template` or\n * `templateUrl` declaration or manual compilation inside the compile function.\n *
\n *\n *
\n * **Note:** The `transclude` function that is passed to the compile function is deprecated, as it\n * e.g. does not know about the right outer scope. Please use the transclude function that is passed\n * to the link function instead.\n *
\n\n * A compile function can have a return value which can be either a function or an object.\n *\n * * returning a (post-link) function - is equivalent to registering the linking function via the\n * `link` property of the config object when the compile function is empty.\n *\n * * returning an object with function(s) registered via `pre` and `post` properties - allows you to\n * control when a linking function should be called during the linking phase. See info about\n * pre-linking and post-linking functions below.\n *\n *\n * #### `link`\n * This property is used only if the `compile` property is not defined.\n *\n * ```js\n * function link(scope, iElement, iAttrs, controller, transcludeFn) { ... }\n * ```\n *\n * The link function is responsible for registering DOM listeners as well as updating the DOM. It is\n * executed after the template has been cloned. This is where most of the directive logic will be\n * put.\n *\n * * `scope` - {@link ng.$rootScope.Scope Scope} - The scope to be used by the\n * directive for registering {@link ng.$rootScope.Scope#$watch watches}.\n *\n * * `iElement` - instance element - The element where the directive is to be used. It is safe to\n * manipulate the children of the element only in `postLink` function since the children have\n * already been linked.\n *\n * * `iAttrs` - instance attributes - Normalized list of attributes declared on this element shared\n * between all directive linking functions.\n *\n * * `controller` - a controller instance - A controller instance if at least one directive on the\n * element defines a controller. The controller is shared among all the directives, which allows\n * the directives to use the controllers as a communication channel.\n *\n * * `transcludeFn` - A transclude linking function pre-bound to the correct transclusion scope.\n * The scope can be overridden by an optional first argument. This is the same as the `$transclude`\n * parameter of directive controllers.\n * `function([scope], cloneLinkingFn)`.\n *\n *\n * #### Pre-linking function\n *\n * Executed before the child elements are linked. Not safe to do DOM transformation since the\n * compiler linking function will fail to locate the correct elements for linking.\n *\n * #### Post-linking function\n *\n * Executed after the child elements are linked. It is safe to do DOM transformation in the post-linking function.\n *\n * \n * ### Attributes\n *\n * The {@link ng.$compile.directive.Attributes Attributes} object - passed as a parameter in the\n * `link()` or `compile()` functions. It has a variety of uses.\n *\n * accessing *Normalized attribute names:*\n * Directives like 'ngBind' can be expressed in many ways: 'ng:bind', `data-ng-bind`, or 'x-ng-bind'.\n * the attributes object allows for normalized access to\n * the attributes.\n *\n * * *Directive inter-communication:* All directives share the same instance of the attributes\n * object which allows the directives to use the attributes object as inter directive\n * communication.\n *\n * * *Supports interpolation:* Interpolation attributes are assigned to the attribute object\n * allowing other directives to read the interpolated value.\n *\n * * *Observing interpolated attributes:* Use `$observe` to observe the value changes of attributes\n * that contain interpolation (e.g. `src=\"{{bar}}\"`). Not only is this very efficient but it's also\n * the only way to easily get the actual value because during the linking phase the interpolation\n * hasn't been evaluated yet and so the value is at this time set to `undefined`.\n *\n * ```js\n * function linkingFn(scope, elm, attrs, ctrl) {\n * // get the attribute value\n * console.log(attrs.ngModel);\n *\n * // change the attribute\n * attrs.$set('ngModel', 'new value');\n *\n * // observe changes to interpolated attribute\n * attrs.$observe('ngModel', function(value) {\n * console.log('ngModel has changed value to ' + value);\n * });\n * }\n * ```\n *\n * ## Example\n *\n *
\n * **Note**: Typically directives are registered with `module.directive`. The example below is\n * to illustrate how `$compile` works.\n *
\n *\n \n \n \n
\n
\n
\n
\n
\n
\n \n it('should auto compile', function() {\n var textarea = $('textarea');\n var output = $('div[compile]');\n // The initial state reads 'Hello Angular'.\n expect(output.getText()).toBe('Hello Angular');\n textarea.clear();\n textarea.sendKeys('{{name}}!');\n expect(output.getText()).toBe('Angular!');\n });\n \n
\n\n *\n *\n * @param {string|DOMElement} element Element or HTML string to compile into a template function.\n * @param {function(angular.Scope, cloneAttachFn=)} transclude function available to directives.\n * @param {number} maxPriority only apply directives lower than given priority (Only effects the\n * root element(s), not their children)\n * @returns {function(scope, cloneAttachFn=)} a link function which is used to bind template\n * (a DOM element/tree) to a scope. Where:\n *\n * * `scope` - A {@link ng.$rootScope.Scope Scope} to bind to.\n * * `cloneAttachFn` - If `cloneAttachFn` is provided, then the link function will clone the\n * `template` and call the `cloneAttachFn` function allowing the caller to attach the\n * cloned elements to the DOM document at the appropriate place. The `cloneAttachFn` is\n * called as:
`cloneAttachFn(clonedElement, scope)` where:\n *\n * * `clonedElement` - is a clone of the original `element` passed into the compiler.\n * * `scope` - is the current scope with which the linking function is working with.\n *\n * Calling the linking function returns the element of the template. It is either the original\n * element passed in, or the clone of the element if the `cloneAttachFn` is provided.\n *\n * After linking the view is not updated until after a call to $digest which typically is done by\n * Angular automatically.\n *\n * If you need access to the bound view, there are two ways to do it:\n *\n * - If you are not asking the linking function to clone the template, create the DOM element(s)\n * before you send them to the compiler and keep this reference around.\n * ```js\n * var element = $compile('

{{total}}

')(scope);\n * ```\n *\n * - if on the other hand, you need the element to be cloned, the view reference from the original\n * example would not point to the clone, but rather to the original template that was cloned. In\n * this case, you can access the clone via the cloneAttachFn:\n * ```js\n * var templateElement = angular.element('

{{total}}

'),\n * scope = ....;\n *\n * var clonedElement = $compile(templateElement)(scope, function(clonedElement, scope) {\n * //attach the clone to DOM document at the right place\n * });\n *\n * //now we have reference to the cloned DOM via `clonedElement`\n * ```\n *\n *\n * For information on how the compiler works, see the\n * {@link guide/compiler Angular HTML Compiler} section of the Developer Guide.\n */\n\nvar $compileMinErr = minErr('$compile');\n\n/**\n * @ngdoc provider\n * @name $compileProvider\n * @kind function\n *\n * @description\n */\n$CompileProvider.$inject = ['$provide', '$$sanitizeUriProvider'];\nfunction $CompileProvider($provide, $$sanitizeUriProvider) {\n var hasDirectives = {},\n Suffix = 'Directive',\n COMMENT_DIRECTIVE_REGEXP = /^\\s*directive\\:\\s*([\\d\\w_\\-]+)\\s+(.*)$/,\n CLASS_DIRECTIVE_REGEXP = /(([\\d\\w_\\-]+)(?:\\:([^;]+))?;?)/;\n\n // Ref: http://developers.whatwg.org/webappapis.html#event-handler-idl-attributes\n // The assumption is that future DOM event attribute names will begin with\n // 'on' and be composed of only English letters.\n var EVENT_HANDLER_ATTR_REGEXP = /^(on[a-z]+|formaction)$/;\n\n /**\n * @ngdoc method\n * @name $compileProvider#directive\n * @kind function\n *\n * @description\n * Register a new directive with the compiler.\n *\n * @param {string|Object} name Name of the directive in camel-case (i.e. ngBind which\n * will match as ng-bind), or an object map of directives where the keys are the\n * names and the values are the factories.\n * @param {Function|Array} directiveFactory An injectable directive factory function. See\n * {@link guide/directive} for more info.\n * @returns {ng.$compileProvider} Self for chaining.\n */\n this.directive = function registerDirective(name, directiveFactory) {\n assertNotHasOwnProperty(name, 'directive');\n if (isString(name)) {\n assertArg(directiveFactory, 'directiveFactory');\n if (!hasDirectives.hasOwnProperty(name)) {\n hasDirectives[name] = [];\n $provide.factory(name + Suffix, ['$injector', '$exceptionHandler',\n function($injector, $exceptionHandler) {\n var directives = [];\n forEach(hasDirectives[name], function(directiveFactory, index) {\n try {\n var directive = $injector.invoke(directiveFactory);\n if (isFunction(directive)) {\n directive = { compile: valueFn(directive) };\n } else if (!directive.compile && directive.link) {\n directive.compile = valueFn(directive.link);\n }\n directive.priority = directive.priority || 0;\n directive.index = index;\n directive.name = directive.name || name;\n directive.require = directive.require || (directive.controller && directive.name);\n directive.restrict = directive.restrict || 'A';\n directives.push(directive);\n } catch (e) {\n $exceptionHandler(e);\n }\n });\n return directives;\n }]);\n }\n hasDirectives[name].push(directiveFactory);\n } else {\n forEach(name, reverseParams(registerDirective));\n }\n return this;\n };\n\n\n /**\n * @ngdoc method\n * @name $compileProvider#aHrefSanitizationWhitelist\n * @kind function\n *\n * @description\n * Retrieves or overrides the default regular expression that is used for whitelisting of safe\n * urls during a[href] sanitization.\n *\n * The sanitization is a security measure aimed at prevent XSS attacks via html links.\n *\n * Any url about to be assigned to a[href] via data-binding is first normalized and turned into\n * an absolute url. Afterwards, the url is matched against the `aHrefSanitizationWhitelist`\n * regular expression. If a match is found, the original url is written into the dom. Otherwise,\n * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.\n *\n * @param {RegExp=} regexp New regexp to whitelist urls with.\n * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for\n * chaining otherwise.\n */\n this.aHrefSanitizationWhitelist = function(regexp) {\n if (isDefined(regexp)) {\n $$sanitizeUriProvider.aHrefSanitizationWhitelist(regexp);\n return this;\n } else {\n return $$sanitizeUriProvider.aHrefSanitizationWhitelist();\n }\n };\n\n\n /**\n * @ngdoc method\n * @name $compileProvider#imgSrcSanitizationWhitelist\n * @kind function\n *\n * @description\n * Retrieves or overrides the default regular expression that is used for whitelisting of safe\n * urls during img[src] sanitization.\n *\n * The sanitization is a security measure aimed at prevent XSS attacks via html links.\n *\n * Any url about to be assigned to img[src] via data-binding is first normalized and turned into\n * an absolute url. Afterwards, the url is matched against the `imgSrcSanitizationWhitelist`\n * regular expression. If a match is found, the original url is written into the dom. Otherwise,\n * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.\n *\n * @param {RegExp=} regexp New regexp to whitelist urls with.\n * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for\n * chaining otherwise.\n */\n this.imgSrcSanitizationWhitelist = function(regexp) {\n if (isDefined(regexp)) {\n $$sanitizeUriProvider.imgSrcSanitizationWhitelist(regexp);\n return this;\n } else {\n return $$sanitizeUriProvider.imgSrcSanitizationWhitelist();\n }\n };\n\n this.$get = [\n '$injector', '$interpolate', '$exceptionHandler', '$http', '$templateCache', '$parse',\n '$controller', '$rootScope', '$document', '$sce', '$animate', '$$sanitizeUri',\n function($injector, $interpolate, $exceptionHandler, $http, $templateCache, $parse,\n $controller, $rootScope, $document, $sce, $animate, $$sanitizeUri) {\n\n var Attributes = function(element, attr) {\n this.$$element = element;\n this.$attr = attr || {};\n };\n\n Attributes.prototype = {\n /**\n * @ngdoc method\n * @name $compile.directive.Attributes#$normalize\n * @kind function\n *\n * @description\n * Converts an attribute name (e.g. dash/colon/underscore-delimited string, optionally prefixed with `x-` or\n * `data-`) to its normalized, camelCase form.\n *\n * Also there is special case for Moz prefix starting with upper case letter.\n *\n * For further information check out the guide on {@link guide/directive#matching-directives Matching Directives}\n *\n * @param {string} name Name to normalize\n */\n $normalize: directiveNormalize,\n\n\n /**\n * @ngdoc method\n * @name $compile.directive.Attributes#$addClass\n * @kind function\n *\n * @description\n * Adds the CSS class value specified by the classVal parameter to the element. If animations\n * are enabled then an animation will be triggered for the class addition.\n *\n * @param {string} classVal The className value that will be added to the element\n */\n $addClass : function(classVal) {\n if(classVal && classVal.length > 0) {\n $animate.addClass(this.$$element, classVal);\n }\n },\n\n /**\n * @ngdoc method\n * @name $compile.directive.Attributes#$removeClass\n * @kind function\n *\n * @description\n * Removes the CSS class value specified by the classVal parameter from the element. If\n * animations are enabled then an animation will be triggered for the class removal.\n *\n * @param {string} classVal The className value that will be removed from the element\n */\n $removeClass : function(classVal) {\n if(classVal && classVal.length > 0) {\n $animate.removeClass(this.$$element, classVal);\n }\n },\n\n /**\n * @ngdoc method\n * @name $compile.directive.Attributes#$updateClass\n * @kind function\n *\n * @description\n * Adds and removes the appropriate CSS class values to the element based on the difference\n * between the new and old CSS class values (specified as newClasses and oldClasses).\n *\n * @param {string} newClasses The current CSS className value\n * @param {string} oldClasses The former CSS className value\n */\n $updateClass : function(newClasses, oldClasses) {\n var toAdd = tokenDifference(newClasses, oldClasses);\n var toRemove = tokenDifference(oldClasses, newClasses);\n\n if(toAdd.length === 0) {\n $animate.removeClass(this.$$element, toRemove);\n } else if(toRemove.length === 0) {\n $animate.addClass(this.$$element, toAdd);\n } else {\n $animate.setClass(this.$$element, toAdd, toRemove);\n }\n },\n\n /**\n * Set a normalized attribute on the element in a way such that all directives\n * can share the attribute. This function properly handles boolean attributes.\n * @param {string} key Normalized key. (ie ngAttribute)\n * @param {string|boolean} value The value to set. If `null` attribute will be deleted.\n * @param {boolean=} writeAttr If false, does not write the value to DOM element attribute.\n * Defaults to true.\n * @param {string=} attrName Optional none normalized name. Defaults to key.\n */\n $set: function(key, value, writeAttr, attrName) {\n // TODO: decide whether or not to throw an error if \"class\"\n //is set through this function since it may cause $updateClass to\n //become unstable.\n\n var booleanKey = getBooleanAttrName(this.$$element[0], key),\n normalizedVal,\n nodeName;\n\n if (booleanKey) {\n this.$$element.prop(key, value);\n attrName = booleanKey;\n }\n\n this[key] = value;\n\n // translate normalized key to actual key\n if (attrName) {\n this.$attr[key] = attrName;\n } else {\n attrName = this.$attr[key];\n if (!attrName) {\n this.$attr[key] = attrName = snake_case(key, '-');\n }\n }\n\n nodeName = nodeName_(this.$$element);\n\n // sanitize a[href] and img[src] values\n if ((nodeName === 'A' && key === 'href') ||\n (nodeName === 'IMG' && key === 'src')) {\n this[key] = value = $$sanitizeUri(value, key === 'src');\n }\n\n if (writeAttr !== false) {\n if (value === null || value === undefined) {\n this.$$element.removeAttr(attrName);\n } else {\n this.$$element.attr(attrName, value);\n }\n }\n\n // fire observers\n var $$observers = this.$$observers;\n $$observers && forEach($$observers[key], function(fn) {\n try {\n fn(value);\n } catch (e) {\n $exceptionHandler(e);\n }\n });\n },\n\n\n /**\n * @ngdoc method\n * @name $compile.directive.Attributes#$observe\n * @kind function\n *\n * @description\n * Observes an interpolated attribute.\n *\n * The observer function will be invoked once during the next `$digest` following\n * compilation. The observer is then invoked whenever the interpolated value\n * changes.\n *\n * @param {string} key Normalized key. (ie ngAttribute) .\n * @param {function(interpolatedValue)} fn Function that will be called whenever\n the interpolated value of the attribute changes.\n * See the {@link guide/directive#Attributes Directives} guide for more info.\n * @returns {function()} the `fn` parameter.\n */\n $observe: function(key, fn) {\n var attrs = this,\n $$observers = (attrs.$$observers || (attrs.$$observers = {})),\n listeners = ($$observers[key] || ($$observers[key] = []));\n\n listeners.push(fn);\n $rootScope.$evalAsync(function() {\n if (!listeners.$$inter) {\n // no one registered attribute interpolation function, so lets call it manually\n fn(attrs[key]);\n }\n });\n return fn;\n }\n };\n\n var startSymbol = $interpolate.startSymbol(),\n endSymbol = $interpolate.endSymbol(),\n denormalizeTemplate = (startSymbol == '{{' || endSymbol == '}}')\n ? identity\n : function denormalizeTemplate(template) {\n return template.replace(/\\{\\{/g, startSymbol).replace(/}}/g, endSymbol);\n },\n NG_ATTR_BINDING = /^ngAttr[A-Z]/;\n\n\n return compile;\n\n //================================\n\n function compile($compileNodes, transcludeFn, maxPriority, ignoreDirective,\n previousCompileContext) {\n if (!($compileNodes instanceof jqLite)) {\n // jquery always rewraps, whereas we need to preserve the original selector so that we can\n // modify it.\n $compileNodes = jqLite($compileNodes);\n }\n // We can not compile top level text elements since text nodes can be merged and we will\n // not be able to attach scope data to them, so we will wrap them in \n forEach($compileNodes, function(node, index){\n if (node.nodeType == 3 /* text node */ && node.nodeValue.match(/\\S+/) /* non-empty */ ) {\n $compileNodes[index] = node = jqLite(node).wrap('').parent()[0];\n }\n });\n var compositeLinkFn =\n compileNodes($compileNodes, transcludeFn, $compileNodes,\n maxPriority, ignoreDirective, previousCompileContext);\n safeAddClass($compileNodes, 'ng-scope');\n return function publicLinkFn(scope, cloneConnectFn, transcludeControllers, parentBoundTranscludeFn){\n assertArg(scope, 'scope');\n // important!!: we must call our jqLite.clone() since the jQuery one is trying to be smart\n // and sometimes changes the structure of the DOM.\n var $linkNode = cloneConnectFn\n ? JQLitePrototype.clone.call($compileNodes) // IMPORTANT!!!\n : $compileNodes;\n\n forEach(transcludeControllers, function(instance, name) {\n $linkNode.data('$' + name + 'Controller', instance);\n });\n\n // Attach scope only to non-text nodes.\n for(var i = 0, ii = $linkNode.length; i\n addDirective(directives,\n directiveNormalize(nodeName_(node).toLowerCase()), 'E', maxPriority, ignoreDirective);\n\n // iterate over the attributes\n for (var attr, name, nName, ngAttrName, value, isNgAttr, nAttrs = node.attributes,\n j = 0, jj = nAttrs && nAttrs.length; j < jj; j++) {\n var attrStartName = false;\n var attrEndName = false;\n\n attr = nAttrs[j];\n if (!msie || msie >= 8 || attr.specified) {\n name = attr.name;\n value = trim(attr.value);\n\n // support ngAttr attribute binding\n ngAttrName = directiveNormalize(name);\n if (isNgAttr = NG_ATTR_BINDING.test(ngAttrName)) {\n name = snake_case(ngAttrName.substr(6), '-');\n }\n\n var directiveNName = ngAttrName.replace(/(Start|End)$/, '');\n if (ngAttrName === directiveNName + 'Start') {\n attrStartName = name;\n attrEndName = name.substr(0, name.length - 5) + 'end';\n name = name.substr(0, name.length - 6);\n }\n\n nName = directiveNormalize(name.toLowerCase());\n attrsMap[nName] = name;\n if (isNgAttr || !attrs.hasOwnProperty(nName)) {\n attrs[nName] = value;\n if (getBooleanAttrName(node, nName)) {\n attrs[nName] = true; // presence means true\n }\n }\n addAttrInterpolateDirective(node, directives, value, nName);\n addDirective(directives, nName, 'A', maxPriority, ignoreDirective, attrStartName,\n attrEndName);\n }\n }\n\n // use class as directive\n className = node.className;\n if (isString(className) && className !== '') {\n while (match = CLASS_DIRECTIVE_REGEXP.exec(className)) {\n nName = directiveNormalize(match[2]);\n if (addDirective(directives, nName, 'C', maxPriority, ignoreDirective)) {\n attrs[nName] = trim(match[3]);\n }\n className = className.substr(match.index + match[0].length);\n }\n }\n break;\n case 3: /* Text Node */\n addTextInterpolateDirective(directives, node.nodeValue);\n break;\n case 8: /* Comment */\n try {\n match = COMMENT_DIRECTIVE_REGEXP.exec(node.nodeValue);\n if (match) {\n nName = directiveNormalize(match[1]);\n if (addDirective(directives, nName, 'M', maxPriority, ignoreDirective)) {\n attrs[nName] = trim(match[2]);\n }\n }\n } catch (e) {\n // turns out that under some circumstances IE9 throws errors when one attempts to read\n // comment's node value.\n // Just ignore it and continue. (Can't seem to reproduce in test case.)\n }\n break;\n }\n\n directives.sort(byPriority);\n return directives;\n }\n\n /**\n * Given a node with an directive-start it collects all of the siblings until it finds\n * directive-end.\n * @param node\n * @param attrStart\n * @param attrEnd\n * @returns {*}\n */\n function groupScan(node, attrStart, attrEnd) {\n var nodes = [];\n var depth = 0;\n if (attrStart && node.hasAttribute && node.hasAttribute(attrStart)) {\n var startNode = node;\n do {\n if (!node) {\n throw $compileMinErr('uterdir',\n \"Unterminated attribute, found '{0}' but no matching '{1}' found.\",\n attrStart, attrEnd);\n }\n if (node.nodeType == 1 /** Element **/) {\n if (node.hasAttribute(attrStart)) depth++;\n if (node.hasAttribute(attrEnd)) depth--;\n }\n nodes.push(node);\n node = node.nextSibling;\n } while (depth > 0);\n } else {\n nodes.push(node);\n }\n\n return jqLite(nodes);\n }\n\n /**\n * Wrapper for linking function which converts normal linking function into a grouped\n * linking function.\n * @param linkFn\n * @param attrStart\n * @param attrEnd\n * @returns {Function}\n */\n function groupElementsLinkFnWrapper(linkFn, attrStart, attrEnd) {\n return function(scope, element, attrs, controllers, transcludeFn) {\n element = groupScan(element[0], attrStart, attrEnd);\n return linkFn(scope, element, attrs, controllers, transcludeFn);\n };\n }\n\n /**\n * Once the directives have been collected, their compile functions are executed. This method\n * is responsible for inlining directive templates as well as terminating the application\n * of the directives if the terminal directive has been reached.\n *\n * @param {Array} directives Array of collected directives to execute their compile function.\n * this needs to be pre-sorted by priority order.\n * @param {Node} compileNode The raw DOM node to apply the compile functions to\n * @param {Object} templateAttrs The shared attribute function\n * @param {function(angular.Scope, cloneAttachFn=)} transcludeFn A linking function, where the\n * scope argument is auto-generated to the new\n * child of the transcluded parent scope.\n * @param {JQLite} jqCollection If we are working on the root of the compile tree then this\n * argument has the root jqLite array so that we can replace nodes\n * on it.\n * @param {Object=} originalReplaceDirective An optional directive that will be ignored when\n * compiling the transclusion.\n * @param {Array.} preLinkFns\n * @param {Array.} postLinkFns\n * @param {Object} previousCompileContext Context used for previous compilation of the current\n * node\n * @returns {Function} linkFn\n */\n function applyDirectivesToNode(directives, compileNode, templateAttrs, transcludeFn,\n jqCollection, originalReplaceDirective, preLinkFns, postLinkFns,\n previousCompileContext) {\n previousCompileContext = previousCompileContext || {};\n\n var terminalPriority = -Number.MAX_VALUE,\n newScopeDirective,\n controllerDirectives = previousCompileContext.controllerDirectives,\n newIsolateScopeDirective = previousCompileContext.newIsolateScopeDirective,\n templateDirective = previousCompileContext.templateDirective,\n nonTlbTranscludeDirective = previousCompileContext.nonTlbTranscludeDirective,\n hasTranscludeDirective = false,\n hasTemplate = false,\n hasElementTranscludeDirective = previousCompileContext.hasElementTranscludeDirective,\n $compileNode = templateAttrs.$$element = jqLite(compileNode),\n directive,\n directiveName,\n $template,\n replaceDirective = originalReplaceDirective,\n childTranscludeFn = transcludeFn,\n linkFn,\n directiveValue;\n\n // executes all directives on the current element\n for(var i = 0, ii = directives.length; i < ii; i++) {\n directive = directives[i];\n var attrStart = directive.$$start;\n var attrEnd = directive.$$end;\n\n // collect multiblock sections\n if (attrStart) {\n $compileNode = groupScan(compileNode, attrStart, attrEnd);\n }\n $template = undefined;\n\n if (terminalPriority > directive.priority) {\n break; // prevent further processing of directives\n }\n\n if (directiveValue = directive.scope) {\n newScopeDirective = newScopeDirective || directive;\n\n // skip the check for directives with async templates, we'll check the derived sync\n // directive when the template arrives\n if (!directive.templateUrl) {\n assertNoDuplicate('new/isolated scope', newIsolateScopeDirective, directive,\n $compileNode);\n if (isObject(directiveValue)) {\n newIsolateScopeDirective = directive;\n }\n }\n }\n\n directiveName = directive.name;\n\n if (!directive.templateUrl && directive.controller) {\n directiveValue = directive.controller;\n controllerDirectives = controllerDirectives || {};\n assertNoDuplicate(\"'\" + directiveName + \"' controller\",\n controllerDirectives[directiveName], directive, $compileNode);\n controllerDirectives[directiveName] = directive;\n }\n\n if (directiveValue = directive.transclude) {\n hasTranscludeDirective = true;\n\n // Special case ngIf and ngRepeat so that we don't complain about duplicate transclusion.\n // This option should only be used by directives that know how to safely handle element transclusion,\n // where the transcluded nodes are added or replaced after linking.\n if (!directive.$$tlb) {\n assertNoDuplicate('transclusion', nonTlbTranscludeDirective, directive, $compileNode);\n nonTlbTranscludeDirective = directive;\n }\n\n if (directiveValue == 'element') {\n hasElementTranscludeDirective = true;\n terminalPriority = directive.priority;\n $template = $compileNode;\n $compileNode = templateAttrs.$$element =\n jqLite(document.createComment(' ' + directiveName + ': ' +\n templateAttrs[directiveName] + ' '));\n compileNode = $compileNode[0];\n replaceWith(jqCollection, sliceArgs($template), compileNode);\n\n childTranscludeFn = compile($template, transcludeFn, terminalPriority,\n replaceDirective && replaceDirective.name, {\n // Don't pass in:\n // - controllerDirectives - otherwise we'll create duplicates controllers\n // - newIsolateScopeDirective or templateDirective - combining templates with\n // element transclusion doesn't make sense.\n //\n // We need only nonTlbTranscludeDirective so that we prevent putting transclusion\n // on the same element more than once.\n nonTlbTranscludeDirective: nonTlbTranscludeDirective\n });\n } else {\n $template = jqLite(jqLiteClone(compileNode)).contents();\n $compileNode.empty(); // clear contents\n childTranscludeFn = compile($template, transcludeFn);\n }\n }\n\n if (directive.template) {\n hasTemplate = true;\n assertNoDuplicate('template', templateDirective, directive, $compileNode);\n templateDirective = directive;\n\n directiveValue = (isFunction(directive.template))\n ? directive.template($compileNode, templateAttrs)\n : directive.template;\n\n directiveValue = denormalizeTemplate(directiveValue);\n\n if (directive.replace) {\n replaceDirective = directive;\n if (jqLiteIsTextNode(directiveValue)) {\n $template = [];\n } else {\n $template = jqLite(trim(directiveValue));\n }\n compileNode = $template[0];\n\n if ($template.length != 1 || compileNode.nodeType !== 1) {\n throw $compileMinErr('tplrt',\n \"Template for directive '{0}' must have exactly one root element. {1}\",\n directiveName, '');\n }\n\n replaceWith(jqCollection, $compileNode, compileNode);\n\n var newTemplateAttrs = {$attr: {}};\n\n // combine directives from the original node and from the template:\n // - take the array of directives for this element\n // - split it into two parts, those that already applied (processed) and those that weren't (unprocessed)\n // - collect directives from the template and sort them by priority\n // - combine directives as: processed + template + unprocessed\n var templateDirectives = collectDirectives(compileNode, [], newTemplateAttrs);\n var unprocessedDirectives = directives.splice(i + 1, directives.length - (i + 1));\n\n if (newIsolateScopeDirective) {\n markDirectivesAsIsolate(templateDirectives);\n }\n directives = directives.concat(templateDirectives).concat(unprocessedDirectives);\n mergeTemplateAttributes(templateAttrs, newTemplateAttrs);\n\n ii = directives.length;\n } else {\n $compileNode.html(directiveValue);\n }\n }\n\n if (directive.templateUrl) {\n hasTemplate = true;\n assertNoDuplicate('template', templateDirective, directive, $compileNode);\n templateDirective = directive;\n\n if (directive.replace) {\n replaceDirective = directive;\n }\n\n nodeLinkFn = compileTemplateUrl(directives.splice(i, directives.length - i), $compileNode,\n templateAttrs, jqCollection, hasTranscludeDirective && childTranscludeFn, preLinkFns, postLinkFns, {\n controllerDirectives: controllerDirectives,\n newIsolateScopeDirective: newIsolateScopeDirective,\n templateDirective: templateDirective,\n nonTlbTranscludeDirective: nonTlbTranscludeDirective\n });\n ii = directives.length;\n } else if (directive.compile) {\n try {\n linkFn = directive.compile($compileNode, templateAttrs, childTranscludeFn);\n if (isFunction(linkFn)) {\n addLinkFns(null, linkFn, attrStart, attrEnd);\n } else if (linkFn) {\n addLinkFns(linkFn.pre, linkFn.post, attrStart, attrEnd);\n }\n } catch (e) {\n $exceptionHandler(e, startingTag($compileNode));\n }\n }\n\n if (directive.terminal) {\n nodeLinkFn.terminal = true;\n terminalPriority = Math.max(terminalPriority, directive.priority);\n }\n\n }\n\n nodeLinkFn.scope = newScopeDirective && newScopeDirective.scope === true;\n nodeLinkFn.transcludeOnThisElement = hasTranscludeDirective;\n nodeLinkFn.templateOnThisElement = hasTemplate;\n nodeLinkFn.transclude = childTranscludeFn;\n\n previousCompileContext.hasElementTranscludeDirective = hasElementTranscludeDirective;\n\n // might be normal or delayed nodeLinkFn depending on if templateUrl is present\n return nodeLinkFn;\n\n ////////////////////\n\n function addLinkFns(pre, post, attrStart, attrEnd) {\n if (pre) {\n if (attrStart) pre = groupElementsLinkFnWrapper(pre, attrStart, attrEnd);\n pre.require = directive.require;\n pre.directiveName = directiveName;\n if (newIsolateScopeDirective === directive || directive.$$isolateScope) {\n pre = cloneAndAnnotateFn(pre, {isolateScope: true});\n }\n preLinkFns.push(pre);\n }\n if (post) {\n if (attrStart) post = groupElementsLinkFnWrapper(post, attrStart, attrEnd);\n post.require = directive.require;\n post.directiveName = directiveName;\n if (newIsolateScopeDirective === directive || directive.$$isolateScope) {\n post = cloneAndAnnotateFn(post, {isolateScope: true});\n }\n postLinkFns.push(post);\n }\n }\n\n\n function getControllers(directiveName, require, $element, elementControllers) {\n var value, retrievalMethod = 'data', optional = false;\n if (isString(require)) {\n while((value = require.charAt(0)) == '^' || value == '?') {\n require = require.substr(1);\n if (value == '^') {\n retrievalMethod = 'inheritedData';\n }\n optional = optional || value == '?';\n }\n value = null;\n\n if (elementControllers && retrievalMethod === 'data') {\n value = elementControllers[require];\n }\n value = value || $element[retrievalMethod]('$' + require + 'Controller');\n\n if (!value && !optional) {\n throw $compileMinErr('ctreq',\n \"Controller '{0}', required by directive '{1}', can't be found!\",\n require, directiveName);\n }\n return value;\n } else if (isArray(require)) {\n value = [];\n forEach(require, function(require) {\n value.push(getControllers(directiveName, require, $element, elementControllers));\n });\n }\n return value;\n }\n\n\n function nodeLinkFn(childLinkFn, scope, linkNode, $rootElement, boundTranscludeFn) {\n var attrs, $element, i, ii, linkFn, controller, isolateScope, elementControllers = {}, transcludeFn;\n\n attrs = (compileNode === linkNode)\n ? templateAttrs\n : shallowCopy(templateAttrs, new Attributes(jqLite(linkNode), templateAttrs.$attr));\n $element = attrs.$$element;\n\n if (newIsolateScopeDirective) {\n var LOCAL_REGEXP = /^\\s*([@=&])(\\??)\\s*(\\w*)\\s*$/;\n\n isolateScope = scope.$new(true);\n\n if (templateDirective && (templateDirective === newIsolateScopeDirective ||\n templateDirective === newIsolateScopeDirective.$$originalDirective)) {\n $element.data('$isolateScope', isolateScope);\n } else {\n $element.data('$isolateScopeNoTemplate', isolateScope);\n }\n\n\n\n safeAddClass($element, 'ng-isolate-scope');\n\n forEach(newIsolateScopeDirective.scope, function(definition, scopeName) {\n var match = definition.match(LOCAL_REGEXP) || [],\n attrName = match[3] || scopeName,\n optional = (match[2] == '?'),\n mode = match[1], // @, =, or &\n lastValue,\n parentGet, parentSet, compare;\n\n isolateScope.$$isolateBindings[scopeName] = mode + attrName;\n\n switch (mode) {\n\n case '@':\n attrs.$observe(attrName, function(value) {\n isolateScope[scopeName] = value;\n });\n attrs.$$observers[attrName].$$scope = scope;\n if( attrs[attrName] ) {\n // If the attribute has been provided then we trigger an interpolation to ensure\n // the value is there for use in the link fn\n isolateScope[scopeName] = $interpolate(attrs[attrName])(scope);\n }\n break;\n\n case '=':\n if (optional && !attrs[attrName]) {\n return;\n }\n parentGet = $parse(attrs[attrName]);\n if (parentGet.literal) {\n compare = equals;\n } else {\n compare = function(a,b) { return a === b || (a !== a && b !== b); };\n }\n parentSet = parentGet.assign || function() {\n // reset the change, or we will throw this exception on every $digest\n lastValue = isolateScope[scopeName] = parentGet(scope);\n throw $compileMinErr('nonassign',\n \"Expression '{0}' used with directive '{1}' is non-assignable!\",\n attrs[attrName], newIsolateScopeDirective.name);\n };\n lastValue = isolateScope[scopeName] = parentGet(scope);\n isolateScope.$watch(function parentValueWatch() {\n var parentValue = parentGet(scope);\n if (!compare(parentValue, isolateScope[scopeName])) {\n // we are out of sync and need to copy\n if (!compare(parentValue, lastValue)) {\n // parent changed and it has precedence\n isolateScope[scopeName] = parentValue;\n } else {\n // if the parent can be assigned then do so\n parentSet(scope, parentValue = isolateScope[scopeName]);\n }\n }\n return lastValue = parentValue;\n }, null, parentGet.literal);\n break;\n\n case '&':\n parentGet = $parse(attrs[attrName]);\n isolateScope[scopeName] = function(locals) {\n return parentGet(scope, locals);\n };\n break;\n\n default:\n throw $compileMinErr('iscp',\n \"Invalid isolate scope definition for directive '{0}'.\" +\n \" Definition: {... {1}: '{2}' ...}\",\n newIsolateScopeDirective.name, scopeName, definition);\n }\n });\n }\n transcludeFn = boundTranscludeFn && controllersBoundTransclude;\n if (controllerDirectives) {\n forEach(controllerDirectives, function(directive) {\n var locals = {\n $scope: directive === newIsolateScopeDirective || directive.$$isolateScope ? isolateScope : scope,\n $element: $element,\n $attrs: attrs,\n $transclude: transcludeFn\n }, controllerInstance;\n\n controller = directive.controller;\n if (controller == '@') {\n controller = attrs[directive.name];\n }\n\n controllerInstance = $controller(controller, locals);\n // For directives with element transclusion the element is a comment,\n // but jQuery .data doesn't support attaching data to comment nodes as it's hard to\n // clean up (http://bugs.jquery.com/ticket/8335).\n // Instead, we save the controllers for the element in a local hash and attach to .data\n // later, once we have the actual element.\n elementControllers[directive.name] = controllerInstance;\n if (!hasElementTranscludeDirective) {\n $element.data('$' + directive.name + 'Controller', controllerInstance);\n }\n\n if (directive.controllerAs) {\n locals.$scope[directive.controllerAs] = controllerInstance;\n }\n });\n }\n\n // PRELINKING\n for(i = 0, ii = preLinkFns.length; i < ii; i++) {\n try {\n linkFn = preLinkFns[i];\n linkFn(linkFn.isolateScope ? isolateScope : scope, $element, attrs,\n linkFn.require && getControllers(linkFn.directiveName, linkFn.require, $element, elementControllers), transcludeFn);\n } catch (e) {\n $exceptionHandler(e, startingTag($element));\n }\n }\n\n // RECURSION\n // We only pass the isolate scope, if the isolate directive has a template,\n // otherwise the child elements do not belong to the isolate directive.\n var scopeToChild = scope;\n if (newIsolateScopeDirective && (newIsolateScopeDirective.template || newIsolateScopeDirective.templateUrl === null)) {\n scopeToChild = isolateScope;\n }\n childLinkFn && childLinkFn(scopeToChild, linkNode.childNodes, undefined, boundTranscludeFn);\n\n // POSTLINKING\n for(i = postLinkFns.length - 1; i >= 0; i--) {\n try {\n linkFn = postLinkFns[i];\n linkFn(linkFn.isolateScope ? isolateScope : scope, $element, attrs,\n linkFn.require && getControllers(linkFn.directiveName, linkFn.require, $element, elementControllers), transcludeFn);\n } catch (e) {\n $exceptionHandler(e, startingTag($element));\n }\n }\n\n // This is the function that is injected as `$transclude`.\n function controllersBoundTransclude(scope, cloneAttachFn) {\n var transcludeControllers;\n\n // no scope passed\n if (arguments.length < 2) {\n cloneAttachFn = scope;\n scope = undefined;\n }\n\n if (hasElementTranscludeDirective) {\n transcludeControllers = elementControllers;\n }\n\n return boundTranscludeFn(scope, cloneAttachFn, transcludeControllers);\n }\n }\n }\n\n function markDirectivesAsIsolate(directives) {\n // mark all directives as needing isolate scope.\n for (var j = 0, jj = directives.length; j < jj; j++) {\n directives[j] = inherit(directives[j], {$$isolateScope: true});\n }\n }\n\n /**\n * looks up the directive and decorates it with exception handling and proper parameters. We\n * call this the boundDirective.\n *\n * @param {string} name name of the directive to look up.\n * @param {string} location The directive must be found in specific format.\n * String containing any of theses characters:\n *\n * * `E`: element name\n * * `A': attribute\n * * `C`: class\n * * `M`: comment\n * @returns {boolean} true if directive was added.\n */\n function addDirective(tDirectives, name, location, maxPriority, ignoreDirective, startAttrName,\n endAttrName) {\n if (name === ignoreDirective) return null;\n var match = null;\n if (hasDirectives.hasOwnProperty(name)) {\n for(var directive, directives = $injector.get(name + Suffix),\n i = 0, ii = directives.length; i directive.priority) &&\n directive.restrict.indexOf(location) != -1) {\n if (startAttrName) {\n directive = inherit(directive, {$$start: startAttrName, $$end: endAttrName});\n }\n tDirectives.push(directive);\n match = directive;\n }\n } catch(e) { $exceptionHandler(e); }\n }\n }\n return match;\n }\n\n\n /**\n * When the element is replaced with HTML template then the new attributes\n * on the template need to be merged with the existing attributes in the DOM.\n * The desired effect is to have both of the attributes present.\n *\n * @param {object} dst destination attributes (original DOM)\n * @param {object} src source attributes (from the directive template)\n */\n function mergeTemplateAttributes(dst, src) {\n var srcAttr = src.$attr,\n dstAttr = dst.$attr,\n $element = dst.$$element;\n\n // reapply the old attributes to the new element\n forEach(dst, function(value, key) {\n if (key.charAt(0) != '$') {\n if (src[key] && src[key] !== value) {\n value += (key === 'style' ? ';' : ' ') + src[key];\n }\n dst.$set(key, value, true, srcAttr[key]);\n }\n });\n\n // copy the new attributes on the old attrs object\n forEach(src, function(value, key) {\n if (key == 'class') {\n safeAddClass($element, value);\n dst['class'] = (dst['class'] ? dst['class'] + ' ' : '') + value;\n } else if (key == 'style') {\n $element.attr('style', $element.attr('style') + ';' + value);\n dst['style'] = (dst['style'] ? dst['style'] + ';' : '') + value;\n // `dst` will never contain hasOwnProperty as DOM parser won't let it.\n // You will get an \"InvalidCharacterError: DOM Exception 5\" error if you\n // have an attribute like \"has-own-property\" or \"data-has-own-property\", etc.\n } else if (key.charAt(0) != '$' && !dst.hasOwnProperty(key)) {\n dst[key] = value;\n dstAttr[key] = srcAttr[key];\n }\n });\n }\n\n\n function compileTemplateUrl(directives, $compileNode, tAttrs,\n $rootElement, childTranscludeFn, preLinkFns, postLinkFns, previousCompileContext) {\n var linkQueue = [],\n afterTemplateNodeLinkFn,\n afterTemplateChildLinkFn,\n beforeTemplateCompileNode = $compileNode[0],\n origAsyncDirective = directives.shift(),\n // The fact that we have to copy and patch the directive seems wrong!\n derivedSyncDirective = extend({}, origAsyncDirective, {\n templateUrl: null, transclude: null, replace: null, $$originalDirective: origAsyncDirective\n }),\n templateUrl = (isFunction(origAsyncDirective.templateUrl))\n ? origAsyncDirective.templateUrl($compileNode, tAttrs)\n : origAsyncDirective.templateUrl;\n\n $compileNode.empty();\n\n $http.get($sce.getTrustedResourceUrl(templateUrl), {cache: $templateCache}).\n success(function(content) {\n var compileNode, tempTemplateAttrs, $template, childBoundTranscludeFn;\n\n content = denormalizeTemplate(content);\n\n if (origAsyncDirective.replace) {\n if (jqLiteIsTextNode(content)) {\n $template = [];\n } else {\n $template = jqLite(trim(content));\n }\n compileNode = $template[0];\n\n if ($template.length != 1 || compileNode.nodeType !== 1) {\n throw $compileMinErr('tplrt',\n \"Template for directive '{0}' must have exactly one root element. {1}\",\n origAsyncDirective.name, templateUrl);\n }\n\n tempTemplateAttrs = {$attr: {}};\n replaceWith($rootElement, $compileNode, compileNode);\n var templateDirectives = collectDirectives(compileNode, [], tempTemplateAttrs);\n\n if (isObject(origAsyncDirective.scope)) {\n markDirectivesAsIsolate(templateDirectives);\n }\n directives = templateDirectives.concat(directives);\n mergeTemplateAttributes(tAttrs, tempTemplateAttrs);\n } else {\n compileNode = beforeTemplateCompileNode;\n $compileNode.html(content);\n }\n\n directives.unshift(derivedSyncDirective);\n\n afterTemplateNodeLinkFn = applyDirectivesToNode(directives, compileNode, tAttrs,\n childTranscludeFn, $compileNode, origAsyncDirective, preLinkFns, postLinkFns,\n previousCompileContext);\n forEach($rootElement, function(node, i) {\n if (node == compileNode) {\n $rootElement[i] = $compileNode[0];\n }\n });\n afterTemplateChildLinkFn = compileNodes($compileNode[0].childNodes, childTranscludeFn);\n\n while(linkQueue.length) {\n var scope = linkQueue.shift(),\n beforeTemplateLinkNode = linkQueue.shift(),\n linkRootElement = linkQueue.shift(),\n boundTranscludeFn = linkQueue.shift(),\n linkNode = $compileNode[0];\n\n if (beforeTemplateLinkNode !== beforeTemplateCompileNode) {\n var oldClasses = beforeTemplateLinkNode.className;\n\n if (!(previousCompileContext.hasElementTranscludeDirective &&\n origAsyncDirective.replace)) {\n // it was cloned therefore we have to clone as well.\n linkNode = jqLiteClone(compileNode);\n }\n\n replaceWith(linkRootElement, jqLite(beforeTemplateLinkNode), linkNode);\n\n // Copy in CSS classes from original node\n safeAddClass(jqLite(linkNode), oldClasses);\n }\n if (afterTemplateNodeLinkFn.transcludeOnThisElement) {\n childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn);\n } else {\n childBoundTranscludeFn = boundTranscludeFn;\n }\n afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, linkNode, $rootElement,\n childBoundTranscludeFn);\n }\n linkQueue = null;\n }).\n error(function(response, code, headers, config) {\n throw $compileMinErr('tpload', 'Failed to load template: {0}', config.url);\n });\n\n return function delayedNodeLinkFn(ignoreChildLinkFn, scope, node, rootElement, boundTranscludeFn) {\n var childBoundTranscludeFn = boundTranscludeFn;\n if (linkQueue) {\n linkQueue.push(scope);\n linkQueue.push(node);\n linkQueue.push(rootElement);\n linkQueue.push(childBoundTranscludeFn);\n } else {\n if (afterTemplateNodeLinkFn.transcludeOnThisElement) {\n childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn);\n }\n afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, node, rootElement, childBoundTranscludeFn);\n }\n };\n }\n\n\n /**\n * Sorting function for bound directives.\n */\n function byPriority(a, b) {\n var diff = b.priority - a.priority;\n if (diff !== 0) return diff;\n if (a.name !== b.name) return (a.name < b.name) ? -1 : 1;\n return a.index - b.index;\n }\n\n\n function assertNoDuplicate(what, previousDirective, directive, element) {\n if (previousDirective) {\n throw $compileMinErr('multidir', 'Multiple directives [{0}, {1}] asking for {2} on: {3}',\n previousDirective.name, directive.name, what, startingTag(element));\n }\n }\n\n\n function addTextInterpolateDirective(directives, text) {\n var interpolateFn = $interpolate(text, true);\n if (interpolateFn) {\n directives.push({\n priority: 0,\n compile: function textInterpolateCompileFn(templateNode) {\n // when transcluding a template that has bindings in the root\n // then we don't have a parent and should do this in the linkFn\n var parent = templateNode.parent(), hasCompileParent = parent.length;\n if (hasCompileParent) safeAddClass(templateNode.parent(), 'ng-binding');\n\n return function textInterpolateLinkFn(scope, node) {\n var parent = node.parent(),\n bindings = parent.data('$binding') || [];\n bindings.push(interpolateFn);\n parent.data('$binding', bindings);\n if (!hasCompileParent) safeAddClass(parent, 'ng-binding');\n scope.$watch(interpolateFn, function interpolateFnWatchAction(value) {\n node[0].nodeValue = value;\n });\n };\n }\n });\n }\n }\n\n\n function getTrustedContext(node, attrNormalizedName) {\n if (attrNormalizedName == \"srcdoc\") {\n return $sce.HTML;\n }\n var tag = nodeName_(node);\n // maction[xlink:href] can source SVG. It's not limited to .\n if (attrNormalizedName == \"xlinkHref\" ||\n (tag == \"FORM\" && attrNormalizedName == \"action\") ||\n (tag != \"IMG\" && (attrNormalizedName == \"src\" ||\n attrNormalizedName == \"ngSrc\"))) {\n return $sce.RESOURCE_URL;\n }\n }\n\n\n function addAttrInterpolateDirective(node, directives, value, name) {\n var interpolateFn = $interpolate(value, true);\n\n // no interpolation found -> ignore\n if (!interpolateFn) return;\n\n\n if (name === \"multiple\" && nodeName_(node) === \"SELECT\") {\n throw $compileMinErr(\"selmulti\",\n \"Binding to the 'multiple' attribute is not supported. Element: {0}\",\n startingTag(node));\n }\n\n directives.push({\n priority: 100,\n compile: function() {\n return {\n pre: function attrInterpolatePreLinkFn(scope, element, attr) {\n var $$observers = (attr.$$observers || (attr.$$observers = {}));\n\n if (EVENT_HANDLER_ATTR_REGEXP.test(name)) {\n throw $compileMinErr('nodomevents',\n \"Interpolations for HTML DOM event attributes are disallowed. Please use the \" +\n \"ng- versions (such as ng-click instead of onclick) instead.\");\n }\n\n // we need to interpolate again, in case the attribute value has been updated\n // (e.g. by another directive's compile function)\n interpolateFn = $interpolate(attr[name], true, getTrustedContext(node, name));\n\n // if attribute was updated so that there is no interpolation going on we don't want to\n // register any observers\n if (!interpolateFn) return;\n\n // TODO(i): this should likely be attr.$set(name, iterpolateFn(scope) so that we reset the\n // actual attr value\n attr[name] = interpolateFn(scope);\n ($$observers[name] || ($$observers[name] = [])).$$inter = true;\n (attr.$$observers && attr.$$observers[name].$$scope || scope).\n $watch(interpolateFn, function interpolateFnWatchAction(newValue, oldValue) {\n //special case for class attribute addition + removal\n //so that class changes can tap into the animation\n //hooks provided by the $animate service. Be sure to\n //skip animations when the first digest occurs (when\n //both the new and the old values are the same) since\n //the CSS classes are the non-interpolated values\n if(name === 'class' && newValue != oldValue) {\n attr.$updateClass(newValue, oldValue);\n } else {\n attr.$set(name, newValue);\n }\n });\n }\n };\n }\n });\n }\n\n\n /**\n * This is a special jqLite.replaceWith, which can replace items which\n * have no parents, provided that the containing jqLite collection is provided.\n *\n * @param {JqLite=} $rootElement The root of the compile tree. Used so that we can replace nodes\n * in the root of the tree.\n * @param {JqLite} elementsToRemove The jqLite element which we are going to replace. We keep\n * the shell, but replace its DOM node reference.\n * @param {Node} newNode The new DOM node.\n */\n function replaceWith($rootElement, elementsToRemove, newNode) {\n var firstElementToRemove = elementsToRemove[0],\n removeCount = elementsToRemove.length,\n parent = firstElementToRemove.parentNode,\n i, ii;\n\n if ($rootElement) {\n for(i = 0, ii = $rootElement.length; i < ii; i++) {\n if ($rootElement[i] == firstElementToRemove) {\n $rootElement[i++] = newNode;\n for (var j = i, j2 = j + removeCount - 1,\n jj = $rootElement.length;\n j < jj; j++, j2++) {\n if (j2 < jj) {\n $rootElement[j] = $rootElement[j2];\n } else {\n delete $rootElement[j];\n }\n }\n $rootElement.length -= removeCount - 1;\n break;\n }\n }\n }\n\n if (parent) {\n parent.replaceChild(newNode, firstElementToRemove);\n }\n var fragment = document.createDocumentFragment();\n fragment.appendChild(firstElementToRemove);\n newNode[jqLite.expando] = firstElementToRemove[jqLite.expando];\n for (var k = 1, kk = elementsToRemove.length; k < kk; k++) {\n var element = elementsToRemove[k];\n jqLite(element).remove(); // must do this way to clean up expando\n fragment.appendChild(element);\n delete elementsToRemove[k];\n }\n\n elementsToRemove[0] = newNode;\n elementsToRemove.length = 1;\n }\n\n\n function cloneAndAnnotateFn(fn, annotation) {\n return extend(function() { return fn.apply(null, arguments); }, fn, annotation);\n }\n }];\n}\n\nvar PREFIX_REGEXP = /^(x[\\:\\-_]|data[\\:\\-_])/i;\n/**\n * Converts all accepted directives format into proper directive name.\n * @param name Name to normalize\n */\nfunction directiveNormalize(name) {\n return camelCase(name.replace(PREFIX_REGEXP, ''));\n}\n\n/**\n * @ngdoc type\n * @name $compile.directive.Attributes\n *\n * @description\n * A shared object between directive compile / linking functions which contains normalized DOM\n * element attributes. The values reflect current binding state `{{ }}`. The normalization is\n * needed since all of these are treated as equivalent in Angular:\n *\n * ```\n * \n * ```\n */\n\n/**\n * @ngdoc property\n * @name $compile.directive.Attributes#$attr\n *\n * @description\n * A map of DOM element attribute names to the normalized name. This is\n * needed to do reverse lookup from normalized name back to actual name.\n */\n\n\n/**\n * @ngdoc method\n * @name $compile.directive.Attributes#$set\n * @kind function\n *\n * @description\n * Set DOM element attribute value.\n *\n *\n * @param {string} name Normalized element attribute name of the property to modify. The name is\n * reverse-translated using the {@link ng.$compile.directive.Attributes#$attr $attr}\n * property to the original name.\n * @param {string} value Value to set the attribute to. The value can be an interpolated string.\n */\n\n\n\n/**\n * Closure compiler type information\n */\n\nfunction nodesetLinkingFn(\n /* angular.Scope */ scope,\n /* NodeList */ nodeList,\n /* Element */ rootElement,\n /* function(Function) */ boundTranscludeFn\n){}\n\nfunction directiveLinkingFn(\n /* nodesetLinkingFn */ nodesetLinkingFn,\n /* angular.Scope */ scope,\n /* Node */ node,\n /* Element */ rootElement,\n /* function(Function) */ boundTranscludeFn\n){}\n\nfunction tokenDifference(str1, str2) {\n var values = '',\n tokens1 = str1.split(/\\s+/),\n tokens2 = str2.split(/\\s+/);\n\n outer:\n for(var i = 0; i < tokens1.length; i++) {\n var token = tokens1[i];\n for(var j = 0; j < tokens2.length; j++) {\n if(token == tokens2[j]) continue outer;\n }\n values += (values.length > 0 ? ' ' : '') + token;\n }\n return values;\n}\n\n/**\n * @ngdoc provider\n * @name $controllerProvider\n * @description\n * The {@link ng.$controller $controller service} is used by Angular to create new\n * controllers.\n *\n * This provider allows controller registration via the\n * {@link ng.$controllerProvider#register register} method.\n */\nfunction $ControllerProvider() {\n var controllers = {},\n CNTRL_REG = /^(\\S+)(\\s+as\\s+(\\w+))?$/;\n\n\n /**\n * @ngdoc method\n * @name $controllerProvider#register\n * @param {string|Object} name Controller name, or an object map of controllers where the keys are\n * the names and the values are the constructors.\n * @param {Function|Array} constructor Controller constructor fn (optionally decorated with DI\n * annotations in the array notation).\n */\n this.register = function(name, constructor) {\n assertNotHasOwnProperty(name, 'controller');\n if (isObject(name)) {\n extend(controllers, name);\n } else {\n controllers[name] = constructor;\n }\n };\n\n\n this.$get = ['$injector', '$window', function($injector, $window) {\n\n /**\n * @ngdoc service\n * @name $controller\n * @requires $injector\n *\n * @param {Function|string} constructor If called with a function then it's considered to be the\n * controller constructor function. Otherwise it's considered to be a string which is used\n * to retrieve the controller constructor using the following steps:\n *\n * * check if a controller with given name is registered via `$controllerProvider`\n * * check if evaluating the string on the current scope returns a constructor\n * * check `window[constructor]` on the global `window` object\n *\n * @param {Object} locals Injection locals for Controller.\n * @return {Object} Instance of given controller.\n *\n * @description\n * `$controller` service is responsible for instantiating controllers.\n *\n * It's just a simple call to {@link auto.$injector $injector}, but extracted into\n * a service, so that one can override this service with [BC version](https://gist.github.com/1649788).\n */\n return function(expression, locals) {\n var instance, match, constructor, identifier;\n\n if(isString(expression)) {\n match = expression.match(CNTRL_REG),\n constructor = match[1],\n identifier = match[3];\n expression = controllers.hasOwnProperty(constructor)\n ? controllers[constructor]\n : getter(locals.$scope, constructor, true) || getter($window, constructor, true);\n\n assertArgFn(expression, constructor, true);\n }\n\n instance = $injector.instantiate(expression, locals);\n\n if (identifier) {\n if (!(locals && typeof locals.$scope === 'object')) {\n throw minErr('$controller')('noscp',\n \"Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.\",\n constructor || expression.name, identifier);\n }\n\n locals.$scope[identifier] = instance;\n }\n\n return instance;\n };\n }];\n}\n\n/**\n * @ngdoc service\n * @name $document\n * @requires $window\n *\n * @description\n * A {@link angular.element jQuery or jqLite} wrapper for the browser's `window.document` object.\n *\n * @example\n \n \n
\n

$document title:

\n

window.document title:

\n
\n
\n \n angular.module('documentExample', [])\n .controller('ExampleController', ['$scope', '$document', function($scope, $document) {\n $scope.title = $document[0].title;\n $scope.windowTitle = angular.element(window.document)[0].title;\n }]);\n \n
\n */\nfunction $DocumentProvider(){\n this.$get = ['$window', function(window){\n return jqLite(window.document);\n }];\n}\n\n/**\n * @ngdoc service\n * @name $exceptionHandler\n * @requires ng.$log\n *\n * @description\n * Any uncaught exception in angular expressions is delegated to this service.\n * The default implementation simply delegates to `$log.error` which logs it into\n * the browser console.\n *\n * In unit tests, if `angular-mocks.js` is loaded, this service is overridden by\n * {@link ngMock.$exceptionHandler mock $exceptionHandler} which aids in testing.\n *\n * ## Example:\n *\n * ```js\n * angular.module('exceptionOverride', []).factory('$exceptionHandler', function () {\n * return function (exception, cause) {\n * exception.message += ' (caused by \"' + cause + '\")';\n * throw exception;\n * };\n * });\n * ```\n *\n * This example will override the normal action of `$exceptionHandler`, to make angular\n * exceptions fail hard when they happen, instead of just logging to the console.\n *\n * @param {Error} exception Exception associated with the error.\n * @param {string=} cause optional information about the context in which\n * the error was thrown.\n *\n */\nfunction $ExceptionHandlerProvider() {\n this.$get = ['$log', function($log) {\n return function(exception, cause) {\n $log.error.apply($log, arguments);\n };\n }];\n}\n\n/**\n * Parse headers into key value object\n *\n * @param {string} headers Raw headers as a string\n * @returns {Object} Parsed headers as key value object\n */\nfunction parseHeaders(headers) {\n var parsed = {}, key, val, i;\n\n if (!headers) return parsed;\n\n forEach(headers.split('\\n'), function(line) {\n i = line.indexOf(':');\n key = lowercase(trim(line.substr(0, i)));\n val = trim(line.substr(i + 1));\n\n if (key) {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n}\n\n\n/**\n * Returns a function that provides access to parsed headers.\n *\n * Headers are lazy parsed when first requested.\n * @see parseHeaders\n *\n * @param {(string|Object)} headers Headers to provide access to.\n * @returns {function(string=)} Returns a getter function which if called with:\n *\n * - if called with single an argument returns a single header value or null\n * - if called with no arguments returns an object containing all headers.\n */\nfunction headersGetter(headers) {\n var headersObj = isObject(headers) ? headers : undefined;\n\n return function(name) {\n if (!headersObj) headersObj = parseHeaders(headers);\n\n if (name) {\n return headersObj[lowercase(name)] || null;\n }\n\n return headersObj;\n };\n}\n\n\n/**\n * Chain all given functions\n *\n * This function is used for both request and response transforming\n *\n * @param {*} data Data to transform.\n * @param {function(string=)} headers Http headers getter fn.\n * @param {(Function|Array.)} fns Function or an array of functions.\n * @returns {*} Transformed data.\n */\nfunction transformData(data, headers, fns) {\n if (isFunction(fns))\n return fns(data, headers);\n\n forEach(fns, function(fn) {\n data = fn(data, headers);\n });\n\n return data;\n}\n\n\nfunction isSuccess(status) {\n return 200 <= status && status < 300;\n}\n\n\n/**\n * @ngdoc provider\n * @name $httpProvider\n * @description\n * Use `$httpProvider` to change the default behavior of the {@link ng.$http $http} service.\n * */\nfunction $HttpProvider() {\n var JSON_START = /^\\s*(\\[|\\{[^\\{])/,\n JSON_END = /[\\}\\]]\\s*$/,\n PROTECTION_PREFIX = /^\\)\\]\\}',?\\n/,\n CONTENT_TYPE_APPLICATION_JSON = {'Content-Type': 'application/json;charset=utf-8'};\n\n /**\n * @ngdoc property\n * @name $httpProvider#defaults\n * @description\n *\n * Object containing default values for all {@link ng.$http $http} requests.\n *\n * - **`defaults.xsrfCookieName`** - {string} - Name of cookie containing the XSRF token.\n * Defaults value is `'XSRF-TOKEN'`.\n *\n * - **`defaults.xsrfHeaderName`** - {string} - Name of HTTP header to populate with the\n * XSRF token. Defaults value is `'X-XSRF-TOKEN'`.\n *\n * - **`defaults.headers`** - {Object} - Default headers for all $http requests.\n * Refer to {@link ng.$http#setting-http-headers $http} for documentation on\n * setting default headers.\n * - **`defaults.headers.common`**\n * - **`defaults.headers.post`**\n * - **`defaults.headers.put`**\n * - **`defaults.headers.patch`**\n **/\n var defaults = this.defaults = {\n // transform incoming response data\n transformResponse: [function(data) {\n if (isString(data)) {\n // strip json vulnerability protection prefix\n data = data.replace(PROTECTION_PREFIX, '');\n if (JSON_START.test(data) && JSON_END.test(data))\n data = fromJson(data);\n }\n return data;\n }],\n\n // transform outgoing request data\n transformRequest: [function(d) {\n return isObject(d) && !isFile(d) && !isBlob(d) ? toJson(d) : d;\n }],\n\n // default headers\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n },\n post: shallowCopy(CONTENT_TYPE_APPLICATION_JSON),\n put: shallowCopy(CONTENT_TYPE_APPLICATION_JSON),\n patch: shallowCopy(CONTENT_TYPE_APPLICATION_JSON)\n },\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN'\n };\n\n /**\n * @ngdoc property\n * @name $httpProvider#interceptors\n * @description\n *\n * Array containing service factories for all synchronous or asynchronous {@link ng.$http $http}\n * pre-processing of request or postprocessing of responses.\n *\n * These service factories are ordered by request, i.e. they are applied in the same order as the\n * array, on request, but reverse order, on response.\n *\n * {@link ng.$http#interceptors Interceptors detailed info}\n **/\n var interceptorFactories = this.interceptors = [];\n\n /**\n * For historical reasons, response interceptors are ordered by the order in which\n * they are applied to the response. (This is the opposite of interceptorFactories)\n */\n var responseInterceptorFactories = this.responseInterceptors = [];\n\n this.$get = ['$httpBackend', '$browser', '$cacheFactory', '$rootScope', '$q', '$injector',\n function($httpBackend, $browser, $cacheFactory, $rootScope, $q, $injector) {\n\n var defaultCache = $cacheFactory('$http');\n\n /**\n * Interceptors stored in reverse order. Inner interceptors before outer interceptors.\n * The reversal is needed so that we can build up the interception chain around the\n * server request.\n */\n var reversedInterceptors = [];\n\n forEach(interceptorFactories, function(interceptorFactory) {\n reversedInterceptors.unshift(isString(interceptorFactory)\n ? $injector.get(interceptorFactory) : $injector.invoke(interceptorFactory));\n });\n\n forEach(responseInterceptorFactories, function(interceptorFactory, index) {\n var responseFn = isString(interceptorFactory)\n ? $injector.get(interceptorFactory)\n : $injector.invoke(interceptorFactory);\n\n /**\n * Response interceptors go before \"around\" interceptors (no real reason, just\n * had to pick one.) But they are already reversed, so we can't use unshift, hence\n * the splice.\n */\n reversedInterceptors.splice(index, 0, {\n response: function(response) {\n return responseFn($q.when(response));\n },\n responseError: function(response) {\n return responseFn($q.reject(response));\n }\n });\n });\n\n\n /**\n * @ngdoc service\n * @kind function\n * @name $http\n * @requires ng.$httpBackend\n * @requires $cacheFactory\n * @requires $rootScope\n * @requires $q\n * @requires $injector\n *\n * @description\n * The `$http` service is a core Angular service that facilitates communication with the remote\n * HTTP servers via the browser's [XMLHttpRequest](https://developer.mozilla.org/en/xmlhttprequest)\n * object or via [JSONP](http://en.wikipedia.org/wiki/JSONP).\n *\n * For unit testing applications that use `$http` service, see\n * {@link ngMock.$httpBackend $httpBackend mock}.\n *\n * For a higher level of abstraction, please check out the {@link ngResource.$resource\n * $resource} service.\n *\n * The $http API is based on the {@link ng.$q deferred/promise APIs} exposed by\n * the $q service. While for simple usage patterns this doesn't matter much, for advanced usage\n * it is important to familiarize yourself with these APIs and the guarantees they provide.\n *\n *\n * # General usage\n * The `$http` service is a function which takes a single argument — a configuration object —\n * that is used to generate an HTTP request and returns a {@link ng.$q promise}\n * with two $http specific methods: `success` and `error`.\n *\n * ```js\n * $http({method: 'GET', url: '/someUrl'}).\n * success(function(data, status, headers, config) {\n * // this callback will be called asynchronously\n * // when the response is available\n * }).\n * error(function(data, status, headers, config) {\n * // called asynchronously if an error occurs\n * // or server returns response with an error status.\n * });\n * ```\n *\n * Since the returned value of calling the $http function is a `promise`, you can also use\n * the `then` method to register callbacks, and these callbacks will receive a single argument –\n * an object representing the response. See the API signature and type info below for more\n * details.\n *\n * A response status code between 200 and 299 is considered a success status and\n * will result in the success callback being called. Note that if the response is a redirect,\n * XMLHttpRequest will transparently follow it, meaning that the error callback will not be\n * called for such responses.\n *\n * # Writing Unit Tests that use $http\n * When unit testing (using {@link ngMock ngMock}), it is necessary to call\n * {@link ngMock.$httpBackend#flush $httpBackend.flush()} to flush each pending\n * request using trained responses.\n *\n * ```\n * $httpBackend.expectGET(...);\n * $http.get(...);\n * $httpBackend.flush();\n * ```\n *\n * # Shortcut methods\n *\n * Shortcut methods are also available. All shortcut methods require passing in the URL, and\n * request data must be passed in for POST/PUT requests.\n *\n * ```js\n * $http.get('/someUrl').success(successCallback);\n * $http.post('/someUrl', data).success(successCallback);\n * ```\n *\n * Complete list of shortcut methods:\n *\n * - {@link ng.$http#get $http.get}\n * - {@link ng.$http#head $http.head}\n * - {@link ng.$http#post $http.post}\n * - {@link ng.$http#put $http.put}\n * - {@link ng.$http#delete $http.delete}\n * - {@link ng.$http#jsonp $http.jsonp}\n * - {@link ng.$http#patch $http.patch}\n *\n *\n * # Setting HTTP Headers\n *\n * The $http service will automatically add certain HTTP headers to all requests. These defaults\n * can be fully configured by accessing the `$httpProvider.defaults.headers` configuration\n * object, which currently contains this default configuration:\n *\n * - `$httpProvider.defaults.headers.common` (headers that are common for all requests):\n * - `Accept: application/json, text/plain, * / *`\n * - `$httpProvider.defaults.headers.post`: (header defaults for POST requests)\n * - `Content-Type: application/json`\n * - `$httpProvider.defaults.headers.put` (header defaults for PUT requests)\n * - `Content-Type: application/json`\n *\n * To add or overwrite these defaults, simply add or remove a property from these configuration\n * objects. To add headers for an HTTP method other than POST or PUT, simply add a new object\n * with the lowercased HTTP method name as the key, e.g.\n * `$httpProvider.defaults.headers.get = { 'My-Header' : 'value' }.\n *\n * The defaults can also be set at runtime via the `$http.defaults` object in the same\n * fashion. For example:\n *\n * ```\n * module.run(function($http) {\n * $http.defaults.headers.common.Authorization = 'Basic YmVlcDpib29w'\n * });\n * ```\n *\n * In addition, you can supply a `headers` property in the config object passed when\n * calling `$http(config)`, which overrides the defaults without changing them globally.\n *\n * To explicitly remove a header automatically added via $httpProvider.defaults.headers on a per request basis,\n * Use the `headers` property, setting the desired header to `undefined`. For example:\n *\n * ```js\n * var req = {\n * method: 'POST',\n * url: 'http://example.com',\n * headers: {\n * 'Content-Type': undefined\n * },\n * data: { test: 'test' },\n * }\n *\n * $http(req).success(function(){...}).error(function(){...});\n * ```\n *\n * # Transforming Requests and Responses\n *\n * Both requests and responses can be transformed using transform functions. By default, Angular\n * applies these transformations:\n *\n * Request transformations:\n *\n * - If the `data` property of the request configuration object contains an object, serialize it\n * into JSON format.\n *\n * Response transformations:\n *\n * - If XSRF prefix is detected, strip it (see Security Considerations section below).\n * - If JSON response is detected, deserialize it using a JSON parser.\n *\n * To globally augment or override the default transforms, modify the\n * `$httpProvider.defaults.transformRequest` and `$httpProvider.defaults.transformResponse`\n * properties. These properties are by default an array of transform functions, which allows you\n * to `push` or `unshift` a new transformation function into the transformation chain. You can\n * also decide to completely override any default transformations by assigning your\n * transformation functions to these properties directly without the array wrapper. These defaults\n * are again available on the $http factory at run-time, which may be useful if you have run-time\n * services you wish to be involved in your transformations.\n *\n * Similarly, to locally override the request/response transforms, augment the\n * `transformRequest` and/or `transformResponse` properties of the configuration object passed\n * into `$http`.\n *\n *\n * # Caching\n *\n * To enable caching, set the request configuration `cache` property to `true` (to use default\n * cache) or to a custom cache object (built with {@link ng.$cacheFactory `$cacheFactory`}).\n * When the cache is enabled, `$http` stores the response from the server in the specified\n * cache. The next time the same request is made, the response is served from the cache without\n * sending a request to the server.\n *\n * Note that even if the response is served from cache, delivery of the data is asynchronous in\n * the same way that real requests are.\n *\n * If there are multiple GET requests for the same URL that should be cached using the same\n * cache, but the cache is not populated yet, only one request to the server will be made and\n * the remaining requests will be fulfilled using the response from the first request.\n *\n * You can change the default cache to a new object (built with\n * {@link ng.$cacheFactory `$cacheFactory`}) by updating the\n * {@link ng.$http#properties_defaults `$http.defaults.cache`} property. All requests who set\n * their `cache` property to `true` will now use this cache object.\n *\n * If you set the default cache to `false` then only requests that specify their own custom\n * cache object will be cached.\n *\n * # Interceptors\n *\n * Before you start creating interceptors, be sure to understand the\n * {@link ng.$q $q and deferred/promise APIs}.\n *\n * For purposes of global error handling, authentication, or any kind of synchronous or\n * asynchronous pre-processing of request or postprocessing of responses, it is desirable to be\n * able to intercept requests before they are handed to the server and\n * responses before they are handed over to the application code that\n * initiated these requests. The interceptors leverage the {@link ng.$q\n * promise APIs} to fulfill this need for both synchronous and asynchronous pre-processing.\n *\n * The interceptors are service factories that are registered with the `$httpProvider` by\n * adding them to the `$httpProvider.interceptors` array. The factory is called and\n * injected with dependencies (if specified) and returns the interceptor.\n *\n * There are two kinds of interceptors (and two kinds of rejection interceptors):\n *\n * * `request`: interceptors get called with a http `config` object. The function is free to\n * modify the `config` object or create a new one. The function needs to return the `config`\n * object directly, or a promise containing the `config` or a new `config` object.\n * * `requestError`: interceptor gets called when a previous interceptor threw an error or\n * resolved with a rejection.\n * * `response`: interceptors get called with http `response` object. The function is free to\n * modify the `response` object or create a new one. The function needs to return the `response`\n * object directly, or as a promise containing the `response` or a new `response` object.\n * * `responseError`: interceptor gets called when a previous interceptor threw an error or\n * resolved with a rejection.\n *\n *\n * ```js\n * // register the interceptor as a service\n * $provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {\n * return {\n * // optional method\n * 'request': function(config) {\n * // do something on success\n * return config;\n * },\n *\n * // optional method\n * 'requestError': function(rejection) {\n * // do something on error\n * if (canRecover(rejection)) {\n * return responseOrNewPromise\n * }\n * return $q.reject(rejection);\n * },\n *\n *\n *\n * // optional method\n * 'response': function(response) {\n * // do something on success\n * return response;\n * },\n *\n * // optional method\n * 'responseError': function(rejection) {\n * // do something on error\n * if (canRecover(rejection)) {\n * return responseOrNewPromise\n * }\n * return $q.reject(rejection);\n * }\n * };\n * });\n *\n * $httpProvider.interceptors.push('myHttpInterceptor');\n *\n *\n * // alternatively, register the interceptor via an anonymous factory\n * $httpProvider.interceptors.push(function($q, dependency1, dependency2) {\n * return {\n * 'request': function(config) {\n * // same as above\n * },\n *\n * 'response': function(response) {\n * // same as above\n * }\n * };\n * });\n * ```\n *\n * # Response interceptors (DEPRECATED)\n *\n * Before you start creating interceptors, be sure to understand the\n * {@link ng.$q $q and deferred/promise APIs}.\n *\n * For purposes of global error handling, authentication or any kind of synchronous or\n * asynchronous preprocessing of received responses, it is desirable to be able to intercept\n * responses for http requests before they are handed over to the application code that\n * initiated these requests. The response interceptors leverage the {@link ng.$q\n * promise apis} to fulfil this need for both synchronous and asynchronous preprocessing.\n *\n * The interceptors are service factories that are registered with the $httpProvider by\n * adding them to the `$httpProvider.responseInterceptors` array. The factory is called and\n * injected with dependencies (if specified) and returns the interceptor — a function that\n * takes a {@link ng.$q promise} and returns the original or a new promise.\n *\n * ```js\n * // register the interceptor as a service\n * $provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {\n * return function(promise) {\n * return promise.then(function(response) {\n * // do something on success\n * return response;\n * }, function(response) {\n * // do something on error\n * if (canRecover(response)) {\n * return responseOrNewPromise\n * }\n * return $q.reject(response);\n * });\n * }\n * });\n *\n * $httpProvider.responseInterceptors.push('myHttpInterceptor');\n *\n *\n * // register the interceptor via an anonymous factory\n * $httpProvider.responseInterceptors.push(function($q, dependency1, dependency2) {\n * return function(promise) {\n * // same as above\n * }\n * });\n * ```\n *\n *\n * # Security Considerations\n *\n * When designing web applications, consider security threats from:\n *\n * - [JSON vulnerability](http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx)\n * - [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery)\n *\n * Both server and the client must cooperate in order to eliminate these threats. Angular comes\n * pre-configured with strategies that address these issues, but for this to work backend server\n * cooperation is required.\n *\n * ## JSON Vulnerability Protection\n *\n * A [JSON vulnerability](http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx)\n * allows third party website to turn your JSON resource URL into\n * [JSONP](http://en.wikipedia.org/wiki/JSONP) request under some conditions. To\n * counter this your server can prefix all JSON requests with following string `\")]}',\\n\"`.\n * Angular will automatically strip the prefix before processing it as JSON.\n *\n * For example if your server needs to return:\n * ```js\n * ['one','two']\n * ```\n *\n * which is vulnerable to attack, your server can return:\n * ```js\n * )]}',\n * ['one','two']\n * ```\n *\n * Angular will strip the prefix, before processing the JSON.\n *\n *\n * ## Cross Site Request Forgery (XSRF) Protection\n *\n * [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery) is a technique by which\n * an unauthorized site can gain your user's private data. Angular provides a mechanism\n * to counter XSRF. When performing XHR requests, the $http service reads a token from a cookie\n * (by default, `XSRF-TOKEN`) and sets it as an HTTP header (`X-XSRF-TOKEN`). Since only\n * JavaScript that runs on your domain could read the cookie, your server can be assured that\n * the XHR came from JavaScript running on your domain. The header will not be set for\n * cross-domain requests.\n *\n * To take advantage of this, your server needs to set a token in a JavaScript readable session\n * cookie called `XSRF-TOKEN` on the first HTTP GET request. On subsequent XHR requests the\n * server can verify that the cookie matches `X-XSRF-TOKEN` HTTP header, and therefore be sure\n * that only JavaScript running on your domain could have sent the request. The token must be\n * unique for each user and must be verifiable by the server (to prevent the JavaScript from\n * making up its own tokens). We recommend that the token is a digest of your site's\n * authentication cookie with a [salt](https://en.wikipedia.org/wiki/Salt_(cryptography))\n * for added security.\n *\n * The name of the headers can be specified using the xsrfHeaderName and xsrfCookieName\n * properties of either $httpProvider.defaults at config-time, $http.defaults at run-time,\n * or the per-request config object.\n *\n *\n * @param {object} config Object describing the request to be made and how it should be\n * processed. The object has following properties:\n *\n * - **method** – `{string}` – HTTP method (e.g. 'GET', 'POST', etc)\n * - **url** – `{string}` – Absolute or relative URL of the resource that is being requested.\n * - **params** – `{Object.}` – Map of strings or objects which will be turned\n * to `?key1=value1&key2=value2` after the url. If the value is not a string, it will be\n * JSONified.\n * - **data** – `{string|Object}` – Data to be sent as the request message data.\n * - **headers** – `{Object}` – Map of strings or functions which return strings representing\n * HTTP headers to send to the server. If the return value of a function is null, the\n * header will not be sent.\n * - **xsrfHeaderName** – `{string}` – Name of HTTP header to populate with the XSRF token.\n * - **xsrfCookieName** – `{string}` – Name of cookie containing the XSRF token.\n * - **transformRequest** –\n * `{function(data, headersGetter)|Array.}` –\n * transform function or an array of such functions. The transform function takes the http\n * request body and headers and returns its transformed (typically serialized) version.\n * - **transformResponse** –\n * `{function(data, headersGetter)|Array.}` –\n * transform function or an array of such functions. The transform function takes the http\n * response body and headers and returns its transformed (typically deserialized) version.\n * - **cache** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the\n * GET request, otherwise if a cache instance built with\n * {@link ng.$cacheFactory $cacheFactory}, this cache will be used for\n * caching.\n * - **timeout** – `{number|Promise}` – timeout in milliseconds, or {@link ng.$q promise}\n * that should abort the request when resolved.\n * - **withCredentials** - `{boolean}` - whether to set the `withCredentials` flag on the\n * XHR object. See [requests with credentials](https://developer.mozilla.org/docs/Web/HTTP/Access_control_CORS#Requests_with_credentials)\n * for more information.\n * - **responseType** - `{string}` - see\n * [requestType](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType).\n *\n * @returns {HttpPromise} Returns a {@link ng.$q promise} object with the\n * standard `then` method and two http specific methods: `success` and `error`. The `then`\n * method takes two arguments a success and an error callback which will be called with a\n * response object. The `success` and `error` methods take a single argument - a function that\n * will be called when the request succeeds or fails respectively. The arguments passed into\n * these functions are destructured representation of the response object passed into the\n * `then` method. The response object has these properties:\n *\n * - **data** – `{string|Object}` – The response body transformed with the transform\n * functions.\n * - **status** – `{number}` – HTTP status code of the response.\n * - **headers** – `{function([headerName])}` – Header getter function.\n * - **config** – `{Object}` – The configuration object that was used to generate the request.\n * - **statusText** – `{string}` – HTTP status text of the response.\n *\n * @property {Array.} pendingRequests Array of config objects for currently pending\n * requests. This is primarily meant to be used for debugging purposes.\n *\n *\n * @example\n\n\n
\n \n \n
\n \n \n \n
http status code: {{status}}
\n
http response data: {{data}}
\n
\n
\n\n angular.module('httpExample', [])\n .controller('FetchController', ['$scope', '$http', '$templateCache',\n function($scope, $http, $templateCache) {\n $scope.method = 'GET';\n $scope.url = 'http-hello.html';\n\n $scope.fetch = function() {\n $scope.code = null;\n $scope.response = null;\n\n $http({method: $scope.method, url: $scope.url, cache: $templateCache}).\n success(function(data, status) {\n $scope.status = status;\n $scope.data = data;\n }).\n error(function(data, status) {\n $scope.data = data || \"Request failed\";\n $scope.status = status;\n });\n };\n\n $scope.updateModel = function(method, url) {\n $scope.method = method;\n $scope.url = url;\n };\n }]);\n\n\n Hello, $http!\n\n\n var status = element(by.binding('status'));\n var data = element(by.binding('data'));\n var fetchBtn = element(by.id('fetchbtn'));\n var sampleGetBtn = element(by.id('samplegetbtn'));\n var sampleJsonpBtn = element(by.id('samplejsonpbtn'));\n var invalidJsonpBtn = element(by.id('invalidjsonpbtn'));\n\n it('should make an xhr GET request', function() {\n sampleGetBtn.click();\n fetchBtn.click();\n expect(status.getText()).toMatch('200');\n expect(data.getText()).toMatch(/Hello, \\$http!/);\n });\n\n// Commented out due to flakes. See https://github.com/angular/angular.js/issues/9185\n// it('should make a JSONP request to angularjs.org', function() {\n// sampleJsonpBtn.click();\n// fetchBtn.click();\n// expect(status.getText()).toMatch('200');\n// expect(data.getText()).toMatch(/Super Hero!/);\n// });\n\n it('should make JSONP request to invalid URL and invoke the error handler',\n function() {\n invalidJsonpBtn.click();\n fetchBtn.click();\n expect(status.getText()).toMatch('0');\n expect(data.getText()).toMatch('Request failed');\n });\n\n
\n */\n function $http(requestConfig) {\n var config = {\n method: 'get',\n transformRequest: defaults.transformRequest,\n transformResponse: defaults.transformResponse\n };\n var headers = mergeHeaders(requestConfig);\n\n extend(config, requestConfig);\n config.headers = headers;\n config.method = uppercase(config.method);\n\n var serverRequest = function(config) {\n headers = config.headers;\n var reqData = transformData(config.data, headersGetter(headers), config.transformRequest);\n\n // strip content-type if data is undefined\n if (isUndefined(reqData)) {\n forEach(headers, function(value, header) {\n if (lowercase(header) === 'content-type') {\n delete headers[header];\n }\n });\n }\n\n if (isUndefined(config.withCredentials) && !isUndefined(defaults.withCredentials)) {\n config.withCredentials = defaults.withCredentials;\n }\n\n // send request\n return sendReq(config, reqData, headers).then(transformResponse, transformResponse);\n };\n\n var chain = [serverRequest, undefined];\n var promise = $q.when(config);\n\n // apply interceptors\n forEach(reversedInterceptors, function(interceptor) {\n if (interceptor.request || interceptor.requestError) {\n chain.unshift(interceptor.request, interceptor.requestError);\n }\n if (interceptor.response || interceptor.responseError) {\n chain.push(interceptor.response, interceptor.responseError);\n }\n });\n\n while(chain.length) {\n var thenFn = chain.shift();\n var rejectFn = chain.shift();\n\n promise = promise.then(thenFn, rejectFn);\n }\n\n promise.success = function(fn) {\n promise.then(function(response) {\n fn(response.data, response.status, response.headers, config);\n });\n return promise;\n };\n\n promise.error = function(fn) {\n promise.then(null, function(response) {\n fn(response.data, response.status, response.headers, config);\n });\n return promise;\n };\n\n return promise;\n\n function transformResponse(response) {\n // make a copy since the response must be cacheable\n var resp = extend({}, response, {\n data: transformData(response.data, response.headers, config.transformResponse)\n });\n return (isSuccess(response.status))\n ? resp\n : $q.reject(resp);\n }\n\n function mergeHeaders(config) {\n var defHeaders = defaults.headers,\n reqHeaders = extend({}, config.headers),\n defHeaderName, lowercaseDefHeaderName, reqHeaderName;\n\n defHeaders = extend({}, defHeaders.common, defHeaders[lowercase(config.method)]);\n\n // using for-in instead of forEach to avoid unecessary iteration after header has been found\n defaultHeadersIteration:\n for (defHeaderName in defHeaders) {\n lowercaseDefHeaderName = lowercase(defHeaderName);\n\n for (reqHeaderName in reqHeaders) {\n if (lowercase(reqHeaderName) === lowercaseDefHeaderName) {\n continue defaultHeadersIteration;\n }\n }\n\n reqHeaders[defHeaderName] = defHeaders[defHeaderName];\n }\n\n // execute if header value is a function for merged headers\n execHeaders(reqHeaders);\n return reqHeaders;\n\n function execHeaders(headers) {\n var headerContent;\n\n forEach(headers, function(headerFn, header) {\n if (isFunction(headerFn)) {\n headerContent = headerFn();\n if (headerContent != null) {\n headers[header] = headerContent;\n } else {\n delete headers[header];\n }\n }\n });\n }\n }\n }\n\n $http.pendingRequests = [];\n\n /**\n * @ngdoc method\n * @name $http#get\n *\n * @description\n * Shortcut method to perform `GET` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n\n /**\n * @ngdoc method\n * @name $http#delete\n *\n * @description\n * Shortcut method to perform `DELETE` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n\n /**\n * @ngdoc method\n * @name $http#head\n *\n * @description\n * Shortcut method to perform `HEAD` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n\n /**\n * @ngdoc method\n * @name $http#jsonp\n *\n * @description\n * Shortcut method to perform `JSONP` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request.\n * The name of the callback should be the string `JSON_CALLBACK`.\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n createShortMethods('get', 'delete', 'head', 'jsonp');\n\n /**\n * @ngdoc method\n * @name $http#post\n *\n * @description\n * Shortcut method to perform `POST` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request\n * @param {*} data Request content\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n\n /**\n * @ngdoc method\n * @name $http#put\n *\n * @description\n * Shortcut method to perform `PUT` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request\n * @param {*} data Request content\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n\n /**\n * @ngdoc method\n * @name $http#patch\n *\n * @description\n * Shortcut method to perform `PATCH` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request\n * @param {*} data Request content\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n createShortMethodsWithData('post', 'put', 'patch');\n\n /**\n * @ngdoc property\n * @name $http#defaults\n *\n * @description\n * Runtime equivalent of the `$httpProvider.defaults` property. Allows configuration of\n * default headers, withCredentials as well as request and response transformations.\n *\n * See \"Setting HTTP Headers\" and \"Transforming Requests and Responses\" sections above.\n */\n $http.defaults = defaults;\n\n\n return $http;\n\n\n function createShortMethods(names) {\n forEach(arguments, function(name) {\n $http[name] = function(url, config) {\n return $http(extend(config || {}, {\n method: name,\n url: url\n }));\n };\n });\n }\n\n\n function createShortMethodsWithData(name) {\n forEach(arguments, function(name) {\n $http[name] = function(url, data, config) {\n return $http(extend(config || {}, {\n method: name,\n url: url,\n data: data\n }));\n };\n });\n }\n\n\n /**\n * Makes the request.\n *\n * !!! ACCESSES CLOSURE VARS:\n * $httpBackend, defaults, $log, $rootScope, defaultCache, $http.pendingRequests\n */\n function sendReq(config, reqData, reqHeaders) {\n var deferred = $q.defer(),\n promise = deferred.promise,\n cache,\n cachedResp,\n url = buildUrl(config.url, config.params);\n\n $http.pendingRequests.push(config);\n promise.then(removePendingReq, removePendingReq);\n\n\n if ((config.cache || defaults.cache) && config.cache !== false &&\n (config.method === 'GET' || config.method === 'JSONP')) {\n cache = isObject(config.cache) ? config.cache\n : isObject(defaults.cache) ? defaults.cache\n : defaultCache;\n }\n\n if (cache) {\n cachedResp = cache.get(url);\n if (isDefined(cachedResp)) {\n if (isPromiseLike(cachedResp)) {\n // cached request has already been sent, but there is no response yet\n cachedResp.then(removePendingReq, removePendingReq);\n return cachedResp;\n } else {\n // serving from cache\n if (isArray(cachedResp)) {\n resolvePromise(cachedResp[1], cachedResp[0], shallowCopy(cachedResp[2]), cachedResp[3]);\n } else {\n resolvePromise(cachedResp, 200, {}, 'OK');\n }\n }\n } else {\n // put the promise for the non-transformed response into cache as a placeholder\n cache.put(url, promise);\n }\n }\n\n\n // if we won't have the response in cache, set the xsrf headers and\n // send the request to the backend\n if (isUndefined(cachedResp)) {\n var xsrfValue = urlIsSameOrigin(config.url)\n ? $browser.cookies()[config.xsrfCookieName || defaults.xsrfCookieName]\n : undefined;\n if (xsrfValue) {\n reqHeaders[(config.xsrfHeaderName || defaults.xsrfHeaderName)] = xsrfValue;\n }\n\n $httpBackend(config.method, url, reqData, done, reqHeaders, config.timeout,\n config.withCredentials, config.responseType);\n }\n\n return promise;\n\n\n /**\n * Callback registered to $httpBackend():\n * - caches the response if desired\n * - resolves the raw $http promise\n * - calls $apply\n */\n function done(status, response, headersString, statusText) {\n if (cache) {\n if (isSuccess(status)) {\n cache.put(url, [status, response, parseHeaders(headersString), statusText]);\n } else {\n // remove promise from the cache\n cache.remove(url);\n }\n }\n\n resolvePromise(response, status, headersString, statusText);\n if (!$rootScope.$$phase) $rootScope.$apply();\n }\n\n\n /**\n * Resolves the raw $http promise.\n */\n function resolvePromise(response, status, headers, statusText) {\n // normalize internal statuses to 0\n status = Math.max(status, 0);\n\n (isSuccess(status) ? deferred.resolve : deferred.reject)({\n data: response,\n status: status,\n headers: headersGetter(headers),\n config: config,\n statusText : statusText\n });\n }\n\n\n function removePendingReq() {\n var idx = indexOf($http.pendingRequests, config);\n if (idx !== -1) $http.pendingRequests.splice(idx, 1);\n }\n }\n\n\n function buildUrl(url, params) {\n if (!params) return url;\n var parts = [];\n forEachSorted(params, function(value, key) {\n if (value === null || isUndefined(value)) return;\n if (!isArray(value)) value = [value];\n\n forEach(value, function(v) {\n if (isObject(v)) {\n if (isDate(v)){\n v = v.toISOString();\n } else {\n v = toJson(v);\n }\n }\n parts.push(encodeUriQuery(key) + '=' +\n encodeUriQuery(v));\n });\n });\n if(parts.length > 0) {\n url += ((url.indexOf('?') == -1) ? '?' : '&') + parts.join('&');\n }\n return url;\n }\n }];\n}\n\nfunction createXhr(method) {\n //if IE and the method is not RFC2616 compliant, or if XMLHttpRequest\n //is not available, try getting an ActiveXObject. Otherwise, use XMLHttpRequest\n //if it is available\n if (msie <= 8 && (!method.match(/^(get|post|head|put|delete|options)$/i) ||\n !window.XMLHttpRequest)) {\n return new window.ActiveXObject(\"Microsoft.XMLHTTP\");\n } else if (window.XMLHttpRequest) {\n return new window.XMLHttpRequest();\n }\n\n throw minErr('$httpBackend')('noxhr', \"This browser does not support XMLHttpRequest.\");\n}\n\n/**\n * @ngdoc service\n * @name $httpBackend\n * @requires $window\n * @requires $document\n *\n * @description\n * HTTP backend used by the {@link ng.$http service} that delegates to\n * XMLHttpRequest object or JSONP and deals with browser incompatibilities.\n *\n * You should never need to use this service directly, instead use the higher-level abstractions:\n * {@link ng.$http $http} or {@link ngResource.$resource $resource}.\n *\n * During testing this implementation is swapped with {@link ngMock.$httpBackend mock\n * $httpBackend} which can be trained with responses.\n */\nfunction $HttpBackendProvider() {\n this.$get = ['$browser', '$window', '$document', function($browser, $window, $document) {\n return createHttpBackend($browser, createXhr, $browser.defer, $window.angular.callbacks, $document[0]);\n }];\n}\n\nfunction createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDocument) {\n var ABORTED = -1;\n\n // TODO(vojta): fix the signature\n return function(method, url, post, callback, headers, timeout, withCredentials, responseType) {\n var status;\n $browser.$$incOutstandingRequestCount();\n url = url || $browser.url();\n\n if (lowercase(method) == 'jsonp') {\n var callbackId = '_' + (callbacks.counter++).toString(36);\n callbacks[callbackId] = function(data) {\n callbacks[callbackId].data = data;\n callbacks[callbackId].called = true;\n };\n\n var jsonpDone = jsonpReq(url.replace('JSON_CALLBACK', 'angular.callbacks.' + callbackId),\n callbackId, function(status, text) {\n completeRequest(callback, status, callbacks[callbackId].data, \"\", text);\n callbacks[callbackId] = noop;\n });\n } else {\n\n var xhr = createXhr(method);\n\n xhr.open(method, url, true);\n forEach(headers, function(value, key) {\n if (isDefined(value)) {\n xhr.setRequestHeader(key, value);\n }\n });\n\n // In IE6 and 7, this might be called synchronously when xhr.send below is called and the\n // response is in the cache. the promise api will ensure that to the app code the api is\n // always async\n xhr.onreadystatechange = function() {\n // onreadystatechange might get called multiple times with readyState === 4 on mobile webkit caused by\n // xhrs that are resolved while the app is in the background (see #5426).\n // since calling completeRequest sets the `xhr` variable to null, we just check if it's not null before\n // continuing\n //\n // we can't set xhr.onreadystatechange to undefined or delete it because that breaks IE8 (method=PATCH) and\n // Safari respectively.\n if (xhr && xhr.readyState == 4) {\n var responseHeaders = null,\n response = null,\n statusText = '';\n\n if(status !== ABORTED) {\n responseHeaders = xhr.getAllResponseHeaders();\n\n // responseText is the old-school way of retrieving response (supported by IE8 & 9)\n // response/responseType properties were introduced in XHR Level2 spec (supported by IE10)\n response = ('response' in xhr) ? xhr.response : xhr.responseText;\n }\n\n // Accessing statusText on an aborted xhr object will\n // throw an 'c00c023f error' in IE9 and lower, don't touch it.\n if (!(status === ABORTED && msie < 10)) {\n statusText = xhr.statusText;\n }\n\n completeRequest(callback,\n status || xhr.status,\n response,\n responseHeaders,\n statusText);\n }\n };\n\n if (withCredentials) {\n xhr.withCredentials = true;\n }\n\n if (responseType) {\n try {\n xhr.responseType = responseType;\n } catch (e) {\n // WebKit added support for the json responseType value on 09/03/2013\n // https://bugs.webkit.org/show_bug.cgi?id=73648. Versions of Safari prior to 7 are\n // known to throw when setting the value \"json\" as the response type. Other older\n // browsers implementing the responseType\n //\n // The json response type can be ignored if not supported, because JSON payloads are\n // parsed on the client-side regardless.\n if (responseType !== 'json') {\n throw e;\n }\n }\n }\n\n xhr.send(post || null);\n }\n\n if (timeout > 0) {\n var timeoutId = $browserDefer(timeoutRequest, timeout);\n } else if (isPromiseLike(timeout)) {\n timeout.then(timeoutRequest);\n }\n\n\n function timeoutRequest() {\n status = ABORTED;\n jsonpDone && jsonpDone();\n xhr && xhr.abort();\n }\n\n function completeRequest(callback, status, response, headersString, statusText) {\n // cancel timeout and subsequent timeout promise resolution\n timeoutId && $browserDefer.cancel(timeoutId);\n jsonpDone = xhr = null;\n\n // fix status code when it is 0 (0 status is undocumented).\n // Occurs when accessing file resources or on Android 4.1 stock browser\n // while retrieving files from application cache.\n if (status === 0) {\n status = response ? 200 : urlResolve(url).protocol == 'file' ? 404 : 0;\n }\n\n // normalize IE bug (http://bugs.jquery.com/ticket/1450)\n status = status === 1223 ? 204 : status;\n statusText = statusText || '';\n\n callback(status, response, headersString, statusText);\n $browser.$$completeOutstandingRequest(noop);\n }\n };\n\n function jsonpReq(url, callbackId, done) {\n // we can't use jQuery/jqLite here because jQuery does crazy shit with script elements, e.g.:\n // - fetches local scripts via XHR and evals them\n // - adds and immediately removes script elements from the document\n var script = rawDocument.createElement('script'), callback = null;\n script.type = \"text/javascript\";\n script.src = url;\n script.async = true;\n\n callback = function(event) {\n removeEventListenerFn(script, \"load\", callback);\n removeEventListenerFn(script, \"error\", callback);\n rawDocument.body.removeChild(script);\n script = null;\n var status = -1;\n var text = \"unknown\";\n\n if (event) {\n if (event.type === \"load\" && !callbacks[callbackId].called) {\n event = { type: \"error\" };\n }\n text = event.type;\n status = event.type === \"error\" ? 404 : 200;\n }\n\n if (done) {\n done(status, text);\n }\n };\n\n addEventListenerFn(script, \"load\", callback);\n addEventListenerFn(script, \"error\", callback);\n\n if (msie <= 8) {\n script.onreadystatechange = function() {\n if (isString(script.readyState) && /loaded|complete/.test(script.readyState)) {\n script.onreadystatechange = null;\n callback({\n type: 'load'\n });\n }\n };\n }\n\n rawDocument.body.appendChild(script);\n return callback;\n }\n}\n\nvar $interpolateMinErr = minErr('$interpolate');\n\n/**\n * @ngdoc provider\n * @name $interpolateProvider\n * @kind function\n *\n * @description\n *\n * Used for configuring the interpolation markup. Defaults to `{{` and `}}`.\n *\n * @example\n\n\n\n
\n //demo.label//\n
\n
\n\n it('should interpolate binding with custom symbols', function() {\n expect(element(by.binding('demo.label')).getText()).toBe('This binding is brought you by // interpolation symbols.');\n });\n\n
\n */\nfunction $InterpolateProvider() {\n var startSymbol = '{{';\n var endSymbol = '}}';\n\n /**\n * @ngdoc method\n * @name $interpolateProvider#startSymbol\n * @description\n * Symbol to denote start of expression in the interpolated string. Defaults to `{{`.\n *\n * @param {string=} value new value to set the starting symbol to.\n * @returns {string|self} Returns the symbol when used as getter and self if used as setter.\n */\n this.startSymbol = function(value){\n if (value) {\n startSymbol = value;\n return this;\n } else {\n return startSymbol;\n }\n };\n\n /**\n * @ngdoc method\n * @name $interpolateProvider#endSymbol\n * @description\n * Symbol to denote the end of expression in the interpolated string. Defaults to `}}`.\n *\n * @param {string=} value new value to set the ending symbol to.\n * @returns {string|self} Returns the symbol when used as getter and self if used as setter.\n */\n this.endSymbol = function(value){\n if (value) {\n endSymbol = value;\n return this;\n } else {\n return endSymbol;\n }\n };\n\n\n this.$get = ['$parse', '$exceptionHandler', '$sce', function($parse, $exceptionHandler, $sce) {\n var startSymbolLength = startSymbol.length,\n endSymbolLength = endSymbol.length;\n\n /**\n * @ngdoc service\n * @name $interpolate\n * @kind function\n *\n * @requires $parse\n * @requires $sce\n *\n * @description\n *\n * Compiles a string with markup into an interpolation function. This service is used by the\n * HTML {@link ng.$compile $compile} service for data binding. See\n * {@link ng.$interpolateProvider $interpolateProvider} for configuring the\n * interpolation markup.\n *\n *\n * ```js\n * var $interpolate = ...; // injected\n * var exp = $interpolate('Hello {{name | uppercase}}!');\n * expect(exp({name:'Angular'}).toEqual('Hello ANGULAR!');\n * ```\n *\n *\n * @param {string} text The text with markup to interpolate.\n * @param {boolean=} mustHaveExpression if set to true then the interpolation string must have\n * embedded expression in order to return an interpolation function. Strings with no\n * embedded expression will return null for the interpolation function.\n * @param {string=} trustedContext when provided, the returned function passes the interpolated\n * result through {@link ng.$sce#getTrusted $sce.getTrusted(interpolatedResult,\n * trustedContext)} before returning it. Refer to the {@link ng.$sce $sce} service that\n * provides Strict Contextual Escaping for details.\n * @returns {function(context)} an interpolation function which is used to compute the\n * interpolated string. The function has these parameters:\n *\n * * `context`: an object against which any expressions embedded in the strings are evaluated\n * against.\n *\n */\n function $interpolate(text, mustHaveExpression, trustedContext) {\n var startIndex,\n endIndex,\n index = 0,\n parts = [],\n length = text.length,\n hasInterpolation = false,\n fn,\n exp,\n concat = [];\n\n while(index < length) {\n if ( ((startIndex = text.indexOf(startSymbol, index)) != -1) &&\n ((endIndex = text.indexOf(endSymbol, startIndex + startSymbolLength)) != -1) ) {\n (index != startIndex) && parts.push(text.substring(index, startIndex));\n parts.push(fn = $parse(exp = text.substring(startIndex + startSymbolLength, endIndex)));\n fn.exp = exp;\n index = endIndex + endSymbolLength;\n hasInterpolation = true;\n } else {\n // we did not find anything, so we have to add the remainder to the parts array\n (index != length) && parts.push(text.substring(index));\n index = length;\n }\n }\n\n if (!(length = parts.length)) {\n // we added, nothing, must have been an empty string.\n parts.push('');\n length = 1;\n }\n\n // Concatenating expressions makes it hard to reason about whether some combination of\n // concatenated values are unsafe to use and could easily lead to XSS. By requiring that a\n // single expression be used for iframe[src], object[src], etc., we ensure that the value\n // that's used is assigned or constructed by some JS code somewhere that is more testable or\n // make it obvious that you bound the value to some user controlled value. This helps reduce\n // the load when auditing for XSS issues.\n if (trustedContext && parts.length > 1) {\n throw $interpolateMinErr('noconcat',\n \"Error while interpolating: {0}\\nStrict Contextual Escaping disallows \" +\n \"interpolations that concatenate multiple expressions when a trusted value is \" +\n \"required. See http://docs.angularjs.org/api/ng.$sce\", text);\n }\n\n if (!mustHaveExpression || hasInterpolation) {\n concat.length = length;\n fn = function(context) {\n try {\n for(var i = 0, ii = length, part; i\n * **Note**: Intervals created by this service must be explicitly destroyed when you are finished\n * with them. In particular they are not automatically destroyed when a controller's scope or a\n * directive's element are destroyed.\n * You should take this into consideration and make sure to always cancel the interval at the\n * appropriate moment. See the example below for more details on how and when to do this.\n * \n *\n * @param {function()} fn A function that should be called repeatedly.\n * @param {number} delay Number of milliseconds between each function call.\n * @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat\n * indefinitely.\n * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise\n * will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.\n * @returns {promise} A promise which will be notified on each iteration.\n *\n * @example\n * \n * \n * \n *\n *
\n *
\n * Date format:
\n * Current time is: \n *
\n * Blood 1 : {{blood_1}}\n * Blood 2 : {{blood_2}}\n * \n * \n * \n *
\n *
\n *\n *
\n *
\n */\n function interval(fn, delay, count, invokeApply) {\n var setInterval = $window.setInterval,\n clearInterval = $window.clearInterval,\n deferred = $q.defer(),\n promise = deferred.promise,\n iteration = 0,\n skipApply = (isDefined(invokeApply) && !invokeApply);\n\n count = isDefined(count) ? count : 0;\n\n promise.then(null, null, fn);\n\n promise.$$intervalId = setInterval(function tick() {\n deferred.notify(iteration++);\n\n if (count > 0 && iteration >= count) {\n deferred.resolve(iteration);\n clearInterval(promise.$$intervalId);\n delete intervals[promise.$$intervalId];\n }\n\n if (!skipApply) $rootScope.$apply();\n\n }, delay);\n\n intervals[promise.$$intervalId] = deferred;\n\n return promise;\n }\n\n\n /**\n * @ngdoc method\n * @name $interval#cancel\n *\n * @description\n * Cancels a task associated with the `promise`.\n *\n * @param {promise} promise returned by the `$interval` function.\n * @returns {boolean} Returns `true` if the task was successfully canceled.\n */\n interval.cancel = function(promise) {\n if (promise && promise.$$intervalId in intervals) {\n intervals[promise.$$intervalId].reject('canceled');\n $window.clearInterval(promise.$$intervalId);\n delete intervals[promise.$$intervalId];\n return true;\n }\n return false;\n };\n\n return interval;\n }];\n}\n\n/**\n * @ngdoc service\n * @name $locale\n *\n * @description\n * $locale service provides localization rules for various Angular components. As of right now the\n * only public api is:\n *\n * * `id` – `{string}` – locale id formatted as `languageId-countryId` (e.g. `en-us`)\n */\nfunction $LocaleProvider(){\n this.$get = function() {\n return {\n id: 'en-us',\n\n NUMBER_FORMATS: {\n DECIMAL_SEP: '.',\n GROUP_SEP: ',',\n PATTERNS: [\n { // Decimal Pattern\n minInt: 1,\n minFrac: 0,\n maxFrac: 3,\n posPre: '',\n posSuf: '',\n negPre: '-',\n negSuf: '',\n gSize: 3,\n lgSize: 3\n },{ //Currency Pattern\n minInt: 1,\n minFrac: 2,\n maxFrac: 2,\n posPre: '\\u00A4',\n posSuf: '',\n negPre: '(\\u00A4',\n negSuf: ')',\n gSize: 3,\n lgSize: 3\n }\n ],\n CURRENCY_SYM: '$'\n },\n\n DATETIME_FORMATS: {\n MONTH:\n 'January,February,March,April,May,June,July,August,September,October,November,December'\n .split(','),\n SHORTMONTH: 'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'.split(','),\n DAY: 'Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday'.split(','),\n SHORTDAY: 'Sun,Mon,Tue,Wed,Thu,Fri,Sat'.split(','),\n AMPMS: ['AM','PM'],\n medium: 'MMM d, y h:mm:ss a',\n short: 'M/d/yy h:mm a',\n fullDate: 'EEEE, MMMM d, y',\n longDate: 'MMMM d, y',\n mediumDate: 'MMM d, y',\n shortDate: 'M/d/yy',\n mediumTime: 'h:mm:ss a',\n shortTime: 'h:mm a'\n },\n\n pluralCat: function(num) {\n if (num === 1) {\n return 'one';\n }\n return 'other';\n }\n };\n };\n}\n\nvar PATH_MATCH = /^([^\\?#]*)(\\?([^#]*))?(#(.*))?$/,\n DEFAULT_PORTS = {'http': 80, 'https': 443, 'ftp': 21};\nvar $locationMinErr = minErr('$location');\n\n\n/**\n * Encode path using encodeUriSegment, ignoring forward slashes\n *\n * @param {string} path Path to encode\n * @returns {string}\n */\nfunction encodePath(path) {\n var segments = path.split('/'),\n i = segments.length;\n\n while (i--) {\n segments[i] = encodeUriSegment(segments[i]);\n }\n\n return segments.join('/');\n}\n\nfunction parseAbsoluteUrl(absoluteUrl, locationObj, appBase) {\n var parsedUrl = urlResolve(absoluteUrl, appBase);\n\n locationObj.$$protocol = parsedUrl.protocol;\n locationObj.$$host = parsedUrl.hostname;\n locationObj.$$port = int(parsedUrl.port) || DEFAULT_PORTS[parsedUrl.protocol] || null;\n}\n\n\nfunction parseAppUrl(relativeUrl, locationObj, appBase) {\n var prefixed = (relativeUrl.charAt(0) !== '/');\n if (prefixed) {\n relativeUrl = '/' + relativeUrl;\n }\n var match = urlResolve(relativeUrl, appBase);\n locationObj.$$path = decodeURIComponent(prefixed && match.pathname.charAt(0) === '/' ?\n match.pathname.substring(1) : match.pathname);\n locationObj.$$search = parseKeyValue(match.search);\n locationObj.$$hash = decodeURIComponent(match.hash);\n\n // make sure path starts with '/';\n if (locationObj.$$path && locationObj.$$path.charAt(0) != '/') {\n locationObj.$$path = '/' + locationObj.$$path;\n }\n}\n\n\n/**\n *\n * @param {string} begin\n * @param {string} whole\n * @returns {string} returns text from whole after begin or undefined if it does not begin with\n * expected string.\n */\nfunction beginsWith(begin, whole) {\n if (whole.indexOf(begin) === 0) {\n return whole.substr(begin.length);\n }\n}\n\n\nfunction stripHash(url) {\n var index = url.indexOf('#');\n return index == -1 ? url : url.substr(0, index);\n}\n\n\nfunction stripFile(url) {\n return url.substr(0, stripHash(url).lastIndexOf('/') + 1);\n}\n\n/* return the server only (scheme://host:port) */\nfunction serverBase(url) {\n return url.substring(0, url.indexOf('/', url.indexOf('//') + 2));\n}\n\n\n/**\n * LocationHtml5Url represents an url\n * This object is exposed as $location service when HTML5 mode is enabled and supported\n *\n * @constructor\n * @param {string} appBase application base URL\n * @param {string} basePrefix url path prefix\n */\nfunction LocationHtml5Url(appBase, basePrefix) {\n this.$$html5 = true;\n basePrefix = basePrefix || '';\n var appBaseNoFile = stripFile(appBase);\n parseAbsoluteUrl(appBase, this, appBase);\n\n\n /**\n * Parse given html5 (regular) url string into properties\n * @param {string} newAbsoluteUrl HTML5 url\n * @private\n */\n this.$$parse = function(url) {\n var pathUrl = beginsWith(appBaseNoFile, url);\n if (!isString(pathUrl)) {\n throw $locationMinErr('ipthprfx', 'Invalid url \"{0}\", missing path prefix \"{1}\".', url,\n appBaseNoFile);\n }\n\n parseAppUrl(pathUrl, this, appBase);\n\n if (!this.$$path) {\n this.$$path = '/';\n }\n\n this.$$compose();\n };\n\n /**\n * Compose url and update `absUrl` property\n * @private\n */\n this.$$compose = function() {\n var search = toKeyValue(this.$$search),\n hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';\n\n this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;\n this.$$absUrl = appBaseNoFile + this.$$url.substr(1); // first char is always '/'\n };\n\n this.$$parseLinkUrl = function(url, relHref) {\n var appUrl, prevAppUrl;\n var rewrittenUrl;\n\n if ( (appUrl = beginsWith(appBase, url)) !== undefined ) {\n prevAppUrl = appUrl;\n if ( (appUrl = beginsWith(basePrefix, appUrl)) !== undefined ) {\n rewrittenUrl = appBaseNoFile + (beginsWith('/', appUrl) || appUrl);\n } else {\n rewrittenUrl = appBase + prevAppUrl;\n }\n } else if ( (appUrl = beginsWith(appBaseNoFile, url)) !== undefined ) {\n rewrittenUrl = appBaseNoFile + appUrl;\n } else if (appBaseNoFile == url + '/') {\n rewrittenUrl = appBaseNoFile;\n }\n if (rewrittenUrl) {\n this.$$parse(rewrittenUrl);\n }\n return !!rewrittenUrl;\n };\n}\n\n\n/**\n * LocationHashbangUrl represents url\n * This object is exposed as $location service when developer doesn't opt into html5 mode.\n * It also serves as the base class for html5 mode fallback on legacy browsers.\n *\n * @constructor\n * @param {string} appBase application base URL\n * @param {string} hashPrefix hashbang prefix\n */\nfunction LocationHashbangUrl(appBase, hashPrefix) {\n var appBaseNoFile = stripFile(appBase);\n\n parseAbsoluteUrl(appBase, this, appBase);\n\n\n /**\n * Parse given hashbang url into properties\n * @param {string} url Hashbang url\n * @private\n */\n this.$$parse = function(url) {\n var withoutBaseUrl = beginsWith(appBase, url) || beginsWith(appBaseNoFile, url);\n var withoutHashUrl = withoutBaseUrl.charAt(0) == '#'\n ? beginsWith(hashPrefix, withoutBaseUrl)\n : (this.$$html5)\n ? withoutBaseUrl\n : '';\n\n if (!isString(withoutHashUrl)) {\n throw $locationMinErr('ihshprfx', 'Invalid url \"{0}\", missing hash prefix \"{1}\".', url,\n hashPrefix);\n }\n parseAppUrl(withoutHashUrl, this, appBase);\n\n this.$$path = removeWindowsDriveName(this.$$path, withoutHashUrl, appBase);\n\n this.$$compose();\n\n /*\n * In Windows, on an anchor node on documents loaded from\n * the filesystem, the browser will return a pathname\n * prefixed with the drive name ('/C:/path') when a\n * pathname without a drive is set:\n * * a.setAttribute('href', '/foo')\n * * a.pathname === '/C:/foo' //true\n *\n * Inside of Angular, we're always using pathnames that\n * do not include drive names for routing.\n */\n function removeWindowsDriveName (path, url, base) {\n /*\n Matches paths for file protocol on windows,\n such as /C:/foo/bar, and captures only /foo/bar.\n */\n var windowsFilePathExp = /^\\/[A-Z]:(\\/.*)/;\n\n var firstPathSegmentMatch;\n\n //Get the relative path from the input URL.\n if (url.indexOf(base) === 0) {\n url = url.replace(base, '');\n }\n\n // The input URL intentionally contains a first path segment that ends with a colon.\n if (windowsFilePathExp.exec(url)) {\n return path;\n }\n\n firstPathSegmentMatch = windowsFilePathExp.exec(path);\n return firstPathSegmentMatch ? firstPathSegmentMatch[1] : path;\n }\n };\n\n /**\n * Compose hashbang url and update `absUrl` property\n * @private\n */\n this.$$compose = function() {\n var search = toKeyValue(this.$$search),\n hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';\n\n this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;\n this.$$absUrl = appBase + (this.$$url ? hashPrefix + this.$$url : '');\n };\n\n this.$$parseLinkUrl = function(url, relHref) {\n if(stripHash(appBase) == stripHash(url)) {\n this.$$parse(url);\n return true;\n }\n return false;\n };\n}\n\n\n/**\n * LocationHashbangUrl represents url\n * This object is exposed as $location service when html5 history api is enabled but the browser\n * does not support it.\n *\n * @constructor\n * @param {string} appBase application base URL\n * @param {string} hashPrefix hashbang prefix\n */\nfunction LocationHashbangInHtml5Url(appBase, hashPrefix) {\n this.$$html5 = true;\n LocationHashbangUrl.apply(this, arguments);\n\n var appBaseNoFile = stripFile(appBase);\n\n this.$$parseLinkUrl = function(url, relHref) {\n var rewrittenUrl;\n var appUrl;\n\n if ( appBase == stripHash(url) ) {\n rewrittenUrl = url;\n } else if ( (appUrl = beginsWith(appBaseNoFile, url)) ) {\n rewrittenUrl = appBase + hashPrefix + appUrl;\n } else if ( appBaseNoFile === url + '/') {\n rewrittenUrl = appBaseNoFile;\n }\n if (rewrittenUrl) {\n this.$$parse(rewrittenUrl);\n }\n return !!rewrittenUrl;\n };\n\n this.$$compose = function() {\n var search = toKeyValue(this.$$search),\n hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';\n\n this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;\n // include hashPrefix in $$absUrl when $$url is empty so IE8 & 9 do not reload page because of removal of '#'\n this.$$absUrl = appBase + hashPrefix + this.$$url;\n };\n\n}\n\n\nLocationHashbangInHtml5Url.prototype =\n LocationHashbangUrl.prototype =\n LocationHtml5Url.prototype = {\n\n /**\n * Are we in html5 mode?\n * @private\n */\n $$html5: false,\n\n /**\n * Has any change been replacing ?\n * @private\n */\n $$replace: false,\n\n /**\n * @ngdoc method\n * @name $location#absUrl\n *\n * @description\n * This method is getter only.\n *\n * Return full url representation with all segments encoded according to rules specified in\n * [RFC 3986](http://www.ietf.org/rfc/rfc3986.txt).\n *\n * @return {string} full url\n */\n absUrl: locationGetter('$$absUrl'),\n\n /**\n * @ngdoc method\n * @name $location#url\n *\n * @description\n * This method is getter / setter.\n *\n * Return url (e.g. `/path?a=b#hash`) when called without any parameter.\n *\n * Change path, search and hash, when called with parameter and return `$location`.\n *\n * @param {string=} url New url without base prefix (e.g. `/path?a=b#hash`)\n * @return {string} url\n */\n url: function(url) {\n if (isUndefined(url))\n return this.$$url;\n\n var match = PATH_MATCH.exec(url);\n if (match[1]) this.path(decodeURIComponent(match[1]));\n if (match[2] || match[1]) this.search(match[3] || '');\n this.hash(match[5] || '');\n\n return this;\n },\n\n /**\n * @ngdoc method\n * @name $location#protocol\n *\n * @description\n * This method is getter only.\n *\n * Return protocol of current url.\n *\n * @return {string} protocol of current url\n */\n protocol: locationGetter('$$protocol'),\n\n /**\n * @ngdoc method\n * @name $location#host\n *\n * @description\n * This method is getter only.\n *\n * Return host of current url.\n *\n * @return {string} host of current url.\n */\n host: locationGetter('$$host'),\n\n /**\n * @ngdoc method\n * @name $location#port\n *\n * @description\n * This method is getter only.\n *\n * Return port of current url.\n *\n * @return {Number} port\n */\n port: locationGetter('$$port'),\n\n /**\n * @ngdoc method\n * @name $location#path\n *\n * @description\n * This method is getter / setter.\n *\n * Return path of current url when called without any parameter.\n *\n * Change path when called with parameter and return `$location`.\n *\n * Note: Path should always begin with forward slash (/), this method will add the forward slash\n * if it is missing.\n *\n * @param {(string|number)=} path New path\n * @return {string} path\n */\n path: locationGetterSetter('$$path', function(path) {\n path = path !== null ? path.toString() : '';\n return path.charAt(0) == '/' ? path : '/' + path;\n }),\n\n /**\n * @ngdoc method\n * @name $location#search\n *\n * @description\n * This method is getter / setter.\n *\n * Return search part (as object) of current url when called without any parameter.\n *\n * Change search part when called with parameter and return `$location`.\n *\n *\n * ```js\n * // given url http://example.com/#/some/path?foo=bar&baz=xoxo\n * var searchObject = $location.search();\n * // => {foo: 'bar', baz: 'xoxo'}\n *\n *\n * // set foo to 'yipee'\n * $location.search('foo', 'yipee');\n * // => $location\n * ```\n *\n * @param {string|Object.|Object.>} search New search params - string or\n * hash object.\n *\n * When called with a single argument the method acts as a setter, setting the `search` component\n * of `$location` to the specified value.\n *\n * If the argument is a hash object containing an array of values, these values will be encoded\n * as duplicate search parameters in the url.\n *\n * @param {(string|Number|Array|boolean)=} paramValue If `search` is a string or number, then `paramValue`\n * will override only a single search property.\n *\n * If `paramValue` is an array, it will override the property of the `search` component of\n * `$location` specified via the first argument.\n *\n * If `paramValue` is `null`, the property specified via the first argument will be deleted.\n *\n * If `paramValue` is `true`, the property specified via the first argument will be added with no\n * value nor trailing equal sign.\n *\n * @return {Object} If called with no arguments returns the parsed `search` object. If called with\n * one or more arguments returns `$location` object itself.\n */\n search: function(search, paramValue) {\n switch (arguments.length) {\n case 0:\n return this.$$search;\n case 1:\n if (isString(search) || isNumber(search)) {\n search = search.toString();\n this.$$search = parseKeyValue(search);\n } else if (isObject(search)) {\n // remove object undefined or null properties\n forEach(search, function(value, key) {\n if (value == null) delete search[key];\n });\n\n this.$$search = search;\n } else {\n throw $locationMinErr('isrcharg',\n 'The first argument of the `$location#search()` call must be a string or an object.');\n }\n break;\n default:\n if (isUndefined(paramValue) || paramValue === null) {\n delete this.$$search[search];\n } else {\n this.$$search[search] = paramValue;\n }\n }\n\n this.$$compose();\n return this;\n },\n\n /**\n * @ngdoc method\n * @name $location#hash\n *\n * @description\n * This method is getter / setter.\n *\n * Return hash fragment when called without any parameter.\n *\n * Change hash fragment when called with parameter and return `$location`.\n *\n * @param {(string|number)=} hash New hash fragment\n * @return {string} hash\n */\n hash: locationGetterSetter('$$hash', function(hash) {\n return hash !== null ? hash.toString() : '';\n }),\n\n /**\n * @ngdoc method\n * @name $location#replace\n *\n * @description\n * If called, all changes to $location during current `$digest` will be replacing current history\n * record, instead of adding new one.\n */\n replace: function() {\n this.$$replace = true;\n return this;\n }\n};\n\nfunction locationGetter(property) {\n return function() {\n return this[property];\n };\n}\n\n\nfunction locationGetterSetter(property, preprocess) {\n return function(value) {\n if (isUndefined(value))\n return this[property];\n\n this[property] = preprocess(value);\n this.$$compose();\n\n return this;\n };\n}\n\n\n/**\n * @ngdoc service\n * @name $location\n *\n * @requires $rootElement\n *\n * @description\n * The $location service parses the URL in the browser address bar (based on the\n * [window.location](https://developer.mozilla.org/en/window.location)) and makes the URL\n * available to your application. Changes to the URL in the address bar are reflected into\n * $location service and changes to $location are reflected into the browser address bar.\n *\n * **The $location service:**\n *\n * - Exposes the current URL in the browser address bar, so you can\n * - Watch and observe the URL.\n * - Change the URL.\n * - Synchronizes the URL with the browser when the user\n * - Changes the address bar.\n * - Clicks the back or forward button (or clicks a History link).\n * - Clicks on a link.\n * - Represents the URL object as a set of methods (protocol, host, port, path, search, hash).\n *\n * For more information see {@link guide/$location Developer Guide: Using $location}\n */\n\n/**\n * @ngdoc provider\n * @name $locationProvider\n * @description\n * Use the `$locationProvider` to configure how the application deep linking paths are stored.\n */\nfunction $LocationProvider(){\n var hashPrefix = '',\n html5Mode = false;\n\n /**\n * @ngdoc method\n * @name $locationProvider#hashPrefix\n * @description\n * @param {string=} prefix Prefix for hash part (containing path and search)\n * @returns {*} current value if used as getter or itself (chaining) if used as setter\n */\n this.hashPrefix = function(prefix) {\n if (isDefined(prefix)) {\n hashPrefix = prefix;\n return this;\n } else {\n return hashPrefix;\n }\n };\n\n /**\n * @ngdoc method\n * @name $locationProvider#html5Mode\n * @description\n * @param {boolean=} mode Use HTML5 strategy if available.\n * @returns {*} current value if used as getter or itself (chaining) if used as setter\n */\n this.html5Mode = function(mode) {\n if (isDefined(mode)) {\n html5Mode = mode;\n return this;\n } else {\n return html5Mode;\n }\n };\n\n /**\n * @ngdoc event\n * @name $location#$locationChangeStart\n * @eventType broadcast on root scope\n * @description\n * Broadcasted before a URL will change. This change can be prevented by calling\n * `preventDefault` method of the event. See {@link ng.$rootScope.Scope#$on} for more\n * details about event object. Upon successful change\n * {@link ng.$location#events_$locationChangeSuccess $locationChangeSuccess} is fired.\n *\n * @param {Object} angularEvent Synthetic event object.\n * @param {string} newUrl New URL\n * @param {string=} oldUrl URL that was before it was changed.\n */\n\n /**\n * @ngdoc event\n * @name $location#$locationChangeSuccess\n * @eventType broadcast on root scope\n * @description\n * Broadcasted after a URL was changed.\n *\n * @param {Object} angularEvent Synthetic event object.\n * @param {string} newUrl New URL\n * @param {string=} oldUrl URL that was before it was changed.\n */\n\n this.$get = ['$rootScope', '$browser', '$sniffer', '$rootElement',\n function( $rootScope, $browser, $sniffer, $rootElement) {\n var $location,\n LocationMode,\n baseHref = $browser.baseHref(), // if base[href] is undefined, it defaults to ''\n initialUrl = $browser.url(),\n appBase;\n\n if (html5Mode) {\n appBase = serverBase(initialUrl) + (baseHref || '/');\n LocationMode = $sniffer.history ? LocationHtml5Url : LocationHashbangInHtml5Url;\n } else {\n appBase = stripHash(initialUrl);\n LocationMode = LocationHashbangUrl;\n }\n $location = new LocationMode(appBase, '#' + hashPrefix);\n $location.$$parseLinkUrl(initialUrl, initialUrl);\n\n var IGNORE_URI_REGEXP = /^\\s*(javascript|mailto):/i;\n\n $rootElement.on('click', function(event) {\n // TODO(vojta): rewrite link when opening in new tab/window (in legacy browser)\n // currently we open nice url link and redirect then\n\n if (event.ctrlKey || event.metaKey || event.which == 2) return;\n\n var elm = jqLite(event.target);\n\n // traverse the DOM up to find first A tag\n while (lowercase(elm[0].nodeName) !== 'a') {\n // ignore rewriting if no A tag (reached root element, or no parent - removed from document)\n if (elm[0] === $rootElement[0] || !(elm = elm.parent())[0]) return;\n }\n\n var absHref = elm.prop('href');\n // get the actual href attribute - see\n // http://msdn.microsoft.com/en-us/library/ie/dd347148(v=vs.85).aspx\n var relHref = elm.attr('href') || elm.attr('xlink:href');\n\n if (isObject(absHref) && absHref.toString() === '[object SVGAnimatedString]') {\n // SVGAnimatedString.animVal should be identical to SVGAnimatedString.baseVal, unless during\n // an animation.\n absHref = urlResolve(absHref.animVal).href;\n }\n\n // Ignore when url is started with javascript: or mailto:\n if (IGNORE_URI_REGEXP.test(absHref)) return;\n\n if (absHref && !elm.attr('target') && !event.isDefaultPrevented()) {\n if ($location.$$parseLinkUrl(absHref, relHref)) {\n // We do a preventDefault for all urls that are part of the angular application,\n // in html5mode and also without, so that we are able to abort navigation without\n // getting double entries in the location history.\n event.preventDefault();\n // update location manually\n if ($location.absUrl() != $browser.url()) {\n $rootScope.$apply();\n // hack to work around FF6 bug 684208 when scenario runner clicks on links\n window.angular['ff-684208-preventDefault'] = true;\n }\n }\n }\n });\n\n\n // rewrite hashbang url <> html5 url\n if ($location.absUrl() != initialUrl) {\n $browser.url($location.absUrl(), true);\n }\n\n // update $location when $browser url changes\n $browser.onUrlChange(function(newUrl) {\n if ($location.absUrl() != newUrl) {\n $rootScope.$evalAsync(function() {\n var oldUrl = $location.absUrl();\n\n $location.$$parse(newUrl);\n if ($rootScope.$broadcast('$locationChangeStart', newUrl,\n oldUrl).defaultPrevented) {\n $location.$$parse(oldUrl);\n $browser.url(oldUrl);\n } else {\n afterLocationChange(oldUrl);\n }\n });\n if (!$rootScope.$$phase) $rootScope.$digest();\n }\n });\n\n // update browser\n var changeCounter = 0;\n $rootScope.$watch(function $locationWatch() {\n var oldUrl = $browser.url();\n var currentReplace = $location.$$replace;\n\n if (!changeCounter || oldUrl != $location.absUrl()) {\n changeCounter++;\n $rootScope.$evalAsync(function() {\n if ($rootScope.$broadcast('$locationChangeStart', $location.absUrl(), oldUrl).\n defaultPrevented) {\n $location.$$parse(oldUrl);\n } else {\n $browser.url($location.absUrl(), currentReplace);\n afterLocationChange(oldUrl);\n }\n });\n }\n $location.$$replace = false;\n\n return changeCounter;\n });\n\n return $location;\n\n function afterLocationChange(oldUrl) {\n $rootScope.$broadcast('$locationChangeSuccess', $location.absUrl(), oldUrl);\n }\n}];\n}\n\n/**\n * @ngdoc service\n * @name $log\n * @requires $window\n *\n * @description\n * Simple service for logging. Default implementation safely writes the message\n * into the browser's console (if present).\n *\n * The main purpose of this service is to simplify debugging and troubleshooting.\n *\n * The default is to log `debug` messages. You can use\n * {@link ng.$logProvider ng.$logProvider#debugEnabled} to change this.\n *\n * @example\n \n \n angular.module('logExample', [])\n .controller('LogController', ['$scope', '$log', function($scope, $log) {\n $scope.$log = $log;\n $scope.message = 'Hello World!';\n }]);\n \n \n
\n

Reload this page with open console, enter text and hit the log button...

\n Message:\n \n \n \n \n \n
\n
\n
\n */\n\n/**\n * @ngdoc provider\n * @name $logProvider\n * @description\n * Use the `$logProvider` to configure how the application logs messages\n */\nfunction $LogProvider(){\n var debug = true,\n self = this;\n\n /**\n * @ngdoc method\n * @name $logProvider#debugEnabled\n * @description\n * @param {boolean=} flag enable or disable debug level messages\n * @returns {*} current value if used as getter or itself (chaining) if used as setter\n */\n this.debugEnabled = function(flag) {\n if (isDefined(flag)) {\n debug = flag;\n return this;\n } else {\n return debug;\n }\n };\n\n this.$get = ['$window', function($window){\n return {\n /**\n * @ngdoc method\n * @name $log#log\n *\n * @description\n * Write a log message\n */\n log: consoleLog('log'),\n\n /**\n * @ngdoc method\n * @name $log#info\n *\n * @description\n * Write an information message\n */\n info: consoleLog('info'),\n\n /**\n * @ngdoc method\n * @name $log#warn\n *\n * @description\n * Write a warning message\n */\n warn: consoleLog('warn'),\n\n /**\n * @ngdoc method\n * @name $log#error\n *\n * @description\n * Write an error message\n */\n error: consoleLog('error'),\n\n /**\n * @ngdoc method\n * @name $log#debug\n *\n * @description\n * Write a debug message\n */\n debug: (function () {\n var fn = consoleLog('debug');\n\n return function() {\n if (debug) {\n fn.apply(self, arguments);\n }\n };\n }())\n };\n\n function formatError(arg) {\n if (arg instanceof Error) {\n if (arg.stack) {\n arg = (arg.message && arg.stack.indexOf(arg.message) === -1)\n ? 'Error: ' + arg.message + '\\n' + arg.stack\n : arg.stack;\n } else if (arg.sourceURL) {\n arg = arg.message + '\\n' + arg.sourceURL + ':' + arg.line;\n }\n }\n return arg;\n }\n\n function consoleLog(type) {\n var console = $window.console || {},\n logFn = console[type] || console.log || noop,\n hasApply = false;\n\n // Note: reading logFn.apply throws an error in IE11 in IE8 document mode.\n // The reason behind this is that console.log has type \"object\" in IE8...\n try {\n hasApply = !!logFn.apply;\n } catch (e) {}\n\n if (hasApply) {\n return function() {\n var args = [];\n forEach(arguments, function(arg) {\n args.push(formatError(arg));\n });\n return logFn.apply(console, args);\n };\n }\n\n // we are IE which either doesn't have window.console => this is noop and we do nothing,\n // or we are IE where console.log doesn't have apply so we log at least first 2 args\n return function(arg1, arg2) {\n logFn(arg1, arg2 == null ? '' : arg2);\n };\n }\n }];\n}\n\nvar $parseMinErr = minErr('$parse');\nvar promiseWarningCache = {};\nvar promiseWarning;\n\n// Sandboxing Angular Expressions\n// ------------------------------\n// Angular expressions are generally considered safe because these expressions only have direct\n// access to `$scope` and locals. However, one can obtain the ability to execute arbitrary JS code by\n// obtaining a reference to native JS functions such as the Function constructor.\n//\n// As an example, consider the following Angular expression:\n//\n// {}.toString.constructor('alert(\"evil JS code\")')\n//\n// This sandboxing technique is not perfect and doesn't aim to be. The goal is to prevent exploits\n// against the expression language, but not to prevent exploits that were enabled by exposing\n// sensitive JavaScript or browser APIs on Scope. Exposing such objects on a Scope is never a good\n// practice and therefore we are not even trying to protect against interaction with an object\n// explicitly exposed in this way.\n//\n// In general, it is not possible to access a Window object from an angular expression unless a\n// window or some DOM object that has a reference to window is published onto a Scope.\n// Similarly we prevent invocations of function known to be dangerous, as well as assignments to\n// native objects.\n//\n// See https://docs.angularjs.org/guide/security\n\n\nfunction ensureSafeMemberName(name, fullExpression) {\n if (name === \"__defineGetter__\" || name === \"__defineSetter__\"\n || name === \"__lookupGetter__\" || name === \"__lookupSetter__\"\n || name === \"__proto__\") {\n throw $parseMinErr('isecfld',\n 'Attempting to access a disallowed field in Angular expressions! '\n +'Expression: {0}', fullExpression);\n }\n return name;\n}\n\nfunction ensureSafeObject(obj, fullExpression) {\n // nifty check if obj is Function that is fast and works across iframes and other contexts\n if (obj) {\n if (obj.constructor === obj) {\n throw $parseMinErr('isecfn',\n 'Referencing Function in Angular expressions is disallowed! Expression: {0}',\n fullExpression);\n } else if (// isWindow(obj)\n obj.document && obj.location && obj.alert && obj.setInterval) {\n throw $parseMinErr('isecwindow',\n 'Referencing the Window in Angular expressions is disallowed! Expression: {0}',\n fullExpression);\n } else if (// isElement(obj)\n obj.children && (obj.nodeName || (obj.prop && obj.attr && obj.find))) {\n throw $parseMinErr('isecdom',\n 'Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}',\n fullExpression);\n } else if (// block Object so that we can't get hold of dangerous Object.* methods\n obj === Object) {\n throw $parseMinErr('isecobj',\n 'Referencing Object in Angular expressions is disallowed! Expression: {0}',\n fullExpression);\n }\n }\n return obj;\n}\n\nvar CALL = Function.prototype.call;\nvar APPLY = Function.prototype.apply;\nvar BIND = Function.prototype.bind;\n\nfunction ensureSafeFunction(obj, fullExpression) {\n if (obj) {\n if (obj.constructor === obj) {\n throw $parseMinErr('isecfn',\n 'Referencing Function in Angular expressions is disallowed! Expression: {0}',\n fullExpression);\n } else if (obj === CALL || obj === APPLY || (BIND && obj === BIND)) {\n throw $parseMinErr('isecff',\n 'Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}',\n fullExpression);\n }\n }\n}\n\nvar OPERATORS = {\n /* jshint bitwise : false */\n 'null':function(){return null;},\n 'true':function(){return true;},\n 'false':function(){return false;},\n undefined:noop,\n '+':function(self, locals, a,b){\n a=a(self, locals); b=b(self, locals);\n if (isDefined(a)) {\n if (isDefined(b)) {\n return a + b;\n }\n return a;\n }\n return isDefined(b)?b:undefined;},\n '-':function(self, locals, a,b){\n a=a(self, locals); b=b(self, locals);\n return (isDefined(a)?a:0)-(isDefined(b)?b:0);\n },\n '*':function(self, locals, a,b){return a(self, locals)*b(self, locals);},\n '/':function(self, locals, a,b){return a(self, locals)/b(self, locals);},\n '%':function(self, locals, a,b){return a(self, locals)%b(self, locals);},\n '^':function(self, locals, a,b){return a(self, locals)^b(self, locals);},\n '=':noop,\n '===':function(self, locals, a, b){return a(self, locals)===b(self, locals);},\n '!==':function(self, locals, a, b){return a(self, locals)!==b(self, locals);},\n '==':function(self, locals, a,b){return a(self, locals)==b(self, locals);},\n '!=':function(self, locals, a,b){return a(self, locals)!=b(self, locals);},\n '<':function(self, locals, a,b){return a(self, locals)':function(self, locals, a,b){return a(self, locals)>b(self, locals);},\n '<=':function(self, locals, a,b){return a(self, locals)<=b(self, locals);},\n '>=':function(self, locals, a,b){return a(self, locals)>=b(self, locals);},\n '&&':function(self, locals, a,b){return a(self, locals)&&b(self, locals);},\n '||':function(self, locals, a,b){return a(self, locals)||b(self, locals);},\n '&':function(self, locals, a,b){return a(self, locals)&b(self, locals);},\n// '|':function(self, locals, a,b){return a|b;},\n '|':function(self, locals, a,b){return b(self, locals)(self, locals, a(self, locals));},\n '!':function(self, locals, a){return !a(self, locals);}\n};\n/* jshint bitwise: true */\nvar ESCAPE = {\"n\":\"\\n\", \"f\":\"\\f\", \"r\":\"\\r\", \"t\":\"\\t\", \"v\":\"\\v\", \"'\":\"'\", '\"':'\"'};\n\n\n/////////////////////////////////////////\n\n\n/**\n * @constructor\n */\nvar Lexer = function (options) {\n this.options = options;\n};\n\nLexer.prototype = {\n constructor: Lexer,\n\n lex: function (text) {\n this.text = text;\n\n this.index = 0;\n this.ch = undefined;\n this.lastCh = ':'; // can start regexp\n\n this.tokens = [];\n\n while (this.index < this.text.length) {\n this.ch = this.text.charAt(this.index);\n if (this.is('\"\\'')) {\n this.readString(this.ch);\n } else if (this.isNumber(this.ch) || this.is('.') && this.isNumber(this.peek())) {\n this.readNumber();\n } else if (this.isIdent(this.ch)) {\n this.readIdent();\n } else if (this.is('(){}[].,;:?')) {\n this.tokens.push({\n index: this.index,\n text: this.ch\n });\n this.index++;\n } else if (this.isWhitespace(this.ch)) {\n this.index++;\n continue;\n } else {\n var ch2 = this.ch + this.peek();\n var ch3 = ch2 + this.peek(2);\n var fn = OPERATORS[this.ch];\n var fn2 = OPERATORS[ch2];\n var fn3 = OPERATORS[ch3];\n if (fn3) {\n this.tokens.push({index: this.index, text: ch3, fn: fn3});\n this.index += 3;\n } else if (fn2) {\n this.tokens.push({index: this.index, text: ch2, fn: fn2});\n this.index += 2;\n } else if (fn) {\n this.tokens.push({\n index: this.index,\n text: this.ch,\n fn: fn\n });\n this.index += 1;\n } else {\n this.throwError('Unexpected next character ', this.index, this.index + 1);\n }\n }\n this.lastCh = this.ch;\n }\n return this.tokens;\n },\n\n is: function(chars) {\n return chars.indexOf(this.ch) !== -1;\n },\n\n was: function(chars) {\n return chars.indexOf(this.lastCh) !== -1;\n },\n\n peek: function(i) {\n var num = i || 1;\n return (this.index + num < this.text.length) ? this.text.charAt(this.index + num) : false;\n },\n\n isNumber: function(ch) {\n return ('0' <= ch && ch <= '9');\n },\n\n isWhitespace: function(ch) {\n // IE treats non-breaking space as \\u00A0\n return (ch === ' ' || ch === '\\r' || ch === '\\t' ||\n ch === '\\n' || ch === '\\v' || ch === '\\u00A0');\n },\n\n isIdent: function(ch) {\n return ('a' <= ch && ch <= 'z' ||\n 'A' <= ch && ch <= 'Z' ||\n '_' === ch || ch === '$');\n },\n\n isExpOperator: function(ch) {\n return (ch === '-' || ch === '+' || this.isNumber(ch));\n },\n\n throwError: function(error, start, end) {\n end = end || this.index;\n var colStr = (isDefined(start)\n ? 's ' + start + '-' + this.index + ' [' + this.text.substring(start, end) + ']'\n : ' ' + end);\n throw $parseMinErr('lexerr', 'Lexer Error: {0} at column{1} in expression [{2}].',\n error, colStr, this.text);\n },\n\n readNumber: function() {\n var number = '';\n var start = this.index;\n while (this.index < this.text.length) {\n var ch = lowercase(this.text.charAt(this.index));\n if (ch == '.' || this.isNumber(ch)) {\n number += ch;\n } else {\n var peekCh = this.peek();\n if (ch == 'e' && this.isExpOperator(peekCh)) {\n number += ch;\n } else if (this.isExpOperator(ch) &&\n peekCh && this.isNumber(peekCh) &&\n number.charAt(number.length - 1) == 'e') {\n number += ch;\n } else if (this.isExpOperator(ch) &&\n (!peekCh || !this.isNumber(peekCh)) &&\n number.charAt(number.length - 1) == 'e') {\n this.throwError('Invalid exponent');\n } else {\n break;\n }\n }\n this.index++;\n }\n number = 1 * number;\n this.tokens.push({\n index: start,\n text: number,\n literal: true,\n constant: true,\n fn: function() { return number; }\n });\n },\n\n readIdent: function() {\n var parser = this;\n\n var ident = '';\n var start = this.index;\n\n var lastDot, peekIndex, methodName, ch;\n\n while (this.index < this.text.length) {\n ch = this.text.charAt(this.index);\n if (ch === '.' || this.isIdent(ch) || this.isNumber(ch)) {\n if (ch === '.') lastDot = this.index;\n ident += ch;\n } else {\n break;\n }\n this.index++;\n }\n\n //check if this is not a method invocation and if it is back out to last dot\n if (lastDot) {\n peekIndex = this.index;\n while (peekIndex < this.text.length) {\n ch = this.text.charAt(peekIndex);\n if (ch === '(') {\n methodName = ident.substr(lastDot - start + 1);\n ident = ident.substr(0, lastDot - start);\n this.index = peekIndex;\n break;\n }\n if (this.isWhitespace(ch)) {\n peekIndex++;\n } else {\n break;\n }\n }\n }\n\n\n var token = {\n index: start,\n text: ident\n };\n\n // OPERATORS is our own object so we don't need to use special hasOwnPropertyFn\n if (OPERATORS.hasOwnProperty(ident)) {\n token.fn = OPERATORS[ident];\n token.literal = true;\n token.constant = true;\n } else {\n var getter = getterFn(ident, this.options, this.text);\n token.fn = extend(function(self, locals) {\n return (getter(self, locals));\n }, {\n assign: function(self, value) {\n return setter(self, ident, value, parser.text, parser.options);\n }\n });\n }\n\n this.tokens.push(token);\n\n if (methodName) {\n this.tokens.push({\n index:lastDot,\n text: '.'\n });\n this.tokens.push({\n index: lastDot + 1,\n text: methodName\n });\n }\n },\n\n readString: function(quote) {\n var start = this.index;\n this.index++;\n var string = '';\n var rawString = quote;\n var escape = false;\n while (this.index < this.text.length) {\n var ch = this.text.charAt(this.index);\n rawString += ch;\n if (escape) {\n if (ch === 'u') {\n var hex = this.text.substring(this.index + 1, this.index + 5);\n if (!hex.match(/[\\da-f]{4}/i))\n this.throwError('Invalid unicode escape [\\\\u' + hex + ']');\n this.index += 4;\n string += String.fromCharCode(parseInt(hex, 16));\n } else {\n var rep = ESCAPE[ch];\n string = string + (rep || ch);\n }\n escape = false;\n } else if (ch === '\\\\') {\n escape = true;\n } else if (ch === quote) {\n this.index++;\n this.tokens.push({\n index: start,\n text: rawString,\n string: string,\n literal: true,\n constant: true,\n fn: function() { return string; }\n });\n return;\n } else {\n string += ch;\n }\n this.index++;\n }\n this.throwError('Unterminated quote', start);\n }\n};\n\n\n/**\n * @constructor\n */\nvar Parser = function (lexer, $filter, options) {\n this.lexer = lexer;\n this.$filter = $filter;\n this.options = options;\n};\n\nParser.ZERO = extend(function () {\n return 0;\n}, {\n constant: true\n});\n\nParser.prototype = {\n constructor: Parser,\n\n parse: function (text) {\n this.text = text;\n\n this.tokens = this.lexer.lex(text);\n\n var value = this.statements();\n\n if (this.tokens.length !== 0) {\n this.throwError('is an unexpected token', this.tokens[0]);\n }\n\n value.literal = !!value.literal;\n value.constant = !!value.constant;\n\n return value;\n },\n\n primary: function () {\n var primary;\n if (this.expect('(')) {\n primary = this.filterChain();\n this.consume(')');\n } else if (this.expect('[')) {\n primary = this.arrayDeclaration();\n } else if (this.expect('{')) {\n primary = this.object();\n } else {\n var token = this.expect();\n primary = token.fn;\n if (!primary) {\n this.throwError('not a primary expression', token);\n }\n primary.literal = !!token.literal;\n primary.constant = !!token.constant;\n }\n\n var next, context;\n while ((next = this.expect('(', '[', '.'))) {\n if (next.text === '(') {\n primary = this.functionCall(primary, context);\n context = null;\n } else if (next.text === '[') {\n context = primary;\n primary = this.objectIndex(primary);\n } else if (next.text === '.') {\n context = primary;\n primary = this.fieldAccess(primary);\n } else {\n this.throwError('IMPOSSIBLE');\n }\n }\n return primary;\n },\n\n throwError: function(msg, token) {\n throw $parseMinErr('syntax',\n 'Syntax Error: Token \\'{0}\\' {1} at column {2} of the expression [{3}] starting at [{4}].',\n token.text, msg, (token.index + 1), this.text, this.text.substring(token.index));\n },\n\n peekToken: function() {\n if (this.tokens.length === 0)\n throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text);\n return this.tokens[0];\n },\n\n peek: function(e1, e2, e3, e4) {\n if (this.tokens.length > 0) {\n var token = this.tokens[0];\n var t = token.text;\n if (t === e1 || t === e2 || t === e3 || t === e4 ||\n (!e1 && !e2 && !e3 && !e4)) {\n return token;\n }\n }\n return false;\n },\n\n expect: function(e1, e2, e3, e4){\n var token = this.peek(e1, e2, e3, e4);\n if (token) {\n this.tokens.shift();\n return token;\n }\n return false;\n },\n\n consume: function(e1){\n if (!this.expect(e1)) {\n this.throwError('is unexpected, expecting [' + e1 + ']', this.peek());\n }\n },\n\n unaryFn: function(fn, right) {\n return extend(function(self, locals) {\n return fn(self, locals, right);\n }, {\n constant:right.constant\n });\n },\n\n ternaryFn: function(left, middle, right){\n return extend(function(self, locals){\n return left(self, locals) ? middle(self, locals) : right(self, locals);\n }, {\n constant: left.constant && middle.constant && right.constant\n });\n },\n\n binaryFn: function(left, fn, right) {\n return extend(function(self, locals) {\n return fn(self, locals, left, right);\n }, {\n constant:left.constant && right.constant\n });\n },\n\n statements: function() {\n var statements = [];\n while (true) {\n if (this.tokens.length > 0 && !this.peek('}', ')', ';', ']'))\n statements.push(this.filterChain());\n if (!this.expect(';')) {\n // optimize for the common case where there is only one statement.\n // TODO(size): maybe we should not support multiple statements?\n return (statements.length === 1)\n ? statements[0]\n : function(self, locals) {\n var value;\n for (var i = 0; i < statements.length; i++) {\n var statement = statements[i];\n if (statement) {\n value = statement(self, locals);\n }\n }\n return value;\n };\n }\n }\n },\n\n filterChain: function() {\n var left = this.expression();\n var token;\n while (true) {\n if ((token = this.expect('|'))) {\n left = this.binaryFn(left, token.fn, this.filter());\n } else {\n return left;\n }\n }\n },\n\n filter: function() {\n var token = this.expect();\n var fn = this.$filter(token.text);\n var argsFn = [];\n while (true) {\n if ((token = this.expect(':'))) {\n argsFn.push(this.expression());\n } else {\n var fnInvoke = function(self, locals, input) {\n var args = [input];\n for (var i = 0; i < argsFn.length; i++) {\n args.push(argsFn[i](self, locals));\n }\n return fn.apply(self, args);\n };\n return function() {\n return fnInvoke;\n };\n }\n }\n },\n\n expression: function() {\n return this.assignment();\n },\n\n assignment: function() {\n var left = this.ternary();\n var right;\n var token;\n if ((token = this.expect('='))) {\n if (!left.assign) {\n this.throwError('implies assignment but [' +\n this.text.substring(0, token.index) + '] can not be assigned to', token);\n }\n right = this.ternary();\n return function(scope, locals) {\n return left.assign(scope, right(scope, locals), locals);\n };\n }\n return left;\n },\n\n ternary: function() {\n var left = this.logicalOR();\n var middle;\n var token;\n if ((token = this.expect('?'))) {\n middle = this.assignment();\n if ((token = this.expect(':'))) {\n return this.ternaryFn(left, middle, this.assignment());\n } else {\n this.throwError('expected :', token);\n }\n } else {\n return left;\n }\n },\n\n logicalOR: function() {\n var left = this.logicalAND();\n var token;\n while (true) {\n if ((token = this.expect('||'))) {\n left = this.binaryFn(left, token.fn, this.logicalAND());\n } else {\n return left;\n }\n }\n },\n\n logicalAND: function() {\n var left = this.equality();\n var token;\n if ((token = this.expect('&&'))) {\n left = this.binaryFn(left, token.fn, this.logicalAND());\n }\n return left;\n },\n\n equality: function() {\n var left = this.relational();\n var token;\n if ((token = this.expect('==','!=','===','!=='))) {\n left = this.binaryFn(left, token.fn, this.equality());\n }\n return left;\n },\n\n relational: function() {\n var left = this.additive();\n var token;\n if ((token = this.expect('<', '>', '<=', '>='))) {\n left = this.binaryFn(left, token.fn, this.relational());\n }\n return left;\n },\n\n additive: function() {\n var left = this.multiplicative();\n var token;\n while ((token = this.expect('+','-'))) {\n left = this.binaryFn(left, token.fn, this.multiplicative());\n }\n return left;\n },\n\n multiplicative: function() {\n var left = this.unary();\n var token;\n while ((token = this.expect('*','/','%'))) {\n left = this.binaryFn(left, token.fn, this.unary());\n }\n return left;\n },\n\n unary: function() {\n var token;\n if (this.expect('+')) {\n return this.primary();\n } else if ((token = this.expect('-'))) {\n return this.binaryFn(Parser.ZERO, token.fn, this.unary());\n } else if ((token = this.expect('!'))) {\n return this.unaryFn(token.fn, this.unary());\n } else {\n return this.primary();\n }\n },\n\n fieldAccess: function(object) {\n var parser = this;\n var field = this.expect().text;\n var getter = getterFn(field, this.options, this.text);\n\n return extend(function(scope, locals, self) {\n return getter(self || object(scope, locals));\n }, {\n assign: function(scope, value, locals) {\n var o = object(scope, locals);\n if (!o) object.assign(scope, o = {});\n return setter(o, field, value, parser.text, parser.options);\n }\n });\n },\n\n objectIndex: function(obj) {\n var parser = this;\n\n var indexFn = this.expression();\n this.consume(']');\n\n return extend(function(self, locals) {\n var o = obj(self, locals),\n i = indexFn(self, locals),\n v, p;\n\n ensureSafeMemberName(i, parser.text);\n if (!o) return undefined;\n v = ensureSafeObject(o[i], parser.text);\n if (v && v.then && parser.options.unwrapPromises) {\n p = v;\n if (!('$$v' in v)) {\n p.$$v = undefined;\n p.then(function(val) { p.$$v = val; });\n }\n v = v.$$v;\n }\n return v;\n }, {\n assign: function(self, value, locals) {\n var key = ensureSafeMemberName(indexFn(self, locals), parser.text);\n // prevent overwriting of Function.constructor which would break ensureSafeObject check\n var o = ensureSafeObject(obj(self, locals), parser.text);\n if (!o) obj.assign(self, o = {});\n return o[key] = value;\n }\n });\n },\n\n functionCall: function(fn, contextGetter) {\n var argsFn = [];\n if (this.peekToken().text !== ')') {\n do {\n argsFn.push(this.expression());\n } while (this.expect(','));\n }\n this.consume(')');\n\n var parser = this;\n\n return function(scope, locals) {\n var args = [];\n var context = contextGetter ? contextGetter(scope, locals) : scope;\n\n for (var i = 0; i < argsFn.length; i++) {\n args.push(ensureSafeObject(argsFn[i](scope, locals), parser.text));\n }\n var fnPtr = fn(scope, locals, context) || noop;\n\n ensureSafeObject(context, parser.text);\n ensureSafeFunction(fnPtr, parser.text);\n\n // IE doesn't have apply for some native functions\n var v = fnPtr.apply\n ? fnPtr.apply(context, args)\n : fnPtr(args[0], args[1], args[2], args[3], args[4]);\n\n return ensureSafeObject(v, parser.text);\n };\n },\n\n // This is used with json array declaration\n arrayDeclaration: function () {\n var elementFns = [];\n var allConstant = true;\n if (this.peekToken().text !== ']') {\n do {\n if (this.peek(']')) {\n // Support trailing commas per ES5.1.\n break;\n }\n var elementFn = this.expression();\n elementFns.push(elementFn);\n if (!elementFn.constant) {\n allConstant = false;\n }\n } while (this.expect(','));\n }\n this.consume(']');\n\n return extend(function(self, locals) {\n var array = [];\n for (var i = 0; i < elementFns.length; i++) {\n array.push(elementFns[i](self, locals));\n }\n return array;\n }, {\n literal: true,\n constant: allConstant\n });\n },\n\n object: function () {\n var keyValues = [];\n var allConstant = true;\n if (this.peekToken().text !== '}') {\n do {\n if (this.peek('}')) {\n // Support trailing commas per ES5.1.\n break;\n }\n var token = this.expect(),\n key = token.string || token.text;\n this.consume(':');\n var value = this.expression();\n keyValues.push({key: key, value: value});\n if (!value.constant) {\n allConstant = false;\n }\n } while (this.expect(','));\n }\n this.consume('}');\n\n return extend(function(self, locals) {\n var object = {};\n for (var i = 0; i < keyValues.length; i++) {\n var keyValue = keyValues[i];\n object[keyValue.key] = keyValue.value(self, locals);\n }\n return object;\n }, {\n literal: true,\n constant: allConstant\n });\n }\n};\n\n\n//////////////////////////////////////////////////\n// Parser helper functions\n//////////////////////////////////////////////////\n\nfunction setter(obj, path, setValue, fullExp, options) {\n ensureSafeObject(obj, fullExp);\n\n //needed?\n options = options || {};\n\n var element = path.split('.'), key;\n for (var i = 0; element.length > 1; i++) {\n key = ensureSafeMemberName(element.shift(), fullExp);\n var propertyObj = ensureSafeObject(obj[key], fullExp);\n if (!propertyObj) {\n propertyObj = {};\n obj[key] = propertyObj;\n }\n obj = propertyObj;\n if (obj.then && options.unwrapPromises) {\n promiseWarning(fullExp);\n if (!(\"$$v\" in obj)) {\n (function(promise) {\n promise.then(function(val) { promise.$$v = val; }); }\n )(obj);\n }\n if (obj.$$v === undefined) {\n obj.$$v = {};\n }\n obj = obj.$$v;\n }\n }\n key = ensureSafeMemberName(element.shift(), fullExp);\n ensureSafeObject(obj[key], fullExp);\n obj[key] = setValue;\n return setValue;\n}\n\nvar getterFnCacheDefault = {};\nvar getterFnCacheExpensive = {};\n\nfunction isPossiblyDangerousMemberName(name) {\n return name == 'constructor';\n}\n\n/**\n * Implementation of the \"Black Hole\" variant from:\n * - http://jsperf.com/angularjs-parse-getter/4\n * - http://jsperf.com/path-evaluation-simplified/7\n */\nfunction cspSafeGetterFn(key0, key1, key2, key3, key4, fullExp, options) {\n ensureSafeMemberName(key0, fullExp);\n ensureSafeMemberName(key1, fullExp);\n ensureSafeMemberName(key2, fullExp);\n ensureSafeMemberName(key3, fullExp);\n ensureSafeMemberName(key4, fullExp);\n var eso = function(o) {\n return ensureSafeObject(o, fullExp);\n };\n var expensiveChecks = options.expensiveChecks;\n var eso0 = (expensiveChecks || isPossiblyDangerousMemberName(key0)) ? eso : identity;\n var eso1 = (expensiveChecks || isPossiblyDangerousMemberName(key1)) ? eso : identity;\n var eso2 = (expensiveChecks || isPossiblyDangerousMemberName(key2)) ? eso : identity;\n var eso3 = (expensiveChecks || isPossiblyDangerousMemberName(key3)) ? eso : identity;\n var eso4 = (expensiveChecks || isPossiblyDangerousMemberName(key4)) ? eso : identity;\n\n return !options.unwrapPromises\n ? function cspSafeGetter(scope, locals) {\n var pathVal = (locals && locals.hasOwnProperty(key0)) ? locals : scope;\n\n if (pathVal == null) return pathVal;\n pathVal = eso0(pathVal[key0]);\n\n if (!key1) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso1(pathVal[key1]);\n\n if (!key2) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso2(pathVal[key2]);\n\n if (!key3) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso3(pathVal[key3]);\n\n if (!key4) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso4(pathVal[key4]);\n\n return pathVal;\n }\n : function cspSafePromiseEnabledGetter(scope, locals) {\n var pathVal = (locals && locals.hasOwnProperty(key0)) ? locals : scope,\n promise;\n\n if (pathVal == null) return pathVal;\n\n pathVal = eso0(pathVal[key0]);\n if (pathVal && pathVal.then) {\n promiseWarning(fullExp);\n if (!(\"$$v\" in pathVal)) {\n promise = pathVal;\n promise.$$v = undefined;\n promise.then(function(val) { promise.$$v = eso0(val); });\n }\n pathVal = eso0(pathVal.$$v);\n }\n\n if (!key1) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso1(pathVal[key1]);\n if (pathVal && pathVal.then) {\n promiseWarning(fullExp);\n if (!(\"$$v\" in pathVal)) {\n promise = pathVal;\n promise.$$v = undefined;\n promise.then(function(val) { promise.$$v = eso1(val); });\n }\n pathVal = eso1(pathVal.$$v);\n }\n\n if (!key2) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso2(pathVal[key2]);\n if (pathVal && pathVal.then) {\n promiseWarning(fullExp);\n if (!(\"$$v\" in pathVal)) {\n promise = pathVal;\n promise.$$v = undefined;\n promise.then(function(val) { promise.$$v = eso2(val); });\n }\n pathVal = eso2(pathVal.$$v);\n }\n\n if (!key3) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso3(pathVal[key3]);\n if (pathVal && pathVal.then) {\n promiseWarning(fullExp);\n if (!(\"$$v\" in pathVal)) {\n promise = pathVal;\n promise.$$v = undefined;\n promise.then(function(val) { promise.$$v = eso3(val); });\n }\n pathVal = eso3(pathVal.$$v);\n }\n\n if (!key4) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso4(pathVal[key4]);\n if (pathVal && pathVal.then) {\n promiseWarning(fullExp);\n if (!(\"$$v\" in pathVal)) {\n promise = pathVal;\n promise.$$v = undefined;\n promise.then(function(val) { promise.$$v = eso4(val); });\n }\n pathVal = eso4(pathVal.$$v);\n }\n return pathVal;\n };\n}\n\nfunction getterFnWithExtraArgs(fn, fullExpression) {\n return function(s, l) {\n return fn(s, l, promiseWarning, ensureSafeObject, fullExpression);\n };\n}\n\nfunction getterFn(path, options, fullExp) {\n var expensiveChecks = options.expensiveChecks;\n var getterFnCache = (expensiveChecks ? getterFnCacheExpensive : getterFnCacheDefault);\n // Check whether the cache has this getter already.\n // We can use hasOwnProperty directly on the cache because we ensure,\n // see below, that the cache never stores a path called 'hasOwnProperty'\n if (getterFnCache.hasOwnProperty(path)) {\n return getterFnCache[path];\n }\n\n var pathKeys = path.split('.'),\n pathKeysLength = pathKeys.length,\n fn;\n\n // http://jsperf.com/angularjs-parse-getter/6\n if (options.csp) {\n if (pathKeysLength < 6) {\n fn = cspSafeGetterFn(pathKeys[0], pathKeys[1], pathKeys[2], pathKeys[3], pathKeys[4], fullExp,\n options);\n } else {\n fn = function(scope, locals) {\n var i = 0, val;\n do {\n val = cspSafeGetterFn(pathKeys[i++], pathKeys[i++], pathKeys[i++], pathKeys[i++],\n pathKeys[i++], fullExp, options)(scope, locals);\n\n locals = undefined; // clear after first iteration\n scope = val;\n } while (i < pathKeysLength);\n return val;\n };\n }\n } else {\n var code = 'var p;\\n';\n if (expensiveChecks) {\n code += 's = eso(s, fe);\\nl = eso(l, fe);\\n';\n }\n var needsEnsureSafeObject = expensiveChecks;\n forEach(pathKeys, function(key, index) {\n ensureSafeMemberName(key, fullExp);\n var lookupJs = (index\n // we simply dereference 's' on any .dot notation\n ? 's'\n // but if we are first then we check locals first, and if so read it first\n : '((l&&l.hasOwnProperty(\"' + key + '\"))?l:s)') + '[\"' + key + '\"]';\n var wrapWithEso = expensiveChecks || isPossiblyDangerousMemberName(key);\n if (wrapWithEso) {\n lookupJs = 'eso(' + lookupJs + ', fe)';\n needsEnsureSafeObject = true;\n }\n code += 'if(s == null) return undefined;\\n' +\n 's=' + lookupJs + ';\\n';\n if (options.unwrapPromises) {\n code += 'if (s && s.then) {\\n' +\n ' pw(\"' + fullExp.replace(/([\"\\r\\n])/g, '\\\\$1') + '\");\\n' +\n ' if (!(\"$$v\" in s)) {\\n' +\n ' p=s;\\n' +\n ' p.$$v = undefined;\\n' +\n ' p.then(function(v) {p.$$v=' + (wrapWithEso ? 'eso(v)' : 'v') + ';});\\n' +\n '}\\n' +\n ' s=' + (wrapWithEso ? 'eso(s.$$v)' : 's.$$v') + '\\n' +\n '}\\n';\n\n }\n });\n code += 'return s;';\n\n /* jshint -W054 */\n // s=scope, l=locals, pw=promiseWarning, eso=ensureSafeObject, fe=fullExpression\n var evaledFnGetter = new Function('s', 'l', 'pw', 'eso', 'fe', code);\n /* jshint +W054 */\n evaledFnGetter.toString = valueFn(code);\n if (needsEnsureSafeObject || options.unwrapPromises) {\n evaledFnGetter = getterFnWithExtraArgs(evaledFnGetter, fullExp);\n }\n fn = evaledFnGetter;\n }\n\n // Only cache the value if it's not going to mess up the cache object\n // This is more performant that using Object.prototype.hasOwnProperty.call\n if (path !== 'hasOwnProperty') {\n getterFnCache[path] = fn;\n }\n return fn;\n}\n\n///////////////////////////////////\n\n/**\n * @ngdoc service\n * @name $parse\n * @kind function\n *\n * @description\n *\n * Converts Angular {@link guide/expression expression} into a function.\n *\n * ```js\n * var getter = $parse('user.name');\n * var setter = getter.assign;\n * var context = {user:{name:'angular'}};\n * var locals = {user:{name:'local'}};\n *\n * expect(getter(context)).toEqual('angular');\n * setter(context, 'newValue');\n * expect(context.user.name).toEqual('newValue');\n * expect(getter(context, locals)).toEqual('local');\n * ```\n *\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n *\n * The returned function also has the following properties:\n * * `literal` – `{boolean}` – whether the expression's top-level node is a JavaScript\n * literal.\n * * `constant` – `{boolean}` – whether the expression is made entirely of JavaScript\n * constant literals.\n * * `assign` – `{?function(context, value)}` – if the expression is assignable, this will be\n * set to a function to change its value on the given context.\n *\n */\n\n\n/**\n * @ngdoc provider\n * @name $parseProvider\n * @kind function\n *\n * @description\n * `$parseProvider` can be used for configuring the default behavior of the {@link ng.$parse $parse}\n * service.\n */\nfunction $ParseProvider() {\n var cacheDefault = {};\n var cacheExpensive = {};\n\n var $parseOptions = {\n csp: false,\n unwrapPromises: false,\n logPromiseWarnings: true,\n expensiveChecks: false\n };\n\n\n /**\n * @deprecated Promise unwrapping via $parse is deprecated and will be removed in the future.\n *\n * @ngdoc method\n * @name $parseProvider#unwrapPromises\n * @description\n *\n * **This feature is deprecated, see deprecation notes below for more info**\n *\n * If set to true (default is false), $parse will unwrap promises automatically when a promise is\n * found at any part of the expression. In other words, if set to true, the expression will always\n * result in a non-promise value.\n *\n * While the promise is unresolved, it's treated as undefined, but once resolved and fulfilled,\n * the fulfillment value is used in place of the promise while evaluating the expression.\n *\n * **Deprecation notice**\n *\n * This is a feature that didn't prove to be wildly useful or popular, primarily because of the\n * dichotomy between data access in templates (accessed as raw values) and controller code\n * (accessed as promises).\n *\n * In most code we ended up resolving promises manually in controllers anyway and thus unifying\n * the model access there.\n *\n * Other downsides of automatic promise unwrapping:\n *\n * - when building components it's often desirable to receive the raw promises\n * - adds complexity and slows down expression evaluation\n * - makes expression code pre-generation unattractive due to the amount of code that needs to be\n * generated\n * - makes IDE auto-completion and tool support hard\n *\n * **Warning Logs**\n *\n * If the unwrapping is enabled, Angular will log a warning about each expression that unwraps a\n * promise (to reduce the noise, each expression is logged only once). To disable this logging use\n * `$parseProvider.logPromiseWarnings(false)` api.\n *\n *\n * @param {boolean=} value New value.\n * @returns {boolean|self} Returns the current setting when used as getter and self if used as\n * setter.\n */\n this.unwrapPromises = function(value) {\n if (isDefined(value)) {\n $parseOptions.unwrapPromises = !!value;\n return this;\n } else {\n return $parseOptions.unwrapPromises;\n }\n };\n\n\n /**\n * @deprecated Promise unwrapping via $parse is deprecated and will be removed in the future.\n *\n * @ngdoc method\n * @name $parseProvider#logPromiseWarnings\n * @description\n *\n * Controls whether Angular should log a warning on any encounter of a promise in an expression.\n *\n * The default is set to `true`.\n *\n * This setting applies only if `$parseProvider.unwrapPromises` setting is set to true as well.\n *\n * @param {boolean=} value New value.\n * @returns {boolean|self} Returns the current setting when used as getter and self if used as\n * setter.\n */\n this.logPromiseWarnings = function(value) {\n if (isDefined(value)) {\n $parseOptions.logPromiseWarnings = value;\n return this;\n } else {\n return $parseOptions.logPromiseWarnings;\n }\n };\n\n\n this.$get = ['$filter', '$sniffer', '$log', function($filter, $sniffer, $log) {\n $parseOptions.csp = $sniffer.csp;\n var $parseOptionsExpensive = {\n csp: $parseOptions.csp,\n unwrapPromises: $parseOptions.unwrapPromises,\n logPromiseWarnings: $parseOptions.logPromiseWarnings,\n expensiveChecks: true\n };\n\n promiseWarning = function promiseWarningFn(fullExp) {\n if (!$parseOptions.logPromiseWarnings || promiseWarningCache.hasOwnProperty(fullExp)) return;\n promiseWarningCache[fullExp] = true;\n $log.warn('[$parse] Promise found in the expression `' + fullExp + '`. ' +\n 'Automatic unwrapping of promises in Angular expressions is deprecated.');\n };\n\n return function(exp, expensiveChecks) {\n var parsedExpression;\n\n switch (typeof exp) {\n case 'string':\n\n var cache = (expensiveChecks ? cacheExpensive : cacheDefault);\n if (cache.hasOwnProperty(exp)) {\n return cache[exp];\n }\n\n var parseOptions = expensiveChecks ? $parseOptionsExpensive : $parseOptions;\n var lexer = new Lexer(parseOptions);\n var parser = new Parser(lexer, $filter, parseOptions);\n parsedExpression = parser.parse(exp);\n\n if (exp !== 'hasOwnProperty') {\n // Only cache the value if it's not going to mess up the cache object\n // This is more performant that using Object.prototype.hasOwnProperty.call\n cache[exp] = parsedExpression;\n }\n\n return parsedExpression;\n\n case 'function':\n return exp;\n\n default:\n return noop;\n }\n };\n }];\n}\n\n/**\n * @ngdoc service\n * @name $q\n * @requires $rootScope\n *\n * @description\n * A service that helps you run functions asynchronously, and use their return values (or exceptions)\n * when they are done processing.\n *\n * This is an implementation of promises/deferred objects inspired by\n * [Kris Kowal's Q](https://github.com/kriskowal/q).\n *\n * [The CommonJS Promise proposal](http://wiki.commonjs.org/wiki/Promises) describes a promise as an\n * interface for interacting with an object that represents the result of an action that is\n * performed asynchronously, and may or may not be finished at any given point in time.\n *\n * From the perspective of dealing with error handling, deferred and promise APIs are to\n * asynchronous programming what `try`, `catch` and `throw` keywords are to synchronous programming.\n *\n * ```js\n * // for the purpose of this example let's assume that variables `$q`, `scope` and `okToGreet`\n * // are available in the current lexical scope (they could have been injected or passed in).\n *\n * function asyncGreet(name) {\n * var deferred = $q.defer();\n *\n * setTimeout(function() {\n * deferred.notify('About to greet ' + name + '.');\n *\n * if (okToGreet(name)) {\n * deferred.resolve('Hello, ' + name + '!');\n * } else {\n * deferred.reject('Greeting ' + name + ' is not allowed.');\n * }\n * }, 1000);\n *\n * return deferred.promise;\n * }\n *\n * var promise = asyncGreet('Robin Hood');\n * promise.then(function(greeting) {\n * alert('Success: ' + greeting);\n * }, function(reason) {\n * alert('Failed: ' + reason);\n * }, function(update) {\n * alert('Got notification: ' + update);\n * });\n * ```\n *\n * At first it might not be obvious why this extra complexity is worth the trouble. The payoff\n * comes in the way of guarantees that promise and deferred APIs make, see\n * https://github.com/kriskowal/uncommonjs/blob/master/promises/specification.md.\n *\n * Additionally the promise api allows for composition that is very hard to do with the\n * traditional callback ([CPS](http://en.wikipedia.org/wiki/Continuation-passing_style)) approach.\n * For more on this please see the [Q documentation](https://github.com/kriskowal/q) especially the\n * section on serial or parallel joining of promises.\n *\n *\n * # The Deferred API\n *\n * A new instance of deferred is constructed by calling `$q.defer()`.\n *\n * The purpose of the deferred object is to expose the associated Promise instance as well as APIs\n * that can be used for signaling the successful or unsuccessful completion, as well as the status\n * of the task.\n *\n * **Methods**\n *\n * - `resolve(value)` – resolves the derived promise with the `value`. If the value is a rejection\n * constructed via `$q.reject`, the promise will be rejected instead.\n * - `reject(reason)` – rejects the derived promise with the `reason`. This is equivalent to\n * resolving it with a rejection constructed via `$q.reject`.\n * - `notify(value)` - provides updates on the status of the promise's execution. This may be called\n * multiple times before the promise is either resolved or rejected.\n *\n * **Properties**\n *\n * - promise – `{Promise}` – promise object associated with this deferred.\n *\n *\n * # The Promise API\n *\n * A new promise instance is created when a deferred instance is created and can be retrieved by\n * calling `deferred.promise`.\n *\n * The purpose of the promise object is to allow for interested parties to get access to the result\n * of the deferred task when it completes.\n *\n * **Methods**\n *\n * - `then(successCallback, errorCallback, notifyCallback)` – regardless of when the promise was or\n * will be resolved or rejected, `then` calls one of the success or error callbacks asynchronously\n * as soon as the result is available. The callbacks are called with a single argument: the result\n * or rejection reason. Additionally, the notify callback may be called zero or more times to\n * provide a progress indication, before the promise is resolved or rejected.\n *\n * This method *returns a new promise* which is resolved or rejected via the return value of the\n * `successCallback`, `errorCallback`. It also notifies via the return value of the\n * `notifyCallback` method. The promise can not be resolved or rejected from the notifyCallback\n * method.\n *\n * - `catch(errorCallback)` – shorthand for `promise.then(null, errorCallback)`\n *\n * Because `catch` is a reserved word in JavaScript and reserved keywords are not supported as\n * property names by ES3, you'll need to invoke the method like `promise['catch'](callback)` or\n * `promise.then(null, errorCallback)` to make your code IE8 and Android 2.x compatible.\n *\n * - `finally(callback)` – allows you to observe either the fulfillment or rejection of a promise,\n * but to do so without modifying the final value. This is useful to release resources or do some\n * clean-up that needs to be done whether the promise was rejected or resolved. See the [full\n * specification](https://github.com/kriskowal/q/wiki/API-Reference#promisefinallycallback) for\n * more information.\n *\n * Because `finally` is a reserved word in JavaScript and reserved keywords are not supported as\n * property names by ES3, you'll need to invoke the method like `promise['finally'](callback)` to\n * make your code IE8 and Android 2.x compatible.\n *\n * # Chaining promises\n *\n * Because calling the `then` method of a promise returns a new derived promise, it is easily\n * possible to create a chain of promises:\n *\n * ```js\n * promiseB = promiseA.then(function(result) {\n * return result + 1;\n * });\n *\n * // promiseB will be resolved immediately after promiseA is resolved and its value\n * // will be the result of promiseA incremented by 1\n * ```\n *\n * It is possible to create chains of any length and since a promise can be resolved with another\n * promise (which will defer its resolution further), it is possible to pause/defer resolution of\n * the promises at any point in the chain. This makes it possible to implement powerful APIs like\n * $http's response interceptors.\n *\n *\n * # Differences between Kris Kowal's Q and $q\n *\n * There are two main differences:\n *\n * - $q is integrated with the {@link ng.$rootScope.Scope} Scope model observation\n * mechanism in angular, which means faster propagation of resolution or rejection into your\n * models and avoiding unnecessary browser repaints, which would result in flickering UI.\n * - Q has many more features than $q, but that comes at a cost of bytes. $q is tiny, but contains\n * all the important functionality needed for common async tasks.\n *\n * # Testing\n *\n * ```js\n * it('should simulate promise', inject(function($q, $rootScope) {\n * var deferred = $q.defer();\n * var promise = deferred.promise;\n * var resolvedValue;\n *\n * promise.then(function(value) { resolvedValue = value; });\n * expect(resolvedValue).toBeUndefined();\n *\n * // Simulate resolving of promise\n * deferred.resolve(123);\n * // Note that the 'then' function does not get called synchronously.\n * // This is because we want the promise API to always be async, whether or not\n * // it got called synchronously or asynchronously.\n * expect(resolvedValue).toBeUndefined();\n *\n * // Propagate promise resolution to 'then' functions using $apply().\n * $rootScope.$apply();\n * expect(resolvedValue).toEqual(123);\n * }));\n * ```\n */\nfunction $QProvider() {\n\n this.$get = ['$rootScope', '$exceptionHandler', function($rootScope, $exceptionHandler) {\n return qFactory(function(callback) {\n $rootScope.$evalAsync(callback);\n }, $exceptionHandler);\n }];\n}\n\n\n/**\n * Constructs a promise manager.\n *\n * @param {function(Function)} nextTick Function for executing functions in the next turn.\n * @param {function(...*)} exceptionHandler Function into which unexpected exceptions are passed for\n * debugging purposes.\n * @returns {object} Promise manager.\n */\nfunction qFactory(nextTick, exceptionHandler) {\n\n /**\n * @ngdoc method\n * @name $q#defer\n * @kind function\n *\n * @description\n * Creates a `Deferred` object which represents a task which will finish in the future.\n *\n * @returns {Deferred} Returns a new instance of deferred.\n */\n var defer = function() {\n var pending = [],\n value, deferred;\n\n deferred = {\n\n resolve: function(val) {\n if (pending) {\n var callbacks = pending;\n pending = undefined;\n value = ref(val);\n\n if (callbacks.length) {\n nextTick(function() {\n var callback;\n for (var i = 0, ii = callbacks.length; i < ii; i++) {\n callback = callbacks[i];\n value.then(callback[0], callback[1], callback[2]);\n }\n });\n }\n }\n },\n\n\n reject: function(reason) {\n deferred.resolve(createInternalRejectedPromise(reason));\n },\n\n\n notify: function(progress) {\n if (pending) {\n var callbacks = pending;\n\n if (pending.length) {\n nextTick(function() {\n var callback;\n for (var i = 0, ii = callbacks.length; i < ii; i++) {\n callback = callbacks[i];\n callback[2](progress);\n }\n });\n }\n }\n },\n\n\n promise: {\n then: function(callback, errback, progressback) {\n var result = defer();\n\n var wrappedCallback = function(value) {\n try {\n result.resolve((isFunction(callback) ? callback : defaultCallback)(value));\n } catch(e) {\n result.reject(e);\n exceptionHandler(e);\n }\n };\n\n var wrappedErrback = function(reason) {\n try {\n result.resolve((isFunction(errback) ? errback : defaultErrback)(reason));\n } catch(e) {\n result.reject(e);\n exceptionHandler(e);\n }\n };\n\n var wrappedProgressback = function(progress) {\n try {\n result.notify((isFunction(progressback) ? progressback : defaultCallback)(progress));\n } catch(e) {\n exceptionHandler(e);\n }\n };\n\n if (pending) {\n pending.push([wrappedCallback, wrappedErrback, wrappedProgressback]);\n } else {\n value.then(wrappedCallback, wrappedErrback, wrappedProgressback);\n }\n\n return result.promise;\n },\n\n \"catch\": function(callback) {\n return this.then(null, callback);\n },\n\n \"finally\": function(callback) {\n\n function makePromise(value, resolved) {\n var result = defer();\n if (resolved) {\n result.resolve(value);\n } else {\n result.reject(value);\n }\n return result.promise;\n }\n\n function handleCallback(value, isResolved) {\n var callbackOutput = null;\n try {\n callbackOutput = (callback ||defaultCallback)();\n } catch(e) {\n return makePromise(e, false);\n }\n if (isPromiseLike(callbackOutput)) {\n return callbackOutput.then(function() {\n return makePromise(value, isResolved);\n }, function(error) {\n return makePromise(error, false);\n });\n } else {\n return makePromise(value, isResolved);\n }\n }\n\n return this.then(function(value) {\n return handleCallback(value, true);\n }, function(error) {\n return handleCallback(error, false);\n });\n }\n }\n };\n\n return deferred;\n };\n\n\n var ref = function(value) {\n if (isPromiseLike(value)) return value;\n return {\n then: function(callback) {\n var result = defer();\n nextTick(function() {\n result.resolve(callback(value));\n });\n return result.promise;\n }\n };\n };\n\n\n /**\n * @ngdoc method\n * @name $q#reject\n * @kind function\n *\n * @description\n * Creates a promise that is resolved as rejected with the specified `reason`. This api should be\n * used to forward rejection in a chain of promises. If you are dealing with the last promise in\n * a promise chain, you don't need to worry about it.\n *\n * When comparing deferreds/promises to the familiar behavior of try/catch/throw, think of\n * `reject` as the `throw` keyword in JavaScript. This also means that if you \"catch\" an error via\n * a promise error callback and you want to forward the error to the promise derived from the\n * current promise, you have to \"rethrow\" the error by returning a rejection constructed via\n * `reject`.\n *\n * ```js\n * promiseB = promiseA.then(function(result) {\n * // success: do something and resolve promiseB\n * // with the old or a new result\n * return result;\n * }, function(reason) {\n * // error: handle the error if possible and\n * // resolve promiseB with newPromiseOrValue,\n * // otherwise forward the rejection to promiseB\n * if (canHandle(reason)) {\n * // handle the error and recover\n * return newPromiseOrValue;\n * }\n * return $q.reject(reason);\n * });\n * ```\n *\n * @param {*} reason Constant, message, exception or an object representing the rejection reason.\n * @returns {Promise} Returns a promise that was already resolved as rejected with the `reason`.\n */\n var reject = function(reason) {\n var result = defer();\n result.reject(reason);\n return result.promise;\n };\n\n var createInternalRejectedPromise = function(reason) {\n return {\n then: function(callback, errback) {\n var result = defer();\n nextTick(function() {\n try {\n result.resolve((isFunction(errback) ? errback : defaultErrback)(reason));\n } catch(e) {\n result.reject(e);\n exceptionHandler(e);\n }\n });\n return result.promise;\n }\n };\n };\n\n\n /**\n * @ngdoc method\n * @name $q#when\n * @kind function\n *\n * @description\n * Wraps an object that might be a value or a (3rd party) then-able promise into a $q promise.\n * This is useful when you are dealing with an object that might or might not be a promise, or if\n * the promise comes from a source that can't be trusted.\n *\n * @param {*} value Value or a promise\n * @returns {Promise} Returns a promise of the passed value or promise\n */\n var when = function(value, callback, errback, progressback) {\n var result = defer(),\n done;\n\n var wrappedCallback = function(value) {\n try {\n return (isFunction(callback) ? callback : defaultCallback)(value);\n } catch (e) {\n exceptionHandler(e);\n return reject(e);\n }\n };\n\n var wrappedErrback = function(reason) {\n try {\n return (isFunction(errback) ? errback : defaultErrback)(reason);\n } catch (e) {\n exceptionHandler(e);\n return reject(e);\n }\n };\n\n var wrappedProgressback = function(progress) {\n try {\n return (isFunction(progressback) ? progressback : defaultCallback)(progress);\n } catch (e) {\n exceptionHandler(e);\n }\n };\n\n nextTick(function() {\n ref(value).then(function(value) {\n if (done) return;\n done = true;\n result.resolve(ref(value).then(wrappedCallback, wrappedErrback, wrappedProgressback));\n }, function(reason) {\n if (done) return;\n done = true;\n result.resolve(wrappedErrback(reason));\n }, function(progress) {\n if (done) return;\n result.notify(wrappedProgressback(progress));\n });\n });\n\n return result.promise;\n };\n\n\n function defaultCallback(value) {\n return value;\n }\n\n\n function defaultErrback(reason) {\n return reject(reason);\n }\n\n\n /**\n * @ngdoc method\n * @name $q#all\n * @kind function\n *\n * @description\n * Combines multiple promises into a single promise that is resolved when all of the input\n * promises are resolved.\n *\n * @param {Array.|Object.} promises An array or hash of promises.\n * @returns {Promise} Returns a single promise that will be resolved with an array/hash of values,\n * each value corresponding to the promise at the same index/key in the `promises` array/hash.\n * If any of the promises is resolved with a rejection, this resulting promise will be rejected\n * with the same rejection value.\n */\n function all(promises) {\n var deferred = defer(),\n counter = 0,\n results = isArray(promises) ? [] : {};\n\n forEach(promises, function(promise, key) {\n counter++;\n ref(promise).then(function(value) {\n if (results.hasOwnProperty(key)) return;\n results[key] = value;\n if (!(--counter)) deferred.resolve(results);\n }, function(reason) {\n if (results.hasOwnProperty(key)) return;\n deferred.reject(reason);\n });\n });\n\n if (counter === 0) {\n deferred.resolve(results);\n }\n\n return deferred.promise;\n }\n\n return {\n defer: defer,\n reject: reject,\n when: when,\n all: all\n };\n}\n\nfunction $$RAFProvider(){ //rAF\n this.$get = ['$window', '$timeout', function($window, $timeout) {\n var requestAnimationFrame = $window.requestAnimationFrame ||\n $window.webkitRequestAnimationFrame ||\n $window.mozRequestAnimationFrame;\n\n var cancelAnimationFrame = $window.cancelAnimationFrame ||\n $window.webkitCancelAnimationFrame ||\n $window.mozCancelAnimationFrame ||\n $window.webkitCancelRequestAnimationFrame;\n\n var rafSupported = !!requestAnimationFrame;\n var raf = rafSupported\n ? function(fn) {\n var id = requestAnimationFrame(fn);\n return function() {\n cancelAnimationFrame(id);\n };\n }\n : function(fn) {\n var timer = $timeout(fn, 16.66, false); // 1000 / 60 = 16.666\n return function() {\n $timeout.cancel(timer);\n };\n };\n\n raf.supported = rafSupported;\n\n return raf;\n }];\n}\n\n/**\n * DESIGN NOTES\n *\n * The design decisions behind the scope are heavily favored for speed and memory consumption.\n *\n * The typical use of scope is to watch the expressions, which most of the time return the same\n * value as last time so we optimize the operation.\n *\n * Closures construction is expensive in terms of speed as well as memory:\n * - No closures, instead use prototypical inheritance for API\n * - Internal state needs to be stored on scope directly, which means that private state is\n * exposed as $$____ properties\n *\n * Loop operations are optimized by using while(count--) { ... }\n * - this means that in order to keep the same order of execution as addition we have to add\n * items to the array at the beginning (unshift) instead of at the end (push)\n *\n * Child scopes are created and removed often\n * - Using an array would be slow since inserts in middle are expensive so we use linked list\n *\n * There are few watches then a lot of observers. This is why you don't want the observer to be\n * implemented in the same way as watch. Watch requires return of initialization function which\n * are expensive to construct.\n */\n\n\n/**\n * @ngdoc provider\n * @name $rootScopeProvider\n * @description\n *\n * Provider for the $rootScope service.\n */\n\n/**\n * @ngdoc method\n * @name $rootScopeProvider#digestTtl\n * @description\n *\n * Sets the number of `$digest` iterations the scope should attempt to execute before giving up and\n * assuming that the model is unstable.\n *\n * The current default is 10 iterations.\n *\n * In complex applications it's possible that the dependencies between `$watch`s will result in\n * several digest iterations. However if an application needs more than the default 10 digest\n * iterations for its model to stabilize then you should investigate what is causing the model to\n * continuously change during the digest.\n *\n * Increasing the TTL could have performance implications, so you should not change it without\n * proper justification.\n *\n * @param {number} limit The number of digest iterations.\n */\n\n\n/**\n * @ngdoc service\n * @name $rootScope\n * @description\n *\n * Every application has a single root {@link ng.$rootScope.Scope scope}.\n * All other scopes are descendant scopes of the root scope. Scopes provide separation\n * between the model and the view, via a mechanism for watching the model for changes.\n * They also provide an event emission/broadcast and subscription facility. See the\n * {@link guide/scope developer guide on scopes}.\n */\nfunction $RootScopeProvider(){\n var TTL = 10;\n var $rootScopeMinErr = minErr('$rootScope');\n var lastDirtyWatch = null;\n\n this.digestTtl = function(value) {\n if (arguments.length) {\n TTL = value;\n }\n return TTL;\n };\n\n this.$get = ['$injector', '$exceptionHandler', '$parse', '$browser',\n function( $injector, $exceptionHandler, $parse, $browser) {\n\n /**\n * @ngdoc type\n * @name $rootScope.Scope\n *\n * @description\n * A root scope can be retrieved using the {@link ng.$rootScope $rootScope} key from the\n * {@link auto.$injector $injector}. Child scopes are created using the\n * {@link ng.$rootScope.Scope#$new $new()} method. (Most scopes are created automatically when\n * compiled HTML template is executed.)\n *\n * Here is a simple scope snippet to show how you can interact with the scope.\n * ```html\n * \n * ```\n *\n * # Inheritance\n * A scope can inherit from a parent scope, as in this example:\n * ```js\n var parent = $rootScope;\n var child = parent.$new();\n\n parent.salutation = \"Hello\";\n child.name = \"World\";\n expect(child.salutation).toEqual('Hello');\n\n child.salutation = \"Welcome\";\n expect(child.salutation).toEqual('Welcome');\n expect(parent.salutation).toEqual('Hello');\n * ```\n *\n *\n * @param {Object.=} providers Map of service factory which need to be\n * provided for the current scope. Defaults to {@link ng}.\n * @param {Object.=} instanceCache Provides pre-instantiated services which should\n * append/override services provided by `providers`. This is handy\n * when unit-testing and having the need to override a default\n * service.\n * @returns {Object} Newly created scope.\n *\n */\n function Scope() {\n this.$id = nextUid();\n this.$$phase = this.$parent = this.$$watchers =\n this.$$nextSibling = this.$$prevSibling =\n this.$$childHead = this.$$childTail = null;\n this['this'] = this.$root = this;\n this.$$destroyed = false;\n this.$$asyncQueue = [];\n this.$$postDigestQueue = [];\n this.$$listeners = {};\n this.$$listenerCount = {};\n this.$$isolateBindings = {};\n }\n\n /**\n * @ngdoc property\n * @name $rootScope.Scope#$id\n *\n * @description\n * Unique scope ID (monotonically increasing) useful for debugging.\n */\n\n /**\n * @ngdoc property\n * @name $rootScope.Scope#$parent\n *\n * @description\n * Reference to the parent scope.\n */\n\n /**\n * @ngdoc property\n * @name $rootScope.Scope#$root\n *\n * @description\n * Reference to the root scope.\n */\n\n Scope.prototype = {\n constructor: Scope,\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$new\n * @kind function\n *\n * @description\n * Creates a new child {@link ng.$rootScope.Scope scope}.\n *\n * The parent scope will propagate the {@link ng.$rootScope.Scope#$digest $digest()} event.\n * The scope can be removed from the scope hierarchy using {@link ng.$rootScope.Scope#$destroy $destroy()}.\n *\n * {@link ng.$rootScope.Scope#$destroy $destroy()} must be called on a scope when it is\n * desired for the scope and its child scopes to be permanently detached from the parent and\n * thus stop participating in model change detection and listener notification by invoking.\n *\n * @param {boolean} isolate If true, then the scope does not prototypically inherit from the\n * parent scope. The scope is isolated, as it can not see parent scope properties.\n * When creating widgets, it is useful for the widget to not accidentally read parent\n * state.\n *\n * @returns {Object} The newly created child scope.\n *\n */\n $new: function(isolate) {\n var ChildScope,\n child;\n\n if (isolate) {\n child = new Scope();\n child.$root = this.$root;\n // ensure that there is just one async queue per $rootScope and its children\n child.$$asyncQueue = this.$$asyncQueue;\n child.$$postDigestQueue = this.$$postDigestQueue;\n } else {\n // Only create a child scope class if somebody asks for one,\n // but cache it to allow the VM to optimize lookups.\n if (!this.$$childScopeClass) {\n this.$$childScopeClass = function() {\n this.$$watchers = this.$$nextSibling =\n this.$$childHead = this.$$childTail = null;\n this.$$listeners = {};\n this.$$listenerCount = {};\n this.$id = nextUid();\n this.$$childScopeClass = null;\n };\n this.$$childScopeClass.prototype = this;\n }\n child = new this.$$childScopeClass();\n }\n child['this'] = child;\n child.$parent = this;\n child.$$prevSibling = this.$$childTail;\n if (this.$$childHead) {\n this.$$childTail.$$nextSibling = child;\n this.$$childTail = child;\n } else {\n this.$$childHead = this.$$childTail = child;\n }\n return child;\n },\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$watch\n * @kind function\n *\n * @description\n * Registers a `listener` callback to be executed whenever the `watchExpression` changes.\n *\n * - The `watchExpression` is called on every call to {@link ng.$rootScope.Scope#$digest\n * $digest()} and should return the value that will be watched. (Since\n * {@link ng.$rootScope.Scope#$digest $digest()} reruns when it detects changes the\n * `watchExpression` can execute multiple times per\n * {@link ng.$rootScope.Scope#$digest $digest()} and should be idempotent.)\n * - The `listener` is called only when the value from the current `watchExpression` and the\n * previous call to `watchExpression` are not equal (with the exception of the initial run,\n * see below). Inequality is determined according to reference inequality,\n * [strict comparison](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators)\n * via the `!==` Javascript operator, unless `objectEquality == true`\n * (see next point)\n * - When `objectEquality == true`, inequality of the `watchExpression` is determined\n * according to the {@link angular.equals} function. To save the value of the object for\n * later comparison, the {@link angular.copy} function is used. This therefore means that\n * watching complex objects will have adverse memory and performance implications.\n * - The watch `listener` may change the model, which may trigger other `listener`s to fire.\n * This is achieved by rerunning the watchers until no changes are detected. The rerun\n * iteration limit is 10 to prevent an infinite loop deadlock.\n *\n *\n * If you want to be notified whenever {@link ng.$rootScope.Scope#$digest $digest} is called,\n * you can register a `watchExpression` function with no `listener`. (Since `watchExpression`\n * can execute multiple times per {@link ng.$rootScope.Scope#$digest $digest} cycle when a\n * change is detected, be prepared for multiple calls to your listener.)\n *\n * After a watcher is registered with the scope, the `listener` fn is called asynchronously\n * (via {@link ng.$rootScope.Scope#$evalAsync $evalAsync}) to initialize the\n * watcher. In rare cases, this is undesirable because the listener is called when the result\n * of `watchExpression` didn't change. To detect this scenario within the `listener` fn, you\n * can compare the `newVal` and `oldVal`. If these two values are identical (`===`) then the\n * listener was called due to initialization.\n *\n * The example below contains an illustration of using a function as your $watch listener\n *\n *\n * # Example\n * ```js\n // let's assume that scope was dependency injected as the $rootScope\n var scope = $rootScope;\n scope.name = 'misko';\n scope.counter = 0;\n\n expect(scope.counter).toEqual(0);\n scope.$watch('name', function(newValue, oldValue) {\n scope.counter = scope.counter + 1;\n });\n expect(scope.counter).toEqual(0);\n\n scope.$digest();\n // the listener is always called during the first $digest loop after it was registered\n expect(scope.counter).toEqual(1);\n\n scope.$digest();\n // but now it will not be called unless the value changes\n expect(scope.counter).toEqual(1);\n\n scope.name = 'adam';\n scope.$digest();\n expect(scope.counter).toEqual(2);\n\n\n\n // Using a listener function\n var food;\n scope.foodCounter = 0;\n expect(scope.foodCounter).toEqual(0);\n scope.$watch(\n // This is the listener function\n function() { return food; },\n // This is the change handler\n function(newValue, oldValue) {\n if ( newValue !== oldValue ) {\n // Only increment the counter if the value changed\n scope.foodCounter = scope.foodCounter + 1;\n }\n }\n );\n // No digest has been run so the counter will be zero\n expect(scope.foodCounter).toEqual(0);\n\n // Run the digest but since food has not changed count will still be zero\n scope.$digest();\n expect(scope.foodCounter).toEqual(0);\n\n // Update food and run digest. Now the counter will increment\n food = 'cheeseburger';\n scope.$digest();\n expect(scope.foodCounter).toEqual(1);\n\n * ```\n *\n *\n *\n * @param {(function()|string)} watchExpression Expression that is evaluated on each\n * {@link ng.$rootScope.Scope#$digest $digest} cycle. A change in the return value triggers\n * a call to the `listener`.\n *\n * - `string`: Evaluated as {@link guide/expression expression}\n * - `function(scope)`: called with current `scope` as a parameter.\n * @param {(function()|string)=} listener Callback called whenever the return value of\n * the `watchExpression` changes.\n *\n * - `string`: Evaluated as {@link guide/expression expression}\n * - `function(newValue, oldValue, scope)`: called with current and previous values as\n * parameters.\n *\n * @param {boolean=} objectEquality Compare for object equality using {@link angular.equals} instead of\n * comparing for reference equality.\n * @returns {function()} Returns a deregistration function for this listener.\n */\n $watch: function(watchExp, listener, objectEquality) {\n var scope = this,\n get = compileToFn(watchExp, 'watch'),\n array = scope.$$watchers,\n watcher = {\n fn: listener,\n last: initWatchVal,\n get: get,\n exp: watchExp,\n eq: !!objectEquality\n };\n\n lastDirtyWatch = null;\n\n // in the case user pass string, we need to compile it, do we really need this ?\n if (!isFunction(listener)) {\n var listenFn = compileToFn(listener || noop, 'listener');\n watcher.fn = function(newVal, oldVal, scope) {listenFn(scope);};\n }\n\n if (typeof watchExp == 'string' && get.constant) {\n var originalFn = watcher.fn;\n watcher.fn = function(newVal, oldVal, scope) {\n originalFn.call(this, newVal, oldVal, scope);\n arrayRemove(array, watcher);\n };\n }\n\n if (!array) {\n array = scope.$$watchers = [];\n }\n // we use unshift since we use a while loop in $digest for speed.\n // the while loop reads in reverse order.\n array.unshift(watcher);\n\n return function deregisterWatch() {\n arrayRemove(array, watcher);\n lastDirtyWatch = null;\n };\n },\n\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$watchCollection\n * @kind function\n *\n * @description\n * Shallow watches the properties of an object and fires whenever any of the properties change\n * (for arrays, this implies watching the array items; for object maps, this implies watching\n * the properties). If a change is detected, the `listener` callback is fired.\n *\n * - The `obj` collection is observed via standard $watch operation and is examined on every\n * call to $digest() to see if any items have been added, removed, or moved.\n * - The `listener` is called whenever anything within the `obj` has changed. Examples include\n * adding, removing, and moving items belonging to an object or array.\n *\n *\n * # Example\n * ```js\n $scope.names = ['igor', 'matias', 'misko', 'james'];\n $scope.dataCount = 4;\n\n $scope.$watchCollection('names', function(newNames, oldNames) {\n $scope.dataCount = newNames.length;\n });\n\n expect($scope.dataCount).toEqual(4);\n $scope.$digest();\n\n //still at 4 ... no changes\n expect($scope.dataCount).toEqual(4);\n\n $scope.names.pop();\n $scope.$digest();\n\n //now there's been a change\n expect($scope.dataCount).toEqual(3);\n * ```\n *\n *\n * @param {string|function(scope)} obj Evaluated as {@link guide/expression expression}. The\n * expression value should evaluate to an object or an array which is observed on each\n * {@link ng.$rootScope.Scope#$digest $digest} cycle. Any shallow change within the\n * collection will trigger a call to the `listener`.\n *\n * @param {function(newCollection, oldCollection, scope)} listener a callback function called\n * when a change is detected.\n * - The `newCollection` object is the newly modified data obtained from the `obj` expression\n * - The `oldCollection` object is a copy of the former collection data.\n * Due to performance considerations, the`oldCollection` value is computed only if the\n * `listener` function declares two or more arguments.\n * - The `scope` argument refers to the current scope.\n *\n * @returns {function()} Returns a de-registration function for this listener. When the\n * de-registration function is executed, the internal watch operation is terminated.\n */\n $watchCollection: function(obj, listener) {\n var self = this;\n // the current value, updated on each dirty-check run\n var newValue;\n // a shallow copy of the newValue from the last dirty-check run,\n // updated to match newValue during dirty-check run\n var oldValue;\n // a shallow copy of the newValue from when the last change happened\n var veryOldValue;\n // only track veryOldValue if the listener is asking for it\n var trackVeryOldValue = (listener.length > 1);\n var changeDetected = 0;\n var objGetter = $parse(obj);\n var internalArray = [];\n var internalObject = {};\n var initRun = true;\n var oldLength = 0;\n\n function $watchCollectionWatch() {\n newValue = objGetter(self);\n var newLength, key, bothNaN;\n\n if (!isObject(newValue)) { // if primitive\n if (oldValue !== newValue) {\n oldValue = newValue;\n changeDetected++;\n }\n } else if (isArrayLike(newValue)) {\n if (oldValue !== internalArray) {\n // we are transitioning from something which was not an array into array.\n oldValue = internalArray;\n oldLength = oldValue.length = 0;\n changeDetected++;\n }\n\n newLength = newValue.length;\n\n if (oldLength !== newLength) {\n // if lengths do not match we need to trigger change notification\n changeDetected++;\n oldValue.length = oldLength = newLength;\n }\n // copy the items to oldValue and look for changes.\n for (var i = 0; i < newLength; i++) {\n bothNaN = (oldValue[i] !== oldValue[i]) &&\n (newValue[i] !== newValue[i]);\n if (!bothNaN && (oldValue[i] !== newValue[i])) {\n changeDetected++;\n oldValue[i] = newValue[i];\n }\n }\n } else {\n if (oldValue !== internalObject) {\n // we are transitioning from something which was not an object into object.\n oldValue = internalObject = {};\n oldLength = 0;\n changeDetected++;\n }\n // copy the items to oldValue and look for changes.\n newLength = 0;\n for (key in newValue) {\n if (newValue.hasOwnProperty(key)) {\n newLength++;\n if (oldValue.hasOwnProperty(key)) {\n bothNaN = (oldValue[key] !== oldValue[key]) &&\n (newValue[key] !== newValue[key]);\n if (!bothNaN && (oldValue[key] !== newValue[key])) {\n changeDetected++;\n oldValue[key] = newValue[key];\n }\n } else {\n oldLength++;\n oldValue[key] = newValue[key];\n changeDetected++;\n }\n }\n }\n if (oldLength > newLength) {\n // we used to have more keys, need to find them and destroy them.\n changeDetected++;\n for(key in oldValue) {\n if (oldValue.hasOwnProperty(key) && !newValue.hasOwnProperty(key)) {\n oldLength--;\n delete oldValue[key];\n }\n }\n }\n }\n return changeDetected;\n }\n\n function $watchCollectionAction() {\n if (initRun) {\n initRun = false;\n listener(newValue, newValue, self);\n } else {\n listener(newValue, veryOldValue, self);\n }\n\n // make a copy for the next time a collection is changed\n if (trackVeryOldValue) {\n if (!isObject(newValue)) {\n //primitive\n veryOldValue = newValue;\n } else if (isArrayLike(newValue)) {\n veryOldValue = new Array(newValue.length);\n for (var i = 0; i < newValue.length; i++) {\n veryOldValue[i] = newValue[i];\n }\n } else { // if object\n veryOldValue = {};\n for (var key in newValue) {\n if (hasOwnProperty.call(newValue, key)) {\n veryOldValue[key] = newValue[key];\n }\n }\n }\n }\n }\n\n return this.$watch($watchCollectionWatch, $watchCollectionAction);\n },\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$digest\n * @kind function\n *\n * @description\n * Processes all of the {@link ng.$rootScope.Scope#$watch watchers} of the current scope and\n * its children. Because a {@link ng.$rootScope.Scope#$watch watcher}'s listener can change\n * the model, the `$digest()` keeps calling the {@link ng.$rootScope.Scope#$watch watchers}\n * until no more listeners are firing. This means that it is possible to get into an infinite\n * loop. This function will throw `'Maximum iteration limit exceeded.'` if the number of\n * iterations exceeds 10.\n *\n * Usually, you don't call `$digest()` directly in\n * {@link ng.directive:ngController controllers} or in\n * {@link ng.$compileProvider#directive directives}.\n * Instead, you should call {@link ng.$rootScope.Scope#$apply $apply()} (typically from within\n * a {@link ng.$compileProvider#directive directives}), which will force a `$digest()`.\n *\n * If you want to be notified whenever `$digest()` is called,\n * you can register a `watchExpression` function with\n * {@link ng.$rootScope.Scope#$watch $watch()} with no `listener`.\n *\n * In unit tests, you may need to call `$digest()` to simulate the scope life cycle.\n *\n * # Example\n * ```js\n var scope = ...;\n scope.name = 'misko';\n scope.counter = 0;\n\n expect(scope.counter).toEqual(0);\n scope.$watch('name', function(newValue, oldValue) {\n scope.counter = scope.counter + 1;\n });\n expect(scope.counter).toEqual(0);\n\n scope.$digest();\n // the listener is always called during the first $digest loop after it was registered\n expect(scope.counter).toEqual(1);\n\n scope.$digest();\n // but now it will not be called unless the value changes\n expect(scope.counter).toEqual(1);\n\n scope.name = 'adam';\n scope.$digest();\n expect(scope.counter).toEqual(2);\n * ```\n *\n */\n $digest: function() {\n var watch, value, last,\n watchers,\n asyncQueue = this.$$asyncQueue,\n postDigestQueue = this.$$postDigestQueue,\n length,\n dirty, ttl = TTL,\n next, current, target = this,\n watchLog = [],\n logIdx, logMsg, asyncTask;\n\n beginPhase('$digest');\n // Check for changes to browser url that happened in sync before the call to $digest\n $browser.$$checkUrlChange();\n\n lastDirtyWatch = null;\n\n do { // \"while dirty\" loop\n dirty = false;\n current = target;\n\n while(asyncQueue.length) {\n try {\n asyncTask = asyncQueue.shift();\n asyncTask.scope.$eval(asyncTask.expression);\n } catch (e) {\n clearPhase();\n $exceptionHandler(e);\n }\n lastDirtyWatch = null;\n }\n\n traverseScopesLoop:\n do { // \"traverse the scopes\" loop\n if ((watchers = current.$$watchers)) {\n // process our watches\n length = watchers.length;\n while (length--) {\n try {\n watch = watchers[length];\n // Most common watches are on primitives, in which case we can short\n // circuit it with === operator, only when === fails do we use .equals\n if (watch) {\n if ((value = watch.get(current)) !== (last = watch.last) &&\n !(watch.eq\n ? equals(value, last)\n : (typeof value === 'number' && typeof last === 'number'\n && isNaN(value) && isNaN(last)))) {\n dirty = true;\n lastDirtyWatch = watch;\n watch.last = watch.eq ? copy(value, null) : value;\n watch.fn(value, ((last === initWatchVal) ? value : last), current);\n if (ttl < 5) {\n logIdx = 4 - ttl;\n if (!watchLog[logIdx]) watchLog[logIdx] = [];\n logMsg = (isFunction(watch.exp))\n ? 'fn: ' + (watch.exp.name || watch.exp.toString())\n : watch.exp;\n logMsg += '; newVal: ' + toJson(value) + '; oldVal: ' + toJson(last);\n watchLog[logIdx].push(logMsg);\n }\n } else if (watch === lastDirtyWatch) {\n // If the most recently dirty watcher is now clean, short circuit since the remaining watchers\n // have already been tested.\n dirty = false;\n break traverseScopesLoop;\n }\n }\n } catch (e) {\n clearPhase();\n $exceptionHandler(e);\n }\n }\n }\n\n // Insanity Warning: scope depth-first traversal\n // yes, this code is a bit crazy, but it works and we have tests to prove it!\n // this piece should be kept in sync with the traversal in $broadcast\n if (!(next = (current.$$childHead ||\n (current !== target && current.$$nextSibling)))) {\n while(current !== target && !(next = current.$$nextSibling)) {\n current = current.$parent;\n }\n }\n } while ((current = next));\n\n // `break traverseScopesLoop;` takes us to here\n\n if((dirty || asyncQueue.length) && !(ttl--)) {\n clearPhase();\n throw $rootScopeMinErr('infdig',\n '{0} $digest() iterations reached. Aborting!\\n' +\n 'Watchers fired in the last 5 iterations: {1}',\n TTL, toJson(watchLog));\n }\n\n } while (dirty || asyncQueue.length);\n\n clearPhase();\n\n while(postDigestQueue.length) {\n try {\n postDigestQueue.shift()();\n } catch (e) {\n $exceptionHandler(e);\n }\n }\n },\n\n\n /**\n * @ngdoc event\n * @name $rootScope.Scope#$destroy\n * @eventType broadcast on scope being destroyed\n *\n * @description\n * Broadcasted when a scope and its children are being destroyed.\n *\n * Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to\n * clean up DOM bindings before an element is removed from the DOM.\n */\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$destroy\n * @kind function\n *\n * @description\n * Removes the current scope (and all of its children) from the parent scope. Removal implies\n * that calls to {@link ng.$rootScope.Scope#$digest $digest()} will no longer\n * propagate to the current scope and its children. Removal also implies that the current\n * scope is eligible for garbage collection.\n *\n * The `$destroy()` is usually used by directives such as\n * {@link ng.directive:ngRepeat ngRepeat} for managing the\n * unrolling of the loop.\n *\n * Just before a scope is destroyed, a `$destroy` event is broadcasted on this scope.\n * Application code can register a `$destroy` event handler that will give it a chance to\n * perform any necessary cleanup.\n *\n * Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to\n * clean up DOM bindings before an element is removed from the DOM.\n */\n $destroy: function() {\n // we can't destroy the root scope or a scope that has been already destroyed\n if (this.$$destroyed) return;\n var parent = this.$parent;\n\n this.$broadcast('$destroy');\n this.$$destroyed = true;\n if (this === $rootScope) return;\n\n forEach(this.$$listenerCount, bind(null, decrementListenerCount, this));\n\n // sever all the references to parent scopes (after this cleanup, the current scope should\n // not be retained by any of our references and should be eligible for garbage collection)\n if (parent.$$childHead == this) parent.$$childHead = this.$$nextSibling;\n if (parent.$$childTail == this) parent.$$childTail = this.$$prevSibling;\n if (this.$$prevSibling) this.$$prevSibling.$$nextSibling = this.$$nextSibling;\n if (this.$$nextSibling) this.$$nextSibling.$$prevSibling = this.$$prevSibling;\n\n\n // All of the code below is bogus code that works around V8's memory leak via optimized code\n // and inline caches.\n //\n // see:\n // - https://code.google.com/p/v8/issues/detail?id=2073#c26\n // - https://github.com/angular/angular.js/issues/6794#issuecomment-38648909\n // - https://github.com/angular/angular.js/issues/1313#issuecomment-10378451\n\n this.$parent = this.$$nextSibling = this.$$prevSibling = this.$$childHead =\n this.$$childTail = this.$root = null;\n\n // don't reset these to null in case some async task tries to register a listener/watch/task\n this.$$listeners = {};\n this.$$watchers = this.$$asyncQueue = this.$$postDigestQueue = [];\n\n // prevent NPEs since these methods have references to properties we nulled out\n this.$destroy = this.$digest = this.$apply = noop;\n this.$on = this.$watch = function() { return noop; };\n },\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$eval\n * @kind function\n *\n * @description\n * Executes the `expression` on the current scope and returns the result. Any exceptions in\n * the expression are propagated (uncaught). This is useful when evaluating Angular\n * expressions.\n *\n * # Example\n * ```js\n var scope = ng.$rootScope.Scope();\n scope.a = 1;\n scope.b = 2;\n\n expect(scope.$eval('a+b')).toEqual(3);\n expect(scope.$eval(function(scope){ return scope.a + scope.b; })).toEqual(3);\n * ```\n *\n * @param {(string|function())=} expression An angular expression to be executed.\n *\n * - `string`: execute using the rules as defined in {@link guide/expression expression}.\n * - `function(scope)`: execute the function with the current `scope` parameter.\n *\n * @param {(object)=} locals Local variables object, useful for overriding values in scope.\n * @returns {*} The result of evaluating the expression.\n */\n $eval: function(expr, locals) {\n return $parse(expr)(this, locals);\n },\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$evalAsync\n * @kind function\n *\n * @description\n * Executes the expression on the current scope at a later point in time.\n *\n * The `$evalAsync` makes no guarantees as to when the `expression` will be executed, only\n * that:\n *\n * - it will execute after the function that scheduled the evaluation (preferably before DOM\n * rendering).\n * - at least one {@link ng.$rootScope.Scope#$digest $digest cycle} will be performed after\n * `expression` execution.\n *\n * Any exceptions from the execution of the expression are forwarded to the\n * {@link ng.$exceptionHandler $exceptionHandler} service.\n *\n * __Note:__ if this function is called outside of a `$digest` cycle, a new `$digest` cycle\n * will be scheduled. However, it is encouraged to always call code that changes the model\n * from within an `$apply` call. That includes code evaluated via `$evalAsync`.\n *\n * @param {(string|function())=} expression An angular expression to be executed.\n *\n * - `string`: execute using the rules as defined in {@link guide/expression expression}.\n * - `function(scope)`: execute the function with the current `scope` parameter.\n *\n */\n $evalAsync: function(expr) {\n // if we are outside of an $digest loop and this is the first time we are scheduling async\n // task also schedule async auto-flush\n if (!$rootScope.$$phase && !$rootScope.$$asyncQueue.length) {\n $browser.defer(function() {\n if ($rootScope.$$asyncQueue.length) {\n $rootScope.$digest();\n }\n });\n }\n\n this.$$asyncQueue.push({scope: this, expression: expr});\n },\n\n $$postDigest : function(fn) {\n this.$$postDigestQueue.push(fn);\n },\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$apply\n * @kind function\n *\n * @description\n * `$apply()` is used to execute an expression in angular from outside of the angular\n * framework. (For example from browser DOM events, setTimeout, XHR or third party libraries).\n * Because we are calling into the angular framework we need to perform proper scope life\n * cycle of {@link ng.$exceptionHandler exception handling},\n * {@link ng.$rootScope.Scope#$digest executing watches}.\n *\n * ## Life cycle\n *\n * # Pseudo-Code of `$apply()`\n * ```js\n function $apply(expr) {\n try {\n return $eval(expr);\n } catch (e) {\n $exceptionHandler(e);\n } finally {\n $root.$digest();\n }\n }\n * ```\n *\n *\n * Scope's `$apply()` method transitions through the following stages:\n *\n * 1. The {@link guide/expression expression} is executed using the\n * {@link ng.$rootScope.Scope#$eval $eval()} method.\n * 2. Any exceptions from the execution of the expression are forwarded to the\n * {@link ng.$exceptionHandler $exceptionHandler} service.\n * 3. The {@link ng.$rootScope.Scope#$watch watch} listeners are fired immediately after the\n * expression was executed using the {@link ng.$rootScope.Scope#$digest $digest()} method.\n *\n *\n * @param {(string|function())=} exp An angular expression to be executed.\n *\n * - `string`: execute using the rules as defined in {@link guide/expression expression}.\n * - `function(scope)`: execute the function with current `scope` parameter.\n *\n * @returns {*} The result of evaluating the expression.\n */\n $apply: function(expr) {\n try {\n beginPhase('$apply');\n return this.$eval(expr);\n } catch (e) {\n $exceptionHandler(e);\n } finally {\n clearPhase();\n try {\n $rootScope.$digest();\n } catch (e) {\n $exceptionHandler(e);\n throw e;\n }\n }\n },\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$on\n * @kind function\n *\n * @description\n * Listens on events of a given type. See {@link ng.$rootScope.Scope#$emit $emit} for\n * discussion of event life cycle.\n *\n * The event listener function format is: `function(event, args...)`. The `event` object\n * passed into the listener has the following attributes:\n *\n * - `targetScope` - `{Scope}`: the scope on which the event was `$emit`-ed or\n * `$broadcast`-ed.\n * - `currentScope` - `{Scope}`: the current scope which is handling the event.\n * - `name` - `{string}`: name of the event.\n * - `stopPropagation` - `{function=}`: calling `stopPropagation` function will cancel\n * further event propagation (available only for events that were `$emit`-ed).\n * - `preventDefault` - `{function}`: calling `preventDefault` sets `defaultPrevented` flag\n * to true.\n * - `defaultPrevented` - `{boolean}`: true if `preventDefault` was called.\n *\n * @param {string} name Event name to listen on.\n * @param {function(event, ...args)} listener Function to call when the event is emitted.\n * @returns {function()} Returns a deregistration function for this listener.\n */\n $on: function(name, listener) {\n var namedListeners = this.$$listeners[name];\n if (!namedListeners) {\n this.$$listeners[name] = namedListeners = [];\n }\n namedListeners.push(listener);\n\n var current = this;\n do {\n if (!current.$$listenerCount[name]) {\n current.$$listenerCount[name] = 0;\n }\n current.$$listenerCount[name]++;\n } while ((current = current.$parent));\n\n var self = this;\n return function() {\n var indexOfListener = indexOf(namedListeners, listener);\n if (indexOfListener !== -1) {\n namedListeners[indexOfListener] = null;\n decrementListenerCount(self, 1, name);\n }\n };\n },\n\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$emit\n * @kind function\n *\n * @description\n * Dispatches an event `name` upwards through the scope hierarchy notifying the\n * registered {@link ng.$rootScope.Scope#$on} listeners.\n *\n * The event life cycle starts at the scope on which `$emit` was called. All\n * {@link ng.$rootScope.Scope#$on listeners} listening for `name` event on this scope get\n * notified. Afterwards, the event traverses upwards toward the root scope and calls all\n * registered listeners along the way. The event will stop propagating if one of the listeners\n * cancels it.\n *\n * Any exception emitted from the {@link ng.$rootScope.Scope#$on listeners} will be passed\n * onto the {@link ng.$exceptionHandler $exceptionHandler} service.\n *\n * @param {string} name Event name to emit.\n * @param {...*} args Optional one or more arguments which will be passed onto the event listeners.\n * @return {Object} Event object (see {@link ng.$rootScope.Scope#$on}).\n */\n $emit: function(name, args) {\n var empty = [],\n namedListeners,\n scope = this,\n stopPropagation = false,\n event = {\n name: name,\n targetScope: scope,\n stopPropagation: function() {stopPropagation = true;},\n preventDefault: function() {\n event.defaultPrevented = true;\n },\n defaultPrevented: false\n },\n listenerArgs = concat([event], arguments, 1),\n i, length;\n\n do {\n namedListeners = scope.$$listeners[name] || empty;\n event.currentScope = scope;\n for (i=0, length=namedListeners.length; i= 8 ) {\n normalizedVal = urlResolve(uri).href;\n if (normalizedVal !== '' && !normalizedVal.match(regex)) {\n return 'unsafe:'+normalizedVal;\n }\n }\n return uri;\n };\n };\n}\n\nvar $sceMinErr = minErr('$sce');\n\nvar SCE_CONTEXTS = {\n HTML: 'html',\n CSS: 'css',\n URL: 'url',\n // RESOURCE_URL is a subtype of URL used in contexts where a privileged resource is sourced from a\n // url. (e.g. ng-include, script src, templateUrl)\n RESOURCE_URL: 'resourceUrl',\n JS: 'js'\n};\n\n// Helper functions follow.\n\n// Copied from:\n// http://docs.closure-library.googlecode.com/git/closure_goog_string_string.js.source.html#line962\n// Prereq: s is a string.\nfunction escapeForRegexp(s) {\n return s.replace(/([-()\\[\\]{}+?*.$\\^|,:# -1) {\n throw $sceMinErr('iwcard',\n 'Illegal sequence *** in string matcher. String: {0}', matcher);\n }\n matcher = escapeForRegexp(matcher).\n replace('\\\\*\\\\*', '.*').\n replace('\\\\*', '[^:/.?&;]*');\n return new RegExp('^' + matcher + '$');\n } else if (isRegExp(matcher)) {\n // The only other type of matcher allowed is a Regexp.\n // Match entire URL / disallow partial matches.\n // Flags are reset (i.e. no global, ignoreCase or multiline)\n return new RegExp('^' + matcher.source + '$');\n } else {\n throw $sceMinErr('imatcher',\n 'Matchers may only be \"self\", string patterns or RegExp objects');\n }\n}\n\n\nfunction adjustMatchers(matchers) {\n var adjustedMatchers = [];\n if (isDefined(matchers)) {\n forEach(matchers, function(matcher) {\n adjustedMatchers.push(adjustMatcher(matcher));\n });\n }\n return adjustedMatchers;\n}\n\n\n/**\n * @ngdoc service\n * @name $sceDelegate\n * @kind function\n *\n * @description\n *\n * `$sceDelegate` is a service that is used by the `$sce` service to provide {@link ng.$sce Strict\n * Contextual Escaping (SCE)} services to AngularJS.\n *\n * Typically, you would configure or override the {@link ng.$sceDelegate $sceDelegate} instead of\n * the `$sce` service to customize the way Strict Contextual Escaping works in AngularJS. This is\n * because, while the `$sce` provides numerous shorthand methods, etc., you really only need to\n * override 3 core functions (`trustAs`, `getTrusted` and `valueOf`) to replace the way things\n * work because `$sce` delegates to `$sceDelegate` for these operations.\n *\n * Refer {@link ng.$sceDelegateProvider $sceDelegateProvider} to configure this service.\n *\n * The default instance of `$sceDelegate` should work out of the box with little pain. While you\n * can override it completely to change the behavior of `$sce`, the common case would\n * involve configuring the {@link ng.$sceDelegateProvider $sceDelegateProvider} instead by setting\n * your own whitelists and blacklists for trusting URLs used for loading AngularJS resources such as\n * templates. Refer {@link ng.$sceDelegateProvider#resourceUrlWhitelist\n * $sceDelegateProvider.resourceUrlWhitelist} and {@link\n * ng.$sceDelegateProvider#resourceUrlBlacklist $sceDelegateProvider.resourceUrlBlacklist}\n */\n\n/**\n * @ngdoc provider\n * @name $sceDelegateProvider\n * @description\n *\n * The `$sceDelegateProvider` provider allows developers to configure the {@link ng.$sceDelegate\n * $sceDelegate} service. This allows one to get/set the whitelists and blacklists used to ensure\n * that the URLs used for sourcing Angular templates are safe. Refer {@link\n * ng.$sceDelegateProvider#resourceUrlWhitelist $sceDelegateProvider.resourceUrlWhitelist} and\n * {@link ng.$sceDelegateProvider#resourceUrlBlacklist $sceDelegateProvider.resourceUrlBlacklist}\n *\n * For the general details about this service in Angular, read the main page for {@link ng.$sce\n * Strict Contextual Escaping (SCE)}.\n *\n * **Example**: Consider the following case. \n *\n * - your app is hosted at url `http://myapp.example.com/`\n * - but some of your templates are hosted on other domains you control such as\n * `http://srv01.assets.example.com/`,  `http://srv02.assets.example.com/`, etc.\n * - and you have an open redirect at `http://myapp.example.com/clickThru?...`.\n *\n * Here is what a secure configuration for this scenario might look like:\n *\n * ```\n * angular.module('myApp', []).config(function($sceDelegateProvider) {\n * $sceDelegateProvider.resourceUrlWhitelist([\n * // Allow same origin resource loads.\n * 'self',\n * // Allow loading from our assets domain. Notice the difference between * and **.\n * 'http://srv*.assets.example.com/**'\n * ]);\n *\n * // The blacklist overrides the whitelist so the open redirect here is blocked.\n * $sceDelegateProvider.resourceUrlBlacklist([\n * 'http://myapp.example.com/clickThru**'\n * ]);\n * });\n * ```\n */\n\nfunction $SceDelegateProvider() {\n this.SCE_CONTEXTS = SCE_CONTEXTS;\n\n // Resource URLs can also be trusted by policy.\n var resourceUrlWhitelist = ['self'],\n resourceUrlBlacklist = [];\n\n /**\n * @ngdoc method\n * @name $sceDelegateProvider#resourceUrlWhitelist\n * @kind function\n *\n * @param {Array=} whitelist When provided, replaces the resourceUrlWhitelist with the value\n * provided. This must be an array or null. A snapshot of this array is used so further\n * changes to the array are ignored.\n *\n * Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items\n * allowed in this array.\n *\n * Note: **an empty whitelist array will block all URLs**!\n *\n * @return {Array} the currently set whitelist array.\n *\n * The **default value** when no whitelist has been explicitly set is `['self']` allowing only\n * same origin resource requests.\n *\n * @description\n * Sets/Gets the whitelist of trusted resource URLs.\n */\n this.resourceUrlWhitelist = function (value) {\n if (arguments.length) {\n resourceUrlWhitelist = adjustMatchers(value);\n }\n return resourceUrlWhitelist;\n };\n\n /**\n * @ngdoc method\n * @name $sceDelegateProvider#resourceUrlBlacklist\n * @kind function\n *\n * @param {Array=} blacklist When provided, replaces the resourceUrlBlacklist with the value\n * provided. This must be an array or null. A snapshot of this array is used so further\n * changes to the array are ignored.\n *\n * Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items\n * allowed in this array.\n *\n * The typical usage for the blacklist is to **block\n * [open redirects](http://cwe.mitre.org/data/definitions/601.html)** served by your domain as\n * these would otherwise be trusted but actually return content from the redirected domain.\n *\n * Finally, **the blacklist overrides the whitelist** and has the final say.\n *\n * @return {Array} the currently set blacklist array.\n *\n * The **default value** when no whitelist has been explicitly set is the empty array (i.e. there\n * is no blacklist.)\n *\n * @description\n * Sets/Gets the blacklist of trusted resource URLs.\n */\n\n this.resourceUrlBlacklist = function (value) {\n if (arguments.length) {\n resourceUrlBlacklist = adjustMatchers(value);\n }\n return resourceUrlBlacklist;\n };\n\n this.$get = ['$injector', function($injector) {\n\n var htmlSanitizer = function htmlSanitizer(html) {\n throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.');\n };\n\n if ($injector.has('$sanitize')) {\n htmlSanitizer = $injector.get('$sanitize');\n }\n\n\n function matchUrl(matcher, parsedUrl) {\n if (matcher === 'self') {\n return urlIsSameOrigin(parsedUrl);\n } else {\n // definitely a regex. See adjustMatchers()\n return !!matcher.exec(parsedUrl.href);\n }\n }\n\n function isResourceUrlAllowedByPolicy(url) {\n var parsedUrl = urlResolve(url.toString());\n var i, n, allowed = false;\n // Ensure that at least one item from the whitelist allows this url.\n for (i = 0, n = resourceUrlWhitelist.length; i < n; i++) {\n if (matchUrl(resourceUrlWhitelist[i], parsedUrl)) {\n allowed = true;\n break;\n }\n }\n if (allowed) {\n // Ensure that no item from the blacklist blocked this url.\n for (i = 0, n = resourceUrlBlacklist.length; i < n; i++) {\n if (matchUrl(resourceUrlBlacklist[i], parsedUrl)) {\n allowed = false;\n break;\n }\n }\n }\n return allowed;\n }\n\n function generateHolderType(Base) {\n var holderType = function TrustedValueHolderType(trustedValue) {\n this.$$unwrapTrustedValue = function() {\n return trustedValue;\n };\n };\n if (Base) {\n holderType.prototype = new Base();\n }\n holderType.prototype.valueOf = function sceValueOf() {\n return this.$$unwrapTrustedValue();\n };\n holderType.prototype.toString = function sceToString() {\n return this.$$unwrapTrustedValue().toString();\n };\n return holderType;\n }\n\n var trustedValueHolderBase = generateHolderType(),\n byType = {};\n\n byType[SCE_CONTEXTS.HTML] = generateHolderType(trustedValueHolderBase);\n byType[SCE_CONTEXTS.CSS] = generateHolderType(trustedValueHolderBase);\n byType[SCE_CONTEXTS.URL] = generateHolderType(trustedValueHolderBase);\n byType[SCE_CONTEXTS.JS] = generateHolderType(trustedValueHolderBase);\n byType[SCE_CONTEXTS.RESOURCE_URL] = generateHolderType(byType[SCE_CONTEXTS.URL]);\n\n /**\n * @ngdoc method\n * @name $sceDelegate#trustAs\n *\n * @description\n * Returns an object that is trusted by angular for use in specified strict\n * contextual escaping contexts (such as ng-bind-html, ng-include, any src\n * attribute interpolation, any dom event binding attribute interpolation\n * such as for onclick, etc.) that uses the provided value.\n * See {@link ng.$sce $sce} for enabling strict contextual escaping.\n *\n * @param {string} type The kind of context in which this value is safe for use. e.g. url,\n * resourceUrl, html, js and css.\n * @param {*} value The value that that should be considered trusted/safe.\n * @returns {*} A value that can be used to stand in for the provided `value` in places\n * where Angular expects a $sce.trustAs() return value.\n */\n function trustAs(type, trustedValue) {\n var Constructor = (byType.hasOwnProperty(type) ? byType[type] : null);\n if (!Constructor) {\n throw $sceMinErr('icontext',\n 'Attempted to trust a value in invalid context. Context: {0}; Value: {1}',\n type, trustedValue);\n }\n if (trustedValue === null || trustedValue === undefined || trustedValue === '') {\n return trustedValue;\n }\n // All the current contexts in SCE_CONTEXTS happen to be strings. In order to avoid trusting\n // mutable objects, we ensure here that the value passed in is actually a string.\n if (typeof trustedValue !== 'string') {\n throw $sceMinErr('itype',\n 'Attempted to trust a non-string value in a content requiring a string: Context: {0}',\n type);\n }\n return new Constructor(trustedValue);\n }\n\n /**\n * @ngdoc method\n * @name $sceDelegate#valueOf\n *\n * @description\n * If the passed parameter had been returned by a prior call to {@link ng.$sceDelegate#trustAs\n * `$sceDelegate.trustAs`}, returns the value that had been passed to {@link\n * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}.\n *\n * If the passed parameter is not a value that had been returned by {@link\n * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}, returns it as-is.\n *\n * @param {*} value The result of a prior {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}\n * call or anything else.\n * @returns {*} The `value` that was originally provided to {@link ng.$sceDelegate#trustAs\n * `$sceDelegate.trustAs`} if `value` is the result of such a call. Otherwise, returns\n * `value` unchanged.\n */\n function valueOf(maybeTrusted) {\n if (maybeTrusted instanceof trustedValueHolderBase) {\n return maybeTrusted.$$unwrapTrustedValue();\n } else {\n return maybeTrusted;\n }\n }\n\n /**\n * @ngdoc method\n * @name $sceDelegate#getTrusted\n *\n * @description\n * Takes the result of a {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`} call and\n * returns the originally supplied value if the queried context type is a supertype of the\n * created type. If this condition isn't satisfied, throws an exception.\n *\n * @param {string} type The kind of context in which this value is to be used.\n * @param {*} maybeTrusted The result of a prior {@link ng.$sceDelegate#trustAs\n * `$sceDelegate.trustAs`} call.\n * @returns {*} The value the was originally provided to {@link ng.$sceDelegate#trustAs\n * `$sceDelegate.trustAs`} if valid in this context. Otherwise, throws an exception.\n */\n function getTrusted(type, maybeTrusted) {\n if (maybeTrusted === null || maybeTrusted === undefined || maybeTrusted === '') {\n return maybeTrusted;\n }\n var constructor = (byType.hasOwnProperty(type) ? byType[type] : null);\n if (constructor && maybeTrusted instanceof constructor) {\n return maybeTrusted.$$unwrapTrustedValue();\n }\n // If we get here, then we may only take one of two actions.\n // 1. sanitize the value for the requested type, or\n // 2. throw an exception.\n if (type === SCE_CONTEXTS.RESOURCE_URL) {\n if (isResourceUrlAllowedByPolicy(maybeTrusted)) {\n return maybeTrusted;\n } else {\n throw $sceMinErr('insecurl',\n 'Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}',\n maybeTrusted.toString());\n }\n } else if (type === SCE_CONTEXTS.HTML) {\n return htmlSanitizer(maybeTrusted);\n }\n throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.');\n }\n\n return { trustAs: trustAs,\n getTrusted: getTrusted,\n valueOf: valueOf };\n }];\n}\n\n\n/**\n * @ngdoc provider\n * @name $sceProvider\n * @description\n *\n * The $sceProvider provider allows developers to configure the {@link ng.$sce $sce} service.\n * - enable/disable Strict Contextual Escaping (SCE) in a module\n * - override the default implementation with a custom delegate\n *\n * Read more about {@link ng.$sce Strict Contextual Escaping (SCE)}.\n */\n\n/* jshint maxlen: false*/\n\n/**\n * @ngdoc service\n * @name $sce\n * @kind function\n *\n * @description\n *\n * `$sce` is a service that provides Strict Contextual Escaping services to AngularJS.\n *\n * # Strict Contextual Escaping\n *\n * Strict Contextual Escaping (SCE) is a mode in which AngularJS requires bindings in certain\n * contexts to result in a value that is marked as safe to use for that context. One example of\n * such a context is binding arbitrary html controlled by the user via `ng-bind-html`. We refer\n * to these contexts as privileged or SCE contexts.\n *\n * As of version 1.2, Angular ships with SCE enabled by default.\n *\n * Note: When enabled (the default), IE8 in quirks mode is not supported. In this mode, IE8 allows\n * one to execute arbitrary javascript by the use of the expression() syntax. Refer\n * to learn more about them.\n * You can ensure your document is in standards mode and not quirks mode by adding ``\n * to the top of your HTML document.\n *\n * SCE assists in writing code in way that (a) is secure by default and (b) makes auditing for\n * security vulnerabilities such as XSS, clickjacking, etc. a lot easier.\n *\n * Here's an example of a binding in a privileged context:\n *\n * ```\n * \n *
\n * ```\n *\n * Notice that `ng-bind-html` is bound to `userHtml` controlled by the user. With SCE\n * disabled, this application allows the user to render arbitrary HTML into the DIV.\n * In a more realistic example, one may be rendering user comments, blog articles, etc. via\n * bindings. (HTML is just one example of a context where rendering user controlled input creates\n * security vulnerabilities.)\n *\n * For the case of HTML, you might use a library, either on the client side, or on the server side,\n * to sanitize unsafe HTML before binding to the value and rendering it in the document.\n *\n * How would you ensure that every place that used these types of bindings was bound to a value that\n * was sanitized by your library (or returned as safe for rendering by your server?) How can you\n * ensure that you didn't accidentally delete the line that sanitized the value, or renamed some\n * properties/fields and forgot to update the binding to the sanitized value?\n *\n * To be secure by default, you want to ensure that any such bindings are disallowed unless you can\n * determine that something explicitly says it's safe to use a value for binding in that\n * context. You can then audit your code (a simple grep would do) to ensure that this is only done\n * for those values that you can easily tell are safe - because they were received from your server,\n * sanitized by your library, etc. You can organize your codebase to help with this - perhaps\n * allowing only the files in a specific directory to do this. Ensuring that the internal API\n * exposed by that code doesn't markup arbitrary values as safe then becomes a more manageable task.\n *\n * In the case of AngularJS' SCE service, one uses {@link ng.$sce#trustAs $sce.trustAs}\n * (and shorthand methods such as {@link ng.$sce#trustAsHtml $sce.trustAsHtml}, etc.) to\n * obtain values that will be accepted by SCE / privileged contexts.\n *\n *\n * ## How does it work?\n *\n * In privileged contexts, directives and code will bind to the result of {@link ng.$sce#getTrusted\n * $sce.getTrusted(context, value)} rather than to the value directly. Directives use {@link\n * ng.$sce#parse $sce.parseAs} rather than `$parse` to watch attribute bindings, which performs the\n * {@link ng.$sce#getTrusted $sce.getTrusted} behind the scenes on non-constant literals.\n *\n * As an example, {@link ng.directive:ngBindHtml ngBindHtml} uses {@link\n * ng.$sce#parseAsHtml $sce.parseAsHtml(binding expression)}. Here's the actual code (slightly\n * simplified):\n *\n * ```\n * var ngBindHtmlDirective = ['$sce', function($sce) {\n * return function(scope, element, attr) {\n * scope.$watch($sce.parseAsHtml(attr.ngBindHtml), function(value) {\n * element.html(value || '');\n * });\n * };\n * }];\n * ```\n *\n * ## Impact on loading templates\n *\n * This applies both to the {@link ng.directive:ngInclude `ng-include`} directive as well as\n * `templateUrl`'s specified by {@link guide/directive directives}.\n *\n * By default, Angular only loads templates from the same domain and protocol as the application\n * document. This is done by calling {@link ng.$sce#getTrustedResourceUrl\n * $sce.getTrustedResourceUrl} on the template URL. To load templates from other domains and/or\n * protocols, you may either either {@link ng.$sceDelegateProvider#resourceUrlWhitelist whitelist\n * them} or {@link ng.$sce#trustAsResourceUrl wrap it} into a trusted value.\n *\n * *Please note*:\n * The browser's\n * [Same Origin Policy](https://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest)\n * and [Cross-Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/)\n * policy apply in addition to this and may further restrict whether the template is successfully\n * loaded. This means that without the right CORS policy, loading templates from a different domain\n * won't work on all browsers. Also, loading templates from `file://` URL does not work on some\n * browsers.\n *\n * ## This feels like too much overhead for the developer?\n *\n * It's important to remember that SCE only applies to interpolation expressions.\n *\n * If your expressions are constant literals, they're automatically trusted and you don't need to\n * call `$sce.trustAs` on them (remember to include the `ngSanitize` module) (e.g.\n * `
implicitly trusted'\">
`) just works.\n *\n * Additionally, `a[href]` and `img[src]` automatically sanitize their URLs and do not pass them\n * through {@link ng.$sce#getTrusted $sce.getTrusted}. SCE doesn't play a role here.\n *\n * The included {@link ng.$sceDelegate $sceDelegate} comes with sane defaults to allow you to load\n * templates in `ng-include` from your application's domain without having to even know about SCE.\n * It blocks loading templates from other domains or loading templates over http from an https\n * served document. You can change these by setting your own custom {@link\n * ng.$sceDelegateProvider#resourceUrlWhitelist whitelists} and {@link\n * ng.$sceDelegateProvider#resourceUrlBlacklist blacklists} for matching such URLs.\n *\n * This significantly reduces the overhead. It is far easier to pay the small overhead and have an\n * application that's secure and can be audited to verify that with much more ease than bolting\n * security onto an application later.\n *\n * \n * ## What trusted context types are supported?\n *\n * | Context | Notes |\n * |---------------------|----------------|\n * | `$sce.HTML` | For HTML that's safe to source into the application. The {@link ng.directive:ngBindHtml ngBindHtml} directive uses this context for bindings. If an unsafe value is encountered and the {@link ngSanitize $sanitize} module is present this will sanitize the value instead of throwing an error. |\n * | `$sce.CSS` | For CSS that's safe to source into the application. Currently unused. Feel free to use it in your own directives. |\n * | `$sce.URL` | For URLs that are safe to follow as links. Currently unused (`
Note that `$sce.RESOURCE_URL` makes a stronger statement about the URL than `$sce.URL` does and therefore contexts requiring values trusted for `$sce.RESOURCE_URL` can be used anywhere that values trusted for `$sce.URL` are required. |\n * | `$sce.JS` | For JavaScript that is safe to execute in your application's context. Currently unused. Feel free to use it in your own directives. |\n *\n * ## Format of items in {@link ng.$sceDelegateProvider#resourceUrlWhitelist resourceUrlWhitelist}/{@link ng.$sceDelegateProvider#resourceUrlBlacklist Blacklist}
\n *\n * Each element in these arrays must be one of the following:\n *\n * - **'self'**\n * - The special **string**, `'self'`, can be used to match against all URLs of the **same\n * domain** as the application document using the **same protocol**.\n * - **String** (except the special value `'self'`)\n * - The string is matched against the full *normalized / absolute URL* of the resource\n * being tested (substring matches are not good enough.)\n * - There are exactly **two wildcard sequences** - `*` and `**`. All other characters\n * match themselves.\n * - `*`: matches zero or more occurrences of any character other than one of the following 6\n * characters: '`:`', '`/`', '`.`', '`?`', '`&`' and ';'. It's a useful wildcard for use\n * in a whitelist.\n * - `**`: matches zero or more occurrences of *any* character. As such, it's not\n * not appropriate to use in for a scheme, domain, etc. as it would match too much. (e.g.\n * http://**.example.com/ would match http://evil.com/?ignore=.example.com/ and that might\n * not have been the intention.) Its usage at the very end of the path is ok. (e.g.\n * http://foo.example.com/templates/**).\n * - **RegExp** (*see caveat below*)\n * - *Caveat*: While regular expressions are powerful and offer great flexibility, their syntax\n * (and all the inevitable escaping) makes them *harder to maintain*. It's easy to\n * accidentally introduce a bug when one updates a complex expression (imho, all regexes should\n * have good test coverage.). For instance, the use of `.` in the regex is correct only in a\n * small number of cases. A `.` character in the regex used when matching the scheme or a\n * subdomain could be matched against a `:` or literal `.` that was likely not intended. It\n * is highly recommended to use the string patterns and only fall back to regular expressions\n * if they as a last resort.\n * - The regular expression must be an instance of RegExp (i.e. not a string.) It is\n * matched against the **entire** *normalized / absolute URL* of the resource being tested\n * (even when the RegExp did not have the `^` and `$` codes.) In addition, any flags\n * present on the RegExp (such as multiline, global, ignoreCase) are ignored.\n * - If you are generating your JavaScript from some other templating engine (not\n * recommended, e.g. in issue [#4006](https://github.com/angular/angular.js/issues/4006)),\n * remember to escape your regular expression (and be aware that you might need more than\n * one level of escaping depending on your templating engine and the way you interpolated\n * the value.) Do make use of your platform's escaping mechanism as it might be good\n * enough before coding your own. e.g. Ruby has\n * [Regexp.escape(str)](http://www.ruby-doc.org/core-2.0.0/Regexp.html#method-c-escape)\n * and Python has [re.escape](http://docs.python.org/library/re.html#re.escape).\n * Javascript lacks a similar built in function for escaping. Take a look at Google\n * Closure library's [goog.string.regExpEscape(s)](\n * http://docs.closure-library.googlecode.com/git/closure_goog_string_string.js.source.html#line962).\n *\n * Refer {@link ng.$sceDelegateProvider $sceDelegateProvider} for an example.\n *\n * ## Show me an example using SCE.\n *\n * \n * \n *
\n *

\n * User comments
\n * By default, HTML that isn't explicitly trusted (e.g. Alice's comment) is sanitized when\n * $sanitize is available. If $sanitize isn't available, this results in an error instead of an\n * exploit.\n *
\n *
\n * {{userComment.name}}:\n * \n *
\n *
\n *
\n *
\n *
\n *\n * \n * var mySceApp = angular.module('mySceApp', ['ngSanitize']);\n *\n * mySceApp.controller(\"myAppController\", function myAppController($http, $templateCache, $sce) {\n * var self = this;\n * $http.get(\"test_data.json\", {cache: $templateCache}).success(function(userComments) {\n * self.userComments = userComments;\n * });\n * self.explicitlyTrustedHtml = $sce.trustAsHtml(\n * 'Hover over this text.');\n * });\n * \n *\n * \n * [\n * { \"name\": \"Alice\",\n * \"htmlComment\":\n * \"Is anyone reading this?\"\n * },\n * { \"name\": \"Bob\",\n * \"htmlComment\": \"Yes! Am I the only other one?\"\n * }\n * ]\n * \n *\n * \n * describe('SCE doc demo', function() {\n * it('should sanitize untrusted values', function() {\n * expect(element.all(by.css('.htmlComment')).first().getInnerHtml())\n * .toBe('Is anyone reading this?');\n * });\n *\n * it('should NOT sanitize explicitly trusted values', function() {\n * expect(element(by.id('explicitlyTrustedHtml')).getInnerHtml()).toBe(\n * 'Hover over this text.');\n * });\n * });\n * \n *
\n *\n *\n *\n * ## Can I disable SCE completely?\n *\n * Yes, you can. However, this is strongly discouraged. SCE gives you a lot of security benefits\n * for little coding overhead. It will be much harder to take an SCE disabled application and\n * either secure it on your own or enable SCE at a later stage. It might make sense to disable SCE\n * for cases where you have a lot of existing code that was written before SCE was introduced and\n * you're migrating them a module at a time.\n *\n * That said, here's how you can completely disable SCE:\n *\n * ```\n * angular.module('myAppWithSceDisabledmyApp', []).config(function($sceProvider) {\n * // Completely disable SCE. For demonstration purposes only!\n * // Do not use in new projects.\n * $sceProvider.enabled(false);\n * });\n * ```\n *\n */\n/* jshint maxlen: 100 */\n\nfunction $SceProvider() {\n var enabled = true;\n\n /**\n * @ngdoc method\n * @name $sceProvider#enabled\n * @kind function\n *\n * @param {boolean=} value If provided, then enables/disables SCE.\n * @return {boolean} true if SCE is enabled, false otherwise.\n *\n * @description\n * Enables/disables SCE and returns the current value.\n */\n this.enabled = function (value) {\n if (arguments.length) {\n enabled = !!value;\n }\n return enabled;\n };\n\n\n /* Design notes on the default implementation for SCE.\n *\n * The API contract for the SCE delegate\n * -------------------------------------\n * The SCE delegate object must provide the following 3 methods:\n *\n * - trustAs(contextEnum, value)\n * This method is used to tell the SCE service that the provided value is OK to use in the\n * contexts specified by contextEnum. It must return an object that will be accepted by\n * getTrusted() for a compatible contextEnum and return this value.\n *\n * - valueOf(value)\n * For values that were not produced by trustAs(), return them as is. For values that were\n * produced by trustAs(), return the corresponding input value to trustAs. Basically, if\n * trustAs is wrapping the given values into some type, this operation unwraps it when given\n * such a value.\n *\n * - getTrusted(contextEnum, value)\n * This function should return the a value that is safe to use in the context specified by\n * contextEnum or throw and exception otherwise.\n *\n * NOTE: This contract deliberately does NOT state that values returned by trustAs() must be\n * opaque or wrapped in some holder object. That happens to be an implementation detail. For\n * instance, an implementation could maintain a registry of all trusted objects by context. In\n * such a case, trustAs() would return the same object that was passed in. getTrusted() would\n * return the same object passed in if it was found in the registry under a compatible context or\n * throw an exception otherwise. An implementation might only wrap values some of the time based\n * on some criteria. getTrusted() might return a value and not throw an exception for special\n * constants or objects even if not wrapped. All such implementations fulfill this contract.\n *\n *\n * A note on the inheritance model for SCE contexts\n * ------------------------------------------------\n * I've used inheritance and made RESOURCE_URL wrapped types a subtype of URL wrapped types. This\n * is purely an implementation details.\n *\n * The contract is simply this:\n *\n * getTrusted($sce.RESOURCE_URL, value) succeeding implies that getTrusted($sce.URL, value)\n * will also succeed.\n *\n * Inheritance happens to capture this in a natural way. In some future, we\n * may not use inheritance anymore. That is OK because no code outside of\n * sce.js and sceSpecs.js would need to be aware of this detail.\n */\n\n this.$get = ['$parse', '$sniffer', '$sceDelegate', function(\n $parse, $sniffer, $sceDelegate) {\n // Prereq: Ensure that we're not running in IE8 quirks mode. In that mode, IE allows\n // the \"expression(javascript expression)\" syntax which is insecure.\n if (enabled && $sniffer.msie && $sniffer.msieDocumentMode < 8) {\n throw $sceMinErr('iequirks',\n 'Strict Contextual Escaping does not support Internet Explorer version < 9 in quirks ' +\n 'mode. You can fix this by adding the text to the top of your HTML ' +\n 'document. See http://docs.angularjs.org/api/ng.$sce for more information.');\n }\n\n var sce = shallowCopy(SCE_CONTEXTS);\n\n /**\n * @ngdoc method\n * @name $sce#isEnabled\n * @kind function\n *\n * @return {Boolean} true if SCE is enabled, false otherwise. If you want to set the value, you\n * have to do it at module config time on {@link ng.$sceProvider $sceProvider}.\n *\n * @description\n * Returns a boolean indicating if SCE is enabled.\n */\n sce.isEnabled = function () {\n return enabled;\n };\n sce.trustAs = $sceDelegate.trustAs;\n sce.getTrusted = $sceDelegate.getTrusted;\n sce.valueOf = $sceDelegate.valueOf;\n\n if (!enabled) {\n sce.trustAs = sce.getTrusted = function(type, value) { return value; };\n sce.valueOf = identity;\n }\n\n /**\n * @ngdoc method\n * @name $sce#parseAs\n *\n * @description\n * Converts Angular {@link guide/expression expression} into a function. This is like {@link\n * ng.$parse $parse} and is identical when the expression is a literal constant. Otherwise, it\n * wraps the expression in a call to {@link ng.$sce#getTrusted $sce.getTrusted(*type*,\n * *result*)}\n *\n * @param {string} type The kind of SCE context in which this result will be used.\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n */\n sce.parseAs = function sceParseAs(type, expr) {\n var parsed = $parse(expr);\n if (parsed.literal && parsed.constant) {\n return parsed;\n } else {\n return function sceParseAsTrusted(self, locals) {\n return sce.getTrusted(type, parsed(self, locals));\n };\n }\n };\n\n /**\n * @ngdoc method\n * @name $sce#trustAs\n *\n * @description\n * Delegates to {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}. As such,\n * returns an object that is trusted by angular for use in specified strict contextual\n * escaping contexts (such as ng-bind-html, ng-include, any src attribute\n * interpolation, any dom event binding attribute interpolation such as for onclick, etc.)\n * that uses the provided value. See * {@link ng.$sce $sce} for enabling strict contextual\n * escaping.\n *\n * @param {string} type The kind of context in which this value is safe for use. e.g. url,\n * resource_url, html, js and css.\n * @param {*} value The value that that should be considered trusted/safe.\n * @returns {*} A value that can be used to stand in for the provided `value` in places\n * where Angular expects a $sce.trustAs() return value.\n */\n\n /**\n * @ngdoc method\n * @name $sce#trustAsHtml\n *\n * @description\n * Shorthand method. `$sce.trustAsHtml(value)` →\n * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.HTML, value)`}\n *\n * @param {*} value The value to trustAs.\n * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedHtml\n * $sce.getTrustedHtml(value)} to obtain the original value. (privileged directives\n * only accept expressions that are either literal constants or are the\n * return value of {@link ng.$sce#trustAs $sce.trustAs}.)\n */\n\n /**\n * @ngdoc method\n * @name $sce#trustAsUrl\n *\n * @description\n * Shorthand method. `$sce.trustAsUrl(value)` →\n * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.URL, value)`}\n *\n * @param {*} value The value to trustAs.\n * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedUrl\n * $sce.getTrustedUrl(value)} to obtain the original value. (privileged directives\n * only accept expressions that are either literal constants or are the\n * return value of {@link ng.$sce#trustAs $sce.trustAs}.)\n */\n\n /**\n * @ngdoc method\n * @name $sce#trustAsResourceUrl\n *\n * @description\n * Shorthand method. `$sce.trustAsResourceUrl(value)` →\n * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.RESOURCE_URL, value)`}\n *\n * @param {*} value The value to trustAs.\n * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedResourceUrl\n * $sce.getTrustedResourceUrl(value)} to obtain the original value. (privileged directives\n * only accept expressions that are either literal constants or are the return\n * value of {@link ng.$sce#trustAs $sce.trustAs}.)\n */\n\n /**\n * @ngdoc method\n * @name $sce#trustAsJs\n *\n * @description\n * Shorthand method. `$sce.trustAsJs(value)` →\n * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.JS, value)`}\n *\n * @param {*} value The value to trustAs.\n * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedJs\n * $sce.getTrustedJs(value)} to obtain the original value. (privileged directives\n * only accept expressions that are either literal constants or are the\n * return value of {@link ng.$sce#trustAs $sce.trustAs}.)\n */\n\n /**\n * @ngdoc method\n * @name $sce#getTrusted\n *\n * @description\n * Delegates to {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted`}. As such,\n * takes the result of a {@link ng.$sce#trustAs `$sce.trustAs`}() call and returns the\n * originally supplied value if the queried context type is a supertype of the created type.\n * If this condition isn't satisfied, throws an exception.\n *\n * @param {string} type The kind of context in which this value is to be used.\n * @param {*} maybeTrusted The result of a prior {@link ng.$sce#trustAs `$sce.trustAs`}\n * call.\n * @returns {*} The value the was originally provided to\n * {@link ng.$sce#trustAs `$sce.trustAs`} if valid in this context.\n * Otherwise, throws an exception.\n */\n\n /**\n * @ngdoc method\n * @name $sce#getTrustedHtml\n *\n * @description\n * Shorthand method. `$sce.getTrustedHtml(value)` →\n * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.HTML, value)`}\n *\n * @param {*} value The value to pass to `$sce.getTrusted`.\n * @returns {*} The return value of `$sce.getTrusted($sce.HTML, value)`\n */\n\n /**\n * @ngdoc method\n * @name $sce#getTrustedCss\n *\n * @description\n * Shorthand method. `$sce.getTrustedCss(value)` →\n * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.CSS, value)`}\n *\n * @param {*} value The value to pass to `$sce.getTrusted`.\n * @returns {*} The return value of `$sce.getTrusted($sce.CSS, value)`\n */\n\n /**\n * @ngdoc method\n * @name $sce#getTrustedUrl\n *\n * @description\n * Shorthand method. `$sce.getTrustedUrl(value)` →\n * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.URL, value)`}\n *\n * @param {*} value The value to pass to `$sce.getTrusted`.\n * @returns {*} The return value of `$sce.getTrusted($sce.URL, value)`\n */\n\n /**\n * @ngdoc method\n * @name $sce#getTrustedResourceUrl\n *\n * @description\n * Shorthand method. `$sce.getTrustedResourceUrl(value)` →\n * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.RESOURCE_URL, value)`}\n *\n * @param {*} value The value to pass to `$sceDelegate.getTrusted`.\n * @returns {*} The return value of `$sce.getTrusted($sce.RESOURCE_URL, value)`\n */\n\n /**\n * @ngdoc method\n * @name $sce#getTrustedJs\n *\n * @description\n * Shorthand method. `$sce.getTrustedJs(value)` →\n * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.JS, value)`}\n *\n * @param {*} value The value to pass to `$sce.getTrusted`.\n * @returns {*} The return value of `$sce.getTrusted($sce.JS, value)`\n */\n\n /**\n * @ngdoc method\n * @name $sce#parseAsHtml\n *\n * @description\n * Shorthand method. `$sce.parseAsHtml(expression string)` →\n * {@link ng.$sce#parse `$sce.parseAs($sce.HTML, value)`}\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n */\n\n /**\n * @ngdoc method\n * @name $sce#parseAsCss\n *\n * @description\n * Shorthand method. `$sce.parseAsCss(value)` →\n * {@link ng.$sce#parse `$sce.parseAs($sce.CSS, value)`}\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n */\n\n /**\n * @ngdoc method\n * @name $sce#parseAsUrl\n *\n * @description\n * Shorthand method. `$sce.parseAsUrl(value)` →\n * {@link ng.$sce#parse `$sce.parseAs($sce.URL, value)`}\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n */\n\n /**\n * @ngdoc method\n * @name $sce#parseAsResourceUrl\n *\n * @description\n * Shorthand method. `$sce.parseAsResourceUrl(value)` →\n * {@link ng.$sce#parse `$sce.parseAs($sce.RESOURCE_URL, value)`}\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n */\n\n /**\n * @ngdoc method\n * @name $sce#parseAsJs\n *\n * @description\n * Shorthand method. `$sce.parseAsJs(value)` →\n * {@link ng.$sce#parse `$sce.parseAs($sce.JS, value)`}\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n */\n\n // Shorthand delegations.\n var parse = sce.parseAs,\n getTrusted = sce.getTrusted,\n trustAs = sce.trustAs;\n\n forEach(SCE_CONTEXTS, function (enumValue, name) {\n var lName = lowercase(name);\n sce[camelCase(\"parse_as_\" + lName)] = function (expr) {\n return parse(enumValue, expr);\n };\n sce[camelCase(\"get_trusted_\" + lName)] = function (value) {\n return getTrusted(enumValue, value);\n };\n sce[camelCase(\"trust_as_\" + lName)] = function (value) {\n return trustAs(enumValue, value);\n };\n });\n\n return sce;\n }];\n}\n\n/**\n * !!! This is an undocumented \"private\" service !!!\n *\n * @name $sniffer\n * @requires $window\n * @requires $document\n *\n * @property {boolean} history Does the browser support html5 history api ?\n * @property {boolean} hashchange Does the browser support hashchange event ?\n * @property {boolean} transitions Does the browser support CSS transition events ?\n * @property {boolean} animations Does the browser support CSS animation events ?\n *\n * @description\n * This is very simple implementation of testing browser's features.\n */\nfunction $SnifferProvider() {\n this.$get = ['$window', '$document', function($window, $document) {\n var eventSupport = {},\n android =\n int((/android (\\d+)/.exec(lowercase(($window.navigator || {}).userAgent)) || [])[1]),\n boxee = /Boxee/i.test(($window.navigator || {}).userAgent),\n document = $document[0] || {},\n documentMode = document.documentMode,\n vendorPrefix,\n vendorRegex = /^(Moz|webkit|O|ms)(?=[A-Z])/,\n bodyStyle = document.body && document.body.style,\n transitions = false,\n animations = false,\n match;\n\n if (bodyStyle) {\n for(var prop in bodyStyle) {\n if(match = vendorRegex.exec(prop)) {\n vendorPrefix = match[0];\n vendorPrefix = vendorPrefix.substr(0, 1).toUpperCase() + vendorPrefix.substr(1);\n break;\n }\n }\n\n if(!vendorPrefix) {\n vendorPrefix = ('WebkitOpacity' in bodyStyle) && 'webkit';\n }\n\n transitions = !!(('transition' in bodyStyle) || (vendorPrefix + 'Transition' in bodyStyle));\n animations = !!(('animation' in bodyStyle) || (vendorPrefix + 'Animation' in bodyStyle));\n\n if (android && (!transitions||!animations)) {\n transitions = isString(document.body.style.webkitTransition);\n animations = isString(document.body.style.webkitAnimation);\n }\n }\n\n\n return {\n // Android has history.pushState, but it does not update location correctly\n // so let's not use the history API at all.\n // http://code.google.com/p/android/issues/detail?id=17471\n // https://github.com/angular/angular.js/issues/904\n\n // older webkit browser (533.9) on Boxee box has exactly the same problem as Android has\n // so let's not use the history API also\n // We are purposefully using `!(android < 4)` to cover the case when `android` is undefined\n // jshint -W018\n history: !!($window.history && $window.history.pushState && !(android < 4) && !boxee),\n // jshint +W018\n hashchange: 'onhashchange' in $window &&\n // IE8 compatible mode lies\n (!documentMode || documentMode > 7),\n hasEvent: function(event) {\n // IE9 implements 'input' event it's so fubared that we rather pretend that it doesn't have\n // it. In particular the event is not fired when backspace or delete key are pressed or\n // when cut operation is performed.\n if (event == 'input' && msie == 9) return false;\n\n if (isUndefined(eventSupport[event])) {\n var divElm = document.createElement('div');\n eventSupport[event] = 'on' + event in divElm;\n }\n\n return eventSupport[event];\n },\n csp: csp(),\n vendorPrefix: vendorPrefix,\n transitions : transitions,\n animations : animations,\n android: android,\n msie : msie,\n msieDocumentMode: documentMode\n };\n }];\n}\n\nfunction $TimeoutProvider() {\n this.$get = ['$rootScope', '$browser', '$q', '$exceptionHandler',\n function($rootScope, $browser, $q, $exceptionHandler) {\n var deferreds = {};\n\n\n /**\n * @ngdoc service\n * @name $timeout\n *\n * @description\n * Angular's wrapper for `window.setTimeout`. The `fn` function is wrapped into a try/catch\n * block and delegates any exceptions to\n * {@link ng.$exceptionHandler $exceptionHandler} service.\n *\n * The return value of registering a timeout function is a promise, which will be resolved when\n * the timeout is reached and the timeout function is executed.\n *\n * To cancel a timeout request, call `$timeout.cancel(promise)`.\n *\n * In tests you can use {@link ngMock.$timeout `$timeout.flush()`} to\n * synchronously flush the queue of deferred functions.\n *\n * @param {function()} fn A function, whose execution should be delayed.\n * @param {number=} [delay=0] Delay in milliseconds.\n * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise\n * will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.\n * @returns {Promise} Promise that will be resolved when the timeout is reached. The value this\n * promise will be resolved with is the return value of the `fn` function.\n *\n */\n function timeout(fn, delay, invokeApply) {\n var deferred = $q.defer(),\n promise = deferred.promise,\n skipApply = (isDefined(invokeApply) && !invokeApply),\n timeoutId;\n\n timeoutId = $browser.defer(function() {\n try {\n deferred.resolve(fn());\n } catch(e) {\n deferred.reject(e);\n $exceptionHandler(e);\n }\n finally {\n delete deferreds[promise.$$timeoutId];\n }\n\n if (!skipApply) $rootScope.$apply();\n }, delay);\n\n promise.$$timeoutId = timeoutId;\n deferreds[timeoutId] = deferred;\n\n return promise;\n }\n\n\n /**\n * @ngdoc method\n * @name $timeout#cancel\n *\n * @description\n * Cancels a task associated with the `promise`. As a result of this, the promise will be\n * resolved with a rejection.\n *\n * @param {Promise=} promise Promise returned by the `$timeout` function.\n * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully\n * canceled.\n */\n timeout.cancel = function(promise) {\n if (promise && promise.$$timeoutId in deferreds) {\n deferreds[promise.$$timeoutId].reject('canceled');\n delete deferreds[promise.$$timeoutId];\n return $browser.defer.cancel(promise.$$timeoutId);\n }\n return false;\n };\n\n return timeout;\n }];\n}\n\n// NOTE: The usage of window and document instead of $window and $document here is\n// deliberate. This service depends on the specific behavior of anchor nodes created by the\n// browser (resolving and parsing URLs) that is unlikely to be provided by mock objects and\n// cause us to break tests. In addition, when the browser resolves a URL for XHR, it\n// doesn't know about mocked locations and resolves URLs to the real document - which is\n// exactly the behavior needed here. There is little value is mocking these out for this\n// service.\nvar urlParsingNode = document.createElement(\"a\");\nvar originUrl = urlResolve(window.location.href, true);\n\n\n/**\n *\n * Implementation Notes for non-IE browsers\n * ----------------------------------------\n * Assigning a URL to the href property of an anchor DOM node, even one attached to the DOM,\n * results both in the normalizing and parsing of the URL. Normalizing means that a relative\n * URL will be resolved into an absolute URL in the context of the application document.\n * Parsing means that the anchor node's host, hostname, protocol, port, pathname and related\n * properties are all populated to reflect the normalized URL. This approach has wide\n * compatibility - Safari 1+, Mozilla 1+, Opera 7+,e etc. See\n * http://www.aptana.com/reference/html/api/HTMLAnchorElement.html\n *\n * Implementation Notes for IE\n * ---------------------------\n * IE >= 8 and <= 10 normalizes the URL when assigned to the anchor node similar to the other\n * browsers. However, the parsed components will not be set if the URL assigned did not specify\n * them. (e.g. if you assign a.href = \"foo\", then a.protocol, a.host, etc. will be empty.) We\n * work around that by performing the parsing in a 2nd step by taking a previously normalized\n * URL (e.g. by assigning to a.href) and assigning it a.href again. This correctly populates the\n * properties such as protocol, hostname, port, etc.\n *\n * IE7 does not normalize the URL when assigned to an anchor node. (Apparently, it does, if one\n * uses the inner HTML approach to assign the URL as part of an HTML snippet -\n * http://stackoverflow.com/a/472729) However, setting img[src] does normalize the URL.\n * Unfortunately, setting img[src] to something like \"javascript:foo\" on IE throws an exception.\n * Since the primary usage for normalizing URLs is to sanitize such URLs, we can't use that\n * method and IE < 8 is unsupported.\n *\n * References:\n * http://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement\n * http://www.aptana.com/reference/html/api/HTMLAnchorElement.html\n * http://url.spec.whatwg.org/#urlutils\n * https://github.com/angular/angular.js/pull/2902\n * http://james.padolsey.com/javascript/parsing-urls-with-the-dom/\n *\n * @kind function\n * @param {string} url The URL to be parsed.\n * @description Normalizes and parses a URL.\n * @returns {object} Returns the normalized URL as a dictionary.\n *\n * | member name | Description |\n * |---------------|----------------|\n * | href | A normalized version of the provided URL if it was not an absolute URL |\n * | protocol | The protocol including the trailing colon |\n * | host | The host and port (if the port is non-default) of the normalizedUrl |\n * | search | The search params, minus the question mark |\n * | hash | The hash string, minus the hash symbol\n * | hostname | The hostname\n * | port | The port, without \":\"\n * | pathname | The pathname, beginning with \"/\"\n *\n */\nfunction urlResolve(url, base) {\n var href = url;\n\n if (msie) {\n // Normalize before parse. Refer Implementation Notes on why this is\n // done in two steps on IE.\n urlParsingNode.setAttribute(\"href\", href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/')\n ? urlParsingNode.pathname\n : '/' + urlParsingNode.pathname\n };\n}\n\n/**\n * Parse a request URL and determine whether this is a same-origin request as the application document.\n *\n * @param {string|object} requestUrl The url of the request as a string that will be resolved\n * or a parsed URL object.\n * @returns {boolean} Whether the request is for the same origin as the application document.\n */\nfunction urlIsSameOrigin(requestUrl) {\n var parsed = (isString(requestUrl)) ? urlResolve(requestUrl) : requestUrl;\n return (parsed.protocol === originUrl.protocol &&\n parsed.host === originUrl.host);\n}\n\n/**\n * @ngdoc service\n * @name $window\n *\n * @description\n * A reference to the browser's `window` object. While `window`\n * is globally available in JavaScript, it causes testability problems, because\n * it is a global variable. In angular we always refer to it through the\n * `$window` service, so it may be overridden, removed or mocked for testing.\n *\n * Expressions, like the one defined for the `ngClick` directive in the example\n * below, are evaluated with respect to the current scope. Therefore, there is\n * no risk of inadvertently coding in a dependency on a global value in such an\n * expression.\n *\n * @example\n \n \n \n
\n \n \n
\n
\n \n it('should display the greeting in the input box', function() {\n element(by.model('greeting')).sendKeys('Hello, E2E Tests');\n // If we click the button it will block the test runner\n // element(':button').click();\n });\n \n
\n */\nfunction $WindowProvider(){\n this.$get = valueFn(window);\n}\n\n/* global currencyFilter: true,\n dateFilter: true,\n filterFilter: true,\n jsonFilter: true,\n limitToFilter: true,\n lowercaseFilter: true,\n numberFilter: true,\n orderByFilter: true,\n uppercaseFilter: true,\n */\n\n/**\n * @ngdoc provider\n * @name $filterProvider\n * @description\n *\n * Filters are just functions which transform input to an output. However filters need to be\n * Dependency Injected. To achieve this a filter definition consists of a factory function which is\n * annotated with dependencies and is responsible for creating a filter function.\n *\n * ```js\n * // Filter registration\n * function MyModule($provide, $filterProvider) {\n * // create a service to demonstrate injection (not always needed)\n * $provide.value('greet', function(name){\n * return 'Hello ' + name + '!';\n * });\n *\n * // register a filter factory which uses the\n * // greet service to demonstrate DI.\n * $filterProvider.register('greet', function(greet){\n * // return the filter function which uses the greet service\n * // to generate salutation\n * return function(text) {\n * // filters need to be forgiving so check input validity\n * return text && greet(text) || text;\n * };\n * });\n * }\n * ```\n *\n * The filter function is registered with the `$injector` under the filter name suffix with\n * `Filter`.\n *\n * ```js\n * it('should be the same instance', inject(\n * function($filterProvider) {\n * $filterProvider.register('reverse', function(){\n * return ...;\n * });\n * },\n * function($filter, reverseFilter) {\n * expect($filter('reverse')).toBe(reverseFilter);\n * });\n * ```\n *\n *\n * For more information about how angular filters work, and how to create your own filters, see\n * {@link guide/filter Filters} in the Angular Developer Guide.\n */\n\n/**\n * @ngdoc service\n * @name $filter\n * @kind function\n * @description\n * Filters are used for formatting data displayed to the user.\n *\n * The general syntax in templates is as follows:\n *\n * {{ expression [| filter_name[:parameter_value] ... ] }}\n *\n * @param {String} name Name of the filter function to retrieve\n * @return {Function} the filter function\n * @example\n \n \n
\n

{{ originalText }}

\n

{{ filteredText }}

\n
\n
\n\n \n angular.module('filterExample', [])\n .controller('MainCtrl', function($scope, $filter) {\n $scope.originalText = 'hello';\n $scope.filteredText = $filter('uppercase')($scope.originalText);\n });\n \n
\n */\n$FilterProvider.$inject = ['$provide'];\nfunction $FilterProvider($provide) {\n var suffix = 'Filter';\n\n /**\n * @ngdoc method\n * @name $filterProvider#register\n * @param {string|Object} name Name of the filter function, or an object map of filters where\n * the keys are the filter names and the values are the filter factories.\n * @returns {Object} Registered filter instance, or if a map of filters was provided then a map\n * of the registered filter instances.\n */\n function register(name, factory) {\n if(isObject(name)) {\n var filters = {};\n forEach(name, function(filter, key) {\n filters[key] = register(key, filter);\n });\n return filters;\n } else {\n return $provide.factory(name + suffix, factory);\n }\n }\n this.register = register;\n\n this.$get = ['$injector', function($injector) {\n return function(name) {\n return $injector.get(name + suffix);\n };\n }];\n\n ////////////////////////////////////////\n\n /* global\n currencyFilter: false,\n dateFilter: false,\n filterFilter: false,\n jsonFilter: false,\n limitToFilter: false,\n lowercaseFilter: false,\n numberFilter: false,\n orderByFilter: false,\n uppercaseFilter: false,\n */\n\n register('currency', currencyFilter);\n register('date', dateFilter);\n register('filter', filterFilter);\n register('json', jsonFilter);\n register('limitTo', limitToFilter);\n register('lowercase', lowercaseFilter);\n register('number', numberFilter);\n register('orderBy', orderByFilter);\n register('uppercase', uppercaseFilter);\n}\n\n/**\n * @ngdoc filter\n * @name filter\n * @kind function\n *\n * @description\n * Selects a subset of items from `array` and returns it as a new array.\n *\n * @param {Array} array The source array.\n * @param {string|Object|function()} expression The predicate to be used for selecting items from\n * `array`.\n *\n * Can be one of:\n *\n * - `string`: The string is evaluated as an expression and the resulting value is used for substring match against\n * the contents of the `array`. All strings or objects with string properties in `array` that contain this string\n * will be returned. The predicate can be negated by prefixing the string with `!`.\n *\n * - `Object`: A pattern object can be used to filter specific properties on objects contained\n * by `array`. For example `{name:\"M\", phone:\"1\"}` predicate will return an array of items\n * which have property `name` containing \"M\" and property `phone` containing \"1\". A special\n * property name `$` can be used (as in `{$:\"text\"}`) to accept a match against any\n * property of the object. That's equivalent to the simple substring match with a `string`\n * as described above. The predicate can be negated by prefixing the string with `!`.\n * For Example `{name: \"!M\"}` predicate will return an array of items which have property `name`\n * not containing \"M\".\n *\n * - `function(value)`: A predicate function can be used to write arbitrary filters. The function is\n * called for each element of `array`. The final result is an array of those elements that\n * the predicate returned true for.\n *\n * @param {function(actual, expected)|true|undefined} comparator Comparator which is used in\n * determining if the expected value (from the filter expression) and actual value (from\n * the object in the array) should be considered a match.\n *\n * Can be one of:\n *\n * - `function(actual, expected)`:\n * The function will be given the object value and the predicate value to compare and\n * should return true if the item should be included in filtered result.\n *\n * - `true`: A shorthand for `function(actual, expected) { return angular.equals(expected, actual)}`.\n * this is essentially strict comparison of expected and actual.\n *\n * - `false|undefined`: A short hand for a function which will look for a substring match in case\n * insensitive way.\n *\n * @example\n \n \n
\n\n Search: \n \n \n \n \n \n \n
NamePhone
{{friend.name}}{{friend.phone}}
\n
\n Any:
\n Name only
\n Phone only
\n Equality
\n \n \n \n \n \n \n
NamePhone
{{friendObj.name}}{{friendObj.phone}}
\n
\n \n var expectFriendNames = function(expectedNames, key) {\n element.all(by.repeater(key + ' in friends').column(key + '.name')).then(function(arr) {\n arr.forEach(function(wd, i) {\n expect(wd.getText()).toMatch(expectedNames[i]);\n });\n });\n };\n\n it('should search across all fields when filtering with a string', function() {\n var searchText = element(by.model('searchText'));\n searchText.clear();\n searchText.sendKeys('m');\n expectFriendNames(['Mary', 'Mike', 'Adam'], 'friend');\n\n searchText.clear();\n searchText.sendKeys('76');\n expectFriendNames(['John', 'Julie'], 'friend');\n });\n\n it('should search in specific fields when filtering with a predicate object', function() {\n var searchAny = element(by.model('search.$'));\n searchAny.clear();\n searchAny.sendKeys('i');\n expectFriendNames(['Mary', 'Mike', 'Julie', 'Juliette'], 'friendObj');\n });\n it('should use a equal comparison when comparator is true', function() {\n var searchName = element(by.model('search.name'));\n var strict = element(by.model('strict'));\n searchName.clear();\n searchName.sendKeys('Julie');\n strict.click();\n expectFriendNames(['Julie'], 'friendObj');\n });\n \n
\n */\nfunction filterFilter() {\n return function(array, expression, comparator) {\n if (!isArray(array)) return array;\n\n var comparatorType = typeof(comparator),\n predicates = [];\n\n predicates.check = function(value) {\n for (var j = 0; j < predicates.length; j++) {\n if(!predicates[j](value)) {\n return false;\n }\n }\n return true;\n };\n\n if (comparatorType !== 'function') {\n if (comparatorType === 'boolean' && comparator) {\n comparator = function(obj, text) {\n return angular.equals(obj, text);\n };\n } else {\n comparator = function(obj, text) {\n if (obj && text && typeof obj === 'object' && typeof text === 'object') {\n for (var objKey in obj) {\n if (objKey.charAt(0) !== '$' && hasOwnProperty.call(obj, objKey) &&\n comparator(obj[objKey], text[objKey])) {\n return true;\n }\n }\n return false;\n }\n text = (''+text).toLowerCase();\n return (''+obj).toLowerCase().indexOf(text) > -1;\n };\n }\n }\n\n var search = function(obj, text){\n if (typeof text === 'string' && text.charAt(0) === '!') {\n return !search(obj, text.substr(1));\n }\n switch (typeof obj) {\n case 'boolean':\n case 'number':\n case 'string':\n return comparator(obj, text);\n case 'object':\n switch (typeof text) {\n case 'object':\n return comparator(obj, text);\n default:\n for ( var objKey in obj) {\n if (objKey.charAt(0) !== '$' && search(obj[objKey], text)) {\n return true;\n }\n }\n break;\n }\n return false;\n case 'array':\n for ( var i = 0; i < obj.length; i++) {\n if (search(obj[i], text)) {\n return true;\n }\n }\n return false;\n default:\n return false;\n }\n };\n switch (typeof expression) {\n case 'boolean':\n case 'number':\n case 'string':\n // Set up expression object and fall through\n expression = {$:expression};\n // jshint -W086\n case 'object':\n // jshint +W086\n for (var key in expression) {\n (function(path) {\n if (typeof expression[path] === 'undefined') return;\n predicates.push(function(value) {\n return search(path == '$' ? value : (value && value[path]), expression[path]);\n });\n })(key);\n }\n break;\n case 'function':\n predicates.push(expression);\n break;\n default:\n return array;\n }\n var filtered = [];\n for ( var j = 0; j < array.length; j++) {\n var value = array[j];\n if (predicates.check(value)) {\n filtered.push(value);\n }\n }\n return filtered;\n };\n}\n\n/**\n * @ngdoc filter\n * @name currency\n * @kind function\n *\n * @description\n * Formats a number as a currency (ie $1,234.56). When no currency symbol is provided, default\n * symbol for current locale is used.\n *\n * @param {number} amount Input to filter.\n * @param {string=} symbol Currency symbol or identifier to be displayed.\n * @returns {string} Formatted number.\n *\n *\n * @example\n \n \n \n
\n
\n default currency symbol ($): {{amount | currency}}
\n custom currency identifier (USD$): {{amount | currency:\"USD$\"}}\n
\n
\n \n it('should init with 1234.56', function() {\n expect(element(by.id('currency-default')).getText()).toBe('$1,234.56');\n expect(element(by.binding('amount | currency:\"USD$\"')).getText()).toBe('USD$1,234.56');\n });\n it('should update', function() {\n if (browser.params.browser == 'safari') {\n // Safari does not understand the minus key. See\n // https://github.com/angular/protractor/issues/481\n return;\n }\n element(by.model('amount')).clear();\n element(by.model('amount')).sendKeys('-1234');\n expect(element(by.id('currency-default')).getText()).toBe('($1,234.00)');\n expect(element(by.binding('amount | currency:\"USD$\"')).getText()).toBe('(USD$1,234.00)');\n });\n \n
\n */\ncurrencyFilter.$inject = ['$locale'];\nfunction currencyFilter($locale) {\n var formats = $locale.NUMBER_FORMATS;\n return function(amount, currencySymbol){\n if (isUndefined(currencySymbol)) currencySymbol = formats.CURRENCY_SYM;\n return formatNumber(amount, formats.PATTERNS[1], formats.GROUP_SEP, formats.DECIMAL_SEP, 2).\n replace(/\\u00A4/g, currencySymbol);\n };\n}\n\n/**\n * @ngdoc filter\n * @name number\n * @kind function\n *\n * @description\n * Formats a number as text.\n *\n * If the input is not a number an empty string is returned.\n *\n * @param {number|string} number Number to format.\n * @param {(number|string)=} fractionSize Number of decimal places to round the number to.\n * If this is not provided then the fraction size is computed from the current locale's number\n * formatting pattern. In the case of the default locale, it will be 3.\n * @returns {string} Number rounded to decimalPlaces and places a “,” after each third digit.\n *\n * @example\n \n \n \n
\n Enter number:
\n Default formatting: {{val | number}}
\n No fractions: {{val | number:0}}
\n Negative number: {{-val | number:4}}\n
\n
\n \n it('should format numbers', function() {\n expect(element(by.id('number-default')).getText()).toBe('1,234.568');\n expect(element(by.binding('val | number:0')).getText()).toBe('1,235');\n expect(element(by.binding('-val | number:4')).getText()).toBe('-1,234.5679');\n });\n\n it('should update', function() {\n element(by.model('val')).clear();\n element(by.model('val')).sendKeys('3374.333');\n expect(element(by.id('number-default')).getText()).toBe('3,374.333');\n expect(element(by.binding('val | number:0')).getText()).toBe('3,374');\n expect(element(by.binding('-val | number:4')).getText()).toBe('-3,374.3330');\n });\n \n
\n */\n\n\nnumberFilter.$inject = ['$locale'];\nfunction numberFilter($locale) {\n var formats = $locale.NUMBER_FORMATS;\n return function(number, fractionSize) {\n return formatNumber(number, formats.PATTERNS[0], formats.GROUP_SEP, formats.DECIMAL_SEP,\n fractionSize);\n };\n}\n\nvar DECIMAL_SEP = '.';\nfunction formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {\n if (number == null || !isFinite(number) || isObject(number)) return '';\n\n var isNegative = number < 0;\n number = Math.abs(number);\n var numStr = number + '',\n formatedText = '',\n parts = [];\n\n var hasExponent = false;\n if (numStr.indexOf('e') !== -1) {\n var match = numStr.match(/([\\d\\.]+)e(-?)(\\d+)/);\n if (match && match[2] == '-' && match[3] > fractionSize + 1) {\n numStr = '0';\n number = 0;\n } else {\n formatedText = numStr;\n hasExponent = true;\n }\n }\n\n if (!hasExponent) {\n var fractionLen = (numStr.split(DECIMAL_SEP)[1] || '').length;\n\n // determine fractionSize if it is not specified\n if (isUndefined(fractionSize)) {\n fractionSize = Math.min(Math.max(pattern.minFrac, fractionLen), pattern.maxFrac);\n }\n\n // safely round numbers in JS without hitting imprecisions of floating-point arithmetics\n // inspired by:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round\n number = +(Math.round(+(number.toString() + 'e' + fractionSize)).toString() + 'e' + -fractionSize);\n\n if (number === 0) {\n isNegative = false;\n }\n\n var fraction = ('' + number).split(DECIMAL_SEP);\n var whole = fraction[0];\n fraction = fraction[1] || '';\n\n var i, pos = 0,\n lgroup = pattern.lgSize,\n group = pattern.gSize;\n\n if (whole.length >= (lgroup + group)) {\n pos = whole.length - lgroup;\n for (i = 0; i < pos; i++) {\n if ((pos - i)%group === 0 && i !== 0) {\n formatedText += groupSep;\n }\n formatedText += whole.charAt(i);\n }\n }\n\n for (i = pos; i < whole.length; i++) {\n if ((whole.length - i)%lgroup === 0 && i !== 0) {\n formatedText += groupSep;\n }\n formatedText += whole.charAt(i);\n }\n\n // format fraction part.\n while(fraction.length < fractionSize) {\n fraction += '0';\n }\n\n if (fractionSize && fractionSize !== \"0\") formatedText += decimalSep + fraction.substr(0, fractionSize);\n } else {\n\n if (fractionSize > 0 && number > -1 && number < 1) {\n formatedText = number.toFixed(fractionSize);\n }\n }\n\n parts.push(isNegative ? pattern.negPre : pattern.posPre);\n parts.push(formatedText);\n parts.push(isNegative ? pattern.negSuf : pattern.posSuf);\n return parts.join('');\n}\n\nfunction padNumber(num, digits, trim) {\n var neg = '';\n if (num < 0) {\n neg = '-';\n num = -num;\n }\n num = '' + num;\n while(num.length < digits) num = '0' + num;\n if (trim)\n num = num.substr(num.length - digits);\n return neg + num;\n}\n\n\nfunction dateGetter(name, size, offset, trim) {\n offset = offset || 0;\n return function(date) {\n var value = date['get' + name]();\n if (offset > 0 || value > -offset)\n value += offset;\n if (value === 0 && offset == -12 ) value = 12;\n return padNumber(value, size, trim);\n };\n}\n\nfunction dateStrGetter(name, shortForm) {\n return function(date, formats) {\n var value = date['get' + name]();\n var get = uppercase(shortForm ? ('SHORT' + name) : name);\n\n return formats[get][value];\n };\n}\n\nfunction timeZoneGetter(date) {\n var zone = -1 * date.getTimezoneOffset();\n var paddedZone = (zone >= 0) ? \"+\" : \"\";\n\n paddedZone += padNumber(Math[zone > 0 ? 'floor' : 'ceil'](zone / 60), 2) +\n padNumber(Math.abs(zone % 60), 2);\n\n return paddedZone;\n}\n\nfunction ampmGetter(date, formats) {\n return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1];\n}\n\nvar DATE_FORMATS = {\n yyyy: dateGetter('FullYear', 4),\n yy: dateGetter('FullYear', 2, 0, true),\n y: dateGetter('FullYear', 1),\n MMMM: dateStrGetter('Month'),\n MMM: dateStrGetter('Month', true),\n MM: dateGetter('Month', 2, 1),\n M: dateGetter('Month', 1, 1),\n dd: dateGetter('Date', 2),\n d: dateGetter('Date', 1),\n HH: dateGetter('Hours', 2),\n H: dateGetter('Hours', 1),\n hh: dateGetter('Hours', 2, -12),\n h: dateGetter('Hours', 1, -12),\n mm: dateGetter('Minutes', 2),\n m: dateGetter('Minutes', 1),\n ss: dateGetter('Seconds', 2),\n s: dateGetter('Seconds', 1),\n // while ISO 8601 requires fractions to be prefixed with `.` or `,`\n // we can be just safely rely on using `sss` since we currently don't support single or two digit fractions\n sss: dateGetter('Milliseconds', 3),\n EEEE: dateStrGetter('Day'),\n EEE: dateStrGetter('Day', true),\n a: ampmGetter,\n Z: timeZoneGetter\n};\n\nvar DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,\n NUMBER_STRING = /^\\-?\\d+$/;\n\n/**\n * @ngdoc filter\n * @name date\n * @kind function\n *\n * @description\n * Formats `date` to a string based on the requested `format`.\n *\n * `format` string can be composed of the following elements:\n *\n * * `'yyyy'`: 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010)\n * * `'yy'`: 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)\n * * `'y'`: 1 digit representation of year, e.g. (AD 1 => 1, AD 199 => 199)\n * * `'MMMM'`: Month in year (January-December)\n * * `'MMM'`: Month in year (Jan-Dec)\n * * `'MM'`: Month in year, padded (01-12)\n * * `'M'`: Month in year (1-12)\n * * `'dd'`: Day in month, padded (01-31)\n * * `'d'`: Day in month (1-31)\n * * `'EEEE'`: Day in Week,(Sunday-Saturday)\n * * `'EEE'`: Day in Week, (Sun-Sat)\n * * `'HH'`: Hour in day, padded (00-23)\n * * `'H'`: Hour in day (0-23)\n * * `'hh'`: Hour in am/pm, padded (01-12)\n * * `'h'`: Hour in am/pm, (1-12)\n * * `'mm'`: Minute in hour, padded (00-59)\n * * `'m'`: Minute in hour (0-59)\n * * `'ss'`: Second in minute, padded (00-59)\n * * `'s'`: Second in minute (0-59)\n * * `'.sss' or ',sss'`: Millisecond in second, padded (000-999)\n * * `'a'`: am/pm marker\n * * `'Z'`: 4 digit (+sign) representation of the timezone offset (-1200-+1200)\n *\n * `format` string can also be one of the following predefined\n * {@link guide/i18n localizable formats}:\n *\n * * `'medium'`: equivalent to `'MMM d, y h:mm:ss a'` for en_US locale\n * (e.g. Sep 3, 2010 12:05:08 pm)\n * * `'short'`: equivalent to `'M/d/yy h:mm a'` for en_US locale (e.g. 9/3/10 12:05 pm)\n * * `'fullDate'`: equivalent to `'EEEE, MMMM d,y'` for en_US locale\n * (e.g. Friday, September 3, 2010)\n * * `'longDate'`: equivalent to `'MMMM d, y'` for en_US locale (e.g. September 3, 2010)\n * * `'mediumDate'`: equivalent to `'MMM d, y'` for en_US locale (e.g. Sep 3, 2010)\n * * `'shortDate'`: equivalent to `'M/d/yy'` for en_US locale (e.g. 9/3/10)\n * * `'mediumTime'`: equivalent to `'h:mm:ss a'` for en_US locale (e.g. 12:05:08 pm)\n * * `'shortTime'`: equivalent to `'h:mm a'` for en_US locale (e.g. 12:05 pm)\n *\n * `format` string can contain literal values. These need to be escaped by surrounding with single quotes (e.g.\n * `\"h 'in the morning'\"`). In order to output a single quote, escape it - i.e., two single quotes in a sequence\n * (e.g. `\"h 'o''clock'\"`).\n *\n * @param {(Date|number|string)} date Date to format either as Date object, milliseconds (string or\n * number) or various ISO 8601 datetime string formats (e.g. yyyy-MM-ddTHH:mm:ss.sssZ and its\n * shorter versions like yyyy-MM-ddTHH:mmZ, yyyy-MM-dd or yyyyMMddTHHmmssZ). If no timezone is\n * specified in the string input, the time is considered to be in the local timezone.\n * @param {string=} format Formatting rules (see Description). If not specified,\n * `mediumDate` is used.\n * @returns {string} Formatted string or the input if input is not recognized as date/millis.\n *\n * @example\n \n \n {{1288323623006 | date:'medium'}}:\n {{1288323623006 | date:'medium'}}
\n {{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}:\n {{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}
\n {{1288323623006 | date:'MM/dd/yyyy @ h:mma'}}:\n {{'1288323623006' | date:'MM/dd/yyyy @ h:mma'}}
\n {{1288323623006 | date:\"MM/dd/yyyy 'at' h:mma\"}}:\n {{'1288323623006' | date:\"MM/dd/yyyy 'at' h:mma\"}}
\n
\n \n it('should format date', function() {\n expect(element(by.binding(\"1288323623006 | date:'medium'\")).getText()).\n toMatch(/Oct 2\\d, 2010 \\d{1,2}:\\d{2}:\\d{2} (AM|PM)/);\n expect(element(by.binding(\"1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'\")).getText()).\n toMatch(/2010\\-10\\-2\\d \\d{2}:\\d{2}:\\d{2} (\\-|\\+)?\\d{4}/);\n expect(element(by.binding(\"'1288323623006' | date:'MM/dd/yyyy @ h:mma'\")).getText()).\n toMatch(/10\\/2\\d\\/2010 @ \\d{1,2}:\\d{2}(AM|PM)/);\n expect(element(by.binding(\"'1288323623006' | date:\\\"MM/dd/yyyy 'at' h:mma\\\"\")).getText()).\n toMatch(/10\\/2\\d\\/2010 at \\d{1,2}:\\d{2}(AM|PM)/);\n });\n \n
\n */\ndateFilter.$inject = ['$locale'];\nfunction dateFilter($locale) {\n\n\n var R_ISO8601_STR = /^(\\d{4})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\n // 1 2 3 4 5 6 7 8 9 10 11\n function jsonStringToDate(string) {\n var match;\n if (match = string.match(R_ISO8601_STR)) {\n var date = new Date(0),\n tzHour = 0,\n tzMin = 0,\n dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear,\n timeSetter = match[8] ? date.setUTCHours : date.setHours;\n\n if (match[9]) {\n tzHour = int(match[9] + match[10]);\n tzMin = int(match[9] + match[11]);\n }\n dateSetter.call(date, int(match[1]), int(match[2]) - 1, int(match[3]));\n var h = int(match[4]||0) - tzHour;\n var m = int(match[5]||0) - tzMin;\n var s = int(match[6]||0);\n var ms = Math.round(parseFloat('0.' + (match[7]||0)) * 1000);\n timeSetter.call(date, h, m, s, ms);\n return date;\n }\n return string;\n }\n\n\n return function(date, format) {\n var text = '',\n parts = [],\n fn, match;\n\n format = format || 'mediumDate';\n format = $locale.DATETIME_FORMATS[format] || format;\n if (isString(date)) {\n date = NUMBER_STRING.test(date) ? int(date) : jsonStringToDate(date);\n }\n\n if (isNumber(date)) {\n date = new Date(date);\n }\n\n if (!isDate(date)) {\n return date;\n }\n\n while(format) {\n match = DATE_FORMATS_SPLIT.exec(format);\n if (match) {\n parts = concat(parts, match, 1);\n format = parts.pop();\n } else {\n parts.push(format);\n format = null;\n }\n }\n\n forEach(parts, function(value){\n fn = DATE_FORMATS[value];\n text += fn ? fn(date, $locale.DATETIME_FORMATS)\n : value.replace(/(^'|'$)/g, '').replace(/''/g, \"'\");\n });\n\n return text;\n };\n}\n\n\n/**\n * @ngdoc filter\n * @name json\n * @kind function\n *\n * @description\n * Allows you to convert a JavaScript object into JSON string.\n *\n * This filter is mostly useful for debugging. When using the double curly {{value}} notation\n * the binding is automatically converted to JSON.\n *\n * @param {*} object Any JavaScript object (including arrays and primitive types) to filter.\n * @returns {string} JSON string.\n *\n *\n * @example\n \n \n
{{ {'name':'value'} | json }}
\n
\n \n it('should jsonify filtered objects', function() {\n expect(element(by.binding(\"{'name':'value'}\")).getText()).toMatch(/\\{\\n \"name\": ?\"value\"\\n}/);\n });\n \n
\n *\n */\nfunction jsonFilter() {\n return function(object) {\n return toJson(object, true);\n };\n}\n\n\n/**\n * @ngdoc filter\n * @name lowercase\n * @kind function\n * @description\n * Converts string to lowercase.\n * @see angular.lowercase\n */\nvar lowercaseFilter = valueFn(lowercase);\n\n\n/**\n * @ngdoc filter\n * @name uppercase\n * @kind function\n * @description\n * Converts string to uppercase.\n * @see angular.uppercase\n */\nvar uppercaseFilter = valueFn(uppercase);\n\n/**\n * @ngdoc filter\n * @name limitTo\n * @kind function\n *\n * @description\n * Creates a new array or string containing only a specified number of elements. The elements\n * are taken from either the beginning or the end of the source array or string, as specified by\n * the value and sign (positive or negative) of `limit`.\n *\n * @param {Array|string} input Source array or string to be limited.\n * @param {string|number} limit The length of the returned array or string. If the `limit` number\n * is positive, `limit` number of items from the beginning of the source array/string are copied.\n * If the number is negative, `limit` number of items from the end of the source array/string\n * are copied. The `limit` will be trimmed if it exceeds `array.length`\n * @returns {Array|string} A new sub-array or substring of length `limit` or less if input array\n * had less than `limit` elements.\n *\n * @example\n \n \n \n
\n Limit {{numbers}} to: \n

Output numbers: {{ numbers | limitTo:numLimit }}

\n Limit {{letters}} to: \n

Output letters: {{ letters | limitTo:letterLimit }}

\n
\n
\n \n var numLimitInput = element(by.model('numLimit'));\n var letterLimitInput = element(by.model('letterLimit'));\n var limitedNumbers = element(by.binding('numbers | limitTo:numLimit'));\n var limitedLetters = element(by.binding('letters | limitTo:letterLimit'));\n\n it('should limit the number array to first three items', function() {\n expect(numLimitInput.getAttribute('value')).toBe('3');\n expect(letterLimitInput.getAttribute('value')).toBe('3');\n expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3]');\n expect(limitedLetters.getText()).toEqual('Output letters: abc');\n });\n\n // There is a bug in safari and protractor that doesn't like the minus key\n // it('should update the output when -3 is entered', function() {\n // numLimitInput.clear();\n // numLimitInput.sendKeys('-3');\n // letterLimitInput.clear();\n // letterLimitInput.sendKeys('-3');\n // expect(limitedNumbers.getText()).toEqual('Output numbers: [7,8,9]');\n // expect(limitedLetters.getText()).toEqual('Output letters: ghi');\n // });\n\n it('should not exceed the maximum size of input array', function() {\n numLimitInput.clear();\n numLimitInput.sendKeys('100');\n letterLimitInput.clear();\n letterLimitInput.sendKeys('100');\n expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3,4,5,6,7,8,9]');\n expect(limitedLetters.getText()).toEqual('Output letters: abcdefghi');\n });\n \n
\n */\nfunction limitToFilter(){\n return function(input, limit) {\n if (!isArray(input) && !isString(input)) return input;\n\n if (Math.abs(Number(limit)) === Infinity) {\n limit = Number(limit);\n } else {\n limit = int(limit);\n }\n\n if (isString(input)) {\n //NaN check on limit\n if (limit) {\n return limit >= 0 ? input.slice(0, limit) : input.slice(limit, input.length);\n } else {\n return \"\";\n }\n }\n\n var out = [],\n i, n;\n\n // if abs(limit) exceeds maximum length, trim it\n if (limit > input.length)\n limit = input.length;\n else if (limit < -input.length)\n limit = -input.length;\n\n if (limit > 0) {\n i = 0;\n n = limit;\n } else {\n i = input.length + limit;\n n = input.length;\n }\n\n for (; i=} expression A predicate to be\n * used by the comparator to determine the order of elements.\n *\n * Can be one of:\n *\n * - `function`: Getter function. The result of this function will be sorted using the\n * `<`, `=`, `>` operator.\n * - `string`: An Angular expression. The result of this expression is used to compare elements\n * (for example `name` to sort by a property called `name` or `name.substr(0, 3)` to sort by\n * 3 first characters of a property called `name`). The result of a constant expression\n * is interpreted as a property name to be used in comparisons (for example `\"special name\"`\n * to sort object by the value of their `special name` property). An expression can be\n * optionally prefixed with `+` or `-` to control ascending or descending sort order\n * (for example, `+name` or `-name`). If no property is provided, (e.g. `'+'`) then the array\n * element itself is used to compare where sorting.\n * - `Array`: An array of function or string predicates. The first predicate in the array\n * is used for sorting, but when two items are equivalent, the next predicate is used.\n *\n * If the predicate is missing or empty then it defaults to `'+'`.\n *\n * @param {boolean=} reverse Reverse the order of the array.\n * @returns {Array} Sorted copy of the source array.\n *\n * @example\n \n \n \n
\n
Sorting predicate = {{predicate}}; reverse = {{reverse}}
\n
\n [ unsorted ]\n \n \n \n \n \n \n \n \n \n \n \n
Name\n (^)Phone NumberAge
{{friend.name}}{{friend.phone}}{{friend.age}}
\n
\n
\n
\n *\n * It's also possible to call the orderBy filter manually, by injecting `$filter`, retrieving the\n * filter routine with `$filter('orderBy')`, and calling the returned filter routine with the\n * desired parameters.\n *\n * Example:\n *\n * @example\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n
Name\n (^)Phone NumberAge
{{friend.name}}{{friend.phone}}{{friend.age}}
\n
\n
\n\n \n angular.module('orderByExample', [])\n .controller('ExampleController', ['$scope', '$filter', function($scope, $filter) {\n var orderBy = $filter('orderBy');\n $scope.friends = [\n { name: 'John', phone: '555-1212', age: 10 },\n { name: 'Mary', phone: '555-9876', age: 19 },\n { name: 'Mike', phone: '555-4321', age: 21 },\n { name: 'Adam', phone: '555-5678', age: 35 },\n { name: 'Julie', phone: '555-8765', age: 29 }\n ];\n $scope.order = function(predicate, reverse) {\n $scope.friends = orderBy($scope.friends, predicate, reverse);\n };\n $scope.order('-age',false);\n }]);\n \n
\n */\norderByFilter.$inject = ['$parse'];\nfunction orderByFilter($parse){\n return function(array, sortPredicate, reverseOrder) {\n if (!(isArrayLike(array))) return array;\n sortPredicate = isArray(sortPredicate) ? sortPredicate: [sortPredicate];\n if (sortPredicate.length === 0) { sortPredicate = ['+']; }\n sortPredicate = map(sortPredicate, function(predicate){\n var descending = false, get = predicate || identity;\n if (isString(predicate)) {\n if ((predicate.charAt(0) == '+' || predicate.charAt(0) == '-')) {\n descending = predicate.charAt(0) == '-';\n predicate = predicate.substring(1);\n }\n if ( predicate === '' ) {\n // Effectively no predicate was passed so we compare identity\n return reverseComparator(function(a,b) {\n return compare(a, b);\n }, descending);\n }\n get = $parse(predicate);\n if (get.constant) {\n var key = get();\n return reverseComparator(function(a,b) {\n return compare(a[key], b[key]);\n }, descending);\n }\n }\n return reverseComparator(function(a,b){\n return compare(get(a),get(b));\n }, descending);\n });\n return slice.call(array).sort(reverseComparator(comparator, reverseOrder));\n\n function comparator(o1, o2){\n for ( var i = 0; i < sortPredicate.length; i++) {\n var comp = sortPredicate[i](o1, o2);\n if (comp !== 0) return comp;\n }\n return 0;\n }\n function reverseComparator(comp, descending) {\n return toBoolean(descending)\n ? function(a,b){return comp(b,a);}\n : comp;\n }\n function compare(v1, v2){\n var t1 = typeof v1;\n var t2 = typeof v2;\n if (t1 == t2) {\n if (isDate(v1) && isDate(v2)) {\n v1 = v1.valueOf();\n v2 = v2.valueOf();\n }\n if (t1 == \"string\") {\n v1 = v1.toLowerCase();\n v2 = v2.toLowerCase();\n }\n if (v1 === v2) return 0;\n return v1 < v2 ? -1 : 1;\n } else {\n return t1 < t2 ? -1 : 1;\n }\n }\n };\n}\n\nfunction ngDirective(directive) {\n if (isFunction(directive)) {\n directive = {\n link: directive\n };\n }\n directive.restrict = directive.restrict || 'AC';\n return valueFn(directive);\n}\n\n/**\n * @ngdoc directive\n * @name a\n * @restrict E\n *\n * @description\n * Modifies the default behavior of the html A tag so that the default action is prevented when\n * the href attribute is empty.\n *\n * This change permits the easy creation of action links with the `ngClick` directive\n * without changing the location or causing page reloads, e.g.:\n * `Add Item`\n */\nvar htmlAnchorDirective = valueFn({\n restrict: 'E',\n compile: function(element, attr) {\n\n if (msie <= 8) {\n\n // turn link into a stylable link in IE\n // but only if it doesn't have name attribute, in which case it's an anchor\n if (!attr.href && !attr.name) {\n attr.$set('href', '');\n }\n\n // add a comment node to anchors to workaround IE bug that causes element content to be reset\n // to new attribute content if attribute is updated with value containing @ and element also\n // contains value with @\n // see issue #1949\n element.append(document.createComment('IE fix'));\n }\n\n if (!attr.href && !attr.xlinkHref && !attr.name) {\n return function(scope, element) {\n // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute.\n var href = toString.call(element.prop('href')) === '[object SVGAnimatedString]' ?\n 'xlink:href' : 'href';\n element.on('click', function(event){\n // if we have no href url, then don't navigate anywhere.\n if (!element.attr(href)) {\n event.preventDefault();\n }\n });\n };\n }\n }\n});\n\n/**\n * @ngdoc directive\n * @name ngHref\n * @restrict A\n * @priority 99\n *\n * @description\n * Using Angular markup like `{{hash}}` in an href attribute will\n * make the link go to the wrong URL if the user clicks it before\n * Angular has a chance to replace the `{{hash}}` markup with its\n * value. Until Angular replaces the markup the link will be broken\n * and will most likely return a 404 error. The `ngHref` directive\n * solves this problem.\n *\n * The wrong way to write it:\n * ```html\n * \n * ```\n *\n * The correct way to write it:\n * ```html\n * \n * ```\n *\n * @element A\n * @param {template} ngHref any string which can contain `{{}}` markup.\n *\n * @example\n * This example shows various combinations of `href`, `ng-href` and `ng-click` attributes\n * in links and their different behaviors:\n \n \n
\n
link 1 (link, don't reload)
\n link 2 (link, don't reload)
\n link 3 (link, reload!)
\n anchor (link, don't reload)
\n anchor (no link)
\n link (link, change location)\n
\n \n it('should execute ng-click but not reload when href without value', function() {\n element(by.id('link-1')).click();\n expect(element(by.model('value')).getAttribute('value')).toEqual('1');\n expect(element(by.id('link-1')).getAttribute('href')).toBe('');\n });\n\n it('should execute ng-click but not reload when href empty string', function() {\n element(by.id('link-2')).click();\n expect(element(by.model('value')).getAttribute('value')).toEqual('2');\n expect(element(by.id('link-2')).getAttribute('href')).toBe('');\n });\n\n it('should execute ng-click and change url when ng-href specified', function() {\n expect(element(by.id('link-3')).getAttribute('href')).toMatch(/\\/123$/);\n\n element(by.id('link-3')).click();\n\n // At this point, we navigate away from an Angular page, so we need\n // to use browser.driver to get the base webdriver.\n\n browser.wait(function() {\n return browser.driver.getCurrentUrl().then(function(url) {\n return url.match(/\\/123$/);\n });\n }, 5000, 'page should navigate to /123');\n });\n\n xit('should execute ng-click but not reload when href empty string and name specified', function() {\n element(by.id('link-4')).click();\n expect(element(by.model('value')).getAttribute('value')).toEqual('4');\n expect(element(by.id('link-4')).getAttribute('href')).toBe('');\n });\n\n it('should execute ng-click but not reload when no href but name specified', function() {\n element(by.id('link-5')).click();\n expect(element(by.model('value')).getAttribute('value')).toEqual('5');\n expect(element(by.id('link-5')).getAttribute('href')).toBe(null);\n });\n\n it('should only change url when only ng-href', function() {\n element(by.model('value')).clear();\n element(by.model('value')).sendKeys('6');\n expect(element(by.id('link-6')).getAttribute('href')).toMatch(/\\/6$/);\n\n element(by.id('link-6')).click();\n\n // At this point, we navigate away from an Angular page, so we need\n // to use browser.driver to get the base webdriver.\n browser.wait(function() {\n return browser.driver.getCurrentUrl().then(function(url) {\n return url.match(/\\/6$/);\n });\n }, 5000, 'page should navigate to /6');\n });\n \n \n */\n\n/**\n * @ngdoc directive\n * @name ngSrc\n * @restrict A\n * @priority 99\n *\n * @description\n * Using Angular markup like `{{hash}}` in a `src` attribute doesn't\n * work right: The browser will fetch from the URL with the literal\n * text `{{hash}}` until Angular replaces the expression inside\n * `{{hash}}`. The `ngSrc` directive solves this problem.\n *\n * The buggy way to write it:\n * ```html\n * \n * ```\n *\n * The correct way to write it:\n * ```html\n * \n * ```\n *\n * @element IMG\n * @param {template} ngSrc any string which can contain `{{}}` markup.\n */\n\n/**\n * @ngdoc directive\n * @name ngSrcset\n * @restrict A\n * @priority 99\n *\n * @description\n * Using Angular markup like `{{hash}}` in a `srcset` attribute doesn't\n * work right: The browser will fetch from the URL with the literal\n * text `{{hash}}` until Angular replaces the expression inside\n * `{{hash}}`. The `ngSrcset` directive solves this problem.\n *\n * The buggy way to write it:\n * ```html\n * \n * ```\n *\n * The correct way to write it:\n * ```html\n * \n * ```\n *\n * @element IMG\n * @param {template} ngSrcset any string which can contain `{{}}` markup.\n */\n\n/**\n * @ngdoc directive\n * @name ngDisabled\n * @restrict A\n * @priority 100\n *\n * @description\n *\n * We shouldn't do this, because it will make the button enabled on Chrome/Firefox but not on IE8 and older IEs:\n * ```html\n *
\n * \n *
\n * ```\n *\n * The HTML specification does not require browsers to preserve the values of boolean attributes\n * such as disabled. (Their presence means true and their absence means false.)\n * If we put an Angular interpolation expression into such an attribute then the\n * binding information would be lost when the browser removes the attribute.\n * The `ngDisabled` directive solves this problem for the `disabled` attribute.\n * This complementary directive is not removed by the browser and so provides\n * a permanent reliable place to store the binding information.\n *\n * @example\n \n \n Click me to toggle:
\n \n
\n \n it('should toggle button', function() {\n expect(element(by.css('button')).getAttribute('disabled')).toBeFalsy();\n element(by.model('checked')).click();\n expect(element(by.css('button')).getAttribute('disabled')).toBeTruthy();\n });\n \n
\n *\n * @element INPUT\n * @param {expression} ngDisabled If the {@link guide/expression expression} is truthy,\n * then special attribute \"disabled\" will be set on the element\n */\n\n\n/**\n * @ngdoc directive\n * @name ngChecked\n * @restrict A\n * @priority 100\n *\n * @description\n * The HTML specification does not require browsers to preserve the values of boolean attributes\n * such as checked. (Their presence means true and their absence means false.)\n * If we put an Angular interpolation expression into such an attribute then the\n * binding information would be lost when the browser removes the attribute.\n * The `ngChecked` directive solves this problem for the `checked` attribute.\n * This complementary directive is not removed by the browser and so provides\n * a permanent reliable place to store the binding information.\n * @example\n \n \n Check me to check both:
\n \n
\n \n it('should check both checkBoxes', function() {\n expect(element(by.id('checkSlave')).getAttribute('checked')).toBeFalsy();\n element(by.model('master')).click();\n expect(element(by.id('checkSlave')).getAttribute('checked')).toBeTruthy();\n });\n \n
\n *\n * @element INPUT\n * @param {expression} ngChecked If the {@link guide/expression expression} is truthy,\n * then special attribute \"checked\" will be set on the element\n */\n\n\n/**\n * @ngdoc directive\n * @name ngReadonly\n * @restrict A\n * @priority 100\n *\n * @description\n * The HTML specification does not require browsers to preserve the values of boolean attributes\n * such as readonly. (Their presence means true and their absence means false.)\n * If we put an Angular interpolation expression into such an attribute then the\n * binding information would be lost when the browser removes the attribute.\n * The `ngReadonly` directive solves this problem for the `readonly` attribute.\n * This complementary directive is not removed by the browser and so provides\n * a permanent reliable place to store the binding information.\n * @example\n \n \n Check me to make text readonly:
\n \n
\n \n it('should toggle readonly attr', function() {\n expect(element(by.css('[type=\"text\"]')).getAttribute('readonly')).toBeFalsy();\n element(by.model('checked')).click();\n expect(element(by.css('[type=\"text\"]')).getAttribute('readonly')).toBeTruthy();\n });\n \n
\n *\n * @element INPUT\n * @param {expression} ngReadonly If the {@link guide/expression expression} is truthy,\n * then special attribute \"readonly\" will be set on the element\n */\n\n\n/**\n * @ngdoc directive\n * @name ngSelected\n * @restrict A\n * @priority 100\n *\n * @description\n * The HTML specification does not require browsers to preserve the values of boolean attributes\n * such as selected. (Their presence means true and their absence means false.)\n * If we put an Angular interpolation expression into such an attribute then the\n * binding information would be lost when the browser removes the attribute.\n * The `ngSelected` directive solves this problem for the `selected` attribute.\n * This complementary directive is not removed by the browser and so provides\n * a permanent reliable place to store the binding information.\n *\n * @example\n \n \n Check me to select:
\n \n
\n \n it('should select Greetings!', function() {\n expect(element(by.id('greet')).getAttribute('selected')).toBeFalsy();\n element(by.model('selected')).click();\n expect(element(by.id('greet')).getAttribute('selected')).toBeTruthy();\n });\n \n
\n *\n * @element OPTION\n * @param {expression} ngSelected If the {@link guide/expression expression} is truthy,\n * then special attribute \"selected\" will be set on the element\n */\n\n/**\n * @ngdoc directive\n * @name ngOpen\n * @restrict A\n * @priority 100\n *\n * @description\n * The HTML specification does not require browsers to preserve the values of boolean attributes\n * such as open. (Their presence means true and their absence means false.)\n * If we put an Angular interpolation expression into such an attribute then the\n * binding information would be lost when the browser removes the attribute.\n * The `ngOpen` directive solves this problem for the `open` attribute.\n * This complementary directive is not removed by the browser and so provides\n * a permanent reliable place to store the binding information.\n * @example\n \n \n Check me check multiple:
\n
\n Show/Hide me\n
\n
\n \n it('should toggle open', function() {\n expect(element(by.id('details')).getAttribute('open')).toBeFalsy();\n element(by.model('open')).click();\n expect(element(by.id('details')).getAttribute('open')).toBeTruthy();\n });\n \n
\n *\n * @element DETAILS\n * @param {expression} ngOpen If the {@link guide/expression expression} is truthy,\n * then special attribute \"open\" will be set on the element\n */\n\nvar ngAttributeAliasDirectives = {};\n\n\n// boolean attrs are evaluated\nforEach(BOOLEAN_ATTR, function(propName, attrName) {\n // binding to multiple is not supported\n if (propName == \"multiple\") return;\n\n var normalized = directiveNormalize('ng-' + attrName);\n ngAttributeAliasDirectives[normalized] = function() {\n return {\n priority: 100,\n link: function(scope, element, attr) {\n scope.$watch(attr[normalized], function ngBooleanAttrWatchAction(value) {\n attr.$set(attrName, !!value);\n });\n }\n };\n };\n});\n\n\n// ng-src, ng-srcset, ng-href are interpolated\nforEach(['src', 'srcset', 'href'], function(attrName) {\n var normalized = directiveNormalize('ng-' + attrName);\n ngAttributeAliasDirectives[normalized] = function() {\n return {\n priority: 99, // it needs to run after the attributes are interpolated\n link: function(scope, element, attr) {\n var propName = attrName,\n name = attrName;\n\n if (attrName === 'href' &&\n toString.call(element.prop('href')) === '[object SVGAnimatedString]') {\n name = 'xlinkHref';\n attr.$attr[name] = 'xlink:href';\n propName = null;\n }\n\n attr.$observe(normalized, function(value) {\n if (!value) {\n if (attrName === 'href') {\n attr.$set(name, null);\n }\n return;\n }\n\n attr.$set(name, value);\n\n // on IE, if \"ng:src\" directive declaration is used and \"src\" attribute doesn't exist\n // then calling element.setAttribute('src', 'foo') doesn't do anything, so we need\n // to set the property as well to achieve the desired effect.\n // we use attr[attrName] value since $set can sanitize the url.\n if (msie && propName) element.prop(propName, attr[name]);\n });\n }\n };\n };\n});\n\n/* global -nullFormCtrl */\nvar nullFormCtrl = {\n $addControl: noop,\n $removeControl: noop,\n $setValidity: noop,\n $setDirty: noop,\n $setPristine: noop\n};\n\n/**\n * @ngdoc type\n * @name form.FormController\n *\n * @property {boolean} $pristine True if user has not interacted with the form yet.\n * @property {boolean} $dirty True if user has already interacted with the form.\n * @property {boolean} $valid True if all of the containing forms and controls are valid.\n * @property {boolean} $invalid True if at least one containing control or form is invalid.\n *\n * @property {Object} $error Is an object hash, containing references to all invalid controls or\n * forms, where:\n *\n * - keys are validation tokens (error names),\n * - values are arrays of controls or forms that are invalid for given error name.\n *\n *\n * Built-in validation tokens:\n *\n * - `email`\n * - `max`\n * - `maxlength`\n * - `min`\n * - `minlength`\n * - `number`\n * - `pattern`\n * - `required`\n * - `url`\n *\n * @description\n * `FormController` keeps track of all its controls and nested forms as well as the state of them,\n * such as being valid/invalid or dirty/pristine.\n *\n * Each {@link ng.directive:form form} directive creates an instance\n * of `FormController`.\n *\n */\n//asks for $scope to fool the BC controller module\nFormController.$inject = ['$element', '$attrs', '$scope', '$animate'];\nfunction FormController(element, attrs, $scope, $animate) {\n var form = this,\n parentForm = element.parent().controller('form') || nullFormCtrl,\n invalidCount = 0, // used to easily determine if we are valid\n errors = form.$error = {},\n controls = [];\n\n // init state\n form.$name = attrs.name || attrs.ngForm;\n form.$dirty = false;\n form.$pristine = true;\n form.$valid = true;\n form.$invalid = false;\n\n parentForm.$addControl(form);\n\n // Setup initial state of the control\n element.addClass(PRISTINE_CLASS);\n toggleValidCss(true);\n\n // convenience method for easy toggling of classes\n function toggleValidCss(isValid, validationErrorKey) {\n validationErrorKey = validationErrorKey ? '-' + snake_case(validationErrorKey, '-') : '';\n $animate.setClass(element,\n (isValid ? VALID_CLASS : INVALID_CLASS) + validationErrorKey,\n (isValid ? INVALID_CLASS : VALID_CLASS) + validationErrorKey);\n }\n\n /**\n * @ngdoc method\n * @name form.FormController#$addControl\n *\n * @description\n * Register a control with the form.\n *\n * Input elements using ngModelController do this automatically when they are linked.\n */\n form.$addControl = function(control) {\n // Breaking change - before, inputs whose name was \"hasOwnProperty\" were quietly ignored\n // and not added to the scope. Now we throw an error.\n assertNotHasOwnProperty(control.$name, 'input');\n controls.push(control);\n\n if (control.$name) {\n form[control.$name] = control;\n }\n };\n\n /**\n * @ngdoc method\n * @name form.FormController#$removeControl\n *\n * @description\n * Deregister a control from the form.\n *\n * Input elements using ngModelController do this automatically when they are destroyed.\n */\n form.$removeControl = function(control) {\n if (control.$name && form[control.$name] === control) {\n delete form[control.$name];\n }\n forEach(errors, function(queue, validationToken) {\n form.$setValidity(validationToken, true, control);\n });\n\n arrayRemove(controls, control);\n };\n\n /**\n * @ngdoc method\n * @name form.FormController#$setValidity\n *\n * @description\n * Sets the validity of a form control.\n *\n * This method will also propagate to parent forms.\n */\n form.$setValidity = function(validationToken, isValid, control) {\n var queue = errors[validationToken];\n\n if (isValid) {\n if (queue) {\n arrayRemove(queue, control);\n if (!queue.length) {\n invalidCount--;\n if (!invalidCount) {\n toggleValidCss(isValid);\n form.$valid = true;\n form.$invalid = false;\n }\n errors[validationToken] = false;\n toggleValidCss(true, validationToken);\n parentForm.$setValidity(validationToken, true, form);\n }\n }\n\n } else {\n if (!invalidCount) {\n toggleValidCss(isValid);\n }\n if (queue) {\n if (includes(queue, control)) return;\n } else {\n errors[validationToken] = queue = [];\n invalidCount++;\n toggleValidCss(false, validationToken);\n parentForm.$setValidity(validationToken, false, form);\n }\n queue.push(control);\n\n form.$valid = false;\n form.$invalid = true;\n }\n };\n\n /**\n * @ngdoc method\n * @name form.FormController#$setDirty\n *\n * @description\n * Sets the form to a dirty state.\n *\n * This method can be called to add the 'ng-dirty' class and set the form to a dirty\n * state (ng-dirty class). This method will also propagate to parent forms.\n */\n form.$setDirty = function() {\n $animate.removeClass(element, PRISTINE_CLASS);\n $animate.addClass(element, DIRTY_CLASS);\n form.$dirty = true;\n form.$pristine = false;\n parentForm.$setDirty();\n };\n\n /**\n * @ngdoc method\n * @name form.FormController#$setPristine\n *\n * @description\n * Sets the form to its pristine state.\n *\n * This method can be called to remove the 'ng-dirty' class and set the form to its pristine\n * state (ng-pristine class). This method will also propagate to all the controls contained\n * in this form.\n *\n * Setting a form back to a pristine state is often useful when we want to 'reuse' a form after\n * saving or resetting it.\n */\n form.$setPristine = function () {\n $animate.removeClass(element, DIRTY_CLASS);\n $animate.addClass(element, PRISTINE_CLASS);\n form.$dirty = false;\n form.$pristine = true;\n forEach(controls, function(control) {\n control.$setPristine();\n });\n };\n}\n\n\n/**\n * @ngdoc directive\n * @name ngForm\n * @restrict EAC\n *\n * @description\n * Nestable alias of {@link ng.directive:form `form`} directive. HTML\n * does not allow nesting of form elements. It is useful to nest forms, for example if the validity of a\n * sub-group of controls needs to be determined.\n *\n * Note: the purpose of `ngForm` is to group controls,\n * but not to be a replacement for the `
` tag with all of its capabilities\n * (e.g. posting to the server, ...).\n *\n * @param {string=} ngForm|name Name of the form. If specified, the form controller will be published into\n * related scope, under this name.\n *\n */\n\n /**\n * @ngdoc directive\n * @name form\n * @restrict E\n *\n * @description\n * Directive that instantiates\n * {@link form.FormController FormController}.\n *\n * If the `name` attribute is specified, the form controller is published onto the current scope under\n * this name.\n *\n * # Alias: {@link ng.directive:ngForm `ngForm`}\n *\n * In Angular forms can be nested. This means that the outer form is valid when all of the child\n * forms are valid as well. However, browsers do not allow nesting of `` elements, so\n * Angular provides the {@link ng.directive:ngForm `ngForm`} directive which behaves identically to\n * `` but can be nested. This allows you to have nested forms, which is very useful when\n * using Angular validation directives in forms that are dynamically generated using the\n * {@link ng.directive:ngRepeat `ngRepeat`} directive. Since you cannot dynamically generate the `name`\n * attribute of input elements using interpolation, you have to wrap each set of repeated inputs in an\n * `ngForm` directive and nest these in an outer `form` element.\n *\n *\n * # CSS classes\n * - `ng-valid` is set if the form is valid.\n * - `ng-invalid` is set if the form is invalid.\n * - `ng-pristine` is set if the form is pristine.\n * - `ng-dirty` is set if the form is dirty.\n *\n * Keep in mind that ngAnimate can detect each of these classes when added and removed.\n *\n *\n * # Submitting a form and preventing the default action\n *\n * Since the role of forms in client-side Angular applications is different than in classical\n * roundtrip apps, it is desirable for the browser not to translate the form submission into a full\n * page reload that sends the data to the server. Instead some javascript logic should be triggered\n * to handle the form submission in an application-specific way.\n *\n * For this reason, Angular prevents the default action (form submission to the server) unless the\n * `` element has an `action` attribute specified.\n *\n * You can use one of the following two ways to specify what javascript method should be called when\n * a form is submitted:\n *\n * - {@link ng.directive:ngSubmit ngSubmit} directive on the form element\n * - {@link ng.directive:ngClick ngClick} directive on the first\n * button or input field of type submit (input[type=submit])\n *\n * To prevent double execution of the handler, use only one of the {@link ng.directive:ngSubmit ngSubmit}\n * or {@link ng.directive:ngClick ngClick} directives.\n * This is because of the following form submission rules in the HTML specification:\n *\n * - If a form has only one input field then hitting enter in this field triggers form submit\n * (`ngSubmit`)\n * - if a form has 2+ input fields and no buttons or input[type=submit] then hitting enter\n * doesn't trigger submit\n * - if a form has one or more input fields and one or more buttons or input[type=submit] then\n * hitting enter in any of the input fields will trigger the click handler on the *first* button or\n * input[type=submit] (`ngClick`) *and* a submit handler on the enclosing form (`ngSubmit`)\n *\n *\n * ## Animation Hooks\n *\n * Animations in ngForm are triggered when any of the associated CSS classes are added and removed.\n * These classes are: `.ng-pristine`, `.ng-dirty`, `.ng-invalid` and `.ng-valid` as well as any\n * other validations that are performed within the form. Animations in ngForm are similar to how\n * they work in ngClass and animations can be hooked into using CSS transitions, keyframes as well\n * as JS animations.\n *\n * The following example shows a simple way to utilize CSS transitions to style a form element\n * that has been rendered as invalid after it has been validated:\n *\n *
\n * //be sure to include ngAnimate as a module to hook into more\n * //advanced animations\n * .my-form {\n *   transition:0.5s linear all;\n *   background: white;\n * }\n * .my-form.ng-invalid {\n *   background: red;\n *   color:white;\n * }\n * 
\n *\n * @example\n \n \n \n \n \n userType: \n Required!
\n userType = {{userType}}
\n myForm.input.$valid = {{myForm.input.$valid}}
\n myForm.input.$error = {{myForm.input.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n \n
\n \n it('should initialize to model', function() {\n var userType = element(by.binding('userType'));\n var valid = element(by.binding('myForm.input.$valid'));\n\n expect(userType.getText()).toContain('guest');\n expect(valid.getText()).toContain('true');\n });\n\n it('should be invalid if empty', function() {\n var userType = element(by.binding('userType'));\n var valid = element(by.binding('myForm.input.$valid'));\n var userInput = element(by.model('userType'));\n\n userInput.clear();\n userInput.sendKeys('');\n\n expect(userType.getText()).toEqual('userType =');\n expect(valid.getText()).toContain('false');\n });\n \n
\n *\n * @param {string=} name Name of the form. If specified, the form controller will be published into\n * related scope, under this name.\n */\nvar formDirectiveFactory = function(isNgForm) {\n return ['$timeout', function($timeout) {\n var formDirective = {\n name: 'form',\n restrict: isNgForm ? 'EAC' : 'E',\n controller: FormController,\n compile: function() {\n return {\n pre: function(scope, formElement, attr, controller) {\n if (!attr.action) {\n // we can't use jq events because if a form is destroyed during submission the default\n // action is not prevented. see #1238\n //\n // IE 9 is not affected because it doesn't fire a submit event and try to do a full\n // page reload if the form was destroyed by submission of the form via a click handler\n // on a button in the form. Looks like an IE9 specific bug.\n var preventDefaultListener = function(event) {\n event.preventDefault\n ? event.preventDefault()\n : event.returnValue = false; // IE\n };\n\n addEventListenerFn(formElement[0], 'submit', preventDefaultListener);\n\n // unregister the preventDefault listener so that we don't not leak memory but in a\n // way that will achieve the prevention of the default action.\n formElement.on('$destroy', function() {\n $timeout(function() {\n removeEventListenerFn(formElement[0], 'submit', preventDefaultListener);\n }, 0, false);\n });\n }\n\n var parentFormCtrl = formElement.parent().controller('form'),\n alias = attr.name || attr.ngForm;\n\n if (alias) {\n setter(scope, alias, controller, alias);\n }\n if (parentFormCtrl) {\n formElement.on('$destroy', function() {\n parentFormCtrl.$removeControl(controller);\n if (alias) {\n setter(scope, alias, undefined, alias);\n }\n extend(controller, nullFormCtrl); //stop propagating child destruction handlers upwards\n });\n }\n }\n };\n }\n };\n\n return formDirective;\n }];\n};\n\nvar formDirective = formDirectiveFactory();\nvar ngFormDirective = formDirectiveFactory(true);\n\n/* global VALID_CLASS: true,\n INVALID_CLASS: true,\n PRISTINE_CLASS: true,\n DIRTY_CLASS: true\n*/\n\nvar URL_REGEXP = /^(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?$/;\nvar EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;\nvar NUMBER_REGEXP = /^\\s*(\\-|\\+)?(\\d+|(\\d*(\\.\\d*)))\\s*$/;\n\nvar inputType = {\n\n /**\n * @ngdoc input\n * @name input[text]\n *\n * @description\n * Standard HTML text input with angular data binding, inherited by most of the `input` elements.\n *\n * *NOTE* Not every feature offered is available for all input types.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} required Adds `required` validation error key if the value is not entered.\n * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n * `required` when you want to data-bind to the `required` attribute.\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n * minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n * maxlength.\n * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the\n * RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for\n * patterns defined as scope expressions.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.\n * This parameter is ignored for input[type=password] controls, which will never trim the\n * input.\n *\n * @example\n \n \n \n
\n Single word: \n \n Required!\n \n Single word only!\n\n text = {{text}}
\n myForm.input.$valid = {{myForm.input.$valid}}
\n myForm.input.$error = {{myForm.input.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n
\n
\n \n var text = element(by.binding('text'));\n var valid = element(by.binding('myForm.input.$valid'));\n var input = element(by.model('text'));\n\n it('should initialize to model', function() {\n expect(text.getText()).toContain('guest');\n expect(valid.getText()).toContain('true');\n });\n\n it('should be invalid if empty', function() {\n input.clear();\n input.sendKeys('');\n\n expect(text.getText()).toEqual('text =');\n expect(valid.getText()).toContain('false');\n });\n\n it('should be invalid if multi word', function() {\n input.clear();\n input.sendKeys('hello world');\n\n expect(valid.getText()).toContain('false');\n });\n \n
\n */\n 'text': textInputType,\n\n\n /**\n * @ngdoc input\n * @name input[number]\n *\n * @description\n * Text input with number validation and transformation. Sets the `number` validation\n * error if not a valid number.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`.\n * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`.\n * @param {string=} required Sets `required` validation error key if the value is not entered.\n * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n * `required` when you want to data-bind to the `required` attribute.\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n * minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n * maxlength.\n * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the\n * RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for\n * patterns defined as scope expressions.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n *\n * @example\n \n \n \n
\n Number: \n \n Required!\n \n Not valid number!\n value = {{value}}
\n myForm.input.$valid = {{myForm.input.$valid}}
\n myForm.input.$error = {{myForm.input.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n
\n
\n \n var value = element(by.binding('value'));\n var valid = element(by.binding('myForm.input.$valid'));\n var input = element(by.model('value'));\n\n it('should initialize to model', function() {\n expect(value.getText()).toContain('12');\n expect(valid.getText()).toContain('true');\n });\n\n it('should be invalid if empty', function() {\n input.clear();\n input.sendKeys('');\n expect(value.getText()).toEqual('value =');\n expect(valid.getText()).toContain('false');\n });\n\n it('should be invalid if over max', function() {\n input.clear();\n input.sendKeys('123');\n expect(value.getText()).toEqual('value =');\n expect(valid.getText()).toContain('false');\n });\n \n
\n */\n 'number': numberInputType,\n\n\n /**\n * @ngdoc input\n * @name input[url]\n *\n * @description\n * Text input with URL validation. Sets the `url` validation error key if the content is not a\n * valid URL.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} required Sets `required` validation error key if the value is not entered.\n * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n * `required` when you want to data-bind to the `required` attribute.\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n * minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n * maxlength.\n * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the\n * RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for\n * patterns defined as scope expressions.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n *\n * @example\n \n \n \n
\n URL: \n \n Required!\n \n Not valid url!\n text = {{text}}
\n myForm.input.$valid = {{myForm.input.$valid}}
\n myForm.input.$error = {{myForm.input.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n myForm.$error.url = {{!!myForm.$error.url}}
\n
\n
\n \n var text = element(by.binding('text'));\n var valid = element(by.binding('myForm.input.$valid'));\n var input = element(by.model('text'));\n\n it('should initialize to model', function() {\n expect(text.getText()).toContain('http://google.com');\n expect(valid.getText()).toContain('true');\n });\n\n it('should be invalid if empty', function() {\n input.clear();\n input.sendKeys('');\n\n expect(text.getText()).toEqual('text =');\n expect(valid.getText()).toContain('false');\n });\n\n it('should be invalid if not url', function() {\n input.clear();\n input.sendKeys('box');\n\n expect(valid.getText()).toContain('false');\n });\n \n
\n */\n 'url': urlInputType,\n\n\n /**\n * @ngdoc input\n * @name input[email]\n *\n * @description\n * Text input with email validation. Sets the `email` validation error key if not a valid email\n * address.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} required Sets `required` validation error key if the value is not entered.\n * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n * `required` when you want to data-bind to the `required` attribute.\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n * minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n * maxlength.\n * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the\n * RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for\n * patterns defined as scope expressions.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n *\n * @example\n \n \n \n
\n Email: \n \n Required!\n \n Not valid email!\n text = {{text}}
\n myForm.input.$valid = {{myForm.input.$valid}}
\n myForm.input.$error = {{myForm.input.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n myForm.$error.email = {{!!myForm.$error.email}}
\n
\n
\n \n var text = element(by.binding('text'));\n var valid = element(by.binding('myForm.input.$valid'));\n var input = element(by.model('text'));\n\n it('should initialize to model', function() {\n expect(text.getText()).toContain('me@example.com');\n expect(valid.getText()).toContain('true');\n });\n\n it('should be invalid if empty', function() {\n input.clear();\n input.sendKeys('');\n expect(text.getText()).toEqual('text =');\n expect(valid.getText()).toContain('false');\n });\n\n it('should be invalid if not email', function() {\n input.clear();\n input.sendKeys('xxx');\n\n expect(valid.getText()).toContain('false');\n });\n \n
\n */\n 'email': emailInputType,\n\n\n /**\n * @ngdoc input\n * @name input[radio]\n *\n * @description\n * HTML radio button.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string} value The value to which the expression should be set when selected.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n * @param {string} ngValue Angular expression which sets the value to which the expression should\n * be set when selected.\n *\n * @example\n \n \n \n
\n Red
\n Green
\n Blue
\n color = {{color | json}}
\n
\n Note that `ng-value=\"specialValue\"` sets radio item's value to be the value of `$scope.specialValue`.\n
\n \n it('should change state', function() {\n var color = element(by.binding('color'));\n\n expect(color.getText()).toContain('blue');\n\n element.all(by.model('color')).get(0).click();\n\n expect(color.getText()).toContain('red');\n });\n \n
\n */\n 'radio': radioInputType,\n\n\n /**\n * @ngdoc input\n * @name input[checkbox]\n *\n * @description\n * HTML checkbox.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} ngTrueValue The value to which the expression should be set when selected.\n * @param {string=} ngFalseValue The value to which the expression should be set when not selected.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n *\n * @example\n \n \n \n
\n Value1:
\n Value2:
\n value1 = {{value1}}
\n value2 = {{value2}}
\n
\n
\n \n it('should change state', function() {\n var value1 = element(by.binding('value1'));\n var value2 = element(by.binding('value2'));\n\n expect(value1.getText()).toContain('true');\n expect(value2.getText()).toContain('YES');\n\n element(by.model('value1')).click();\n element(by.model('value2')).click();\n\n expect(value1.getText()).toContain('false');\n expect(value2.getText()).toContain('NO');\n });\n \n
\n */\n 'checkbox': checkboxInputType,\n\n 'hidden': noop,\n 'button': noop,\n 'submit': noop,\n 'reset': noop,\n 'file': noop\n};\n\n// A helper function to call $setValidity and return the value / undefined,\n// a pattern that is repeated a lot in the input validation logic.\nfunction validate(ctrl, validatorName, validity, value){\n ctrl.$setValidity(validatorName, validity);\n return validity ? value : undefined;\n}\n\nfunction testFlags(validity, flags) {\n var i, flag;\n if (flags) {\n for (i=0; i= minlength, value);\n };\n\n ctrl.$parsers.push(minLengthValidator);\n ctrl.$formatters.push(minLengthValidator);\n }\n\n // max length validator\n if (attr.ngMaxlength) {\n var maxlength = int(attr.ngMaxlength);\n var maxLengthValidator = function(value) {\n return validate(ctrl, 'maxlength', ctrl.$isEmpty(value) || value.length <= maxlength, value);\n };\n\n ctrl.$parsers.push(maxLengthValidator);\n ctrl.$formatters.push(maxLengthValidator);\n }\n}\n\nvar numberBadFlags = ['badInput'];\n\nfunction numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {\n textInputType(scope, element, attr, ctrl, $sniffer, $browser);\n\n ctrl.$parsers.push(function(value) {\n var empty = ctrl.$isEmpty(value);\n if (empty || NUMBER_REGEXP.test(value)) {\n ctrl.$setValidity('number', true);\n return value === '' ? null : (empty ? value : parseFloat(value));\n } else {\n ctrl.$setValidity('number', false);\n return undefined;\n }\n });\n\n addNativeHtml5Validators(ctrl, 'number', numberBadFlags, null, ctrl.$$validityState);\n\n ctrl.$formatters.push(function(value) {\n return ctrl.$isEmpty(value) ? '' : '' + value;\n });\n\n if (attr.min) {\n var minValidator = function(value) {\n var min = parseFloat(attr.min);\n return validate(ctrl, 'min', ctrl.$isEmpty(value) || value >= min, value);\n };\n\n ctrl.$parsers.push(minValidator);\n ctrl.$formatters.push(minValidator);\n }\n\n if (attr.max) {\n var maxValidator = function(value) {\n var max = parseFloat(attr.max);\n return validate(ctrl, 'max', ctrl.$isEmpty(value) || value <= max, value);\n };\n\n ctrl.$parsers.push(maxValidator);\n ctrl.$formatters.push(maxValidator);\n }\n\n ctrl.$formatters.push(function(value) {\n return validate(ctrl, 'number', ctrl.$isEmpty(value) || isNumber(value), value);\n });\n}\n\nfunction urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {\n textInputType(scope, element, attr, ctrl, $sniffer, $browser);\n\n var urlValidator = function(value) {\n return validate(ctrl, 'url', ctrl.$isEmpty(value) || URL_REGEXP.test(value), value);\n };\n\n ctrl.$formatters.push(urlValidator);\n ctrl.$parsers.push(urlValidator);\n}\n\nfunction emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {\n textInputType(scope, element, attr, ctrl, $sniffer, $browser);\n\n var emailValidator = function(value) {\n return validate(ctrl, 'email', ctrl.$isEmpty(value) || EMAIL_REGEXP.test(value), value);\n };\n\n ctrl.$formatters.push(emailValidator);\n ctrl.$parsers.push(emailValidator);\n}\n\nfunction radioInputType(scope, element, attr, ctrl) {\n // make the name unique, if not defined\n if (isUndefined(attr.name)) {\n element.attr('name', nextUid());\n }\n\n element.on('click', function() {\n if (element[0].checked) {\n scope.$apply(function() {\n ctrl.$setViewValue(attr.value);\n });\n }\n });\n\n ctrl.$render = function() {\n var value = attr.value;\n element[0].checked = (value == ctrl.$viewValue);\n };\n\n attr.$observe('value', ctrl.$render);\n}\n\nfunction checkboxInputType(scope, element, attr, ctrl) {\n var trueValue = attr.ngTrueValue,\n falseValue = attr.ngFalseValue;\n\n if (!isString(trueValue)) trueValue = true;\n if (!isString(falseValue)) falseValue = false;\n\n element.on('click', function() {\n scope.$apply(function() {\n ctrl.$setViewValue(element[0].checked);\n });\n });\n\n ctrl.$render = function() {\n element[0].checked = ctrl.$viewValue;\n };\n\n // Override the standard `$isEmpty` because a value of `false` means empty in a checkbox.\n ctrl.$isEmpty = function(value) {\n return value !== trueValue;\n };\n\n ctrl.$formatters.push(function(value) {\n return value === trueValue;\n });\n\n ctrl.$parsers.push(function(value) {\n return value ? trueValue : falseValue;\n });\n}\n\n\n/**\n * @ngdoc directive\n * @name textarea\n * @restrict E\n *\n * @description\n * HTML textarea element control with angular data-binding. The data-binding and validation\n * properties of this element are exactly the same as those of the\n * {@link ng.directive:input input element}.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} required Sets `required` validation error key if the value is not entered.\n * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n * `required` when you want to data-bind to the `required` attribute.\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n * minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n * maxlength.\n * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the\n * RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for\n * patterns defined as scope expressions.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.\n */\n\n\n/**\n * @ngdoc directive\n * @name input\n * @restrict E\n *\n * @description\n * HTML input element control with angular data-binding. Input control follows HTML5 input types\n * and polyfills the HTML5 validation behavior for older browsers.\n *\n * *NOTE* Not every feature offered is available for all input types.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} required Sets `required` validation error key if the value is not entered.\n * @param {boolean=} ngRequired Sets `required` attribute if set to true\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n * minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n * maxlength.\n * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the\n * RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for\n * patterns defined as scope expressions.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.\n * This parameter is ignored for input[type=password] controls, which will never trim the\n * input.\n *\n * @example\n \n \n \n
\n
\n User name: \n \n Required!
\n Last name: \n \n Too short!\n \n Too long!
\n
\n
\n user = {{user}}
\n myForm.userName.$valid = {{myForm.userName.$valid}}
\n myForm.userName.$error = {{myForm.userName.$error}}
\n myForm.lastName.$valid = {{myForm.lastName.$valid}}
\n myForm.lastName.$error = {{myForm.lastName.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n myForm.$error.minlength = {{!!myForm.$error.minlength}}
\n myForm.$error.maxlength = {{!!myForm.$error.maxlength}}
\n
\n
\n \n var user = element(by.binding('{{user}}'));\n var userNameValid = element(by.binding('myForm.userName.$valid'));\n var lastNameValid = element(by.binding('myForm.lastName.$valid'));\n var lastNameError = element(by.binding('myForm.lastName.$error'));\n var formValid = element(by.binding('myForm.$valid'));\n var userNameInput = element(by.model('user.name'));\n var userLastInput = element(by.model('user.last'));\n\n it('should initialize to model', function() {\n expect(user.getText()).toContain('{\"name\":\"guest\",\"last\":\"visitor\"}');\n expect(userNameValid.getText()).toContain('true');\n expect(formValid.getText()).toContain('true');\n });\n\n it('should be invalid if empty when required', function() {\n userNameInput.clear();\n userNameInput.sendKeys('');\n\n expect(user.getText()).toContain('{\"last\":\"visitor\"}');\n expect(userNameValid.getText()).toContain('false');\n expect(formValid.getText()).toContain('false');\n });\n\n it('should be valid if empty when min length is set', function() {\n userLastInput.clear();\n userLastInput.sendKeys('');\n\n expect(user.getText()).toContain('{\"name\":\"guest\",\"last\":\"\"}');\n expect(lastNameValid.getText()).toContain('true');\n expect(formValid.getText()).toContain('true');\n });\n\n it('should be invalid if less than required min length', function() {\n userLastInput.clear();\n userLastInput.sendKeys('xx');\n\n expect(user.getText()).toContain('{\"name\":\"guest\"}');\n expect(lastNameValid.getText()).toContain('false');\n expect(lastNameError.getText()).toContain('minlength');\n expect(formValid.getText()).toContain('false');\n });\n\n it('should be invalid if longer than max length', function() {\n userLastInput.clear();\n userLastInput.sendKeys('some ridiculously long name');\n\n expect(user.getText()).toContain('{\"name\":\"guest\"}');\n expect(lastNameValid.getText()).toContain('false');\n expect(lastNameError.getText()).toContain('maxlength');\n expect(formValid.getText()).toContain('false');\n });\n \n
\n */\nvar inputDirective = ['$browser', '$sniffer', function($browser, $sniffer) {\n return {\n restrict: 'E',\n require: '?ngModel',\n link: function(scope, element, attr, ctrl) {\n if (ctrl) {\n (inputType[lowercase(attr.type)] || inputType.text)(scope, element, attr, ctrl, $sniffer,\n $browser);\n }\n }\n };\n}];\n\nvar VALID_CLASS = 'ng-valid',\n INVALID_CLASS = 'ng-invalid',\n PRISTINE_CLASS = 'ng-pristine',\n DIRTY_CLASS = 'ng-dirty';\n\n/**\n * @ngdoc type\n * @name ngModel.NgModelController\n *\n * @property {string} $viewValue Actual string value in the view.\n * @property {*} $modelValue The value in the model, that the control is bound to.\n * @property {Array.} $parsers Array of functions to execute, as a pipeline, whenever\n the control reads value from the DOM. Each function is called, in turn, passing the value\n through to the next. The last return value is used to populate the model.\n Used to sanitize / convert the value as well as validation. For validation,\n the parsers should update the validity state using\n {@link ngModel.NgModelController#$setValidity $setValidity()},\n and return `undefined` for invalid values.\n\n *\n * @property {Array.} $formatters Array of functions to execute, as a pipeline, whenever\n the model value changes. Each function is called, in turn, passing the value through to the\n next. Used to format / convert values for display in the control and validation.\n * ```js\n * function formatter(value) {\n * if (value) {\n * return value.toUpperCase();\n * }\n * }\n * ngModel.$formatters.push(formatter);\n * ```\n *\n * @property {Array.} $viewChangeListeners Array of functions to execute whenever the\n * view value has changed. It is called with no arguments, and its return value is ignored.\n * This can be used in place of additional $watches against the model value.\n *\n * @property {Object} $error An object hash with all errors as keys.\n *\n * @property {boolean} $pristine True if user has not interacted with the control yet.\n * @property {boolean} $dirty True if user has already interacted with the control.\n * @property {boolean} $valid True if there is no error.\n * @property {boolean} $invalid True if at least one error on the control.\n *\n * @description\n *\n * `NgModelController` provides API for the `ng-model` directive. The controller contains\n * services for data-binding, validation, CSS updates, and value formatting and parsing. It\n * purposefully does not contain any logic which deals with DOM rendering or listening to\n * DOM events. Such DOM related logic should be provided by other directives which make use of\n * `NgModelController` for data-binding.\n *\n * ## Custom Control Example\n * This example shows how to use `NgModelController` with a custom control to achieve\n * data-binding. Notice how different directives (`contenteditable`, `ng-model`, and `required`)\n * collaborate together to achieve the desired result.\n *\n * Note that `contenteditable` is an HTML5 attribute, which tells the browser to let the element\n * contents be edited in place by the user. This will not work on older browsers.\n *\n * We are using the {@link ng.service:$sce $sce} service here and include the {@link ngSanitize $sanitize}\n * module to automatically remove \"bad\" content like inline event listener (e.g. ``).\n * However, as we are using `$sce` the model can still decide to provide unsafe content if it marks\n * that content using the `$sce` service.\n *\n * \n \n [contenteditable] {\n border: 1px solid black;\n background-color: white;\n min-height: 20px;\n }\n\n .ng-invalid {\n border: 1px solid red;\n }\n\n \n \n angular.module('customControl', ['ngSanitize']).\n directive('contenteditable', ['$sce', function($sce) {\n return {\n restrict: 'A', // only activate on element attribute\n require: '?ngModel', // get a hold of NgModelController\n link: function(scope, element, attrs, ngModel) {\n if(!ngModel) return; // do nothing if no ng-model\n\n // Specify how UI should be updated\n ngModel.$render = function() {\n element.html($sce.getTrustedHtml(ngModel.$viewValue || ''));\n };\n\n // Listen for change events to enable binding\n element.on('blur keyup change', function() {\n scope.$evalAsync(read);\n });\n read(); // initialize\n\n // Write data to the model\n function read() {\n var html = element.html();\n // When we clear the content editable the browser leaves a
behind\n // If strip-br attribute is provided then we strip this out\n if( attrs.stripBr && html == '
' ) {\n html = '';\n }\n ngModel.$setViewValue(html);\n }\n }\n };\n }]);\n
\n \n
\n
Change me!
\n Required!\n
\n \n
\n
\n \n it('should data-bind and become invalid', function() {\n if (browser.params.browser == 'safari' || browser.params.browser == 'firefox') {\n // SafariDriver can't handle contenteditable\n // and Firefox driver can't clear contenteditables very well\n return;\n }\n var contentEditable = element(by.css('[contenteditable]'));\n var content = 'Change me!';\n\n expect(contentEditable.getText()).toEqual(content);\n\n contentEditable.clear();\n contentEditable.sendKeys(protractor.Key.BACK_SPACE);\n expect(contentEditable.getText()).toEqual('');\n expect(contentEditable.getAttribute('class')).toMatch(/ng-invalid-required/);\n });\n \n *
\n *\n *\n */\nvar NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$parse', '$animate',\n function($scope, $exceptionHandler, $attr, $element, $parse, $animate) {\n this.$viewValue = Number.NaN;\n this.$modelValue = Number.NaN;\n this.$parsers = [];\n this.$formatters = [];\n this.$viewChangeListeners = [];\n this.$pristine = true;\n this.$dirty = false;\n this.$valid = true;\n this.$invalid = false;\n this.$name = $attr.name;\n\n var ngModelGet = $parse($attr.ngModel),\n ngModelSet = ngModelGet.assign;\n\n if (!ngModelSet) {\n throw minErr('ngModel')('nonassign', \"Expression '{0}' is non-assignable. Element: {1}\",\n $attr.ngModel, startingTag($element));\n }\n\n /**\n * @ngdoc method\n * @name ngModel.NgModelController#$render\n *\n * @description\n * Called when the view needs to be updated. It is expected that the user of the ng-model\n * directive will implement this method.\n */\n this.$render = noop;\n\n /**\n * @ngdoc method\n * @name ngModel.NgModelController#$isEmpty\n *\n * @description\n * This is called when we need to determine if the value of the input is empty.\n *\n * For instance, the required directive does this to work out if the input has data or not.\n * The default `$isEmpty` function checks whether the value is `undefined`, `''`, `null` or `NaN`.\n *\n * You can override this for input directives whose concept of being empty is different to the\n * default. The `checkboxInputType` directive does this because in its case a value of `false`\n * implies empty.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is empty.\n */\n this.$isEmpty = function(value) {\n return isUndefined(value) || value === '' || value === null || value !== value;\n };\n\n var parentForm = $element.inheritedData('$formController') || nullFormCtrl,\n invalidCount = 0, // used to easily determine if we are valid\n $error = this.$error = {}; // keep invalid keys here\n\n\n // Setup initial state of the control\n $element.addClass(PRISTINE_CLASS);\n toggleValidCss(true);\n\n // convenience method for easy toggling of classes\n function toggleValidCss(isValid, validationErrorKey) {\n validationErrorKey = validationErrorKey ? '-' + snake_case(validationErrorKey, '-') : '';\n $animate.removeClass($element, (isValid ? INVALID_CLASS : VALID_CLASS) + validationErrorKey);\n $animate.addClass($element, (isValid ? VALID_CLASS : INVALID_CLASS) + validationErrorKey);\n }\n\n /**\n * @ngdoc method\n * @name ngModel.NgModelController#$setValidity\n *\n * @description\n * Change the validity state, and notifies the form when the control changes validity. (i.e. it\n * does not notify form if given validator is already marked as invalid).\n *\n * This method should be called by validators - i.e. the parser or formatter functions.\n *\n * @param {string} validationErrorKey Name of the validator. the `validationErrorKey` will assign\n * to `$error[validationErrorKey]=!isValid` so that it is available for data-binding.\n * The `validationErrorKey` should be in camelCase and will get converted into dash-case\n * for class name. Example: `myError` will result in `ng-valid-my-error` and `ng-invalid-my-error`\n * class and can be bound to as `{{someForm.someControl.$error.myError}}` .\n * @param {boolean} isValid Whether the current state is valid (true) or invalid (false).\n */\n this.$setValidity = function(validationErrorKey, isValid) {\n // Purposeful use of ! here to cast isValid to boolean in case it is undefined\n // jshint -W018\n if ($error[validationErrorKey] === !isValid) return;\n // jshint +W018\n\n if (isValid) {\n if ($error[validationErrorKey]) invalidCount--;\n if (!invalidCount) {\n toggleValidCss(true);\n this.$valid = true;\n this.$invalid = false;\n }\n } else {\n toggleValidCss(false);\n this.$invalid = true;\n this.$valid = false;\n invalidCount++;\n }\n\n $error[validationErrorKey] = !isValid;\n toggleValidCss(isValid, validationErrorKey);\n\n parentForm.$setValidity(validationErrorKey, isValid, this);\n };\n\n /**\n * @ngdoc method\n * @name ngModel.NgModelController#$setPristine\n *\n * @description\n * Sets the control to its pristine state.\n *\n * This method can be called to remove the 'ng-dirty' class and set the control to its pristine\n * state (ng-pristine class).\n */\n this.$setPristine = function () {\n this.$dirty = false;\n this.$pristine = true;\n $animate.removeClass($element, DIRTY_CLASS);\n $animate.addClass($element, PRISTINE_CLASS);\n };\n\n /**\n * @ngdoc method\n * @name ngModel.NgModelController#$setViewValue\n *\n * @description\n * Update the view value.\n *\n * This method should be called when the view value changes, typically from within a DOM event handler.\n * For example {@link ng.directive:input input} and\n * {@link ng.directive:select select} directives call it.\n *\n * It will update the $viewValue, then pass this value through each of the functions in `$parsers`,\n * which includes any validators. The value that comes out of this `$parsers` pipeline, be applied to\n * `$modelValue` and the **expression** specified in the `ng-model` attribute.\n *\n * Lastly, all the registered change listeners, in the `$viewChangeListeners` list, are called.\n *\n * Note that calling this function does not trigger a `$digest`.\n *\n * @param {string} value Value from the view.\n */\n this.$setViewValue = function(value) {\n this.$viewValue = value;\n\n // change to dirty\n if (this.$pristine) {\n this.$dirty = true;\n this.$pristine = false;\n $animate.removeClass($element, PRISTINE_CLASS);\n $animate.addClass($element, DIRTY_CLASS);\n parentForm.$setDirty();\n }\n\n forEach(this.$parsers, function(fn) {\n value = fn(value);\n });\n\n if (this.$modelValue !== value) {\n this.$modelValue = value;\n ngModelSet($scope, value);\n forEach(this.$viewChangeListeners, function(listener) {\n try {\n listener();\n } catch(e) {\n $exceptionHandler(e);\n }\n });\n }\n };\n\n // model -> value\n var ctrl = this;\n\n $scope.$watch(function ngModelWatch() {\n var value = ngModelGet($scope);\n\n // if scope model value and ngModel value are out of sync\n if (ctrl.$modelValue !== value) {\n\n var formatters = ctrl.$formatters,\n idx = formatters.length;\n\n ctrl.$modelValue = value;\n while(idx--) {\n value = formatters[idx](value);\n }\n\n if (ctrl.$viewValue !== value) {\n ctrl.$viewValue = value;\n ctrl.$render();\n }\n }\n\n return value;\n });\n}];\n\n\n/**\n * @ngdoc directive\n * @name ngModel\n *\n * @element input\n *\n * @description\n * The `ngModel` directive binds an `input`,`select`, `textarea` (or custom form control) to a\n * property on the scope using {@link ngModel.NgModelController NgModelController},\n * which is created and exposed by this directive.\n *\n * `ngModel` is responsible for:\n *\n * - Binding the view into the model, which other directives such as `input`, `textarea` or `select`\n * require.\n * - Providing validation behavior (i.e. required, number, email, url).\n * - Keeping the state of the control (valid/invalid, dirty/pristine, validation errors).\n * - Setting related css classes on the element (`ng-valid`, `ng-invalid`, `ng-dirty`, `ng-pristine`) including animations.\n * - Registering the control with its parent {@link ng.directive:form form}.\n *\n * Note: `ngModel` will try to bind to the property given by evaluating the expression on the\n * current scope. If the property doesn't already exist on this scope, it will be created\n * implicitly and added to the scope.\n *\n * For best practices on using `ngModel`, see:\n *\n * - [Understanding Scopes](https://github.com/angular/angular.js/wiki/Understanding-Scopes)\n *\n * For basic examples, how to use `ngModel`, see:\n *\n * - {@link ng.directive:input input}\n * - {@link input[text] text}\n * - {@link input[checkbox] checkbox}\n * - {@link input[radio] radio}\n * - {@link input[number] number}\n * - {@link input[email] email}\n * - {@link input[url] url}\n * - {@link ng.directive:select select}\n * - {@link ng.directive:textarea textarea}\n *\n * # CSS classes\n * The following CSS classes are added and removed on the associated input/select/textarea element\n * depending on the validity of the model.\n *\n * - `ng-valid` is set if the model is valid.\n * - `ng-invalid` is set if the model is invalid.\n * - `ng-pristine` is set if the model is pristine.\n * - `ng-dirty` is set if the model is dirty.\n *\n * Keep in mind that ngAnimate can detect each of these classes when added and removed.\n *\n * ## Animation Hooks\n *\n * Animations within models are triggered when any of the associated CSS classes are added and removed\n * on the input element which is attached to the model. These classes are: `.ng-pristine`, `.ng-dirty`,\n * `.ng-invalid` and `.ng-valid` as well as any other validations that are performed on the model itself.\n * The animations that are triggered within ngModel are similar to how they work in ngClass and\n * animations can be hooked into using CSS transitions, keyframes as well as JS animations.\n *\n * The following example shows a simple way to utilize CSS transitions to style an input element\n * that has been rendered as invalid after it has been validated:\n *\n *
\n * //be sure to include ngAnimate as a module to hook into more\n * //advanced animations\n * .my-input {\n *   transition:0.5s linear all;\n *   background: white;\n * }\n * .my-input.ng-invalid {\n *   background: red;\n *   color:white;\n * }\n * 
\n *\n * @example\n * \n \n \n \n Update input to see transitions when valid/invalid.\n Integer is a valid value.\n
\n \n
\n
\n *
\n */\nvar ngModelDirective = function() {\n return {\n require: ['ngModel', '^?form'],\n controller: NgModelController,\n link: function(scope, element, attr, ctrls) {\n // notify others, especially parent forms\n\n var modelCtrl = ctrls[0],\n formCtrl = ctrls[1] || nullFormCtrl;\n\n formCtrl.$addControl(modelCtrl);\n\n scope.$on('$destroy', function() {\n formCtrl.$removeControl(modelCtrl);\n });\n }\n };\n};\n\n\n/**\n * @ngdoc directive\n * @name ngChange\n *\n * @description\n * Evaluate the given expression when the user changes the input.\n * The expression is evaluated immediately, unlike the JavaScript onchange event\n * which only triggers at the end of a change (usually, when the user leaves the\n * form element or presses the return key).\n * The expression is not evaluated when the value change is coming from the model.\n *\n * Note, this directive requires `ngModel` to be present.\n *\n * @element input\n * @param {expression} ngChange {@link guide/expression Expression} to evaluate upon change\n * in input value.\n *\n * @example\n * \n * \n * \n *
\n * \n * \n *
\n * debug = {{confirmed}}
\n * counter = {{counter}}
\n *
\n *
\n * \n * var counter = element(by.binding('counter'));\n * var debug = element(by.binding('confirmed'));\n *\n * it('should evaluate the expression if changing from view', function() {\n * expect(counter.getText()).toContain('0');\n *\n * element(by.id('ng-change-example1')).click();\n *\n * expect(counter.getText()).toContain('1');\n * expect(debug.getText()).toContain('true');\n * });\n *\n * it('should not evaluate the expression if changing from model', function() {\n * element(by.id('ng-change-example2')).click();\n\n * expect(counter.getText()).toContain('0');\n * expect(debug.getText()).toContain('true');\n * });\n * \n *
\n */\nvar ngChangeDirective = valueFn({\n require: 'ngModel',\n link: function(scope, element, attr, ctrl) {\n ctrl.$viewChangeListeners.push(function() {\n scope.$eval(attr.ngChange);\n });\n }\n});\n\n\nvar requiredDirective = function() {\n return {\n require: '?ngModel',\n link: function(scope, elm, attr, ctrl) {\n if (!ctrl) return;\n attr.required = true; // force truthy in case we are on non input element\n\n var validator = function(value) {\n if (attr.required && ctrl.$isEmpty(value)) {\n ctrl.$setValidity('required', false);\n return;\n } else {\n ctrl.$setValidity('required', true);\n return value;\n }\n };\n\n ctrl.$formatters.push(validator);\n ctrl.$parsers.unshift(validator);\n\n attr.$observe('required', function() {\n validator(ctrl.$viewValue);\n });\n }\n };\n};\n\n\n/**\n * @ngdoc directive\n * @name ngList\n *\n * @description\n * Text input that converts between a delimited string and an array of strings. The delimiter\n * can be a fixed string (by default a comma) or a regular expression.\n *\n * @element input\n * @param {string=} ngList optional delimiter that should be used to split the value. If\n * specified in form `/something/` then the value will be converted into a regular expression.\n *\n * @example\n \n \n \n
\n List: \n \n Required!\n
\n names = {{names}}
\n myForm.namesInput.$valid = {{myForm.namesInput.$valid}}
\n myForm.namesInput.$error = {{myForm.namesInput.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n
\n
\n \n var listInput = element(by.model('names'));\n var names = element(by.binding('{{names}}'));\n var valid = element(by.binding('myForm.namesInput.$valid'));\n var error = element(by.css('span.error'));\n\n it('should initialize to model', function() {\n expect(names.getText()).toContain('[\"igor\",\"misko\",\"vojta\"]');\n expect(valid.getText()).toContain('true');\n expect(error.getCssValue('display')).toBe('none');\n });\n\n it('should be invalid if empty', function() {\n listInput.clear();\n listInput.sendKeys('');\n\n expect(names.getText()).toContain('');\n expect(valid.getText()).toContain('false');\n expect(error.getCssValue('display')).not.toBe('none'); });\n \n
\n */\nvar ngListDirective = function() {\n return {\n require: 'ngModel',\n link: function(scope, element, attr, ctrl) {\n var match = /\\/(.*)\\//.exec(attr.ngList),\n separator = match && new RegExp(match[1]) || attr.ngList || ',';\n\n var parse = function(viewValue) {\n // If the viewValue is invalid (say required but empty) it will be `undefined`\n if (isUndefined(viewValue)) return;\n\n var list = [];\n\n if (viewValue) {\n forEach(viewValue.split(separator), function(value) {\n if (value) list.push(trim(value));\n });\n }\n\n return list;\n };\n\n ctrl.$parsers.push(parse);\n ctrl.$formatters.push(function(value) {\n if (isArray(value)) {\n return value.join(', ');\n }\n\n return undefined;\n });\n\n // Override the standard $isEmpty because an empty array means the input is empty.\n ctrl.$isEmpty = function(value) {\n return !value || !value.length;\n };\n }\n };\n};\n\n\nvar CONSTANT_VALUE_REGEXP = /^(true|false|\\d+)$/;\n/**\n * @ngdoc directive\n * @name ngValue\n *\n * @description\n * Binds the given expression to the value of `input[select]` or `input[radio]`, so\n * that when the element is selected, the `ngModel` of that element is set to the\n * bound value.\n *\n * `ngValue` is useful when dynamically generating lists of radio buttons using `ng-repeat`, as\n * shown below.\n *\n * @element input\n * @param {string=} ngValue angular expression, whose value will be bound to the `value` attribute\n * of the `input` element\n *\n * @example\n \n \n \n
\n

Which is your favorite?

\n \n
You chose {{my.favorite}}
\n
\n
\n \n var favorite = element(by.binding('my.favorite'));\n\n it('should initialize to model', function() {\n expect(favorite.getText()).toContain('unicorns');\n });\n it('should bind the values to the inputs', function() {\n element.all(by.model('my.favorite')).get(0).click();\n expect(favorite.getText()).toContain('pizza');\n });\n \n
\n */\nvar ngValueDirective = function() {\n return {\n priority: 100,\n compile: function(tpl, tplAttr) {\n if (CONSTANT_VALUE_REGEXP.test(tplAttr.ngValue)) {\n return function ngValueConstantLink(scope, elm, attr) {\n attr.$set('value', scope.$eval(attr.ngValue));\n };\n } else {\n return function ngValueLink(scope, elm, attr) {\n scope.$watch(attr.ngValue, function valueWatchAction(value) {\n attr.$set('value', value);\n });\n };\n }\n }\n };\n};\n\n/**\n * @ngdoc directive\n * @name ngBind\n * @restrict AC\n *\n * @description\n * The `ngBind` attribute tells Angular to replace the text content of the specified HTML element\n * with the value of a given expression, and to update the text content when the value of that\n * expression changes.\n *\n * Typically, you don't use `ngBind` directly, but instead you use the double curly markup like\n * `{{ expression }}` which is similar but less verbose.\n *\n * It is preferable to use `ngBind` instead of `{{ expression }}` if a template is momentarily\n * displayed by the browser in its raw state before Angular compiles it. Since `ngBind` is an\n * element attribute, it makes the bindings invisible to the user while the page is loading.\n *\n * An alternative solution to this problem would be using the\n * {@link ng.directive:ngCloak ngCloak} directive.\n *\n *\n * @element ANY\n * @param {expression} ngBind {@link guide/expression Expression} to evaluate.\n *\n * @example\n * Enter a name in the Live Preview text box; the greeting below the text box changes instantly.\n \n \n \n
\n Enter name:
\n Hello !\n
\n
\n \n it('should check ng-bind', function() {\n var nameInput = element(by.model('name'));\n\n expect(element(by.binding('name')).getText()).toBe('Whirled');\n nameInput.clear();\n nameInput.sendKeys('world');\n expect(element(by.binding('name')).getText()).toBe('world');\n });\n \n
\n */\nvar ngBindDirective = ngDirective({\n compile: function(templateElement) {\n templateElement.addClass('ng-binding');\n return function (scope, element, attr) {\n element.data('$binding', attr.ngBind);\n scope.$watch(attr.ngBind, function ngBindWatchAction(value) {\n // We are purposefully using == here rather than === because we want to\n // catch when value is \"null or undefined\"\n // jshint -W041\n element.text(value == undefined ? '' : value);\n });\n };\n }\n});\n\n\n/**\n * @ngdoc directive\n * @name ngBindTemplate\n *\n * @description\n * The `ngBindTemplate` directive specifies that the element\n * text content should be replaced with the interpolation of the template\n * in the `ngBindTemplate` attribute.\n * Unlike `ngBind`, the `ngBindTemplate` can contain multiple `{{` `}}`\n * expressions. This directive is needed since some HTML elements\n * (such as TITLE and OPTION) cannot contain SPAN elements.\n *\n * @element ANY\n * @param {string} ngBindTemplate template of form\n * {{ expression }} to eval.\n *\n * @example\n * Try it here: enter text in text box and watch the greeting change.\n \n \n \n
\n Salutation:
\n Name:
\n
\n       
\n
\n \n it('should check ng-bind', function() {\n var salutationElem = element(by.binding('salutation'));\n var salutationInput = element(by.model('salutation'));\n var nameInput = element(by.model('name'));\n\n expect(salutationElem.getText()).toBe('Hello World!');\n\n salutationInput.clear();\n salutationInput.sendKeys('Greetings');\n nameInput.clear();\n nameInput.sendKeys('user');\n\n expect(salutationElem.getText()).toBe('Greetings user!');\n });\n \n
\n */\nvar ngBindTemplateDirective = ['$interpolate', function($interpolate) {\n return function(scope, element, attr) {\n // TODO: move this to scenario runner\n var interpolateFn = $interpolate(element.attr(attr.$attr.ngBindTemplate));\n element.addClass('ng-binding').data('$binding', interpolateFn);\n attr.$observe('ngBindTemplate', function(value) {\n element.text(value);\n });\n };\n}];\n\n\n/**\n * @ngdoc directive\n * @name ngBindHtml\n *\n * @description\n * Creates a binding that will innerHTML the result of evaluating the `expression` into the current\n * element in a secure way. By default, the innerHTML-ed content will be sanitized using the {@link\n * ngSanitize.$sanitize $sanitize} service. To utilize this functionality, ensure that `$sanitize`\n * is available, for example, by including {@link ngSanitize} in your module's dependencies (not in\n * core Angular). In order to use {@link ngSanitize} in your module's dependencies, you need to\n * include \"angular-sanitize.js\" in your application.\n *\n * You may also bypass sanitization for values you know are safe. To do so, bind to\n * an explicitly trusted value via {@link ng.$sce#trustAsHtml $sce.trustAsHtml}. See the example\n * under {@link ng.$sce#Example Strict Contextual Escaping (SCE)}.\n *\n * Note: If a `$sanitize` service is unavailable and the bound value isn't explicitly trusted, you\n * will have an exception (instead of an exploit.)\n *\n * @element ANY\n * @param {expression} ngBindHtml {@link guide/expression Expression} to evaluate.\n *\n * @example\n\n \n \n
\n

\n
\n
\n\n \n angular.module('bindHtmlExample', ['ngSanitize'])\n .controller('ExampleController', ['$scope', function($scope) {\n $scope.myHTML =\n 'I am an HTMLstring with ' +\n 'links! and other stuff';\n }]);\n \n\n \n it('should check ng-bind-html', function() {\n expect(element(by.binding('myHTML')).getText()).toBe(\n 'I am an HTMLstring with links! and other stuff');\n });\n \n
\n */\nvar ngBindHtmlDirective = ['$sce', '$parse', function($sce, $parse) {\n return {\n compile: function (tElement) {\n tElement.addClass('ng-binding');\n\n return function (scope, element, attr) {\n element.data('$binding', attr.ngBindHtml);\n\n var parsed = $parse(attr.ngBindHtml);\n\n function getStringValue() {\n return (parsed(scope) || '').toString();\n }\n\n scope.$watch(getStringValue, function ngBindHtmlWatchAction(value) {\n element.html($sce.getTrustedHtml(parsed(scope)) || '');\n });\n };\n }\n };\n}];\n\nfunction classDirective(name, selector) {\n name = 'ngClass' + name;\n return ['$animate', function($animate) {\n return {\n restrict: 'AC',\n link: function(scope, element, attr) {\n var oldVal;\n\n scope.$watch(attr[name], ngClassWatchAction, true);\n\n attr.$observe('class', function(value) {\n ngClassWatchAction(scope.$eval(attr[name]));\n });\n\n\n if (name !== 'ngClass') {\n scope.$watch('$index', function($index, old$index) {\n // jshint bitwise: false\n var mod = $index & 1;\n if (mod !== (old$index & 1)) {\n var classes = arrayClasses(scope.$eval(attr[name]));\n mod === selector ?\n addClasses(classes) :\n removeClasses(classes);\n }\n });\n }\n\n function addClasses(classes) {\n var newClasses = digestClassCounts(classes, 1);\n attr.$addClass(newClasses);\n }\n\n function removeClasses(classes) {\n var newClasses = digestClassCounts(classes, -1);\n attr.$removeClass(newClasses);\n }\n\n function digestClassCounts (classes, count) {\n var classCounts = element.data('$classCounts') || {};\n var classesToUpdate = [];\n forEach(classes, function (className) {\n if (count > 0 || classCounts[className]) {\n classCounts[className] = (classCounts[className] || 0) + count;\n if (classCounts[className] === +(count > 0)) {\n classesToUpdate.push(className);\n }\n }\n });\n element.data('$classCounts', classCounts);\n return classesToUpdate.join(' ');\n }\n\n function updateClasses (oldClasses, newClasses) {\n var toAdd = arrayDifference(newClasses, oldClasses);\n var toRemove = arrayDifference(oldClasses, newClasses);\n toRemove = digestClassCounts(toRemove, -1);\n toAdd = digestClassCounts(toAdd, 1);\n\n if (toAdd.length === 0) {\n $animate.removeClass(element, toRemove);\n } else if (toRemove.length === 0) {\n $animate.addClass(element, toAdd);\n } else {\n $animate.setClass(element, toAdd, toRemove);\n }\n }\n\n function ngClassWatchAction(newVal) {\n if (selector === true || scope.$index % 2 === selector) {\n var newClasses = arrayClasses(newVal || []);\n if (!oldVal) {\n addClasses(newClasses);\n } else if (!equals(newVal,oldVal)) {\n var oldClasses = arrayClasses(oldVal);\n updateClasses(oldClasses, newClasses);\n }\n }\n oldVal = shallowCopy(newVal);\n }\n }\n };\n\n function arrayDifference(tokens1, tokens2) {\n var values = [];\n\n outer:\n for(var i = 0; i < tokens1.length; i++) {\n var token = tokens1[i];\n for(var j = 0; j < tokens2.length; j++) {\n if(token == tokens2[j]) continue outer;\n }\n values.push(token);\n }\n return values;\n }\n\n function arrayClasses (classVal) {\n if (isArray(classVal)) {\n return classVal;\n } else if (isString(classVal)) {\n return classVal.split(' ');\n } else if (isObject(classVal)) {\n var classes = [], i = 0;\n forEach(classVal, function(v, k) {\n if (v) {\n classes = classes.concat(k.split(' '));\n }\n });\n return classes;\n }\n return classVal;\n }\n }];\n}\n\n/**\n * @ngdoc directive\n * @name ngClass\n * @restrict AC\n *\n * @description\n * The `ngClass` directive allows you to dynamically set CSS classes on an HTML element by databinding\n * an expression that represents all classes to be added.\n *\n * The directive operates in three different ways, depending on which of three types the expression\n * evaluates to:\n *\n * 1. If the expression evaluates to a string, the string should be one or more space-delimited class\n * names.\n *\n * 2. If the expression evaluates to an array, each element of the array should be a string that is\n * one or more space-delimited class names.\n *\n * 3. If the expression evaluates to an object, then for each key-value pair of the\n * object with a truthy value the corresponding key is used as a class name.\n *\n * The directive won't add duplicate classes if a particular class was already set.\n *\n * When the expression changes, the previously added classes are removed and only then the\n * new classes are added.\n *\n * @animations\n * add - happens just before the class is applied to the element\n * remove - happens just before the class is removed from the element\n *\n * @element ANY\n * @param {expression} ngClass {@link guide/expression Expression} to eval. The result\n * of the evaluation can be a string representing space delimited class\n * names, an array, or a map of class names to boolean values. In the case of a map, the\n * names of the properties whose values are truthy will be added as css classes to the\n * element.\n *\n * @example Example that demonstrates basic bindings via ngClass directive.\n \n \n

Map Syntax Example

\n deleted (apply \"strike\" class)
\n important (apply \"bold\" class)
\n error (apply \"red\" class)\n
\n

Using String Syntax

\n \n
\n

Using Array Syntax

\n
\n
\n
\n
\n \n .strike {\n text-decoration: line-through;\n }\n .bold {\n font-weight: bold;\n }\n .red {\n color: red;\n }\n \n \n var ps = element.all(by.css('p'));\n\n it('should let you toggle the class', function() {\n\n expect(ps.first().getAttribute('class')).not.toMatch(/bold/);\n expect(ps.first().getAttribute('class')).not.toMatch(/red/);\n\n element(by.model('important')).click();\n expect(ps.first().getAttribute('class')).toMatch(/bold/);\n\n element(by.model('error')).click();\n expect(ps.first().getAttribute('class')).toMatch(/red/);\n });\n\n it('should let you toggle string example', function() {\n expect(ps.get(1).getAttribute('class')).toBe('');\n element(by.model('style')).clear();\n element(by.model('style')).sendKeys('red');\n expect(ps.get(1).getAttribute('class')).toBe('red');\n });\n\n it('array example should have 3 classes', function() {\n expect(ps.last().getAttribute('class')).toBe('');\n element(by.model('style1')).sendKeys('bold');\n element(by.model('style2')).sendKeys('strike');\n element(by.model('style3')).sendKeys('red');\n expect(ps.last().getAttribute('class')).toBe('bold strike red');\n });\n \n
\n\n ## Animations\n\n The example below demonstrates how to perform animations using ngClass.\n\n \n \n \n \n
\n Sample Text\n
\n \n .base-class {\n -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n }\n\n .base-class.my-class {\n color: red;\n font-size:3em;\n }\n \n \n it('should check ng-class', function() {\n expect(element(by.css('.base-class')).getAttribute('class')).not.\n toMatch(/my-class/);\n\n element(by.id('setbtn')).click();\n\n expect(element(by.css('.base-class')).getAttribute('class')).\n toMatch(/my-class/);\n\n element(by.id('clearbtn')).click();\n\n expect(element(by.css('.base-class')).getAttribute('class')).not.\n toMatch(/my-class/);\n });\n \n
\n\n\n ## ngClass and pre-existing CSS3 Transitions/Animations\n The ngClass directive still supports CSS3 Transitions/Animations even if they do not follow the ngAnimate CSS naming structure.\n Upon animation ngAnimate will apply supplementary CSS classes to track the start and end of an animation, but this will not hinder\n any pre-existing CSS transitions already on the element. To get an idea of what happens during a class-based animation, be sure\n to view the step by step details of {@link ngAnimate.$animate#addclass $animate.addClass} and\n {@link ngAnimate.$animate#removeclass $animate.removeClass}.\n */\nvar ngClassDirective = classDirective('', true);\n\n/**\n * @ngdoc directive\n * @name ngClassOdd\n * @restrict AC\n *\n * @description\n * The `ngClassOdd` and `ngClassEven` directives work exactly as\n * {@link ng.directive:ngClass ngClass}, except they work in\n * conjunction with `ngRepeat` and take effect only on odd (even) rows.\n *\n * This directive can be applied only within the scope of an\n * {@link ng.directive:ngRepeat ngRepeat}.\n *\n * @element ANY\n * @param {expression} ngClassOdd {@link guide/expression Expression} to eval. The result\n * of the evaluation can be a string representing space delimited class names or an array.\n *\n * @example\n \n \n
    \n
  1. \n \n {{name}}\n \n
  2. \n
\n
\n \n .odd {\n color: red;\n }\n .even {\n color: blue;\n }\n \n \n it('should check ng-class-odd and ng-class-even', function() {\n expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')).\n toMatch(/odd/);\n expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')).\n toMatch(/even/);\n });\n \n
\n */\nvar ngClassOddDirective = classDirective('Odd', 0);\n\n/**\n * @ngdoc directive\n * @name ngClassEven\n * @restrict AC\n *\n * @description\n * The `ngClassOdd` and `ngClassEven` directives work exactly as\n * {@link ng.directive:ngClass ngClass}, except they work in\n * conjunction with `ngRepeat` and take effect only on odd (even) rows.\n *\n * This directive can be applied only within the scope of an\n * {@link ng.directive:ngRepeat ngRepeat}.\n *\n * @element ANY\n * @param {expression} ngClassEven {@link guide/expression Expression} to eval. The\n * result of the evaluation can be a string representing space delimited class names or an array.\n *\n * @example\n \n \n
    \n
  1. \n \n {{name}}      \n \n
  2. \n
\n
\n \n .odd {\n color: red;\n }\n .even {\n color: blue;\n }\n \n \n it('should check ng-class-odd and ng-class-even', function() {\n expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')).\n toMatch(/odd/);\n expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')).\n toMatch(/even/);\n });\n \n
\n */\nvar ngClassEvenDirective = classDirective('Even', 1);\n\n/**\n * @ngdoc directive\n * @name ngCloak\n * @restrict AC\n *\n * @description\n * The `ngCloak` directive is used to prevent the Angular html template from being briefly\n * displayed by the browser in its raw (uncompiled) form while your application is loading. Use this\n * directive to avoid the undesirable flicker effect caused by the html template display.\n *\n * The directive can be applied to the `` element, but the preferred usage is to apply\n * multiple `ngCloak` directives to small portions of the page to permit progressive rendering\n * of the browser view.\n *\n * `ngCloak` works in cooperation with the following css rule embedded within `angular.js` and\n * `angular.min.js`.\n * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).\n *\n * ```css\n * [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n * display: none !important;\n * }\n * ```\n *\n * When this css rule is loaded by the browser, all html elements (including their children) that\n * are tagged with the `ngCloak` directive are hidden. When Angular encounters this directive\n * during the compilation of the template it deletes the `ngCloak` element attribute, making\n * the compiled element visible.\n *\n * For the best result, the `angular.js` script must be loaded in the head section of the html\n * document; alternatively, the css rule above must be included in the external stylesheet of the\n * application.\n *\n * Legacy browsers, like IE7, do not provide attribute selector support (added in CSS 2.1) so they\n * cannot match the `[ng\\:cloak]` selector. To work around this limitation, you must add the css\n * class `ng-cloak` in addition to the `ngCloak` directive as shown in the example below.\n *\n * @element ANY\n *\n * @example\n \n \n
{{ 'hello' }}
\n
{{ 'hello IE7' }}
\n
\n \n it('should remove the template directive and css class', function() {\n expect($('#template1').getAttribute('ng-cloak')).\n toBeNull();\n expect($('#template2').getAttribute('ng-cloak')).\n toBeNull();\n });\n \n
\n *\n */\nvar ngCloakDirective = ngDirective({\n compile: function(element, attr) {\n attr.$set('ngCloak', undefined);\n element.removeClass('ng-cloak');\n }\n});\n\n/**\n * @ngdoc directive\n * @name ngController\n *\n * @description\n * The `ngController` directive attaches a controller class to the view. This is a key aspect of how angular\n * supports the principles behind the Model-View-Controller design pattern.\n *\n * MVC components in angular:\n *\n * * Model — Models are the properties of a scope; scopes are attached to the DOM where scope properties\n * are accessed through bindings.\n * * View — The template (HTML with data bindings) that is rendered into the View.\n * * Controller — The `ngController` directive specifies a Controller class; the class contains business\n * logic behind the application to decorate the scope with functions and values\n *\n * Note that you can also attach controllers to the DOM by declaring it in a route definition\n * via the {@link ngRoute.$route $route} service. A common mistake is to declare the controller\n * again using `ng-controller` in the template itself. This will cause the controller to be attached\n * and executed twice.\n *\n * @element ANY\n * @scope\n * @priority 500\n * @param {expression} ngController Name of a globally accessible constructor function or an\n * {@link guide/expression expression} that on the current scope evaluates to a\n * constructor function. The controller instance can be published into a scope property\n * by specifying `as propertyName`.\n *\n * @example\n * Here is a simple form for editing user contact information. Adding, removing, clearing, and\n * greeting are methods declared on the controller (see source tab). These methods can\n * easily be called from the angular markup. Any changes to the data are automatically reflected\n * in the View without the need for a manual update.\n *\n * Two different declaration styles are included below:\n *\n * * one binds methods and properties directly onto the controller using `this`:\n * `ng-controller=\"SettingsController1 as settings\"`\n * * one injects `$scope` into the controller:\n * `ng-controller=\"SettingsController2\"`\n *\n * The second option is more common in the Angular community, and is generally used in boilerplates\n * and in this guide. However, there are advantages to binding properties directly to the controller\n * and avoiding scope.\n *\n * * Using `controller as` makes it obvious which controller you are accessing in the template when\n * multiple controllers apply to an element.\n * * If you are writing your controllers as classes you have easier access to the properties and\n * methods, which will appear on the scope, from inside the controller code.\n * * Since there is always a `.` in the bindings, you don't have to worry about prototypal\n * inheritance masking primitives.\n *\n * This example demonstrates the `controller as` syntax.\n *\n * \n * \n *
\n * Name: \n * [ greet ]
\n * Contact:\n *
    \n *
  • \n * \n * \n * [ clear\n * | X ]\n *
  • \n *
  • [ add ]
  • \n *
\n *
\n *
\n * \n * angular.module('controllerAsExample', [])\n * .controller('SettingsController1', SettingsController1);\n *\n * function SettingsController1() {\n * this.name = \"John Smith\";\n * this.contacts = [\n * {type: 'phone', value: '408 555 1212'},\n * {type: 'email', value: 'john.smith@example.org'} ];\n * }\n *\n * SettingsController1.prototype.greet = function() {\n * alert(this.name);\n * };\n *\n * SettingsController1.prototype.addContact = function() {\n * this.contacts.push({type: 'email', value: 'yourname@example.org'});\n * };\n *\n * SettingsController1.prototype.removeContact = function(contactToRemove) {\n * var index = this.contacts.indexOf(contactToRemove);\n * this.contacts.splice(index, 1);\n * };\n *\n * SettingsController1.prototype.clearContact = function(contact) {\n * contact.type = 'phone';\n * contact.value = '';\n * };\n * \n * \n * it('should check controller as', function() {\n * var container = element(by.id('ctrl-as-exmpl'));\n * expect(container.element(by.model('settings.name'))\n * .getAttribute('value')).toBe('John Smith');\n *\n * var firstRepeat =\n * container.element(by.repeater('contact in settings.contacts').row(0));\n * var secondRepeat =\n * container.element(by.repeater('contact in settings.contacts').row(1));\n *\n * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))\n * .toBe('408 555 1212');\n *\n * expect(secondRepeat.element(by.model('contact.value')).getAttribute('value'))\n * .toBe('john.smith@example.org');\n *\n * firstRepeat.element(by.linkText('clear')).click();\n *\n * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))\n * .toBe('');\n *\n * container.element(by.linkText('add')).click();\n *\n * expect(container.element(by.repeater('contact in settings.contacts').row(2))\n * .element(by.model('contact.value'))\n * .getAttribute('value'))\n * .toBe('yourname@example.org');\n * });\n * \n *
\n *\n * This example demonstrates the \"attach to `$scope`\" style of controller.\n *\n * \n * \n *
\n * Name: \n * [ greet ]
\n * Contact:\n *
    \n *
  • \n * \n * \n * [ clear\n * | X ]\n *
  • \n *
  • [ add ]
  • \n *
\n *
\n *
\n * \n * angular.module('controllerExample', [])\n * .controller('SettingsController2', ['$scope', SettingsController2]);\n *\n * function SettingsController2($scope) {\n * $scope.name = \"John Smith\";\n * $scope.contacts = [\n * {type:'phone', value:'408 555 1212'},\n * {type:'email', value:'john.smith@example.org'} ];\n *\n * $scope.greet = function() {\n * alert($scope.name);\n * };\n *\n * $scope.addContact = function() {\n * $scope.contacts.push({type:'email', value:'yourname@example.org'});\n * };\n *\n * $scope.removeContact = function(contactToRemove) {\n * var index = $scope.contacts.indexOf(contactToRemove);\n * $scope.contacts.splice(index, 1);\n * };\n *\n * $scope.clearContact = function(contact) {\n * contact.type = 'phone';\n * contact.value = '';\n * };\n * }\n * \n * \n * it('should check controller', function() {\n * var container = element(by.id('ctrl-exmpl'));\n *\n * expect(container.element(by.model('name'))\n * .getAttribute('value')).toBe('John Smith');\n *\n * var firstRepeat =\n * container.element(by.repeater('contact in contacts').row(0));\n * var secondRepeat =\n * container.element(by.repeater('contact in contacts').row(1));\n *\n * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))\n * .toBe('408 555 1212');\n * expect(secondRepeat.element(by.model('contact.value')).getAttribute('value'))\n * .toBe('john.smith@example.org');\n *\n * firstRepeat.element(by.linkText('clear')).click();\n *\n * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))\n * .toBe('');\n *\n * container.element(by.linkText('add')).click();\n *\n * expect(container.element(by.repeater('contact in contacts').row(2))\n * .element(by.model('contact.value'))\n * .getAttribute('value'))\n * .toBe('yourname@example.org');\n * });\n * \n *
\n\n */\nvar ngControllerDirective = [function() {\n return {\n scope: true,\n controller: '@',\n priority: 500\n };\n}];\n\n/**\n * @ngdoc directive\n * @name ngCsp\n *\n * @element html\n * @description\n * Enables [CSP (Content Security Policy)](https://developer.mozilla.org/en/Security/CSP) support.\n *\n * This is necessary when developing things like Google Chrome Extensions.\n *\n * CSP forbids apps to use `eval` or `Function(string)` generated functions (among other things).\n * For Angular to be CSP compatible there are only two things that we need to do differently:\n *\n * - don't use `Function` constructor to generate optimized value getters\n * - don't inject custom stylesheet into the document\n *\n * AngularJS uses `Function(string)` generated functions as a speed optimization. Applying the `ngCsp`\n * directive will cause Angular to use CSP compatibility mode. When this mode is on AngularJS will\n * evaluate all expressions up to 30% slower than in non-CSP mode, but no security violations will\n * be raised.\n *\n * CSP forbids JavaScript to inline stylesheet rules. In non CSP mode Angular automatically\n * includes some CSS rules (e.g. {@link ng.directive:ngCloak ngCloak}).\n * To make those directives work in CSP mode, include the `angular-csp.css` manually.\n *\n * Angular tries to autodetect if CSP is active and automatically turn on the CSP-safe mode. This\n * autodetection however triggers a CSP error to be logged in the console:\n *\n * ```\n * Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of\n * script in the following Content Security Policy directive: \"default-src 'self'\". Note that\n * 'script-src' was not explicitly set, so 'default-src' is used as a fallback.\n * ```\n *\n * This error is harmless but annoying. To prevent the error from showing up, put the `ngCsp`\n * directive on the root element of the application or on the `angular.js` script tag, whichever\n * appears first in the html document.\n *\n * *Note: This directive is only available in the `ng-csp` and `data-ng-csp` attribute form.*\n *\n * @example\n * This example shows how to apply the `ngCsp` directive to the `html` tag.\n ```html\n \n \n ...\n ...\n \n ```\n */\n\n// ngCsp is not implemented as a proper directive any more, because we need it be processed while we\n// bootstrap the system (before $parse is instantiated), for this reason we just have\n// the csp.isActive() fn that looks for ng-csp attribute anywhere in the current doc\n\n/**\n * @ngdoc directive\n * @name ngClick\n *\n * @description\n * The ngClick directive allows you to specify custom behavior when\n * an element is clicked.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngClick {@link guide/expression Expression} to evaluate upon\n * click. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n \n count: {{count}}\n \n \n \n it('should check ng-click', function() {\n expect(element(by.binding('count')).getText()).toMatch('0');\n element(by.css('button')).click();\n expect(element(by.binding('count')).getText()).toMatch('1');\n });\n \n \n */\n/*\n * A collection of directives that allows creation of custom event handlers that are defined as\n * angular expressions and are compiled and executed within the current scope.\n */\nvar ngEventDirectives = {};\n\n// For events that might fire synchronously during DOM manipulation\n// we need to execute their event handlers asynchronously using $evalAsync,\n// so that they are not executed in an inconsistent state.\nvar forceAsyncEvents = {\n 'blur': true,\n 'focus': true\n};\nforEach(\n 'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste'.split(' '),\n function(eventName) {\n var directiveName = directiveNormalize('ng-' + eventName);\n ngEventDirectives[directiveName] = ['$parse', '$rootScope', function($parse, $rootScope) {\n return {\n compile: function($element, attr) {\n // We expose the powerful $event object on the scope that provides access to the Window,\n // etc. that isn't protected by the fast paths in $parse. We explicitly request better\n // checks at the cost of speed since event handler expressions are not executed as\n // frequently as regular change detection.\n var fn = $parse(attr[directiveName], /* expensiveChecks */ true);\n return function ngEventHandler(scope, element) {\n element.on(eventName, function(event) {\n var callback = function() {\n fn(scope, {$event:event});\n };\n if (forceAsyncEvents[eventName] && $rootScope.$$phase) {\n scope.$evalAsync(callback);\n } else {\n scope.$apply(callback);\n }\n });\n };\n }\n };\n }];\n }\n);\n\n/**\n * @ngdoc directive\n * @name ngDblclick\n *\n * @description\n * The `ngDblclick` directive allows you to specify custom behavior on a dblclick event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngDblclick {@link guide/expression Expression} to evaluate upon\n * a dblclick. (The Event object is available as `$event`)\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngMousedown\n *\n * @description\n * The ngMousedown directive allows you to specify custom behavior on mousedown event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMousedown {@link guide/expression Expression} to evaluate upon\n * mousedown. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngMouseup\n *\n * @description\n * Specify custom behavior on mouseup event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMouseup {@link guide/expression Expression} to evaluate upon\n * mouseup. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n/**\n * @ngdoc directive\n * @name ngMouseover\n *\n * @description\n * Specify custom behavior on mouseover event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMouseover {@link guide/expression Expression} to evaluate upon\n * mouseover. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngMouseenter\n *\n * @description\n * Specify custom behavior on mouseenter event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMouseenter {@link guide/expression Expression} to evaluate upon\n * mouseenter. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngMouseleave\n *\n * @description\n * Specify custom behavior on mouseleave event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMouseleave {@link guide/expression Expression} to evaluate upon\n * mouseleave. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngMousemove\n *\n * @description\n * Specify custom behavior on mousemove event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMousemove {@link guide/expression Expression} to evaluate upon\n * mousemove. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngKeydown\n *\n * @description\n * Specify custom behavior on keydown event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngKeydown {@link guide/expression Expression} to evaluate upon\n * keydown. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)\n *\n * @example\n \n \n \n key down count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngKeyup\n *\n * @description\n * Specify custom behavior on keyup event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngKeyup {@link guide/expression Expression} to evaluate upon\n * keyup. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)\n *\n * @example\n \n \n

Typing in the input box below updates the key count

\n key up count: {{count}}\n\n

Typing in the input box below updates the keycode

\n \n

event keyCode: {{ event.keyCode }}

\n

event altKey: {{ event.altKey }}

\n
\n
\n */\n\n\n/**\n * @ngdoc directive\n * @name ngKeypress\n *\n * @description\n * Specify custom behavior on keypress event.\n *\n * @element ANY\n * @param {expression} ngKeypress {@link guide/expression Expression} to evaluate upon\n * keypress. ({@link guide/expression#-event- Event object is available as `$event`}\n * and can be interrogated for keyCode, altKey, etc.)\n *\n * @example\n \n \n \n key press count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngSubmit\n *\n * @description\n * Enables binding angular expressions to onsubmit events.\n *\n * Additionally it prevents the default action (which for form means sending the request to the\n * server and reloading the current page), but only if the form does not contain `action`,\n * `data-action`, or `x-action` attributes.\n *\n *
\n * **Warning:** Be careful not to cause \"double-submission\" by using both the `ngClick` and\n * `ngSubmit` handlers together. See the\n * {@link form#submitting-a-form-and-preventing-the-default-action `form` directive documentation}\n * for a detailed discussion of when `ngSubmit` may be triggered.\n *
\n *\n * @element form\n * @priority 0\n * @param {expression} ngSubmit {@link guide/expression Expression} to eval.\n * ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n
\n Enter text and hit enter:\n \n \n
list={{list}}
\n
\n
\n \n it('should check ng-submit', function() {\n expect(element(by.binding('list')).getText()).toBe('list=[]');\n element(by.css('#submit')).click();\n expect(element(by.binding('list')).getText()).toContain('hello');\n expect(element(by.model('text')).getAttribute('value')).toBe('');\n });\n it('should ignore empty strings', function() {\n expect(element(by.binding('list')).getText()).toBe('list=[]');\n element(by.css('#submit')).click();\n element(by.css('#submit')).click();\n expect(element(by.binding('list')).getText()).toContain('hello');\n });\n \n
\n */\n\n/**\n * @ngdoc directive\n * @name ngFocus\n *\n * @description\n * Specify custom behavior on focus event.\n *\n * Note: As the `focus` event is executed synchronously when calling `input.focus()`\n * AngularJS executes the expression using `scope.$evalAsync` if the event is fired\n * during an `$apply` to ensure a consistent state.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngFocus {@link guide/expression Expression} to evaluate upon\n * focus. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n * See {@link ng.directive:ngClick ngClick}\n */\n\n/**\n * @ngdoc directive\n * @name ngBlur\n *\n * @description\n * Specify custom behavior on blur event.\n *\n * A [blur event](https://developer.mozilla.org/en-US/docs/Web/Events/blur) fires when\n * an element has lost focus.\n *\n * Note: As the `blur` event is executed synchronously also during DOM manipulations\n * (e.g. removing a focussed input),\n * AngularJS executes the expression using `scope.$evalAsync` if the event is fired\n * during an `$apply` to ensure a consistent state.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngBlur {@link guide/expression Expression} to evaluate upon\n * blur. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n * See {@link ng.directive:ngClick ngClick}\n */\n\n/**\n * @ngdoc directive\n * @name ngCopy\n *\n * @description\n * Specify custom behavior on copy event.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngCopy {@link guide/expression Expression} to evaluate upon\n * copy. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n copied: {{copied}}\n \n \n */\n\n/**\n * @ngdoc directive\n * @name ngCut\n *\n * @description\n * Specify custom behavior on cut event.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngCut {@link guide/expression Expression} to evaluate upon\n * cut. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n cut: {{cut}}\n \n \n */\n\n/**\n * @ngdoc directive\n * @name ngPaste\n *\n * @description\n * Specify custom behavior on paste event.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngPaste {@link guide/expression Expression} to evaluate upon\n * paste. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n pasted: {{paste}}\n \n \n */\n\n/**\n * @ngdoc directive\n * @name ngIf\n * @restrict A\n *\n * @description\n * The `ngIf` directive removes or recreates a portion of the DOM tree based on an\n * {expression}. If the expression assigned to `ngIf` evaluates to a false\n * value then the element is removed from the DOM, otherwise a clone of the\n * element is reinserted into the DOM.\n *\n * `ngIf` differs from `ngShow` and `ngHide` in that `ngIf` completely removes and recreates the\n * element in the DOM rather than changing its visibility via the `display` css property. A common\n * case when this difference is significant is when using css selectors that rely on an element's\n * position within the DOM, such as the `:first-child` or `:last-child` pseudo-classes.\n *\n * Note that when an element is removed using `ngIf` its scope is destroyed and a new scope\n * is created when the element is restored. The scope created within `ngIf` inherits from\n * its parent scope using\n * [prototypal inheritance](https://github.com/angular/angular.js/wiki/Understanding-Scopes#javascript-prototypal-inheritance).\n * An important implication of this is if `ngModel` is used within `ngIf` to bind to\n * a javascript primitive defined in the parent scope. In this case any modifications made to the\n * variable within the child scope will override (hide) the value in the parent scope.\n *\n * Also, `ngIf` recreates elements using their compiled state. An example of this behavior\n * is if an element's class attribute is directly modified after it's compiled, using something like\n * jQuery's `.addClass()` method, and the element is later removed. When `ngIf` recreates the element\n * the added class will be lost because the original compiled state is used to regenerate the element.\n *\n * Additionally, you can provide animations via the `ngAnimate` module to animate the `enter`\n * and `leave` effects.\n *\n * @animations\n * enter - happens just after the `ngIf` contents change and a new DOM element is created and injected into the `ngIf` container\n * leave - happens just before the `ngIf` contents are removed from the DOM\n *\n * @element ANY\n * @scope\n * @priority 600\n * @param {expression} ngIf If the {@link guide/expression expression} is falsy then\n * the element is removed from the DOM tree. If it is truthy a copy of the compiled\n * element is added to the DOM tree.\n *\n * @example\n \n \n Click me:
\n Show when checked:\n \n I'm removed when the checkbox is unchecked.\n \n
\n \n .animate-if {\n background:white;\n border:1px solid black;\n padding:10px;\n }\n\n .animate-if.ng-enter, .animate-if.ng-leave {\n -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n }\n\n .animate-if.ng-enter,\n .animate-if.ng-leave.ng-leave-active {\n opacity:0;\n }\n\n .animate-if.ng-leave,\n .animate-if.ng-enter.ng-enter-active {\n opacity:1;\n }\n \n
\n */\nvar ngIfDirective = ['$animate', function($animate) {\n return {\n transclude: 'element',\n priority: 600,\n terminal: true,\n restrict: 'A',\n $$tlb: true,\n link: function ($scope, $element, $attr, ctrl, $transclude) {\n var block, childScope, previousElements;\n $scope.$watch($attr.ngIf, function ngIfWatchAction(value) {\n\n if (toBoolean(value)) {\n if (!childScope) {\n childScope = $scope.$new();\n $transclude(childScope, function (clone) {\n clone[clone.length++] = document.createComment(' end ngIf: ' + $attr.ngIf + ' ');\n // Note: We only need the first/last node of the cloned nodes.\n // However, we need to keep the reference to the jqlite wrapper as it might be changed later\n // by a directive with templateUrl when its template arrives.\n block = {\n clone: clone\n };\n $animate.enter(clone, $element.parent(), $element);\n });\n }\n } else {\n if(previousElements) {\n previousElements.remove();\n previousElements = null;\n }\n if(childScope) {\n childScope.$destroy();\n childScope = null;\n }\n if(block) {\n previousElements = getBlockElements(block.clone);\n $animate.leave(previousElements, function() {\n previousElements = null;\n });\n block = null;\n }\n }\n });\n }\n };\n}];\n\n/**\n * @ngdoc directive\n * @name ngInclude\n * @restrict ECA\n *\n * @description\n * Fetches, compiles and includes an external HTML fragment.\n *\n * By default, the template URL is restricted to the same domain and protocol as the\n * application document. This is done by calling {@link ng.$sce#getTrustedResourceUrl\n * $sce.getTrustedResourceUrl} on it. To load templates from other domains or protocols\n * you may either {@link ng.$sceDelegateProvider#resourceUrlWhitelist whitelist them} or\n * [wrap them](ng.$sce#trustAsResourceUrl) as trusted values. Refer to Angular's {@link\n * ng.$sce Strict Contextual Escaping}.\n *\n * In addition, the browser's\n * [Same Origin Policy](https://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest)\n * and [Cross-Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/)\n * policy may further restrict whether the template is successfully loaded.\n * For example, `ngInclude` won't work for cross-domain requests on all browsers and for `file://`\n * access on some browsers.\n *\n * @animations\n * enter - animation is used to bring new content into the browser.\n * leave - animation is used to animate existing content away.\n *\n * The enter and leave animation occur concurrently.\n *\n * @scope\n * @priority 400\n *\n * @param {string} ngInclude|src angular expression evaluating to URL. If the source is a string constant,\n * make sure you wrap it in **single** quotes, e.g. `src=\"'myPartialTemplate.html'\"`.\n * @param {string=} onload Expression to evaluate when a new partial is loaded.\n *\n * @param {string=} autoscroll Whether `ngInclude` should call {@link ng.$anchorScroll\n * $anchorScroll} to scroll the viewport after the content is loaded.\n *\n * - If the attribute is not set, disable scrolling.\n * - If the attribute is set without value, enable scrolling.\n * - Otherwise enable scrolling only if the expression evaluates to truthy value.\n *\n * @example\n \n \n
\n \n url of the template: {{template.url}}\n
\n
\n
\n
\n
\n
\n \n angular.module('includeExample', ['ngAnimate'])\n .controller('ExampleController', ['$scope', function($scope) {\n $scope.templates =\n [ { name: 'template1.html', url: 'template1.html'},\n { name: 'template2.html', url: 'template2.html'} ];\n $scope.template = $scope.templates[0];\n }]);\n \n \n Content of template1.html\n \n \n Content of template2.html\n \n \n .slide-animate-container {\n position:relative;\n background:white;\n border:1px solid black;\n height:40px;\n overflow:hidden;\n }\n\n .slide-animate {\n padding:10px;\n }\n\n .slide-animate.ng-enter, .slide-animate.ng-leave {\n -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n\n position:absolute;\n top:0;\n left:0;\n right:0;\n bottom:0;\n display:block;\n padding:10px;\n }\n\n .slide-animate.ng-enter {\n top:-50px;\n }\n .slide-animate.ng-enter.ng-enter-active {\n top:0;\n }\n\n .slide-animate.ng-leave {\n top:0;\n }\n .slide-animate.ng-leave.ng-leave-active {\n top:50px;\n }\n \n \n var templateSelect = element(by.model('template'));\n var includeElem = element(by.css('[ng-include]'));\n\n it('should load template1.html', function() {\n expect(includeElem.getText()).toMatch(/Content of template1.html/);\n });\n\n it('should load template2.html', function() {\n if (browser.params.browser == 'firefox') {\n // Firefox can't handle using selects\n // See https://github.com/angular/protractor/issues/480\n return;\n }\n templateSelect.click();\n templateSelect.all(by.css('option')).get(2).click();\n expect(includeElem.getText()).toMatch(/Content of template2.html/);\n });\n\n it('should change to blank', function() {\n if (browser.params.browser == 'firefox') {\n // Firefox can't handle using selects\n return;\n }\n templateSelect.click();\n templateSelect.all(by.css('option')).get(0).click();\n expect(includeElem.isPresent()).toBe(false);\n });\n \n
\n */\n\n\n/**\n * @ngdoc event\n * @name ngInclude#$includeContentRequested\n * @eventType emit on the scope ngInclude was declared in\n * @description\n * Emitted every time the ngInclude content is requested.\n */\n\n\n/**\n * @ngdoc event\n * @name ngInclude#$includeContentLoaded\n * @eventType emit on the current ngInclude scope\n * @description\n * Emitted every time the ngInclude content is reloaded.\n */\nvar ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$animate', '$sce',\n function($http, $templateCache, $anchorScroll, $animate, $sce) {\n return {\n restrict: 'ECA',\n priority: 400,\n terminal: true,\n transclude: 'element',\n controller: angular.noop,\n compile: function(element, attr) {\n var srcExp = attr.ngInclude || attr.src,\n onloadExp = attr.onload || '',\n autoScrollExp = attr.autoscroll;\n\n return function(scope, $element, $attr, ctrl, $transclude) {\n var changeCounter = 0,\n currentScope,\n previousElement,\n currentElement;\n\n var cleanupLastIncludeContent = function() {\n if(previousElement) {\n previousElement.remove();\n previousElement = null;\n }\n if(currentScope) {\n currentScope.$destroy();\n currentScope = null;\n }\n if(currentElement) {\n $animate.leave(currentElement, function() {\n previousElement = null;\n });\n previousElement = currentElement;\n currentElement = null;\n }\n };\n\n scope.$watch($sce.parseAsResourceUrl(srcExp), function ngIncludeWatchAction(src) {\n var afterAnimation = function() {\n if (isDefined(autoScrollExp) && (!autoScrollExp || scope.$eval(autoScrollExp))) {\n $anchorScroll();\n }\n };\n var thisChangeId = ++changeCounter;\n\n if (src) {\n $http.get(src, {cache: $templateCache}).success(function(response) {\n if (thisChangeId !== changeCounter) return;\n var newScope = scope.$new();\n ctrl.template = response;\n\n // Note: This will also link all children of ng-include that were contained in the original\n // html. If that content contains controllers, ... they could pollute/change the scope.\n // However, using ng-include on an element with additional content does not make sense...\n // Note: We can't remove them in the cloneAttchFn of $transclude as that\n // function is called before linking the content, which would apply child\n // directives to non existing elements.\n var clone = $transclude(newScope, function(clone) {\n cleanupLastIncludeContent();\n $animate.enter(clone, null, $element, afterAnimation);\n });\n\n currentScope = newScope;\n currentElement = clone;\n\n currentScope.$emit('$includeContentLoaded');\n scope.$eval(onloadExp);\n }).error(function() {\n if (thisChangeId === changeCounter) cleanupLastIncludeContent();\n });\n scope.$emit('$includeContentRequested');\n } else {\n cleanupLastIncludeContent();\n ctrl.template = null;\n }\n });\n };\n }\n };\n}];\n\n// This directive is called during the $transclude call of the first `ngInclude` directive.\n// It will replace and compile the content of the element with the loaded template.\n// We need this directive so that the element content is already filled when\n// the link function of another directive on the same element as ngInclude\n// is called.\nvar ngIncludeFillContentDirective = ['$compile',\n function($compile) {\n return {\n restrict: 'ECA',\n priority: -400,\n require: 'ngInclude',\n link: function(scope, $element, $attr, ctrl) {\n $element.html(ctrl.template);\n $compile($element.contents())(scope);\n }\n };\n }];\n\n/**\n * @ngdoc directive\n * @name ngInit\n * @restrict AC\n *\n * @description\n * The `ngInit` directive allows you to evaluate an expression in the\n * current scope.\n *\n *
\n * The only appropriate use of `ngInit` is for aliasing special properties of\n * {@link ng.directive:ngRepeat `ngRepeat`}, as seen in the demo below. Besides this case, you\n * should use {@link guide/controller controllers} rather than `ngInit`\n * to initialize values on a scope.\n *
\n *
\n * **Note**: If you have assignment in `ngInit` along with {@link ng.$filter `$filter`}, make\n * sure you have parenthesis for correct precedence:\n *
\n *   
\n *
\n *
\n *\n * @priority 450\n *\n * @element ANY\n * @param {expression} ngInit {@link guide/expression Expression} to eval.\n *\n * @example\n \n \n \n
\n
\n
\n list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}};\n
\n
\n
\n
\n \n it('should alias index positions', function() {\n var elements = element.all(by.css('.example-init'));\n expect(elements.get(0).getText()).toBe('list[ 0 ][ 0 ] = a;');\n expect(elements.get(1).getText()).toBe('list[ 0 ][ 1 ] = b;');\n expect(elements.get(2).getText()).toBe('list[ 1 ][ 0 ] = c;');\n expect(elements.get(3).getText()).toBe('list[ 1 ][ 1 ] = d;');\n });\n \n
\n */\nvar ngInitDirective = ngDirective({\n priority: 450,\n compile: function() {\n return {\n pre: function(scope, element, attrs) {\n scope.$eval(attrs.ngInit);\n }\n };\n }\n});\n\n/**\n * @ngdoc directive\n * @name ngNonBindable\n * @restrict AC\n * @priority 1000\n *\n * @description\n * The `ngNonBindable` directive tells Angular not to compile or bind the contents of the current\n * DOM element. This is useful if the element contains what appears to be Angular directives and\n * bindings but which should be ignored by Angular. This could be the case if you have a site that\n * displays snippets of code, for instance.\n *\n * @element ANY\n *\n * @example\n * In this example there are two locations where a simple interpolation binding (`{{}}`) is present,\n * but the one wrapped in `ngNonBindable` is left alone.\n *\n * @example\n \n \n
Normal: {{1 + 2}}
\n
Ignored: {{1 + 2}}
\n
\n \n it('should check ng-non-bindable', function() {\n expect(element(by.binding('1 + 2')).getText()).toContain('3');\n expect(element.all(by.css('div')).last().getText()).toMatch(/1 \\+ 2/);\n });\n \n
\n */\nvar ngNonBindableDirective = ngDirective({ terminal: true, priority: 1000 });\n\n/**\n * @ngdoc directive\n * @name ngPluralize\n * @restrict EA\n *\n * @description\n * `ngPluralize` is a directive that displays messages according to en-US localization rules.\n * These rules are bundled with angular.js, but can be overridden\n * (see {@link guide/i18n Angular i18n} dev guide). You configure ngPluralize directive\n * by specifying the mappings between\n * [plural categories](http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html)\n * and the strings to be displayed.\n *\n * # Plural categories and explicit number rules\n * There are two\n * [plural categories](http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html)\n * in Angular's default en-US locale: \"one\" and \"other\".\n *\n * While a plural category may match many numbers (for example, in en-US locale, \"other\" can match\n * any number that is not 1), an explicit number rule can only match one number. For example, the\n * explicit number rule for \"3\" matches the number 3. There are examples of plural categories\n * and explicit number rules throughout the rest of this documentation.\n *\n * # Configuring ngPluralize\n * You configure ngPluralize by providing 2 attributes: `count` and `when`.\n * You can also provide an optional attribute, `offset`.\n *\n * The value of the `count` attribute can be either a string or an {@link guide/expression\n * Angular expression}; these are evaluated on the current scope for its bound value.\n *\n * The `when` attribute specifies the mappings between plural categories and the actual\n * string to be displayed. The value of the attribute should be a JSON object.\n *\n * The following example shows how to configure ngPluralize:\n *\n * ```html\n * \n * \n *```\n *\n * In the example, `\"0: Nobody is viewing.\"` is an explicit number rule. If you did not\n * specify this rule, 0 would be matched to the \"other\" category and \"0 people are viewing\"\n * would be shown instead of \"Nobody is viewing\". You can specify an explicit number rule for\n * other numbers, for example 12, so that instead of showing \"12 people are viewing\", you can\n * show \"a dozen people are viewing\".\n *\n * You can use a set of closed braces (`{}`) as a placeholder for the number that you want substituted\n * into pluralized strings. In the previous example, Angular will replace `{}` with\n * `{{personCount}}`. The closed braces `{}` is a placeholder\n * for {{numberExpression}}.\n *\n * # Configuring ngPluralize with offset\n * The `offset` attribute allows further customization of pluralized text, which can result in\n * a better user experience. For example, instead of the message \"4 people are viewing this document\",\n * you might display \"John, Kate and 2 others are viewing this document\".\n * The offset attribute allows you to offset a number by any desired value.\n * Let's take a look at an example:\n *\n * ```html\n * \n * \n * ```\n *\n * Notice that we are still using two plural categories(one, other), but we added\n * three explicit number rules 0, 1 and 2.\n * When one person, perhaps John, views the document, \"John is viewing\" will be shown.\n * When three people view the document, no explicit number rule is found, so\n * an offset of 2 is taken off 3, and Angular uses 1 to decide the plural category.\n * In this case, plural category 'one' is matched and \"John, Mary and one other person are viewing\"\n * is shown.\n *\n * Note that when you specify offsets, you must provide explicit number rules for\n * numbers from 0 up to and including the offset. If you use an offset of 3, for example,\n * you must provide explicit number rules for 0, 1, 2 and 3. You must also provide plural strings for\n * plural categories \"one\" and \"other\".\n *\n * @param {string|expression} count The variable to be bound to.\n * @param {string} when The mapping between plural category to its corresponding strings.\n * @param {number=} offset Offset to deduct from the total number.\n *\n * @example\n \n \n \n
\n Person 1:
\n Person 2:
\n Number of People:
\n\n \n Without Offset:\n \n
\n\n \n With Offset(2):\n \n \n
\n
\n \n it('should show correct pluralized string', function() {\n var withoutOffset = element.all(by.css('ng-pluralize')).get(0);\n var withOffset = element.all(by.css('ng-pluralize')).get(1);\n var countInput = element(by.model('personCount'));\n\n expect(withoutOffset.getText()).toEqual('1 person is viewing.');\n expect(withOffset.getText()).toEqual('Igor is viewing.');\n\n countInput.clear();\n countInput.sendKeys('0');\n\n expect(withoutOffset.getText()).toEqual('Nobody is viewing.');\n expect(withOffset.getText()).toEqual('Nobody is viewing.');\n\n countInput.clear();\n countInput.sendKeys('2');\n\n expect(withoutOffset.getText()).toEqual('2 people are viewing.');\n expect(withOffset.getText()).toEqual('Igor and Misko are viewing.');\n\n countInput.clear();\n countInput.sendKeys('3');\n\n expect(withoutOffset.getText()).toEqual('3 people are viewing.');\n expect(withOffset.getText()).toEqual('Igor, Misko and one other person are viewing.');\n\n countInput.clear();\n countInput.sendKeys('4');\n\n expect(withoutOffset.getText()).toEqual('4 people are viewing.');\n expect(withOffset.getText()).toEqual('Igor, Misko and 2 other people are viewing.');\n });\n it('should show data-bound names', function() {\n var withOffset = element.all(by.css('ng-pluralize')).get(1);\n var personCount = element(by.model('personCount'));\n var person1 = element(by.model('person1'));\n var person2 = element(by.model('person2'));\n personCount.clear();\n personCount.sendKeys('4');\n person1.clear();\n person1.sendKeys('Di');\n person2.clear();\n person2.sendKeys('Vojta');\n expect(withOffset.getText()).toEqual('Di, Vojta and 2 other people are viewing.');\n });\n \n
\n */\nvar ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interpolate) {\n var BRACE = /{}/g;\n return {\n restrict: 'EA',\n link: function(scope, element, attr) {\n var numberExp = attr.count,\n whenExp = attr.$attr.when && element.attr(attr.$attr.when), // we have {{}} in attrs\n offset = attr.offset || 0,\n whens = scope.$eval(whenExp) || {},\n whensExpFns = {},\n startSymbol = $interpolate.startSymbol(),\n endSymbol = $interpolate.endSymbol(),\n isWhen = /^when(Minus)?(.+)$/;\n\n forEach(attr, function(expression, attributeName) {\n if (isWhen.test(attributeName)) {\n whens[lowercase(attributeName.replace('when', '').replace('Minus', '-'))] =\n element.attr(attr.$attr[attributeName]);\n }\n });\n forEach(whens, function(expression, key) {\n whensExpFns[key] =\n $interpolate(expression.replace(BRACE, startSymbol + numberExp + '-' +\n offset + endSymbol));\n });\n\n scope.$watch(function ngPluralizeWatch() {\n var value = parseFloat(scope.$eval(numberExp));\n\n if (!isNaN(value)) {\n //if explicit number rule such as 1, 2, 3... is defined, just use it. Otherwise,\n //check it against pluralization rules in $locale service\n if (!(value in whens)) value = $locale.pluralCat(value - offset);\n return whensExpFns[value](scope, element, true);\n } else {\n return '';\n }\n }, function ngPluralizeWatchAction(newVal) {\n element.text(newVal);\n });\n }\n };\n}];\n\n/**\n * @ngdoc directive\n * @name ngRepeat\n *\n * @description\n * The `ngRepeat` directive instantiates a template once per item from a collection. Each template\n * instance gets its own scope, where the given loop variable is set to the current collection item,\n * and `$index` is set to the item index or key.\n *\n * Special properties are exposed on the local scope of each template instance, including:\n *\n * | Variable | Type | Details |\n * |-----------|-----------------|-----------------------------------------------------------------------------|\n * | `$index` | {@type number} | iterator offset of the repeated element (0..length-1) |\n * | `$first` | {@type boolean} | true if the repeated element is first in the iterator. |\n * | `$middle` | {@type boolean} | true if the repeated element is between the first and last in the iterator. |\n * | `$last` | {@type boolean} | true if the repeated element is last in the iterator. |\n * | `$even` | {@type boolean} | true if the iterator position `$index` is even (otherwise false). |\n * | `$odd` | {@type boolean} | true if the iterator position `$index` is odd (otherwise false). |\n *\n * Creating aliases for these properties is possible with {@link ng.directive:ngInit `ngInit`}.\n * This may be useful when, for instance, nesting ngRepeats.\n *\n * # Special repeat start and end points\n * To repeat a series of elements instead of just one parent element, ngRepeat (as well as other ng directives) supports extending\n * the range of the repeater by defining explicit start and end points by using **ng-repeat-start** and **ng-repeat-end** respectively.\n * The **ng-repeat-start** directive works the same as **ng-repeat**, but will repeat all the HTML code (including the tag it's defined on)\n * up to and including the ending HTML tag where **ng-repeat-end** is placed.\n *\n * The example below makes use of this feature:\n * ```html\n *
\n * Header {{ item }}\n *
\n *
\n * Body {{ item }}\n *
\n *
\n * Footer {{ item }}\n *
\n * ```\n *\n * And with an input of {@type ['A','B']} for the items variable in the example above, the output will evaluate to:\n * ```html\n *
\n * Header A\n *
\n *
\n * Body A\n *
\n *
\n * Footer A\n *
\n *
\n * Header B\n *
\n *
\n * Body B\n *
\n *
\n * Footer B\n *
\n * ```\n *\n * The custom start and end points for ngRepeat also support all other HTML directive syntax flavors provided in AngularJS (such\n * as **data-ng-repeat-start**, **x-ng-repeat-start** and **ng:repeat-start**).\n *\n * @animations\n * **.enter** - when a new item is added to the list or when an item is revealed after a filter\n *\n * **.leave** - when an item is removed from the list or when an item is filtered out\n *\n * **.move** - when an adjacent item is filtered out causing a reorder or when the item contents are reordered\n *\n * @element ANY\n * @scope\n * @priority 1000\n * @param {repeat_expression} ngRepeat The expression indicating how to enumerate a collection. These\n * formats are currently supported:\n *\n * * `variable in expression` – where variable is the user defined loop variable and `expression`\n * is a scope expression giving the collection to enumerate.\n *\n * For example: `album in artist.albums`.\n *\n * * `(key, value) in expression` – where `key` and `value` can be any user defined identifiers,\n * and `expression` is the scope expression giving the collection to enumerate.\n *\n * For example: `(name, age) in {'adam':10, 'amalie':12}`.\n *\n * * `variable in expression track by tracking_expression` – You can also provide an optional tracking function\n * which can be used to associate the objects in the collection with the DOM elements. If no tracking function\n * is specified the ng-repeat associates elements by identity in the collection. It is an error to have\n * more than one tracking function to resolve to the same key. (This would mean that two distinct objects are\n * mapped to the same DOM element, which is not possible.) Filters should be applied to the expression,\n * before specifying a tracking expression.\n *\n * For example: `item in items` is equivalent to `item in items track by $id(item)`. This implies that the DOM elements\n * will be associated by item identity in the array.\n *\n * For example: `item in items track by $id(item)`. A built in `$id()` function can be used to assign a unique\n * `$$hashKey` property to each item in the array. This property is then used as a key to associated DOM elements\n * with the corresponding item in the array by identity. Moving the same object in array would move the DOM\n * element in the same way in the DOM.\n *\n * For example: `item in items track by item.id` is a typical pattern when the items come from the database. In this\n * case the object identity does not matter. Two objects are considered equivalent as long as their `id`\n * property is same.\n *\n * For example: `item in items | filter:searchText track by item.id` is a pattern that might be used to apply a filter\n * to items in conjunction with a tracking expression.\n *\n * @example\n * This example initializes the scope to a list of names and\n * then uses `ngRepeat` to display every person:\n \n \n
\n I have {{friends.length}} friends. They are:\n \n
    \n
  • \n [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old.\n
  • \n
\n
\n
\n \n .example-animate-container {\n background:white;\n border:1px solid black;\n list-style:none;\n margin:0;\n padding:0 10px;\n }\n\n .animate-repeat {\n line-height:40px;\n list-style:none;\n box-sizing:border-box;\n }\n\n .animate-repeat.ng-move,\n .animate-repeat.ng-enter,\n .animate-repeat.ng-leave {\n -webkit-transition:all linear 0.5s;\n transition:all linear 0.5s;\n }\n\n .animate-repeat.ng-leave.ng-leave-active,\n .animate-repeat.ng-move,\n .animate-repeat.ng-enter {\n opacity:0;\n max-height:0;\n }\n\n .animate-repeat.ng-leave,\n .animate-repeat.ng-move.ng-move-active,\n .animate-repeat.ng-enter.ng-enter-active {\n opacity:1;\n max-height:40px;\n }\n \n \n var friends = element.all(by.repeater('friend in friends'));\n\n it('should render initial data set', function() {\n expect(friends.count()).toBe(10);\n expect(friends.get(0).getText()).toEqual('[1] John who is 25 years old.');\n expect(friends.get(1).getText()).toEqual('[2] Jessie who is 30 years old.');\n expect(friends.last().getText()).toEqual('[10] Samantha who is 60 years old.');\n expect(element(by.binding('friends.length')).getText())\n .toMatch(\"I have 10 friends. They are:\");\n });\n\n it('should update repeater when filter predicate changes', function() {\n expect(friends.count()).toBe(10);\n\n element(by.model('q')).sendKeys('ma');\n\n expect(friends.count()).toBe(2);\n expect(friends.get(0).getText()).toEqual('[1] Mary who is 28 years old.');\n expect(friends.last().getText()).toEqual('[2] Samantha who is 60 years old.');\n });\n \n
\n */\nvar ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {\n var NG_REMOVED = '$$NG_REMOVED';\n var ngRepeatMinErr = minErr('ngRepeat');\n return {\n transclude: 'element',\n priority: 1000,\n terminal: true,\n $$tlb: true,\n link: function($scope, $element, $attr, ctrl, $transclude){\n var expression = $attr.ngRepeat;\n var match = expression.match(/^\\s*([\\s\\S]+?)\\s+in\\s+([\\s\\S]+?)(?:\\s+track\\s+by\\s+([\\s\\S]+?))?\\s*$/),\n trackByExp, trackByExpGetter, trackByIdExpFn, trackByIdArrayFn, trackByIdObjFn,\n lhs, rhs, valueIdentifier, keyIdentifier,\n hashFnLocals = {$id: hashKey};\n\n if (!match) {\n throw ngRepeatMinErr('iexp', \"Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.\",\n expression);\n }\n\n lhs = match[1];\n rhs = match[2];\n trackByExp = match[3];\n\n if (trackByExp) {\n trackByExpGetter = $parse(trackByExp);\n trackByIdExpFn = function(key, value, index) {\n // assign key, value, and $index to the locals so that they can be used in hash functions\n if (keyIdentifier) hashFnLocals[keyIdentifier] = key;\n hashFnLocals[valueIdentifier] = value;\n hashFnLocals.$index = index;\n return trackByExpGetter($scope, hashFnLocals);\n };\n } else {\n trackByIdArrayFn = function(key, value) {\n return hashKey(value);\n };\n trackByIdObjFn = function(key) {\n return key;\n };\n }\n\n match = lhs.match(/^(?:([\\$\\w]+)|\\(([\\$\\w]+)\\s*,\\s*([\\$\\w]+)\\))$/);\n if (!match) {\n throw ngRepeatMinErr('iidexp', \"'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.\",\n lhs);\n }\n valueIdentifier = match[3] || match[1];\n keyIdentifier = match[2];\n\n // Store a list of elements from previous run. This is a hash where key is the item from the\n // iterator, and the value is objects with following properties.\n // - scope: bound scope\n // - element: previous element.\n // - index: position\n var lastBlockMap = {};\n\n //watch props\n $scope.$watchCollection(rhs, function ngRepeatAction(collection){\n var index, length,\n previousNode = $element[0], // current position of the node\n nextNode,\n // Same as lastBlockMap but it has the current state. It will become the\n // lastBlockMap on the next iteration.\n nextBlockMap = {},\n arrayLength,\n childScope,\n key, value, // key/value of iteration\n trackById,\n trackByIdFn,\n collectionKeys,\n block, // last object information {scope, element, id}\n nextBlockOrder = [],\n elementsToRemove;\n\n\n if (isArrayLike(collection)) {\n collectionKeys = collection;\n trackByIdFn = trackByIdExpFn || trackByIdArrayFn;\n } else {\n trackByIdFn = trackByIdExpFn || trackByIdObjFn;\n // if object, extract keys, sort them and use to determine order of iteration over obj props\n collectionKeys = [];\n for (key in collection) {\n if (collection.hasOwnProperty(key) && key.charAt(0) != '$') {\n collectionKeys.push(key);\n }\n }\n collectionKeys.sort();\n }\n\n arrayLength = collectionKeys.length;\n\n // locate existing items\n length = nextBlockOrder.length = collectionKeys.length;\n for(index = 0; index < length; index++) {\n key = (collection === collectionKeys) ? index : collectionKeys[index];\n value = collection[key];\n trackById = trackByIdFn(key, value, index);\n assertNotHasOwnProperty(trackById, '`track by` id');\n if(lastBlockMap.hasOwnProperty(trackById)) {\n block = lastBlockMap[trackById];\n delete lastBlockMap[trackById];\n nextBlockMap[trackById] = block;\n nextBlockOrder[index] = block;\n } else if (nextBlockMap.hasOwnProperty(trackById)) {\n // restore lastBlockMap\n forEach(nextBlockOrder, function(block) {\n if (block && block.scope) lastBlockMap[block.id] = block;\n });\n // This is a duplicate and we need to throw an error\n throw ngRepeatMinErr('dupes',\n \"Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}\",\n expression, trackById, toJson(value));\n } else {\n // new never before seen block\n nextBlockOrder[index] = { id: trackById };\n nextBlockMap[trackById] = false;\n }\n }\n\n // remove existing items\n for (key in lastBlockMap) {\n // lastBlockMap is our own object so we don't need to use special hasOwnPropertyFn\n if (lastBlockMap.hasOwnProperty(key)) {\n block = lastBlockMap[key];\n elementsToRemove = getBlockElements(block.clone);\n $animate.leave(elementsToRemove);\n forEach(elementsToRemove, function(element) { element[NG_REMOVED] = true; });\n block.scope.$destroy();\n }\n }\n\n // we are not using forEach for perf reasons (trying to avoid #call)\n for (index = 0, length = collectionKeys.length; index < length; index++) {\n key = (collection === collectionKeys) ? index : collectionKeys[index];\n value = collection[key];\n block = nextBlockOrder[index];\n if (nextBlockOrder[index - 1]) previousNode = getBlockEnd(nextBlockOrder[index - 1]);\n\n if (block.scope) {\n // if we have already seen this object, then we need to reuse the\n // associated scope/element\n childScope = block.scope;\n\n nextNode = previousNode;\n do {\n nextNode = nextNode.nextSibling;\n } while(nextNode && nextNode[NG_REMOVED]);\n\n if (getBlockStart(block) != nextNode) {\n // existing item which got moved\n $animate.move(getBlockElements(block.clone), null, jqLite(previousNode));\n }\n previousNode = getBlockEnd(block);\n } else {\n // new item which we don't know about\n childScope = $scope.$new();\n }\n\n childScope[valueIdentifier] = value;\n if (keyIdentifier) childScope[keyIdentifier] = key;\n childScope.$index = index;\n childScope.$first = (index === 0);\n childScope.$last = (index === (arrayLength - 1));\n childScope.$middle = !(childScope.$first || childScope.$last);\n // jshint bitwise: false\n childScope.$odd = !(childScope.$even = (index&1) === 0);\n // jshint bitwise: true\n\n if (!block.scope) {\n $transclude(childScope, function(clone) {\n clone[clone.length++] = document.createComment(' end ngRepeat: ' + expression + ' ');\n $animate.enter(clone, null, jqLite(previousNode));\n previousNode = clone;\n block.scope = childScope;\n // Note: We only need the first/last node of the cloned nodes.\n // However, we need to keep the reference to the jqlite wrapper as it might be changed later\n // by a directive with templateUrl when its template arrives.\n block.clone = clone;\n nextBlockMap[block.id] = block;\n });\n }\n }\n lastBlockMap = nextBlockMap;\n });\n }\n };\n\n function getBlockStart(block) {\n return block.clone[0];\n }\n\n function getBlockEnd(block) {\n return block.clone[block.clone.length - 1];\n }\n}];\n\n/**\n * @ngdoc directive\n * @name ngShow\n *\n * @description\n * The `ngShow` directive shows or hides the given HTML element based on the expression\n * provided to the `ngShow` attribute. The element is shown or hidden by removing or adding\n * the `.ng-hide` CSS class onto the element. The `.ng-hide` CSS class is predefined\n * in AngularJS and sets the display style to none (using an !important flag).\n * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).\n *\n * ```html\n * \n *
\n *\n * \n *
\n * ```\n *\n * When the `ngShow` expression evaluates to false then the `.ng-hide` CSS class is added to the class attribute\n * on the element causing it to become hidden. When true, the `.ng-hide` CSS class is removed\n * from the element causing the element not to appear hidden.\n *\n *
\n * **Note:** Here is a list of values that ngShow will consider as a falsy value (case insensitive):
\n * \"f\" / \"0\" / \"false\" / \"no\" / \"n\" / \"[]\"\n *
\n *\n * ## Why is !important used?\n *\n * You may be wondering why !important is used for the `.ng-hide` CSS class. This is because the `.ng-hide` selector\n * can be easily overridden by heavier selectors. For example, something as simple\n * as changing the display style on a HTML list item would make hidden elements appear visible.\n * This also becomes a bigger issue when dealing with CSS frameworks.\n *\n * By using !important, the show and hide behavior will work as expected despite any clash between CSS selector\n * specificity (when !important isn't used with any conflicting styles). If a developer chooses to override the\n * styling to change how to hide an element then it is just a matter of using !important in their own CSS code.\n *\n * ### Overriding `.ng-hide`\n *\n * By default, the `.ng-hide` class will style the element with `display:none!important`. If you wish to change\n * the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the `.ng-hide`\n * class in CSS:\n *\n * ```css\n * .ng-hide {\n * //this is just another form of hiding an element\n * display:block!important;\n * position:absolute;\n * top:-9999px;\n * left:-9999px;\n * }\n * ```\n *\n * By default you don't need to override in CSS anything and the animations will work around the display style.\n *\n * ## A note about animations with `ngShow`\n *\n * Animations in ngShow/ngHide work with the show and hide events that are triggered when the directive expression\n * is true and false. This system works like the animation system present with ngClass except that\n * you must also include the !important flag to override the display property\n * so that you can perform an animation when the element is hidden during the time of the animation.\n *\n * ```css\n * //\n * //a working example can be found at the bottom of this page\n * //\n * .my-element.ng-hide-add, .my-element.ng-hide-remove {\n * transition:0.5s linear all;\n * }\n *\n * .my-element.ng-hide-add { ... }\n * .my-element.ng-hide-add.ng-hide-add-active { ... }\n * .my-element.ng-hide-remove { ... }\n * .my-element.ng-hide-remove.ng-hide-remove-active { ... }\n * ```\n *\n * Keep in mind that, as of AngularJS version 1.2.17 (and 1.3.0-beta.11), there is no need to change the display\n * property to block during animation states--ngAnimate will handle the style toggling automatically for you.\n *\n * @animations\n * addClass: `.ng-hide` - happens after the `ngShow` expression evaluates to a truthy value and the just before contents are set to visible\n * removeClass: `.ng-hide` - happens after the `ngShow` expression evaluates to a non truthy value and just before the contents are set to hidden\n *\n * @element ANY\n * @param {expression} ngShow If the {@link guide/expression expression} is truthy\n * then the element is shown or hidden respectively.\n *\n * @example\n \n \n Click me:
\n
\n Show:\n
\n I show up when your checkbox is checked.\n
\n
\n
\n Hide:\n
\n I hide when your checkbox is checked.\n
\n
\n
\n \n @import url(//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css);\n \n \n .animate-show {\n -webkit-transition:all linear 0.5s;\n transition:all linear 0.5s;\n line-height:20px;\n opacity:1;\n padding:10px;\n border:1px solid black;\n background:white;\n }\n\n .animate-show.ng-hide {\n line-height:0;\n opacity:0;\n padding:0 10px;\n }\n\n .check-element {\n padding:10px;\n border:1px solid black;\n background:white;\n }\n \n \n var thumbsUp = element(by.css('span.glyphicon-thumbs-up'));\n var thumbsDown = element(by.css('span.glyphicon-thumbs-down'));\n\n it('should check ng-show / ng-hide', function() {\n expect(thumbsUp.isDisplayed()).toBeFalsy();\n expect(thumbsDown.isDisplayed()).toBeTruthy();\n\n element(by.model('checked')).click();\n\n expect(thumbsUp.isDisplayed()).toBeTruthy();\n expect(thumbsDown.isDisplayed()).toBeFalsy();\n });\n \n
\n */\nvar ngShowDirective = ['$animate', function($animate) {\n return function(scope, element, attr) {\n scope.$watch(attr.ngShow, function ngShowWatchAction(value){\n $animate[toBoolean(value) ? 'removeClass' : 'addClass'](element, 'ng-hide');\n });\n };\n}];\n\n\n/**\n * @ngdoc directive\n * @name ngHide\n *\n * @description\n * The `ngHide` directive shows or hides the given HTML element based on the expression\n * provided to the `ngHide` attribute. The element is shown or hidden by removing or adding\n * the `ng-hide` CSS class onto the element. The `.ng-hide` CSS class is predefined\n * in AngularJS and sets the display style to none (using an !important flag).\n * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).\n *\n * ```html\n * \n *
\n *\n * \n *
\n * ```\n *\n * When the `.ngHide` expression evaluates to true then the `.ng-hide` CSS class is added to the class attribute\n * on the element causing it to become hidden. When false, the `.ng-hide` CSS class is removed\n * from the element causing the element not to appear hidden.\n *\n *
\n * **Note:** Here is a list of values that ngHide will consider as a falsy value (case insensitive):
\n * \"f\" / \"0\" / \"false\" / \"no\" / \"n\" / \"[]\"\n *
\n *\n * ## Why is !important used?\n *\n * You may be wondering why !important is used for the `.ng-hide` CSS class. This is because the `.ng-hide` selector\n * can be easily overridden by heavier selectors. For example, something as simple\n * as changing the display style on a HTML list item would make hidden elements appear visible.\n * This also becomes a bigger issue when dealing with CSS frameworks.\n *\n * By using !important, the show and hide behavior will work as expected despite any clash between CSS selector\n * specificity (when !important isn't used with any conflicting styles). If a developer chooses to override the\n * styling to change how to hide an element then it is just a matter of using !important in their own CSS code.\n *\n * ### Overriding `.ng-hide`\n *\n * By default, the `.ng-hide` class will style the element with `display:none!important`. If you wish to change\n * the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the `.ng-hide`\n * class in CSS:\n *\n * ```css\n * .ng-hide {\n * //this is just another form of hiding an element\n * display:block!important;\n * position:absolute;\n * top:-9999px;\n * left:-9999px;\n * }\n * ```\n *\n * By default you don't need to override in CSS anything and the animations will work around the display style.\n *\n * ## A note about animations with `ngHide`\n *\n * Animations in ngShow/ngHide work with the show and hide events that are triggered when the directive expression\n * is true and false. This system works like the animation system present with ngClass, except that the `.ng-hide`\n * CSS class is added and removed for you instead of your own CSS class.\n *\n * ```css\n * //\n * //a working example can be found at the bottom of this page\n * //\n * .my-element.ng-hide-add, .my-element.ng-hide-remove {\n * transition:0.5s linear all;\n * }\n *\n * .my-element.ng-hide-add { ... }\n * .my-element.ng-hide-add.ng-hide-add-active { ... }\n * .my-element.ng-hide-remove { ... }\n * .my-element.ng-hide-remove.ng-hide-remove-active { ... }\n * ```\n *\n * Keep in mind that, as of AngularJS version 1.2.17 (and 1.3.0-beta.11), there is no need to change the display\n * property to block during animation states--ngAnimate will handle the style toggling automatically for you.\n *\n * @animations\n * removeClass: `.ng-hide` - happens after the `ngHide` expression evaluates to a truthy value and just before the contents are set to hidden\n * addClass: `.ng-hide` - happens after the `ngHide` expression evaluates to a non truthy value and just before the contents are set to visible\n *\n * @element ANY\n * @param {expression} ngHide If the {@link guide/expression expression} is truthy then\n * the element is shown or hidden respectively.\n *\n * @example\n \n \n Click me:
\n
\n Show:\n
\n I show up when your checkbox is checked.\n
\n
\n
\n Hide:\n
\n I hide when your checkbox is checked.\n
\n
\n
\n \n @import url(//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css);\n \n \n .animate-hide {\n -webkit-transition:all linear 0.5s;\n transition:all linear 0.5s;\n line-height:20px;\n opacity:1;\n padding:10px;\n border:1px solid black;\n background:white;\n }\n\n .animate-hide.ng-hide {\n line-height:0;\n opacity:0;\n padding:0 10px;\n }\n\n .check-element {\n padding:10px;\n border:1px solid black;\n background:white;\n }\n \n \n var thumbsUp = element(by.css('span.glyphicon-thumbs-up'));\n var thumbsDown = element(by.css('span.glyphicon-thumbs-down'));\n\n it('should check ng-show / ng-hide', function() {\n expect(thumbsUp.isDisplayed()).toBeFalsy();\n expect(thumbsDown.isDisplayed()).toBeTruthy();\n\n element(by.model('checked')).click();\n\n expect(thumbsUp.isDisplayed()).toBeTruthy();\n expect(thumbsDown.isDisplayed()).toBeFalsy();\n });\n \n
\n */\nvar ngHideDirective = ['$animate', function($animate) {\n return function(scope, element, attr) {\n scope.$watch(attr.ngHide, function ngHideWatchAction(value){\n $animate[toBoolean(value) ? 'addClass' : 'removeClass'](element, 'ng-hide');\n });\n };\n}];\n\n/**\n * @ngdoc directive\n * @name ngStyle\n * @restrict AC\n *\n * @description\n * The `ngStyle` directive allows you to set CSS style on an HTML element conditionally.\n *\n * @element ANY\n * @param {expression} ngStyle\n *\n * {@link guide/expression Expression} which evals to an\n * object whose keys are CSS style names and values are corresponding values for those CSS\n * keys.\n *\n * Since some CSS style names are not valid keys for an object, they must be quoted.\n * See the 'background-color' style in the example below.\n *\n * @example\n \n \n \n \n \n
\n Sample Text\n
myStyle={{myStyle}}
\n
\n \n span {\n color: black;\n }\n \n \n var colorSpan = element(by.css('span'));\n\n it('should check ng-style', function() {\n expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');\n element(by.css('input[value=\\'set color\\']')).click();\n expect(colorSpan.getCssValue('color')).toBe('rgba(255, 0, 0, 1)');\n element(by.css('input[value=clear]')).click();\n expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');\n });\n \n
\n */\nvar ngStyleDirective = ngDirective(function(scope, element, attr) {\n scope.$watch(attr.ngStyle, function ngStyleWatchAction(newStyles, oldStyles) {\n if (oldStyles && (newStyles !== oldStyles)) {\n forEach(oldStyles, function(val, style) { element.css(style, '');});\n }\n if (newStyles) element.css(newStyles);\n }, true);\n});\n\n/**\n * @ngdoc directive\n * @name ngSwitch\n * @restrict EA\n *\n * @description\n * The `ngSwitch` directive is used to conditionally swap DOM structure on your template based on a scope expression.\n * Elements within `ngSwitch` but without `ngSwitchWhen` or `ngSwitchDefault` directives will be preserved at the location\n * as specified in the template.\n *\n * The directive itself works similar to ngInclude, however, instead of downloading template code (or loading it\n * from the template cache), `ngSwitch` simply chooses one of the nested elements and makes it visible based on which element\n * matches the value obtained from the evaluated expression. In other words, you define a container element\n * (where you place the directive), place an expression on the **`on=\"...\"` attribute**\n * (or the **`ng-switch=\"...\"` attribute**), define any inner elements inside of the directive and place\n * a when attribute per element. The when attribute is used to inform ngSwitch which element to display when the on\n * expression is evaluated. If a matching expression is not found via a when attribute then an element with the default\n * attribute is displayed.\n *\n *
\n * Be aware that the attribute values to match against cannot be expressions. They are interpreted\n * as literal string values to match against.\n * For example, **`ng-switch-when=\"someVal\"`** will match against the string `\"someVal\"` not against the\n * value of the expression `$scope.someVal`.\n *
\n\n * @animations\n * enter - happens after the ngSwitch contents change and the matched child element is placed inside the container\n * leave - happens just after the ngSwitch contents change and just before the former contents are removed from the DOM\n *\n * @usage\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n *\n * @scope\n * @priority 800\n * @param {*} ngSwitch|on expression to match against ng-switch-when.\n * On child elements add:\n *\n * * `ngSwitchWhen`: the case statement to match against. If match then this\n * case will be displayed. If the same match appears multiple times, all the\n * elements will be displayed.\n * * `ngSwitchDefault`: the default case when no other case match. If there\n * are multiple default cases, all of them will be displayed when no other\n * case match.\n *\n *\n * @example\n \n \n
\n \n selection={{selection}}\n
\n
\n
Settings Div
\n
Home Span
\n
default
\n
\n
\n
\n \n angular.module('switchExample', ['ngAnimate'])\n .controller('ExampleController', ['$scope', function($scope) {\n $scope.items = ['settings', 'home', 'other'];\n $scope.selection = $scope.items[0];\n }]);\n \n \n .animate-switch-container {\n position:relative;\n background:white;\n border:1px solid black;\n height:40px;\n overflow:hidden;\n }\n\n .animate-switch {\n padding:10px;\n }\n\n .animate-switch.ng-animate {\n -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n\n position:absolute;\n top:0;\n left:0;\n right:0;\n bottom:0;\n }\n\n .animate-switch.ng-leave.ng-leave-active,\n .animate-switch.ng-enter {\n top:-50px;\n }\n .animate-switch.ng-leave,\n .animate-switch.ng-enter.ng-enter-active {\n top:0;\n }\n \n \n var switchElem = element(by.css('[ng-switch]'));\n var select = element(by.model('selection'));\n\n it('should start in settings', function() {\n expect(switchElem.getText()).toMatch(/Settings Div/);\n });\n it('should change to home', function() {\n select.all(by.css('option')).get(1).click();\n expect(switchElem.getText()).toMatch(/Home Span/);\n });\n it('should select default', function() {\n select.all(by.css('option')).get(2).click();\n expect(switchElem.getText()).toMatch(/default/);\n });\n \n
\n */\nvar ngSwitchDirective = ['$animate', function($animate) {\n return {\n restrict: 'EA',\n require: 'ngSwitch',\n\n // asks for $scope to fool the BC controller module\n controller: ['$scope', function ngSwitchController() {\n this.cases = {};\n }],\n link: function(scope, element, attr, ngSwitchController) {\n var watchExpr = attr.ngSwitch || attr.on,\n selectedTranscludes = [],\n selectedElements = [],\n previousElements = [],\n selectedScopes = [];\n\n scope.$watch(watchExpr, function ngSwitchWatchAction(value) {\n var i, ii;\n for (i = 0, ii = previousElements.length; i < ii; ++i) {\n previousElements[i].remove();\n }\n previousElements.length = 0;\n\n for (i = 0, ii = selectedScopes.length; i < ii; ++i) {\n var selected = selectedElements[i];\n selectedScopes[i].$destroy();\n previousElements[i] = selected;\n $animate.leave(selected, function() {\n previousElements.splice(i, 1);\n });\n }\n\n selectedElements.length = 0;\n selectedScopes.length = 0;\n\n if ((selectedTranscludes = ngSwitchController.cases['!' + value] || ngSwitchController.cases['?'])) {\n scope.$eval(attr.change);\n forEach(selectedTranscludes, function(selectedTransclude) {\n var selectedScope = scope.$new();\n selectedScopes.push(selectedScope);\n selectedTransclude.transclude(selectedScope, function(caseElement) {\n var anchor = selectedTransclude.element;\n\n selectedElements.push(caseElement);\n $animate.enter(caseElement, anchor.parent(), anchor);\n });\n });\n }\n });\n }\n };\n}];\n\nvar ngSwitchWhenDirective = ngDirective({\n transclude: 'element',\n priority: 800,\n require: '^ngSwitch',\n link: function(scope, element, attrs, ctrl, $transclude) {\n ctrl.cases['!' + attrs.ngSwitchWhen] = (ctrl.cases['!' + attrs.ngSwitchWhen] || []);\n ctrl.cases['!' + attrs.ngSwitchWhen].push({ transclude: $transclude, element: element });\n }\n});\n\nvar ngSwitchDefaultDirective = ngDirective({\n transclude: 'element',\n priority: 800,\n require: '^ngSwitch',\n link: function(scope, element, attr, ctrl, $transclude) {\n ctrl.cases['?'] = (ctrl.cases['?'] || []);\n ctrl.cases['?'].push({ transclude: $transclude, element: element });\n }\n});\n\n/**\n * @ngdoc directive\n * @name ngTransclude\n * @restrict AC\n *\n * @description\n * Directive that marks the insertion point for the transcluded DOM of the nearest parent directive that uses transclusion.\n *\n * Any existing content of the element that this directive is placed on will be removed before the transcluded content is inserted.\n *\n * @element ANY\n *\n * @example\n \n \n \n
\n
\n
\n {{text}}\n
\n
\n \n it('should have transcluded', function() {\n var titleElement = element(by.model('title'));\n titleElement.clear();\n titleElement.sendKeys('TITLE');\n var textElement = element(by.model('text'));\n textElement.clear();\n textElement.sendKeys('TEXT');\n expect(element(by.binding('title')).getText()).toEqual('TITLE');\n expect(element(by.binding('text')).getText()).toEqual('TEXT');\n });\n \n
\n *\n */\nvar ngTranscludeDirective = ngDirective({\n link: function($scope, $element, $attrs, controller, $transclude) {\n if (!$transclude) {\n throw minErr('ngTransclude')('orphan',\n 'Illegal use of ngTransclude directive in the template! ' +\n 'No parent directive that requires a transclusion found. ' +\n 'Element: {0}',\n startingTag($element));\n }\n\n $transclude(function(clone) {\n $element.empty();\n $element.append(clone);\n });\n }\n});\n\n/**\n * @ngdoc directive\n * @name script\n * @restrict E\n *\n * @description\n * Load the content of a `\n\n Load inlined template\n
\n \n \n it('should load template defined inside script tag', function() {\n element(by.css('#tpl-link')).click();\n expect(element(by.css('#tpl-content')).getText()).toMatch(/Content of the template/);\n });\n \n \n */\nvar scriptDirective = ['$templateCache', function($templateCache) {\n return {\n restrict: 'E',\n terminal: true,\n compile: function(element, attr) {\n if (attr.type == 'text/ng-template') {\n var templateUrl = attr.id,\n text = element[0].text;\n\n $templateCache.put(templateUrl, text);\n }\n }\n };\n}];\n\nvar ngOptionsMinErr = minErr('ngOptions');\n/**\n * @ngdoc directive\n * @name select\n * @restrict E\n *\n * @description\n * HTML `SELECT` element with angular data-binding.\n *\n * # `ngOptions`\n *\n * The `ngOptions` attribute can be used to dynamically generate a list of ``\n * DOM element.\n * * `trackexpr`: Used when working with an array of objects. The result of this expression will be\n * used to identify the objects in the array. The `trackexpr` will most likely refer to the\n * `value` variable (e.g. `value.propertyName`).\n *\n * @example\n \n \n \n
\n
    \n
  • \n Name: \n [X]\n
  • \n
  • \n [add]\n
  • \n
\n
\n Color (null not allowed):\n
\n\n Color (null allowed):\n \n \n
\n\n Color grouped by shade:\n
\n\n\n Select bogus.
\n
\n Currently selected: {{ {selected_color:myColor} }}\n
\n
\n
\n
\n \n it('should check ng-options', function() {\n expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('red');\n element.all(by.model('myColor')).first().click();\n element.all(by.css('select[ng-model=\"myColor\"] option')).first().click();\n expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('black');\n element(by.css('.nullable select[ng-model=\"myColor\"]')).click();\n element.all(by.css('.nullable select[ng-model=\"myColor\"] option')).first().click();\n expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('null');\n });\n \n
\n */\n\nvar ngOptionsDirective = valueFn({ terminal: true });\n// jshint maxlen: false\nvar selectDirective = ['$compile', '$parse', function($compile, $parse) {\n //000011111111110000000000022222222220000000000000000000003333333333000000000000004444444444444440000000005555555555555550000000666666666666666000000000000000777777777700000000000000000008888888888\n var NG_OPTIONS_REGEXP = /^\\s*([\\s\\S]+?)(?:\\s+as\\s+([\\s\\S]+?))?(?:\\s+group\\s+by\\s+([\\s\\S]+?))?\\s+for\\s+(?:([\\$\\w][\\$\\w]*)|(?:\\(\\s*([\\$\\w][\\$\\w]*)\\s*,\\s*([\\$\\w][\\$\\w]*)\\s*\\)))\\s+in\\s+([\\s\\S]+?)(?:\\s+track\\s+by\\s+([\\s\\S]+?))?$/,\n nullModelCtrl = {$setViewValue: noop};\n// jshint maxlen: 100\n\n return {\n restrict: 'E',\n require: ['select', '?ngModel'],\n controller: ['$element', '$scope', '$attrs', function($element, $scope, $attrs) {\n var self = this,\n optionsMap = {},\n ngModelCtrl = nullModelCtrl,\n nullOption,\n unknownOption;\n\n\n self.databound = $attrs.ngModel;\n\n\n self.init = function(ngModelCtrl_, nullOption_, unknownOption_) {\n ngModelCtrl = ngModelCtrl_;\n nullOption = nullOption_;\n unknownOption = unknownOption_;\n };\n\n\n self.addOption = function(value) {\n assertNotHasOwnProperty(value, '\"option value\"');\n optionsMap[value] = true;\n\n if (ngModelCtrl.$viewValue == value) {\n $element.val(value);\n if (unknownOption.parent()) unknownOption.remove();\n }\n };\n\n\n self.removeOption = function(value) {\n if (this.hasOption(value)) {\n delete optionsMap[value];\n if (ngModelCtrl.$viewValue == value) {\n this.renderUnknownOption(value);\n }\n }\n };\n\n\n self.renderUnknownOption = function(val) {\n var unknownVal = '? ' + hashKey(val) + ' ?';\n unknownOption.val(unknownVal);\n $element.prepend(unknownOption);\n $element.val(unknownVal);\n unknownOption.prop('selected', true); // needed for IE\n };\n\n\n self.hasOption = function(value) {\n return optionsMap.hasOwnProperty(value);\n };\n\n $scope.$on('$destroy', function() {\n // disable unknown option so that we don't do work when the whole select is being destroyed\n self.renderUnknownOption = noop;\n });\n }],\n\n link: function(scope, element, attr, ctrls) {\n // if ngModel is not defined, we don't need to do anything\n if (!ctrls[1]) return;\n\n var selectCtrl = ctrls[0],\n ngModelCtrl = ctrls[1],\n multiple = attr.multiple,\n optionsExp = attr.ngOptions,\n nullOption = false, // if false, user will not be able to select it (used by ngOptions)\n emptyOption,\n // we can't just jqLite('\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\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 and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + 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 and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully does not implement inclusive descendent\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\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\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === doc ? -1 :\n\t\t\t\tb === doc ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn doc;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\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\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\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\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\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\tattrHandle: {},\n\n\tfind: {},\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( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\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 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\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[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\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 excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\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\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ 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( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && 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 ) {\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.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 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, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, diff, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\t\t\treturn false;\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\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && cache[2];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\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\n\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\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\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\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( 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// Potentially complex pseudos\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\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\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\ttext = text.replace( runescape, funescape );\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// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\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// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\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\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\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\"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\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\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\tvar i = 0;\n\t\t\tfor ( ; 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\tvar i = 1;\n\t\t\tfor ( ; 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\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --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\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++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\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ 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\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\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\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\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 toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && 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 ( elem.nodeType === 1 || checkNonElements ) {\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\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\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\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\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 ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\t\t\t\t\t\tif ( (oldCache = outerCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\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 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 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( 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( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !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\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\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 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).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 && toSelector( tokens )\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, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be \"00\" below\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (matcher = elementMatchers[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}\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\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[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\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ 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 ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[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\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is no seed and only one group\n\tif ( match.length === 1 ) {\n\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\trsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\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\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = (/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/);\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) >= 0 ) !== not;\n\t});\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t}));\n};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tlen = this.length,\n\t\t\tret = [],\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0; i < len; 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\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], false) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], true) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n});\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context ) {\n\t\tvar match, elem;\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 HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[0] === \"<\" && selector[ 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\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[1],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\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\treturn this;\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// Support: Blackberry 4.6\n\t\t\t\t\t// gEBID returns nodes no longer in the document (#6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// 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: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\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 typeof rootjQuery.ready !== \"undefined\" ?\n\t\t\t\trootjQuery.ready( selector ) :\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\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// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\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.extend({\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\ttruncate = until !== undefined;\n\n\t\twhile ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmatched.push( elem );\n\t\t\t}\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar matched = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tmatched.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn matched;\n\t}\n});\n\njQuery.fn.extend({\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; 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\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\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\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\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.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.unique(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\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\nfunction sibling( cur, dir ) {\n\twhile ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}\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 elem.contentDocument || jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.unique( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n});\nvar rnotwhite = (/\\S+/g);\n\n\n\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.match( rnotwhite ) || [], 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// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\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\tfiringLength = 0;\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\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\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};\n\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 fn = jQuery.isFunction( fns[ i ] ) && 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] ](function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\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\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 ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\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 = 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 ? 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});\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend({\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// 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.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n});\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed, false );\n\twindow.removeEventListener( \"load\", completed, false );\n\tjQuery.ready();\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 );\n\n\t\t} else {\n\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed, false );\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Kick off the DOM ready check even if the user does not\njQuery.ready.promise();\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\tjQuery.access( elems, fn, i, key[i], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlen ? fn( elems[0], key ) : emptyGet;\n};\n\n\n/**\n * Determines whether an object can have data\n */\njQuery.acceptData = function( owner ) {\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\t/* jshint -W018 */\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\nfunction Data() {\n\t// Support: Android<4,\n\t// Old WebKit does not have Object.preventExtensions/freeze method,\n\t// return new empty object instead with no [[set]] accessor\n\tObject.defineProperty( this.cache = {}, 0, {\n\t\tget: function() {\n\t\t\treturn {};\n\t\t}\n\t});\n\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\nData.accepts = jQuery.acceptData;\n\nData.prototype = {\n\tkey: function( owner ) {\n\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t// but we should not, see #8335.\n\t\t// Always return the key for a frozen object.\n\t\tif ( !Data.accepts( owner ) ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar descriptor = {},\n\t\t\t// Check if the owner object already has a cache key\n\t\t\tunlock = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !unlock ) {\n\t\t\tunlock = Data.uid++;\n\n\t\t\t// Secure it in a non-enumerable, non-writable property\n\t\t\ttry {\n\t\t\t\tdescriptor[ this.expando ] = { value: unlock };\n\t\t\t\tObject.defineProperties( owner, descriptor );\n\n\t\t\t// Support: Android<4\n\t\t\t// Fallback to a less secure definition\n\t\t\t} catch ( e ) {\n\t\t\t\tdescriptor[ this.expando ] = unlock;\n\t\t\t\tjQuery.extend( owner, descriptor );\n\t\t\t}\n\t\t}\n\n\t\t// Ensure the cache object\n\t\tif ( !this.cache[ unlock ] ) {\n\t\t\tthis.cache[ unlock ] = {};\n\t\t}\n\n\t\treturn unlock;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\t// There may be an unlock assigned to this node,\n\t\t\t// if there is no entry for this \"owner\", create one inline\n\t\t\t// and set the unlock as though an owner entry had always existed\n\t\t\tunlock = this.key( owner ),\n\t\t\tcache = this.cache[ unlock ];\n\n\t\t// Handle: [ owner, key, value ] args\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ data ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\t\t\t// Fresh assignments by object are shallow copied\n\t\t\tif ( jQuery.isEmptyObject( cache ) ) {\n\t\t\t\tjQuery.extend( this.cache[ unlock ], data );\n\t\t\t// Otherwise, copy the properties one-by-one to the cache object\n\t\t\t} else {\n\t\t\t\tfor ( prop in data ) {\n\t\t\t\t\tcache[ prop ] = data[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\t// Either a valid cache is found, or will be created.\n\t\t// New caches will be created and the unlock returned,\n\t\t// allowing direct access to the newly created\n\t\t// empty data object. A valid owner object must be provided.\n\t\tvar cache = this.cache[ this.key( owner ) ];\n\n\t\treturn key === undefined ?\n\t\t\tcache : cache[ key ];\n\t},\n\taccess: function( owner, key, value ) {\n\t\tvar stored;\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t((key && typeof key === \"string\") && value === undefined) ) {\n\n\t\t\tstored = this.get( owner, key );\n\n\t\t\treturn stored !== undefined ?\n\t\t\t\tstored : this.get( owner, jQuery.camelCase(key) );\n\t\t}\n\n\t\t// [*]When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i, name, camel,\n\t\t\tunlock = this.key( owner ),\n\t\t\tcache = this.cache[ unlock ];\n\n\t\tif ( key === undefined ) {\n\t\t\tthis.cache[ unlock ] = {};\n\n\t\t} else {\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( jQuery.isArray( key ) ) {\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = key.concat( key.map( jQuery.camelCase ) );\n\t\t\t} else {\n\t\t\t\tcamel = jQuery.camelCase( key );\n\t\t\t\t// Try the string as a key before any manipulation\n\t\t\t\tif ( key in cache ) {\n\t\t\t\t\tname = [ key, camel ];\n\t\t\t\t} else {\n\t\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\t\tname = camel;\n\t\t\t\t\tname = name in cache ?\n\t\t\t\t\t\t[ name ] : ( name.match( rnotwhite ) || [] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ name[ i ] ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\treturn !jQuery.isEmptyObject(\n\t\t\tthis.cache[ owner[ this.expando ] ] || {}\n\t\t);\n\t},\n\tdiscard: function( owner ) {\n\t\tif ( owner[ this.expando ] ) {\n\t\t\tdelete this.cache[ owner[ this.expando ] ];\n\t\t}\n\t}\n};\nvar data_priv = new Data();\n\nvar data_user = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\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\t\tname = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\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\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\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\tdata_user.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend({\n\thasData: function( elem ) {\n\t\treturn data_user.hasData( elem ) || data_priv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn data_user.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdata_user.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to data_priv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn data_priv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdata_priv.remove( elem, name );\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = data_user.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !data_priv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice(5) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\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\tdata_priv.set( elem, \"hasDataAttrs\", 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\tdata_user.set( this, key );\n\t\t\t});\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data,\n\t\t\t\tcamelKey = jQuery.camelCase( key );\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key as-is\n\t\t\t\tdata = data_user.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key camelized\n\t\t\t\tdata = data_user.get( elem, camelKey );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, camelKey, undefined );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each(function() {\n\t\t\t\t// First, attempt to store a copy or reference of any\n\t\t\t\t// data that might've been store with a camelCased key.\n\t\t\t\tvar data = data_user.get( this, camelKey );\n\n\t\t\t\t// For HTML5 data-* attribute interop, we have to\n\t\t\t\t// store property names with dashes in a camelCase form.\n\t\t\t\t// This might not apply to all properties...*\n\t\t\t\tdata_user.set( this, camelKey, value );\n\n\t\t\t\t// *... In the case of properties that might _actually_\n\t\t\t\t// have dashes, we need to also store a copy of that\n\t\t\t\t// unchanged property.\n\t\t\t\tif ( key.indexOf(\"-\") !== -1 && data !== undefined ) {\n\t\t\t\t\tdata_user.set( this, key, value );\n\t\t\t\t}\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tdata_user.remove( this, key );\n\t\t});\n\t}\n});\n\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 = data_priv.get( 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 = data_priv.access( 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 public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn data_priv.get( elem, key ) || data_priv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tdata_priv.remove( elem, [ type + \"queue\", key ] );\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\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 = data_priv.get( 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 pnum = (/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/).source;\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n\t};\n\nvar rcheckableType = (/^(?:checkbox|radio)$/i);\n\n\n\n(function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Safari<=5.1\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Safari<=5.1, Android<4.2\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<=11+\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n})();\nvar strundefined = typeof undefined;\n\n\n\nsupport.focusinBubbles = \"onfocusin\" in window;\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\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\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = data_priv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\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\tif ( !(events = elemData.events) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !(eventHandle = elemData.handle) ) {\n\t\t\teventHandle = elemData.handle = 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 !== strundefined && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\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: origType,\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\tif ( !(handlers = events[ type ]) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener 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\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\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},\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 j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = data_priv.hasData( elem ) && data_priv.get( 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 = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\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\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[2] && new RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ 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( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.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 ( origCount && !handlers.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\t\t\tdata_priv.remove( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split(\".\") : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\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// 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\t\tontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join(\".\");\n\t\tevent.namespace_re = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" ) :\n\t\t\tnull;\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 ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && 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\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = 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 ( tmp === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( data_priv.get( cur, \"events\" ) || {} )[ event.type ] && data_priv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && jQuery.acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\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( eventPath.pop(), data ) === false) &&\n\t\t\t\tjQuery.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// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && jQuery.isFunction( elem[ type ] ) && !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\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\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 ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\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 );\n\n\t\tvar i, j, ret, matched, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( data_priv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\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\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\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\tif ( (event.result = 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\thandlers: function( event, handlers ) {\n\t\tvar i, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG instance trees (#13180)\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== \"click\") ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.disabled !== true || event.type !== \"click\" ) {\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\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ 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 ( matches[ 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, handlers: 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 ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: \"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 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\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 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, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: Cordova 2.5 (WebKit) (#13255)\n\t\t// All events should have a target; Cordova deviceready doesn't\n\t\tif ( !event.target ) {\n\t\t\tevent.target = document;\n\t\t}\n\n\t\t// Support: Safari 6.0+, Chrome<28\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\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\t\tfocus: {\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && jQuery.nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\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{\n\t\t\t\ttype: 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\njQuery.removeEvent = function( elem, type, handle ) {\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle, false );\n\t}\n};\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 ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\t\t\t\t// Support: Android<4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\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\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\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && e.preventDefault ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopImmediatePropagation ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// Support: Chrome 15+\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\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\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// Support: Firefox, Chrome, Safari\n// Create \"bubbling\" focus and blur events\nif ( !support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = 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\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = data_priv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdata_priv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = data_priv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdata_priv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdata_priv.access( doc, fix, attaches );\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\" ) {\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\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\tvar elem = this[0];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n});\n\n\nvar\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /^$|\\/(?:java|ecma)script/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*\\s*$/g,\n\n\t// We have to close these tags to support XHTML (#13200)\n\twrapMap = {\n\n\t\t// Support: IE9\n\t\toption: [ 1, \"\" ],\n\n\t\tthead: [ 1, \"\", \"
\" ],\n\t\tcol: [ 2, \"\", \"
\" ],\n\t\ttr: [ 2, \"\", \"
\" ],\n\t\ttd: [ 3, \"\", \"
\" ],\n\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\n// Support: IE9\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: 1.x compatibility\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement(\"tbody\") ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute(\"type\");\n\t}\n\n\treturn elem;\n}\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdata_priv.set(\n\t\t\telems[ i ], \"globalEval\", !refElements || data_priv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( data_priv.hasData( src ) ) {\n\t\tpdataOld = data_priv.access( src );\n\t\tpdataCur = data_priv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( data_user.hasData( src ) ) {\n\t\tudataOld = data_user.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdata_user.set( dest, udataCur );\n\t}\n}\n\nfunction getAll( context, tag ) {\n\tvar ret = context.getElementsByTagName ? context.getElementsByTagName( tag || \"*\" ) :\n\t\t\tcontext.querySelectorAll ? context.querySelectorAll( tag || \"*\" ) :\n\t\t\t[];\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], ret ) :\n\t\tret;\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\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\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tbuildFragment: function( elems, context, scripts, selection ) {\n\t\tvar elem, tmp, tag, wrap, contains, j,\n\t\t\tfragment = context.createDocumentFragment(),\n\t\t\tnodes = [],\n\t\t\ti = 0,\n\t\t\tl = elems.length;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\t\t\t\t\t// Support: QtWebKit, PhantomJS\n\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement(\"div\") );\n\n\t\t\t\t\t// Deserialize a standard representation\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\ttmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, \"<$1>\" ) + wrap[ 2 ];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[ 0 ];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: QtWebKit, PhantomJS\n\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Remember the top-level container\n\t\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\t\ttmp.textContent = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Remove wrapper from fragment\n\t\tfragment.textContent = \"\";\n\n\t\ti = 0;\n\t\twhile ( (elem = nodes[ i++ ]) ) {\n\n\t\t\t// #4087 - If origin and destination elements are the same, and this is\n\t\t\t// that element, do not do anything\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn fragment;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type, key,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[ i ]) !== undefined; i++ ) {\n\t\t\tif ( jQuery.acceptData( elem ) ) {\n\t\t\t\tkey = elem[ data_priv.expando ];\n\n\t\t\t\tif ( key && (data = data_priv.cache[ key ]) ) {\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\t\t\t\t\tif ( data_priv.cache[ key ] ) {\n\t\t\t\t\t\t// Discard any remaining `private` data\n\t\t\t\t\t\tdelete data_priv.cache[ key ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Discard any remaining `user` data\n\t\t\tdelete data_user.cache[ elem[ data_user.expando ] ];\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each(function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t});\n\t},\n\n\tremove: function( selector, keepData /* Internal Use Only */ ) {\n\t\tvar elem,\n\t\t\telems = selector ? jQuery.filter( selector, this ) : this,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem ) );\n\t\t\t}\n\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( elem, \"script\" ) );\n\t\t\t\t}\n\t\t\t\telem.parentNode.removeChild( elem );\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\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\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 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 && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\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!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\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() {\n\t\tvar arg = arguments[ 0 ];\n\n\t\t// Make the changes, replacing each context element with the new content\n\t\tthis.domManip( arguments, function( elem ) {\n\t\t\targ = this.parentNode;\n\n\t\t\tjQuery.cleanData( getAll( this ) );\n\n\t\t\tif ( arg ) {\n\t\t\t\targ.replaceChild( elem, this );\n\t\t\t}\n\t\t});\n\n\t\t// Force removal if there was no new content (e.g., from empty arguments)\n\t\treturn arg && (arg.length || arg.nodeType) ? this : this.remove();\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = concat.apply( [], args );\n\n\t\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tset = this,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[ 0 ],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction ||\n\t\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\t\treturn this.each(function( index ) {\n\t\t\t\tvar self = set.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tself.domManip( args, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );\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\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\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\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\t\t// Support: QtWebKit\n\t\t\t\t\t\t\t// jQuery.merge because push.apply(_, arraylike) throws\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( this[ i ], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t\t!data_priv.access( node, \"globalEval\" ) && jQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\t\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.globalEval( node.textContent.replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\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\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: QtWebKit\n\t\t\t// .get() because push.apply(_, arraylike) throws\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\n\nvar iframe,\n\telemdisplay = {};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar style,\n\t\telem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\t// getDefaultComputedStyle might be reliably used only on attached element\n\t\tdisplay = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?\n\n\t\t\t// Use of this method is a temporary fix (more like optimization) until something better comes along,\n\t\t\t// since it was removed from specification and supported only in FF\n\t\t\tstyle.display : jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = (iframe || jQuery( \"'\n };\n }\n };\n\n init();\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/dashboard/index.js\n ** module id = 584\n ** module chunks = 0\n **/","define(function (require) {\n var module = require('modules').get('app/dashboard');\n var _ = require('lodash');\n var moment = require('moment');\n\n // Used only by the savedDashboards service, usually no reason to change this\n module.factory('SavedDashboard', function (courier) {\n\n // SavedDashboard constructor. Usually you'd interact with an instance of this.\n // ID is option, without it one will be generated on save.\n _.class(SavedDashboard).inherits(courier.SavedObject);\n function SavedDashboard(id) {\n // Gives our SavedDashboard the properties of a SavedObject\n courier.SavedObject.call(this, {\n type: SavedDashboard.type,\n mapping: SavedDashboard.mapping,\n searchSource: SavedDashboard.searchsource,\n\n // if this is null/undefined then the SavedObject will be assigned the defaults\n id: id,\n\n // default values that will get assigned if the doc is new\n defaults: {\n title: 'New Dashboard',\n hits: 0,\n description: '',\n panelsJSON: '[]',\n version: 1,\n timeRestore: false,\n timeTo: undefined,\n timeFrom: undefined\n },\n\n // if an indexPattern was saved with the searchsource of a SavedDashboard\n // object, clear it. It was a mistake\n clearSavedIndexPattern: true\n });\n }\n\n // save these objects with the 'dashboard' type\n SavedDashboard.type = 'dashboard';\n\n // if type:dashboard has no mapping, we push this mapping into ES\n SavedDashboard.mapping = {\n title: 'string',\n hits: 'integer',\n description: 'string',\n panelsJSON: 'string',\n version: 'integer',\n timeRestore: 'boolean',\n timeTo: 'string',\n timeFrom: 'string'\n };\n\n SavedDashboard.searchsource = true;\n\n return SavedDashboard;\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/dashboard/services/_saved_dashboard.js\n ** module id = 585\n ** module chunks = 0\n **/","define(function (require) {\n var module = require('modules').get('app/dashboard');\n var _ = require('lodash');\n // bring in the factory\n require('plugins/kibana/dashboard/services/_saved_dashboard');\n\n\n // Register this service with the saved object registry so it can be\n // edited by the object editor.\n require('plugins/kibana/settings/saved_object_registry').register({\n service: 'savedDashboards',\n title: 'dashboards'\n });\n\n // This is the only thing that gets injected into controllers\n module.service('savedDashboards', function (Promise, SavedDashboard, kbnIndex, es, kbnUrl) {\n this.type = SavedDashboard.type;\n this.Class = SavedDashboard;\n\n // Returns a single dashboard by ID, should be the name of the dashboard\n this.get = function (id) {\n\n // Returns a promise that contains a dashboard which is a subclass of docSource\n return (new SavedDashboard(id)).init();\n };\n\n this.urlFor = function (id) {\n return kbnUrl.eval('#/dashboard/{{id}}', {id: id});\n };\n\n this.delete = function (ids) {\n ids = !_.isArray(ids) ? [ids] : ids;\n return Promise.map(ids, function (id) {\n return (new SavedDashboard(id)).delete();\n });\n };\n\n\n this.find = function (searchString) {\n var self = this;\n var body;\n if (searchString) {\n body = {\n query: {\n simple_query_string: {\n query: searchString + '*',\n fields: ['title^3', 'description'],\n default_operator: 'AND'\n }\n }\n };\n } else {\n body = { query: {match_all: {}}};\n }\n\n return es.search({\n index: kbnIndex,\n type: 'dashboard',\n body: body,\n size: 100\n })\n .then(function (resp) {\n return {\n total: resp.hits.total,\n hits: resp.hits.hits.map(function (hit) {\n var source = hit._source;\n source.id = hit._id;\n source.url = self.urlFor(hit._id);\n return source;\n })\n };\n });\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/dashboard/services/saved_dashboards.js\n ** module id = 586\n ** module chunks = 0\n **/","define(function () {\n return function HitSortFnFactory() {\n\n /**\n * Creates a sort function that will resort hits based on the value\n * es used to sort them.\n *\n * background:\n * When a hit is sorted by elasticsearch, es will write the values that it used\n * to sort them into an array at the top level of the hit like so\n *\n * ```\n * hits: {\n * total: x,\n * hits: [\n * {\n * _id: i,\n * _source: {},\n * sort: [\n * // all values used to sort, in the order of precidance\n * ]\n * }\n * ]\n * };\n * ```\n *\n * @param {[type]} field [description]\n * @param {[type]} direction [description]\n * @return {[type]} [description]\n */\n return function createHitSortFn(direction) {\n var descending = (direction === 'desc');\n\n return function sortHits(hitA, hitB) {\n var bBelowa = null;\n\n var aSorts = hitA.sort || [];\n var bSorts = hitB.sort || [];\n\n // walk each sort value, and compair until one is different\n for (var i = 0; i < bSorts.length; i++) {\n var a = aSorts[i];\n var b = bSorts[i];\n\n if (a == null || b > a) {\n bBelowa = !descending;\n break;\n }\n\n if (b < a) {\n bBelowa = descending;\n break;\n }\n }\n\n if (bBelowa !== null) {\n return bBelowa ? -1 : 1;\n } else {\n return 0;\n }\n\n };\n };\n\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/discover/_hit_sort_fn.js\n ** module id = 587\n ** module chunks = 0\n **/","define(function (require) {\n var $ = require('jquery');\n var app = require('modules').get('apps/discover');\n var html = require('plugins/kibana/discover/components/field_chooser/discover_field.html');\n var _ = require('lodash');\n\n require('directives/css_truncate');\n require('directives/field_name');\n\n\n app.directive('discoverField', function ($compile) {\n return {\n restrict: 'E',\n template: html,\n replace: true,\n link: function ($scope, $elem) {\n var detailsElem;\n var detailScope = $scope.$new();\n\n var detailsHtml = require('plugins/kibana/discover/components/field_chooser/lib/detail_views/string.html');\n\n var init = function () {\n if ($scope.field.details) {\n $scope.toggleDetails($scope.field, true);\n }\n };\n\n var getWarnings = function (field) {\n var warnings = [];\n\n if (!field.scripted) {\n if (!field.doc_values && !(field.analyzed && field.type === 'string')) {\n warnings.push('Doc values are not enabled on this field. This may lead to excess heap consumption when visualizing.');\n }\n\n if (field.analyzed && field.type === 'string') {\n warnings.push('This is an analyzed string field.' +\n ' Analyzed strings are highly unique and can use a lot of memory to visualize.' +\n ' Values such as foo-bar will be broken into foo and bar.');\n }\n\n if (!field.indexed) {\n warnings.push('This field is not indexed and can not be visualized.');\n }\n }\n\n\n if (field.scripted) {\n warnings.push('Scripted fields can take a long time to execute.');\n }\n\n if (warnings.length > 1) {\n warnings = warnings.map(function (warning, i) {\n return (i > 0 ? '\\n' : '') + (i + 1) + ' - ' + warning;\n });\n }\n\n return warnings;\n\n };\n\n $scope.toggleDisplay = function (field) {\n // inheritted param to fieldChooser\n $scope.toggle(field.name);\n if (field.display) $scope.increaseFieldCounter(field);\n\n // we are now displaying the field, kill it's details\n if (field.details) {\n $scope.toggleDetails(field);\n }\n };\n\n $scope.toggleDetails = function (field, recompute) {\n if (_.isUndefined(field.details) || recompute) {\n // This is inherited from fieldChooser\n $scope.details(field, recompute);\n detailScope.$destroy();\n detailScope = $scope.$new();\n detailScope.warnings = getWarnings(field);\n\n detailsElem = $(detailsHtml);\n $compile(detailsElem)(detailScope);\n $elem.append(detailsElem);\n } else {\n delete field.details;\n detailsElem.remove();\n }\n };\n\n init();\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/discover/components/field_chooser/discover_field.js\n ** module id = 588\n ** module chunks = 0\n **/","define(function (require) {\n var app = require('modules').get('apps/discover');\n\n require('directives/css_truncate');\n require('directives/field_name');\n require('filters/unique');\n require('plugins/kibana/discover/components/field_chooser/discover_field');\n\n app.directive('discFieldChooser', function ($location, globalState, config, $route, Private) {\n var _ = require('lodash');\n var rison = require('utils/rison');\n var fieldCalculator = require('plugins/kibana/discover/components/field_chooser/lib/field_calculator');\n var FieldList = Private(require('components/index_patterns/_field_list'));\n\n return {\n restrict: 'E',\n scope: {\n columns: '=',\n hits: '=',\n fieldCounts: '=',\n state: '=',\n indexPattern: '=',\n indexPatternList: '=',\n updateFilterInQuery: '=filter'\n },\n template: require('plugins/kibana/discover/components/field_chooser/field_chooser.html'),\n link: function ($scope) {\n $scope.setIndexPattern = function (id) {\n $scope.state.index = id;\n $scope.state.save();\n };\n\n $scope.$watch('state.index', function (id, previousId) {\n if (previousId == null || previousId === id) return;\n $route.reload();\n });\n\n var filter = $scope.filter = {\n props: [\n 'type',\n 'indexed',\n 'analyzed',\n 'missing',\n 'name'\n ],\n defaults: {\n missing: true\n },\n boolOpts: [\n {label: 'any', value: undefined },\n {label: 'yes', value: true },\n {label: 'no', value: false }\n ],\n toggleVal: function (name, def) {\n if (filter.vals[name] !== def) filter.vals[name] = def;\n else filter.vals[name] = undefined;\n },\n reset: function () {\n filter.vals = _.clone(filter.defaults);\n },\n isFieldSelected: function (field) {\n return field.display;\n },\n isFieldFiltered: function (field) {\n var matchFilter = (filter.vals.type == null || field.type === filter.vals.type);\n var isAnalyzed = (filter.vals.analyzed == null || field.analyzed === filter.vals.analyzed);\n var isIndexed = (filter.vals.indexed == null || field.indexed === filter.vals.indexed);\n var scriptedOrMissing = (!filter.vals.missing || field.scripted || field.rowCount > 0);\n var matchName = (!filter.vals.name || field.name.indexOf(filter.vals.name) !== -1);\n\n return !field.display\n && matchFilter\n && isAnalyzed\n && isIndexed\n && scriptedOrMissing\n && matchName\n ;\n },\n popularity: function (field) {\n return field.count > 0;\n },\n getActive: function () {\n return _.some(filter.props, function (prop) {\n return filter.vals[prop] !== filter.defaults[prop];\n });\n }\n };\n\n // set the initial values to the defaults\n filter.reset();\n\n $scope.$watchCollection('filter.vals', function () {\n filter.active = filter.getActive();\n });\n\n $scope.toggle = function (fieldName) {\n $scope.increaseFieldCounter(fieldName);\n _.toggleInOut($scope.columns, fieldName);\n };\n\n $scope.$watchMulti([\n '[]fieldCounts',\n '[]columns',\n '[]hits'\n ], function (cur, prev) {\n var newHits = cur[2] !== prev[2];\n var fields = $scope.fields;\n var columns = $scope.columns || [];\n var fieldCounts = $scope.fieldCounts;\n\n if (!fields || newHits) {\n $scope.fields = fields = getFields();\n }\n\n if (!fields) return;\n\n // group the fields into popular and up-popular lists\n _.chain(fields)\n .each(function (field) {\n field.displayOrder = _.indexOf(columns, field.name) + 1;\n field.display = !!field.displayOrder;\n field.rowCount = fieldCounts[field.name];\n })\n .sortBy(function (field) {\n return (field.count || 0) * -1;\n })\n .groupBy(function (field) {\n if (field.display) return 'selected';\n return field.count > 0 ? 'popular' : 'unpopular';\n })\n .tap(function (groups) {\n groups.selected = _.sortBy(groups.selected || [], 'displayOrder');\n\n groups.popular = groups.popular || [];\n groups.unpopular = groups.unpopular || [];\n\n // move excess popular fields to un-popular list\n var extras = groups.popular.splice(config.get('fields:popularLimit'));\n groups.unpopular = extras.concat(groups.unpopular);\n })\n .each(function (group, name) {\n $scope[name + 'Fields'] = _.sortBy(group, name === 'selected' ? 'display' : 'name');\n })\n .commit();\n\n // include undefined so the user can clear the filter\n $scope.fieldTypes = _.union([undefined], _.pluck(fields, 'type'));\n });\n\n $scope.increaseFieldCounter = function (fieldName) {\n $scope.indexPattern.popularizeField(fieldName, 1);\n };\n\n $scope.runAgg = function (field) {\n var agg = {};\n var isGeoPoint = field.type === 'geo_point';\n var type = isGeoPoint ? 'tile_map' : 'histogram';\n // If we're visualizing a date field, and our index is time based (and thus has a time filter),\n // then run a date histogram\n if (field.type === 'date' && $scope.indexPattern.timeFieldName === field.name) {\n agg = {\n type: 'date_histogram',\n schema: 'segment',\n params: {\n field: field.name,\n interval: 'auto'\n }\n };\n\n } else if (isGeoPoint) {\n agg = {\n type: 'geohash_grid',\n schema: 'segment',\n params: {\n field: field.name,\n precision: 3\n }\n };\n } else {\n agg = {\n type: 'terms',\n schema: 'segment',\n params: {\n field: field.name,\n size: config.get('discover:aggs:terms:size', 20),\n orderBy: '2'\n }\n };\n }\n\n $location.path('/visualize/create').search({\n indexPattern: $scope.state.index,\n type: type,\n _a: rison.encode({\n filters: $scope.state.filters || [],\n query: $scope.state.query || undefined,\n vis: {\n type: type,\n aggs: [\n agg,\n {schema: 'metric', type: 'count', 'id': '2'}\n ]\n }\n })\n });\n };\n\n $scope.details = function (field, recompute) {\n if (_.isUndefined(field.details) || recompute) {\n field.details = fieldCalculator.getFieldValueCounts({\n hits: $scope.hits,\n field: field,\n count: 5,\n grouped: false\n });\n _.each(field.details.buckets, function (bucket) {\n bucket.display = field.format.convert(bucket.value);\n });\n $scope.increaseFieldCounter(field, 1);\n } else {\n delete field.details;\n }\n };\n\n function getFields() {\n var prevFields = $scope.fields;\n var indexPattern = $scope.indexPattern;\n var hits = $scope.hits;\n var fieldCounts = $scope.fieldCounts;\n\n if (!indexPattern || !hits || !fieldCounts) return;\n\n var fieldSpecs = indexPattern.fields.slice(0);\n var fieldNamesInDocs = _.keys(fieldCounts);\n var fieldNamesInIndexPattern = _.keys(indexPattern.fields.byName);\n\n _.difference(fieldNamesInDocs, fieldNamesInIndexPattern)\n .forEach(function (unknownFieldName) {\n fieldSpecs.push({\n name: unknownFieldName,\n type: 'unknown'\n });\n });\n\n var fields = new FieldList(indexPattern, fieldSpecs);\n\n if (prevFields) {\n fields.forEach(function (field) {\n field.details = _.get(prevFields, ['byName', field.name, 'details']);\n });\n }\n\n return fields;\n }\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/discover/components/field_chooser/field_chooser.js\n ** module id = 589\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n var getFieldValues = function (hits, field) {\n var name = field.name;\n var flattenHit = field.indexPattern.flattenHit;\n return _.map(hits, function (hit) {\n return flattenHit(hit)[name];\n });\n };\n\n var getFieldValueCounts = function (params) {\n params = _.defaults(params, {\n count: 5,\n grouped: false\n });\n\n if (\n params.field.type === 'geo_point'\n || params.field.type === 'geo_shape'\n || params.field.type === 'attachment'\n ) {\n return { error: 'Analysis is not available for geo fields.' };\n }\n\n var allValues = getFieldValues(params.hits, params.field);\n var counts;\n var missing = _countMissing(allValues);\n\n try {\n var groups = _groupValues(allValues, params);\n counts = _.map(\n _.sortBy(groups, 'count').reverse().slice(0, params.count),\n function (bucket) {\n return {\n value: bucket.value,\n count: bucket.count,\n percent: (bucket.count / (params.hits.length - missing) * 100).toFixed(1)\n };\n });\n\n if (params.hits.length - missing === 0) {\n return {\n error: 'This field is present in your elasticsearch mapping' +\n ' but not in any documents in the search results.' +\n ' You may still be able to visualize or search on it.'\n };\n }\n\n return {\n total: params.hits.length,\n exists: params.hits.length - missing,\n missing: missing,\n buckets: counts,\n };\n } catch (e) {\n return { error: e.message };\n }\n\n };\n\n // returns a count of fields in the array that are undefined or null\n var _countMissing = function (array) {\n return array.length - _.without(array, undefined, null).length;\n };\n\n\n var _groupValues = function (allValues, params) {\n var groups = {};\n var k;\n\n allValues.forEach(function (value) {\n if (_.isObject(value) && !_.isArray(value)) {\n throw new Error('Analysis is not available for object fields');\n }\n\n if (_.isArray(value) && !params.grouped) {\n k = value;\n } else {\n k = value == null ? undefined : [value];\n }\n\n _.each(k, function (key) {\n if (_.has(groups, key)) {\n groups[key].count++;\n } else {\n groups[key] = {\n value: (params.grouped ? value : key),\n count: 1\n };\n }\n });\n });\n\n return groups;\n };\n\n return {\n _groupValues: _groupValues,\n _countMissing: _countMissing,\n getFieldValues: getFieldValues,\n getFieldValueCounts: getFieldValueCounts\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/discover/components/field_chooser/lib/field_calculator.js\n ** module id = 590\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var angular = require('angular');\n var moment = require('moment');\n var ConfigTemplate = require('utils/config_template');\n var getSort = require('components/doc_table/lib/get_sort');\n var rison = require('utils/rison');\n\n var datemath = require('utils/datemath');\n\n require('components/doc_table/doc_table');\n require('components/visualize/visualize');\n require('components/notify/notify');\n require('components/timepicker/timepicker');\n require('components/fixedScroll');\n require('directives/validate_json');\n require('components/validate_query/validate_query');\n require('filters/moment');\n require('components/courier/courier');\n require('components/index_patterns/index_patterns');\n require('components/state_management/app_state');\n require('components/timefilter/timefilter');\n require('components/highlight/highlight_tags');\n\n var app = require('modules').get('apps/discover', [\n 'kibana/notify',\n 'kibana/courier',\n 'kibana/index_patterns'\n ]);\n\n require('routes')\n .when('/discover/:id?', {\n template: require('plugins/kibana/discover/index.html'),\n reloadOnSearch: false,\n resolve: {\n ip: function (Promise, courier, config, $location) {\n return courier.indexPatterns.getIds()\n .then(function (list) {\n var stateRison = $location.search()._a;\n var state;\n try { state = rison.decode(stateRison); } catch (e) {}\n state = state || {};\n\n var specified = !!state.index;\n var exists = _.contains(list, state.index);\n var id = exists ? state.index : config.get('defaultIndex');\n\n return Promise.props({\n list: list,\n loaded: courier.indexPatterns.get(id),\n stateVal: state.index,\n stateValFound: specified && exists\n });\n });\n },\n savedSearch: function (courier, savedSearches, $route) {\n return savedSearches.get($route.current.params.id)\n .catch(courier.redirectWhenMissing({\n 'search': '/discover',\n 'index-pattern': '/settings/objects/savedSearches/' + $route.current.params.id\n }));\n }\n }\n });\n\n app.controller('discover', function ($scope, config, courier, $route, $window, Notifier,\n AppState, timefilter, Promise, Private, kbnUrl, highlightTags) {\n\n var Vis = Private(require('components/vis/vis'));\n var docTitle = Private(require('components/doc_title/doc_title'));\n var brushEvent = Private(require('utils/brush_event'));\n var HitSortFn = Private(require('plugins/kibana/discover/_hit_sort_fn'));\n var queryFilter = Private(require('components/filter_bar/query_filter'));\n var filterManager = Private(require('components/filter_manager/filter_manager'));\n\n var notify = new Notifier({\n location: 'Discover'\n });\n\n $scope.intervalOptions = Private(require('components/agg_types/buckets/_interval_options'));\n $scope.showInterval = false;\n\n $scope.intervalEnabled = function (interval) {\n return interval.val !== 'custom';\n };\n\n $scope.toggleInterval = function () {\n $scope.showInterval = !$scope.showInterval;\n };\n\n // config panel templates\n $scope.configTemplate = new ConfigTemplate({\n load: require('plugins/kibana/discover/partials/load_search.html'),\n save: require('plugins/kibana/discover/partials/save_search.html')\n });\n\n $scope.timefilter = timefilter;\n\n // the saved savedSearch\n var savedSearch = $route.current.locals.savedSearch;\n $scope.$on('$destroy', savedSearch.destroy);\n\n // the actual courier.SearchSource\n $scope.searchSource = savedSearch.searchSource;\n $scope.indexPattern = resolveIndexPatternLoading();\n $scope.searchSource.set('index', $scope.indexPattern);\n\n if (savedSearch.id) {\n docTitle.change(savedSearch.title);\n }\n\n var $state = $scope.state = new AppState(getStateDefaults());\n function getStateDefaults() {\n return {\n query: $scope.searchSource.get('query') || '',\n sort: getSort.array(savedSearch.sort, $scope.indexPattern),\n columns: savedSearch.columns || ['_source'],\n index: $scope.indexPattern.id,\n interval: 'auto',\n filters: _.cloneDeep($scope.searchSource.getOwn('filter'))\n };\n }\n\n $state.index = $scope.indexPattern.id;\n $state.sort = getSort.array($state.sort, $scope.indexPattern);\n\n $scope.$watchCollection('state.columns', function () {\n $state.save();\n });\n\n $scope.opts = {\n // number of records to fetch, then paginate through\n sampleSize: config.get('discover:sampleSize'),\n // Index to match\n index: $scope.indexPattern.id,\n timefield: $scope.indexPattern.timeFieldName,\n savedSearch: savedSearch,\n indexPatternList: $route.current.locals.ip.list\n };\n\n var init = _.once(function () {\n var showTotal = 5;\n $scope.failuresShown = showTotal;\n $scope.showAllFailures = function () {\n $scope.failuresShown = $scope.failures.length;\n };\n $scope.showLessFailures = function () {\n $scope.failuresShown = showTotal;\n };\n\n $scope.updateDataSource()\n .then(function () {\n $scope.$listen(timefilter, 'fetch', function () {\n $scope.fetch();\n });\n\n $scope.$watchCollection('state.sort', function (sort) {\n if (!sort) return;\n\n // get the current sort from {key: val} to [\"key\", \"val\"];\n var currentSort = _.pairs($scope.searchSource.get('sort')).pop();\n\n // if the searchSource doesn't know, tell it so\n if (!angular.equals(sort, currentSort)) $scope.fetch();\n });\n\n // update data source when filters update\n $scope.$listen(queryFilter, 'update', function () {\n return $scope.updateDataSource().then(function () {\n $state.save();\n });\n });\n\n // update data source when hitting forward/back and the query changes\n $scope.$listen($state, 'fetch_with_changes', function (diff) {\n if (diff.indexOf('query') >= 0) $scope.fetch();\n });\n\n // fetch data when filters fire fetch event\n $scope.$listen(queryFilter, 'fetch', $scope.fetch);\n\n $scope.$watch('opts.timefield', function (timefield) {\n timefilter.enabled = !!timefield;\n });\n\n $scope.$watch('state.interval', function (interval, oldInterval) {\n if (interval !== oldInterval && interval === 'auto') {\n $scope.showInterval = false;\n }\n $scope.fetch();\n });\n\n $scope.$watch('vis.aggs', function () {\n var buckets = $scope.vis.aggs.bySchemaGroup.buckets;\n\n if (buckets && buckets.length === 1) {\n $scope.intervalName = 'by ' + buckets[0].buckets.getInterval().description;\n } else {\n $scope.intervalName = 'auto';\n }\n });\n\n $scope.$watchMulti([\n 'rows',\n 'fetchStatus'\n ], (function updateResultState() {\n var prev = {};\n var status = {\n LOADING: 'loading', // initial data load\n READY: 'ready', // results came back\n NO_RESULTS: 'none' // no results came back\n };\n\n function pick(rows, oldRows, fetchStatus) {\n // initial state, pretend we are loading\n if (rows == null && oldRows == null) return status.LOADING;\n\n var rowsEmpty = _.isEmpty(rows);\n if (rowsEmpty && fetchStatus) return status.LOADING;\n else if (!rowsEmpty) return status.READY;\n else return status.NO_RESULTS;\n }\n\n return function () {\n var current = {\n rows: $scope.rows,\n fetchStatus: $scope.fetchStatus\n };\n\n $scope.resultState = pick(\n current.rows,\n prev.rows,\n current.fetchStatus,\n prev.fetchStatus\n );\n\n prev = current;\n };\n }()));\n\n $scope.searchSource.onError(function (err) {\n console.log(err);\n notify.error('An error occurred with your request. Reset your inputs and try again.');\n }).catch(notify.fatal);\n\n function initForTime() {\n return setupVisualization().then($scope.updateTime);\n }\n\n return Promise.resolve($scope.opts.timefield && initForTime())\n .then(function () {\n init.complete = true;\n $state.replace();\n $scope.$emit('application.load');\n });\n });\n });\n\n $scope.opts.saveDataSource = function () {\n return $scope.updateDataSource()\n .then(function () {\n savedSearch.id = savedSearch.title;\n savedSearch.columns = $scope.state.columns;\n savedSearch.sort = $scope.state.sort;\n\n return savedSearch.save()\n .then(function (id) {\n $scope.configTemplate.close('save');\n\n if (id) {\n notify.info('Saved Data Source \"' + savedSearch.title + '\"');\n if (savedSearch.id !== $route.current.params.id) {\n kbnUrl.change('/discover/{{id}}', { id: savedSearch.id });\n } else {\n // Update defaults so that \"reload saved query\" functions correctly\n $state.setDefaults(getStateDefaults());\n }\n }\n });\n })\n .catch(notify.error);\n };\n\n $scope.opts.fetch = $scope.fetch = function () {\n // ignore requests to fetch before the app inits\n if (!init.complete) return;\n\n $scope.updateTime();\n\n $scope.updateDataSource()\n .then(setupVisualization)\n .then(function () {\n $state.save();\n return courier.fetch();\n })\n .catch(notify.error);\n };\n\n $scope.searchSource.onBeginSegmentedFetch(function (segmented) {\n\n function flushResponseData() {\n $scope.hits = 0;\n $scope.faliures = [];\n $scope.rows = [];\n $scope.fieldCounts = {};\n }\n\n if (!$scope.rows) flushResponseData();\n\n var sort = $state.sort;\n var timeField = $scope.indexPattern.timeFieldName;\n var totalSize = $scope.size || $scope.opts.sampleSize;\n\n /**\n * Basically an emum.\n *\n * opts:\n * \"time\" - sorted by the timefield\n * \"non-time\" - explicitly sorted by a non-time field, NOT THE SAME AS `sortBy !== \"time\"`\n * \"implicit\" - no sorting set, NOT THE SAME AS \"non-time\"\n *\n * @type {String}\n */\n var sortBy = (function () {\n if (!_.isArray(sort)) return 'implicit';\n else if (sort[0] === timeField) return 'time';\n else return 'non-time';\n }());\n\n var sortFn = null;\n if (sortBy === 'non-time') {\n sortFn = new HitSortFn(sort[1]);\n }\n\n $scope.updateTime();\n segmented.setDirection(sortBy === 'time' ? (sort[1] || 'desc') : 'desc');\n segmented.setSize(sortBy === 'time' ? $scope.opts.sampleSize : false);\n\n // triggered when the status updated\n segmented.on('status', function (status) {\n $scope.fetchStatus = status;\n });\n\n segmented.on('first', function () {\n flushResponseData();\n });\n\n segmented.on('segment', notify.timed('handle each segment', function (resp) {\n if (resp._shards.failed > 0) {\n $scope.failures = _.union($scope.failures, resp._shards.failures);\n $scope.failures = _.uniq($scope.failures, false, function (failure) {\n return failure.index + failure.shard + failure.reason;\n });\n }\n\n var rows = $scope.rows;\n var indexPattern = $scope.searchSource.get('index');\n\n // merge the rows and the hits, use a new array to help watchers\n rows = $scope.rows = rows.concat(resp.hits.hits);\n\n if (sortFn) {\n notify.event('resort rows', function () {\n rows.sort(sortFn);\n rows = $scope.rows = rows.slice(0, totalSize);\n $scope.fieldCounts = {};\n });\n }\n\n notify.event('flatten hit and count fields', function () {\n var counts = $scope.fieldCounts;\n $scope.rows.forEach(function (hit) {\n // skip this work if we have already done it and we are NOT sorting.\n // ---\n // when we are sorting results, we need to redo the counts each time because the\n // \"top 500\" may change with each response\n if (hit.$$_counted && !sortFn) return;\n hit.$$_counted = true;\n\n var fields = _.keys(indexPattern.flattenHit(hit));\n var n = fields.length;\n var field;\n while (field = fields[--n]) {\n if (counts[field]) counts[field] += 1;\n else counts[field] = 1;\n }\n });\n });\n\n }));\n\n segmented.on('mergedSegment', function (merged) {\n $scope.mergedEsResp = merged;\n $scope.hits = merged.hits.total;\n\n });\n\n segmented.on('complete', function () {\n if ($scope.fetchStatus.hitCount === 0) {\n flushResponseData();\n }\n\n $scope.fetchStatus = null;\n });\n }).catch(notify.fatal);\n\n $scope.updateTime = function () {\n $scope.timeRange = {\n from: datemath.parse(timefilter.time.from),\n to: datemath.parse(timefilter.time.to, true)\n };\n };\n\n $scope.resetQuery = function () {\n kbnUrl.change('/discover/{{id}}', { id: $route.current.params.id });\n };\n\n $scope.newQuery = function () {\n kbnUrl.change('/discover');\n };\n\n $scope.updateDataSource = Promise.method(function () {\n $scope.searchSource\n .size($scope.opts.sampleSize)\n .sort(getSort($state.sort, $scope.indexPattern))\n .query(!$state.query ? null : $state.query)\n .highlight({\n pre_tags: [highlightTags.pre],\n post_tags: [highlightTags.post],\n fields: {'*': {}},\n fragment_size: 2147483647 // Limit of an integer.\n })\n .set('filter', queryFilter.getFilters());\n });\n\n // TODO: On array fields, negating does not negate the combination, rather all terms\n $scope.filterQuery = function (field, values, operation) {\n $scope.indexPattern.popularizeField(field, 1);\n filterManager.add(field, values, operation, $state.index);\n };\n\n $scope.toTop = function () {\n $window.scrollTo(0, 0);\n };\n\n var loadingVis;\n var setupVisualization = function () {\n // If we're not setting anything up we need to return an empty promise\n if (!$scope.opts.timefield) return Promise.resolve();\n if (loadingVis) return loadingVis;\n\n var visStateAggs = [\n {\n type: 'count',\n schema: 'metric'\n },\n {\n type: 'date_histogram',\n schema: 'segment',\n params: {\n field: $scope.opts.timefield,\n interval: $state.interval,\n min_doc_count: 0\n }\n }\n ];\n\n // we have a vis, just modify the aggs\n if ($scope.vis) {\n var visState = $scope.vis.getState();\n visState.aggs = visStateAggs;\n\n $scope.vis.setState(visState);\n return Promise.resolve($scope.vis);\n }\n\n $scope.vis = new Vis($scope.indexPattern, {\n type: 'histogram',\n params: {\n addLegend: false,\n addTimeMarker: true\n },\n listeners: {\n click: function (e) {\n console.log(e);\n timefilter.time.from = moment(e.point.x);\n timefilter.time.to = moment(e.point.x + e.data.ordered.interval);\n timefilter.time.mode = 'absolute';\n },\n brush: brushEvent\n },\n aggs: visStateAggs\n });\n\n $scope.searchSource.aggs(function () {\n $scope.vis.requesting();\n return $scope.vis.aggs.toDsl();\n });\n\n // stash this promise so that other calls to setupVisualization will have to wait\n loadingVis = new Promise(function (resolve) {\n $scope.$on('ready:vis', function () {\n resolve($scope.vis);\n });\n })\n .finally(function () {\n // clear the loading flag\n loadingVis = null;\n });\n\n return loadingVis;\n };\n\n function resolveIndexPatternLoading() {\n var props = $route.current.locals.ip;\n var loaded = props.loaded;\n var stateVal = props.stateVal;\n var stateValFound = props.stateValFound;\n\n var own = $scope.searchSource.getOwn('index');\n\n if (own && !stateVal) return own;\n if (stateVal && !stateValFound) {\n var err = '\"' + stateVal + '\" is not a configured pattern. ';\n if (own) {\n notify.warning(err + ' Using the saved index pattern: \"' + own.id + '\"');\n return own;\n }\n\n notify.warning(err + ' Using the default index pattern: \"' + loaded.id + '\"');\n }\n return loaded;\n }\n\n init();\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/discover/controllers/discover.js\n ** module id = 591\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var $ = require('jquery');\n var vislib = require('components/vislib/index');\n\n var app = require('modules').get('apps/discover');\n\n app.directive('discoverTimechart', function ($compile) {\n return {\n restrict: 'E',\n scope : {\n data: '='\n },\n link: function ($scope, elem) {\n\n var init = function () {\n // This elem should already have a height/width\n var myChart = new vislib.Chart(elem[0], {\n\n });\n\n $scope.$watch('data', function (data) {\n if (data != null) {\n myChart.render(data);\n }\n });\n };\n\n // Start the directive\n init();\n }\n };\n });\n\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/discover/directives/timechart.js\n ** module id = 592\n ** module chunks = 0\n **/","define(function (require, module, exports) {\n require('plugins/kibana/discover/saved_searches/saved_searches');\n require('plugins/kibana/discover/directives/timechart');\n require('components/collapsible_sidebar/collapsible_sidebar');\n require('plugins/kibana/discover/components/field_chooser/field_chooser');\n require('plugins/kibana/discover/controllers/discover');\n require('plugins/kibana/discover/styles/main.less');\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/discover/index.js\n ** module id = 593\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n require('components/notify/notify');\n\n var module = require('modules').get('discover/saved_searches', [\n 'kibana/notify',\n 'kibana/courier'\n ]);\n\n module.factory('SavedSearch', function (courier) {\n _.class(SavedSearch).inherits(courier.SavedObject);\n function SavedSearch(id) {\n courier.SavedObject.call(this, {\n type: SavedSearch.type,\n mapping: SavedSearch.mapping,\n searchSource: SavedSearch.searchSource,\n\n id: id,\n defaults: {\n title: 'New Saved Search',\n description: '',\n columns: [],\n hits: 0,\n sort: [],\n version: 1\n }\n });\n }\n\n SavedSearch.type = 'search';\n\n SavedSearch.mapping = {\n title: 'string',\n description: 'string',\n hits: 'integer',\n columns: 'string',\n sort: 'string',\n version: 'integer'\n };\n\n SavedSearch.searchSource = true;\n\n return SavedSearch;\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/discover/saved_searches/_saved_search.js\n ** module id = 594\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var angular = require('angular');\n\n require('components/notify/notify');\n require('components/courier/courier');\n require('components/doc_viewer/doc_viewer');\n require('components/index_patterns/index_patterns');\n\n var app = require('modules').get('apps/doc', [\n 'kibana/notify',\n 'kibana/courier',\n 'kibana/index_patterns'\n ]);\n\n var html = require('plugins/kibana/doc/index.html');\n\n var resolveIndexPattern = {\n indexPattern: function (courier, savedSearches, $route) {\n return courier.indexPatterns.get($route.current.params.indexPattern);\n }\n };\n\n require('routes')\n .when('/doc/:indexPattern/:index/:type/:id', {\n template: html,\n resolve: resolveIndexPattern\n })\n .when('/doc/:indexPattern/:index/:type', {\n template: html,\n resolve: resolveIndexPattern\n });\n\n app.controller('doc', function ($scope, $route, es, timefilter) {\n\n timefilter.enabled = false;\n\n // Pretty much only need this for formatting, not actually using it for fetching anything.\n $scope.indexPattern = $route.current.locals.indexPattern;\n\n var computedFields = $scope.indexPattern.getComputedFields();\n\n es.search({\n index: $route.current.params.index,\n body: {\n query: {\n ids: {\n type: $route.current.params.type,\n values: [$route.current.params.id]\n }\n },\n fields: computedFields.fields,\n script_fields: computedFields.scriptFields,\n fielddata_fields: computedFields.fielddataFields\n }\n }).then(function (resp) {\n if (resp.hits) {\n if (resp.hits.total < 1) {\n $scope.status = 'notFound';\n } else {\n $scope.status = 'found';\n $scope.hit = resp.hits.hits[0];\n }\n }\n }).catch(function (err) {\n if (err.status === 404) {\n $scope.status = 'notFound';\n } else {\n $scope.status = 'error';\n $scope.resp = err;\n }\n });\n\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/doc/controllers/doc.js\n ** module id = 595\n ** module chunks = 0\n **/","define(function (require, module, exports) {\n require('plugins/kibana/doc/controllers/doc');\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/doc/index.js\n ** module id = 596\n ** module chunks = 0\n **/","define(function (require) {\n require('plugins/kibana/discover/index');\n require('plugins/kibana/visualize/index');\n require('plugins/kibana/dashboard/index');\n require('plugins/kibana/settings/index');\n require('plugins/kibana/doc/index');\n\n require('routes')\n .otherwise({\n redirectTo: '/discover'\n });\n\n require('chrome')\n .setLogo('url(/images/kibana.png) left no-repeat', true)\n .setNavBackground('#222222')\n .setTabs([\n {\n id: 'discover',\n title: 'Discover'\n },\n {\n id: 'visualize',\n title: 'Visualize'\n },\n {\n id: 'dashboard',\n title: 'Dashboard'\n },\n {\n id: 'settings',\n title: 'Settings'\n }\n ])\n .setRootController('kibana', function ($scope, courier) {\n // wait for the application to finish loading\n $scope.$on('application.load', function () {\n courier.start();\n });\n });\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/kibana.js\n ** module id = 597\n ** module chunks = 0\n **/","define(function (require, module, exports) {\n var _ = require('lodash');\n\n require('plugins/kibana/settings/styles/main.less');\n require('filters/start_from');\n\n require('routes')\n .when('/settings', {\n redirectTo: '/settings/indices'\n });\n\n require('modules').get('apps/settings')\n .directive('kbnSettingsApp', function (Private, $route, timefilter) {\n return {\n restrict: 'E',\n template: require('plugins/kibana/settings/app.html'),\n transclude: true,\n scope: {\n sectionName: '@section'\n },\n link: function ($scope, $el) {\n timefilter.enabled = false;\n $scope.sections = require('plugins/kibana/settings/sections/index');\n $scope.section = _.find($scope.sections, { name: $scope.sectionName });\n\n $scope.sections.forEach(function (section) {\n section.class = (section === $scope.section) ? 'active' : void 0;\n });\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/index.js\n ** module id = 598\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n require('routes')\n .when('/settings/about', {\n template: require('plugins/kibana/settings/sections/about/index.html')\n });\n\n require('modules').get('apps/settings')\n .controller('settingsAbout', function ($scope, kbnVersion, buildNum, commitSha) {\n $scope.kbnVersion = kbnVersion;\n $scope.buildNum = buildNum;\n $scope.commitSha = commitSha;\n });\n\n return {\n order: Infinity,\n name: 'about',\n display: 'About',\n url: '#/settings/about'\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/about/index.js\n ** module id = 599\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n require('components/elastic_textarea');\n\n require('modules').get('apps/settings')\n .directive('advancedRow', function (config, Notifier, Private) {\n return {\n restrict: 'A',\n replace: true,\n template: require('plugins/kibana/settings/sections/advanced/advanced_row.html'),\n scope: {\n conf: '=advancedRow',\n configs: '='\n },\n link: function ($scope) {\n var configDefaults = Private(require('components/config/defaults'));\n var notify = new Notifier();\n var keyCodes = {\n ESC: 27\n };\n\n // To allow passing form validation state back\n $scope.forms = {};\n\n // setup loading flag, run async op, then clear loading and editting flag (just in case)\n var loading = function (conf, fn) {\n conf.loading = true;\n fn()\n .finally(function () {\n conf.loading = conf.editting = false;\n })\n .catch(notify.fatal);\n };\n\n $scope.maybeCancel = function ($event, conf) {\n if ($event.keyCode === keyCodes.ESC) {\n $scope.cancelEdit(conf);\n }\n };\n\n $scope.edit = function (conf) {\n conf.unsavedValue = conf.value == null ? conf.defVal : conf.value;\n $scope.configs.forEach(function (c) {\n c.editting = (c === conf);\n });\n };\n\n $scope.save = function (conf) {\n loading(conf, function () {\n if (conf.unsavedValue === conf.defVal) {\n return config.clear(conf.name);\n }\n\n return config.set(conf.name, conf.unsavedValue);\n });\n };\n\n $scope.cancelEdit = function (conf) {\n conf.editting = false;\n };\n\n $scope.clear = function (conf) {\n return loading(conf, function () {\n return config.clear(conf.name);\n });\n };\n\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/advanced/advanced_row.js\n ** module id = 600\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var getValType = require('plugins/kibana/settings/sections/advanced/lib/get_val_type');\n\n\n require('plugins/kibana/settings/sections/advanced/advanced_row');\n\n require('routes')\n .when('/settings/advanced', {\n template: require('plugins/kibana/settings/sections/advanced/index.html')\n });\n\n require('modules').get('apps/settings')\n .directive('kbnSettingsAdvanced', function (config, Notifier, Private, $rootScope) {\n return {\n restrict: 'E',\n link: function ($scope) {\n var configDefaults = Private(require('components/config/defaults'));\n var keyCodes = {\n ESC: 27\n };\n\n var NAMED_EDITORS = ['json', 'array', 'boolean', 'select'];\n var NORMAL_EDITOR = ['number', 'string', 'null', 'undefined'];\n\n function getEditorType(conf) {\n if (_.contains(NAMED_EDITORS, conf.type)) return conf.type;\n if (_.contains(NORMAL_EDITOR, conf.type)) return 'normal';\n }\n\n function isTypeComplex(conf) {\n return !(conf.json || conf.array || conf.bool || conf.normal);\n }\n\n function readConfigVals() {\n var configVals = config._vals();\n\n $scope.configs = _.map(configDefaults, function (def, name) {\n var val = configVals[name];\n var conf = {\n name: name,\n defVal: def.value,\n type: getValType(def, val),\n description: def.description,\n options: def.options,\n value: val,\n };\n\n var editor = getEditorType(conf);\n conf.json = editor === 'json';\n conf.select = editor === 'select';\n conf.bool = editor === 'boolean';\n conf.array = editor === 'array';\n conf.normal = editor === 'normal';\n conf.tooComplex = !editor;\n\n return conf;\n });\n }\n\n readConfigVals();\n $rootScope.$on('change:config', readConfigVals);\n }\n };\n });\n\n return {\n order: 2,\n name: 'advanced',\n display: 'Advanced',\n url: '#/settings/advanced'\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/advanced/index.js\n ** module id = 601\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n /**\n * @param {object} advanced setting definition object\n * @param {?} current value of the setting\n * @returns {string} the type to use for determining the display and editor\n */\n function getValType(def, value) {\n if (def.type) {\n return def.type;\n }\n\n if (_.isArray(value) || _.isArray(def.value)) {\n return 'array';\n }\n\n return (def.value != null ? typeof def.value : typeof value);\n }\n\n return getValType;\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/advanced/lib/get_val_type.js\n ** module id = 602\n ** module chunks = 0\n **/","define(function (require) {\n // each of these private modules returns an object defining that section, their properties\n // are used to create the nav bar\n return [\n require('plugins/kibana/settings/sections/indices/index'),\n require('plugins/kibana/settings/sections/advanced/index'),\n require('plugins/kibana/settings/sections/objects/index'),\n require('plugins/kibana/settings/sections/about/index')\n ];\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/index.js\n ** module id = 603\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var moment = require('moment');\n var errors = require('errors');\n\n require('directives/validate_index_name');\n require('directives/auto_select_if_only_one');\n\n require('routes')\n .when('/settings/indices/', {\n template: require('plugins/kibana/settings/sections/indices/_create.html')\n });\n\n require('modules').get('apps/settings')\n .controller('settingsIndicesCreate', function ($scope, kbnUrl, Private, Notifier, indexPatterns, es, config, Promise) {\n var notify = new Notifier();\n var MissingIndices = errors.IndexPatternMissingIndices;\n var refreshKibanaIndex = Private(require('plugins/kibana/settings/sections/indices/_refresh_kibana_index'));\n var intervals = indexPatterns.intervals;\n var samplePromise;\n\n // this and child scopes will write pattern vars here\n var index = $scope.index = {\n name: 'logstash-*',\n\n isTimeBased: true,\n nameIsPattern: false,\n sampleCount: 5,\n nameIntervalOptions: intervals,\n\n fetchFieldsError: 'Loading'\n };\n\n index.nameInterval = _.find(index.nameIntervalOptions, { name: 'daily' });\n index.timeField = null;\n\n $scope.refreshFieldList = function () {\n fetchFieldList().then(updateFieldList);\n };\n\n $scope.createIndexPattern = function () {\n // get an empty indexPattern to start\n indexPatterns.get()\n .then(function (indexPattern) {\n // set both the id and title to the index index\n indexPattern.id = indexPattern.title = index.name;\n if (index.isTimeBased) {\n indexPattern.timeFieldName = index.timeField.name;\n if (index.nameIsPattern) {\n indexPattern.intervalName = index.nameInterval.name;\n }\n }\n\n // fetch the fields\n return indexPattern.create()\n .then(function (id) {\n if (id) {\n refreshKibanaIndex().then(function () {\n if (!config.get('defaultIndex')) {\n config.set('defaultIndex', indexPattern.id);\n }\n indexPatterns.cache.clear(indexPattern.id);\n kbnUrl.change('/settings/indices/' + indexPattern.id);\n });\n }\n });\n\n // refreshFields calls save() after a successfull fetch, no need to save again\n // .then(function () { indexPattern.save(); })\n })\n .catch(function (err) {\n if (err instanceof MissingIndices) {\n notify.error('Could not locate any indices matching that pattern. Please add the index to Elasticsearch');\n }\n else notify.fatal(err);\n });\n };\n\n\n $scope.$watchMulti([\n 'index.isTimeBased',\n 'index.nameIsPattern',\n 'index.nameInterval.name'\n ], function (newVal, oldVal) {\n var isTimeBased = newVal[0];\n var nameIsPattern = newVal[1];\n var newDefault = getPatternDefault(newVal[2]);\n var oldDefault = getPatternDefault(oldVal[2]);\n\n if (index.name === oldDefault) {\n index.name = newDefault;\n }\n\n if (!isTimeBased) {\n index.nameIsPattern = false;\n }\n\n if (!nameIsPattern) {\n delete index.nameInterval;\n delete index.timeField;\n } else {\n index.nameInterval = index.nameInterval || intervals.byName.days;\n index.name = index.name || getPatternDefault(index.nameInterval);\n }\n });\n\n $scope.moreSamples = function (andUpdate) {\n index.sampleCount += 5;\n if (andUpdate) updateSamples();\n };\n\n $scope.$watchMulti([\n 'index.name',\n 'index.nameInterval'\n ], function (newVal, oldVal) {\n var lastPromise;\n resetIndex();\n samplePromise = lastPromise = updateSamples()\n .then(function () {\n promiseMatch(lastPromise, function () {\n index.samples = null;\n index.patternErrors = [];\n });\n })\n .catch(function (errors) {\n promiseMatch(lastPromise, function () {\n index.existing = null;\n index.patternErrors = errors;\n });\n })\n .finally(function () {\n // prevent running when no change happened (ie, first watcher call)\n if (!_.isEqual(newVal, oldVal)) {\n fetchFieldList().then(function (results) {\n if (lastPromise === samplePromise) {\n updateFieldList(results);\n samplePromise = null;\n }\n });\n }\n });\n });\n\n $scope.$watchMulti([\n 'index.isTimeBased',\n 'index.sampleCount'\n ], $scope.refreshFieldList);\n\n function updateSamples() {\n var patternErrors = [];\n\n if (!index.nameInterval || !index.name) {\n return Promise.resolve();\n }\n\n var pattern = mockIndexPattern(index);\n\n return indexPatterns.mapper.getIndicesForIndexPattern(pattern)\n .catch(notify.error)\n .then(function (existing) {\n var all = existing.all;\n var matches = existing.matches;\n if (all.length) {\n index.existing = {\n class: 'success',\n all: all,\n matches: matches,\n matchPercent: Math.round((matches.length / all.length) * 100) + '%',\n failures: _.difference(all, matches)\n };\n return;\n }\n\n patternErrors.push('Pattern does not match any existing indices');\n var radius = Math.round(index.sampleCount / 2);\n var samples = intervals.toIndexList(index.name, index.nameInterval, -radius, radius);\n\n if (_.uniq(samples).length !== samples.length) {\n patternErrors.push('Invalid pattern, interval does not create unique index names');\n } else {\n index.samples = samples;\n }\n\n throw patternErrors;\n });\n }\n\n function fetchFieldList() {\n index.dateFields = index.timeField = index.listUsed = null;\n var useIndexList = index.isTimeBased && index.nameIsPattern;\n var fetchFieldsError;\n var dateFields;\n\n // we don't have enough info to continue\n if (!index.name) {\n fetchFieldsError = 'Set an index name first';\n return;\n }\n\n if (useIndexList && !index.nameInterval) {\n fetchFieldsError = 'Select the interval at which your indices are populated.';\n return;\n }\n\n return indexPatterns.mapper.clearCache(index.name)\n .then(function () {\n var pattern = mockIndexPattern(index);\n\n return indexPatterns.mapper.getFieldsForIndexPattern(pattern, true)\n .catch(function (err) {\n // TODO: we should probably display a message of some kind\n if (err instanceof MissingIndices) {\n fetchFieldsError = 'Unable to fetch mapping. Do you have indices matching the pattern?';\n return [];\n }\n\n throw err;\n });\n })\n .then(function (fields) {\n if (fields.length > 0) {\n fetchFieldsError = null;\n dateFields = fields.filter(function (field) {\n return field.type === 'date';\n });\n }\n\n return {\n fetchFieldsError: fetchFieldsError,\n dateFields: dateFields\n };\n }, notify.fatal);\n }\n\n function updateFieldList(results) {\n index.fetchFieldsError = results.fetchFieldsError;\n index.dateFields = results.dateFields;\n }\n\n function promiseMatch(lastPromise, cb) {\n if (lastPromise === samplePromise) {\n cb();\n } else if (samplePromise != null) {\n // haven't hit the last promise yet, reset index params\n resetIndex();\n }\n }\n\n function resetIndex() {\n index.patternErrors = [];\n index.samples = null;\n index.existing = null;\n index.fetchFieldsError = 'Loading';\n }\n\n function getPatternDefault(interval) {\n switch (interval) {\n case 'hours':\n return '[logstash-]YYYY.MM.DD.HH';\n case 'days':\n return '[logstash-]YYYY.MM.DD';\n case 'weeks':\n return '[logstash-]GGGG.WW';\n case 'months':\n return '[logstash-]YYYY.MM';\n case 'years':\n return '[logstash-]YYYY';\n default:\n return 'logstash-*';\n }\n }\n\n function mockIndexPattern(index) {\n // trick the mapper into thinking this is an indexPattern\n return {\n id: index.name,\n intervalName: index.nameInterval\n };\n }\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/indices/_create.js\n ** module id = 604\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n return function (indexPattern) {\n var dateScripts = {};\n var scripts = {\n __dayOfMonth: 'dayOfMonth',\n __dayOfWeek: 'dayOfWeek',\n __dayOfYear: 'dayOfYear',\n __hourOfDay: 'hourOfDay',\n __minuteOfDay: 'minuteOfDay',\n __minuteOfHour: 'minuteOfHour',\n __monthOfYear: 'monthOfYear',\n __weekOfYear: 'weekOfWeekyear',\n __year: 'year'\n };\n\n _.each(indexPattern.fields.byType.date, function (field) {\n if (field.indexed) {\n _.each(scripts, function (value, key) {\n dateScripts[field.name + '.' + key] = 'doc[\"' + field.name + '\"].date.' + value;\n });\n }\n });\n\n return dateScripts;\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/indices/_date_scripts.js\n ** module id = 605\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n require('plugins/kibana/settings/sections/indices/_indexed_fields');\n require('plugins/kibana/settings/sections/indices/_scripted_fields');\n require('plugins/kibana/settings/sections/indices/_index_header');\n\n require('routes')\n .when('/settings/indices/:indexPatternId', {\n template: require('plugins/kibana/settings/sections/indices/_edit.html'),\n resolve: {\n indexPattern: function ($route, courier) {\n return courier.indexPatterns.get($route.current.params.indexPatternId)\n .catch(courier.redirectWhenMissing('/settings/indices'));\n }\n }\n });\n\n require('modules').get('apps/settings')\n .controller('settingsIndicesEdit', function ($scope, $location, $route, config, courier, Notifier, Private, AppState, docTitle) {\n\n var notify = new Notifier();\n var $state = $scope.state = new AppState();\n var refreshKibanaIndex = Private(require('plugins/kibana/settings/sections/indices/_refresh_kibana_index'));\n\n $scope.kbnUrl = Private(require('components/url/url'));\n $scope.indexPattern = $route.current.locals.indexPattern;\n docTitle.change($scope.indexPattern.id);\n var otherIds = _.without($route.current.locals.indexPatternIds, $scope.indexPattern.id);\n\n var fieldTypes = Private(require('plugins/kibana/settings/sections/indices/_field_types'));\n $scope.$watch('indexPattern.fields', function () {\n $scope.fieldTypes = fieldTypes($scope.indexPattern);\n });\n\n $scope.changeTab = function (obj) {\n $state.tab = obj.index;\n $state.save();\n };\n\n $scope.$watch('state.tab', function (tab) {\n if (!tab) $scope.changeTab($scope.fieldTypes[0]);\n });\n\n $scope.$watchCollection('indexPattern.fields', function () {\n $scope.conflictFields = _.filter($scope.indexPattern.fields, {type: 'conflict'});\n });\n\n $scope.refreshFields = function () {\n $scope.indexPattern.refreshFields();\n };\n\n $scope.removePattern = function () {\n if ($scope.indexPattern.id === config.get('defaultIndex')) {\n config.delete('defaultIndex');\n if (otherIds.length) {\n config.set('defaultIndex', otherIds[0]);\n }\n }\n\n courier.indexPatterns.delete($scope.indexPattern)\n .then(refreshKibanaIndex)\n .then(function () {\n $location.url('/settings/indices');\n })\n .catch(notify.fatal);\n };\n\n $scope.setDefaultPattern = function () {\n config.set('defaultIndex', $scope.indexPattern.id);\n };\n\n $scope.setIndexPatternsTimeField = function (field) {\n if (field.type !== 'date') {\n notify.error('That field is a ' + field.type + ' not a date.');\n return;\n }\n $scope.indexPattern.timeFieldName = field.name;\n return $scope.indexPattern.save();\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/indices/_edit.js\n ** module id = 606\n ** module chunks = 0\n **/","define(function (require) {\n require('components/field_editor/field_editor');\n require('plugins/kibana/settings/sections/indices/_index_header');\n\n require('routes')\n .when('/settings/indices/:indexPatternId/field/:fieldName', { mode: 'edit' })\n .when('/settings/indices/:indexPatternId/create-field/', { mode: 'create' })\n .defaults(/settings\\/indices\\/[^\\/]+\\/(field|create-field)(\\/|$)/, {\n template: require('plugins/kibana/settings/sections/indices/_field_editor.html'),\n resolve: {\n indexPattern: function ($route, courier) {\n return courier.indexPatterns.get($route.current.params.indexPatternId)\n .catch(courier.redirectWhenMissing('/settings/indices'));\n }\n },\n controllerAs: 'fieldSettings',\n controller: function FieldEditorPageController($route, Private, Notifier, docTitle) {\n var Field = Private(require('components/index_patterns/_field'));\n var notify = new Notifier({ location: 'Field Editor' });\n var kbnUrl = Private(require('components/url/url'));\n\n\n this.mode = $route.current.mode;\n this.indexPattern = $route.current.locals.indexPattern;\n\n\n if (this.mode === 'edit') {\n var fieldName = $route.current.params.fieldName;\n this.field = this.indexPattern.fields.byName[fieldName];\n\n if (!this.field) {\n notify.error(this.indexPattern + ' does not have a \"' + fieldName + '\" field.');\n kbnUrl.redirectToRoute(this.indexPattern, 'edit');\n return;\n }\n\n }\n else if (this.mode === 'create') {\n this.field = new Field(this.indexPattern, {\n scripted: true,\n type: 'number'\n });\n }\n else {\n throw new Error('unknown fieldSettings mode ' + this.mode);\n }\n\n docTitle.change([this.field.name || 'New Scripted Field', this.indexPattern.id]);\n this.goBack = function () {\n kbnUrl.changeToRoute(this.indexPattern, 'edit');\n };\n }\n });\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/indices/_field_editor.js\n ** module id = 607\n ** module chunks = 0\n **/","define(function (require) {\n return function GetFieldTypes() {\n var _ = require('lodash');\n\n return function (indexPattern) {\n var fieldCount = _.countBy(indexPattern.fields, function (field) {\n return (field.scripted) ? 'scripted' : 'indexed';\n });\n\n _.defaults(fieldCount, {\n indexed: 0,\n scripted: 0\n });\n\n return [{\n title: 'fields',\n index: 'indexedFields',\n count: fieldCount.indexed\n }, {\n title: 'scripted fields',\n index: 'scriptedFields',\n count: fieldCount.scripted\n }];\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/indices/_field_types.js\n ** module id = 608\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n require('components/paginated_table/paginated_table');\n\n require('modules').get('apps/settings')\n .directive('indexedFields', function () {\n var yesTemplate = '';\n var noTemplate = '';\n var nameHtml = require('plugins/kibana/settings/sections/indices/_field_name.html');\n var typeHtml = require('plugins/kibana/settings/sections/indices/_field_type.html');\n var controlsHtml = require('plugins/kibana/settings/sections/indices/_field_controls.html');\n\n return {\n restrict: 'E',\n template: require('plugins/kibana/settings/sections/indices/_indexed_fields.html'),\n scope: true,\n link: function ($scope) {\n var rowScopes = []; // track row scopes, so they can be destroyed as needed\n $scope.perPage = 25;\n $scope.columns = [\n { title: 'name' },\n { title: 'type' },\n { title: 'format' },\n { title: 'analyzed', info: 'Analyzed fields may require extra memory to visualize' },\n { title: 'indexed', info: 'Fields that are not indexed are unavailable for search' },\n { title: 'controls', sortable: false }\n ];\n\n $scope.$watchCollection('indexPattern.fields', function () {\n // clear and destroy row scopes\n _.invoke(rowScopes.splice(0), '$destroy');\n\n $scope.rows = $scope.indexPattern.getNonScriptedFields().map(function (field) {\n var childScope = _.assign($scope.$new(), { field: field });\n rowScopes.push(childScope);\n\n return [\n {\n markup: nameHtml,\n scope: childScope,\n value: field.displayName\n },\n {\n markup: typeHtml,\n scope: childScope,\n value: field.type\n },\n _.get($scope.indexPattern, ['fieldFormatMap', field.name, 'type', 'title']),\n {\n markup: field.analyzed ? yesTemplate : noTemplate,\n value: field.analyzed\n },\n {\n markup: field.indexed ? yesTemplate : noTemplate,\n value: field.indexed\n },\n {\n markup: controlsHtml,\n scope: childScope\n }\n ];\n });\n });\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/indices/_indexed_fields.js\n ** module id = 609\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n require('components/paginated_table/paginated_table');\n\n require('modules').get('apps/settings')\n .directive('scriptedFields', function (kbnUrl, Notifier) {\n var rowScopes = []; // track row scopes, so they can be destroyed as needed\n var controlsHtml = require('plugins/kibana/settings/sections/indices/_field_controls.html');\n\n var notify = new Notifier();\n\n return {\n restrict: 'E',\n template: require('plugins/kibana/settings/sections/indices/_scripted_fields.html'),\n scope: true,\n link: function ($scope) {\n var dateScripts = require('plugins/kibana/settings/sections/indices/_date_scripts');\n\n var fieldCreatorPath = '/settings/indices/{{ indexPattern }}/scriptedField';\n var fieldEditorPath = fieldCreatorPath + '/{{ fieldName }}';\n\n $scope.perPage = 25;\n $scope.columns = [\n { title: 'name' },\n { title: 'script' },\n { title: 'format' },\n { title: 'controls', sortable: false }\n ];\n\n $scope.$watch('indexPattern.fields', function () {\n _.invoke(rowScopes, '$destroy');\n rowScopes.length = 0;\n\n $scope.rows = $scope.indexPattern.getScriptedFields().map(function (field) {\n var rowScope = $scope.$new();\n rowScope.field = field;\n rowScopes.push(rowScope);\n\n return [\n field.name,\n field.script,\n _.get($scope.indexPattern, ['fieldFormatMap', field.name, 'type', 'title']),\n {\n markup: controlsHtml,\n scope: rowScope\n }\n ];\n });\n });\n\n $scope.addDateScripts = function () {\n var conflictFields = [];\n var fieldsAdded = 0;\n _.each(dateScripts($scope.indexPattern), function (script, field) {\n try {\n $scope.indexPattern.addScriptedField(field, script, 'number');\n fieldsAdded++;\n } catch (e) {\n conflictFields.push(field);\n }\n });\n\n if (fieldsAdded > 0) {\n notify.info(fieldsAdded + ' script fields created');\n }\n\n if (conflictFields.length > 0) {\n notify.info('Not adding ' + conflictFields.length + ' duplicate fields: ' + conflictFields.join(', '));\n }\n };\n\n $scope.create = function () {\n var params = {\n indexPattern: $scope.indexPattern.id\n };\n\n kbnUrl.change(fieldCreatorPath, params);\n };\n\n $scope.edit = function (field) {\n var params = {\n indexPattern: $scope.indexPattern.id,\n fieldName: field.name\n };\n\n kbnUrl.change(fieldEditorPath, params);\n };\n\n $scope.remove = function (field) {\n $scope.indexPattern.removeScriptedField(field.name);\n };\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/indices/_scripted_fields.js\n ** module id = 610\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n require('plugins/kibana/settings/sections/indices/_create');\n require('plugins/kibana/settings/sections/indices/_edit');\n require('plugins/kibana/settings/sections/indices/_field_editor');\n\n // add a dependency to all of the subsection routes\n require('routes')\n .defaults(/settings\\/indices/, {\n resolve: {\n indexPatternIds: function (courier) {\n return courier.indexPatterns.getIds();\n }\n }\n });\n\n // wrapper directive, which sets some global stuff up like the left nav\n require('modules').get('apps/settings')\n .directive('kbnSettingsIndices', function ($route, config, kbnUrl) {\n return {\n restrict: 'E',\n transclude: true,\n template: require('plugins/kibana/settings/sections/indices/index.html'),\n link: function ($scope) {\n $scope.edittingId = $route.current.params.indexPatternId;\n config.$bind($scope, 'defaultIndex');\n\n $scope.$watch('defaultIndex', function () {\n var ids = $route.current.locals.indexPatternIds;\n $scope.indexPatternList = ids.map(function (id) {\n return {\n id: id,\n url: kbnUrl.eval('#/settings/indices/{{id}}', {id: id}),\n class: 'sidebar-item-title ' + ($scope.edittingId === id ? 'active' : ''),\n default: $scope.defaultIndex === id\n };\n });\n });\n\n $scope.$emit('application.load');\n }\n };\n });\n\n return {\n name: 'indices',\n display: 'Indices',\n url: '#/settings/indices',\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/indices/index.js\n ** module id = 611\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var angular = require('angular');\n var saveAs = require('file_saver');\n var registry = require('plugins/kibana/settings/saved_object_registry');\n var objectIndexHTML = require('plugins/kibana/settings/sections/objects/_objects.html');\n\n require('directives/file_upload');\n\n require('routes')\n .when('/settings/objects', {\n template: objectIndexHTML\n });\n\n require('modules').get('apps/settings')\n .directive('kbnSettingsObjects', function (kbnIndex, Notifier, Private, kbnUrl) {\n return {\n restrict: 'E',\n controller: function ($scope, $injector, $q, AppState, es) {\n var notify = new Notifier({ location: 'Saved Objects' });\n\n var $state = $scope.state = new AppState();\n $scope.currentTab = null;\n $scope.selectedItems = [];\n\n var getData = function (filter) {\n var services = registry.all().map(function (obj) {\n var service = $injector.get(obj.service);\n return service.find(filter).then(function (data) {\n return {\n service: service,\n serviceName: obj.service,\n title: obj.title,\n type: service.type,\n data: data.hits,\n total: data.total\n };\n });\n });\n\n $q.all(services).then(function (data) {\n $scope.services = _.sortBy(data, 'title');\n var tab = $scope.services[0];\n if ($state.tab) tab = _.find($scope.services, {title: $state.tab});\n $scope.changeTab(tab);\n });\n };\n\n $scope.$watch('state.tab', function (tab) {\n if (!tab) $scope.changeTab($scope.services[0]);\n });\n\n $scope.toggleAll = function () {\n if ($scope.selectedItems.length === $scope.currentTab.data.length) {\n $scope.selectedItems.length = 0;\n } else {\n $scope.selectedItems = [].concat($scope.currentTab.data);\n }\n };\n\n $scope.toggleItem = function (item) {\n var i = $scope.selectedItems.indexOf(item);\n if (i >= 0) {\n $scope.selectedItems.splice(i, 1);\n } else {\n $scope.selectedItems.push(item);\n }\n };\n\n $scope.open = function (item) {\n kbnUrl.change(item.url.substr(1));\n };\n\n $scope.edit = function (service, item) {\n var params = {\n service: service.serviceName,\n id: item.id\n };\n\n kbnUrl.change('/settings/objects/{{ service }}/{{ id }}', params);\n };\n\n $scope.bulkDelete = function () {\n $scope.currentTab.service.delete(_.pluck($scope.selectedItems, 'id')).then(refreshData);\n };\n\n $scope.bulkExport = function () {\n var objs = $scope.selectedItems.map(_.partialRight(_.extend, {type: $scope.currentTab.type}));\n retrieveAndExportDocs(objs);\n };\n\n $scope.exportAll = function () {\n var objs = $scope.services.map(function (service) {\n return service.data.map(_.partialRight(_.extend, {type: service.type}));\n });\n retrieveAndExportDocs(_.flattenDeep(objs));\n };\n\n function retrieveAndExportDocs(objs) {\n es.mget({\n index: kbnIndex,\n body: {docs: objs.map(transformToMget)}\n })\n .then(function (response) {\n saveToFile(response.docs.map(_.partialRight(_.pick, '_id', '_type', '_source')));\n });\n }\n\n // Takes an object and returns the associated data needed for an mget API request\n function transformToMget(obj) {\n return {_id: obj.id, _type: obj.type};\n }\n\n function saveToFile(results) {\n var blob = new Blob([angular.toJson(results, true)], {type: 'application/json'});\n saveAs(blob, 'export.json');\n }\n\n $scope.importAll = function (fileContents) {\n var docs;\n try {\n docs = JSON.parse(fileContents);\n } catch (e) {\n notify.error('The file could not be processed.');\n }\n\n return es.mget({\n index: kbnIndex,\n body: {docs: docs.map(_.partialRight(_.pick, '_id', '_type'))}\n })\n .then(function (response) {\n var existingDocs = _.where(response.docs, {found: true});\n var confirmMessage = 'The following objects will be overwritten:\\n\\n';\n if (existingDocs.length === 0 || window.confirm(confirmMessage + _.pluck(existingDocs, '_id').join('\\n'))) {\n return es.bulk({\n index: kbnIndex,\n body: _.flattenDeep(docs.map(transformToBulk))\n })\n .then(refreshIndex)\n .then(refreshData, notify.error);\n }\n });\n };\n\n // Takes a doc and returns the associated two entries for an index bulk API request\n function transformToBulk(doc) {\n return [\n {index: _.pick(doc, '_id', '_type')},\n doc._source\n ];\n }\n\n function refreshIndex() {\n return es.indices.refresh({\n index: kbnIndex\n });\n }\n\n function refreshData() {\n return getData($scope.advancedFilter);\n }\n\n $scope.changeTab = function (tab) {\n $scope.currentTab = tab;\n $scope.selectedItems.length = 0;\n $state.tab = tab.title;\n $state.save();\n };\n\n $scope.$watch('advancedFilter', function (filter) {\n getData(filter);\n });\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/objects/_objects.js\n ** module id = 612\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var angular = require('angular');\n var rison = require('utils/rison');\n var registry = require('plugins/kibana/settings/saved_object_registry');\n var objectViewHTML = require('plugins/kibana/settings/sections/objects/_view.html');\n\n require('routes')\n .when('/settings/objects/:service/:id', {\n template: objectViewHTML\n });\n\n require('modules').get('apps/settings')\n .directive('kbnSettingsObjectsView', function (kbnIndex, Notifier) {\n return {\n restrict: 'E',\n controller: function ($scope, $injector, $routeParams, $location, $window, $rootScope, es, Private) {\n var notify = new Notifier({ location: 'SavedObject view' });\n var castMappingType = Private(require('components/index_patterns/_cast_mapping_type'));\n var serviceObj = registry.get($routeParams.service);\n var service = $injector.get(serviceObj.service);\n\n /**\n * Creates a field definition and pushes it to the memo stack. This function\n * is designed to be used in conjunction with _.reduce(). If the\n * values is plain object it will recurse through all the keys till it hits\n * a string, number or an array.\n *\n * @param {array} memo The stack of fields\n * @param {mixed} value The value of the field\n * @param {string} key The key of the field\n * @param {object} collection This is a reference the collection being reduced\n * @param {array} parents The parent keys to the field\n * @returns {array}\n */\n var createField = function (memo, val, key, collection, parents) {\n if (_.isArray(parents)) {\n parents.push(key);\n } else {\n parents = [key];\n }\n\n var field = { type: 'text', name: parents.join('.'), value: val };\n\n if (_.isString(field.value)) {\n try {\n field.value = angular.toJson(JSON.parse(field.value), true);\n field.type = 'json';\n } catch (err) {\n field.value = field.value;\n }\n } else if (_.isNumeric(field.value)) {\n field.type = 'number';\n } else if (_.isArray(field.value)) {\n field.type = 'array';\n field.value = angular.toJson(field.value, true);\n } else if (_.isBoolean(field.value)) {\n field.type = 'boolean';\n field.value = field.value;\n } else if (_.isPlainObject(field.value)) {\n // do something recursive\n return _.reduce(field.value, _.partialRight(createField, parents), memo);\n }\n\n memo.push(field);\n\n // once the field is added to the object you need to pop the parents\n // to remove it since we've hit the end of the branch.\n parents.pop();\n return memo;\n };\n\n var readObjectClass = function (fields, Class) {\n var fieldMap = _.indexBy(fields, 'name');\n\n _.forOwn(Class.mapping, function (esType, name) {\n if (fieldMap[name]) return;\n\n fields.push({\n name: name,\n type: (function () {\n switch (castMappingType(esType)) {\n case 'string': return 'text';\n case 'number': return 'number';\n case 'boolean': return 'boolean';\n default: return 'json';\n }\n }())\n });\n });\n\n if (Class.searchSource && !fieldMap['kibanaSavedObjectMeta.searchSourceJSON']) {\n fields.push({\n name: 'kibanaSavedObjectMeta.searchSourceJSON',\n type: 'json',\n value: '{}'\n });\n }\n };\n\n $scope.notFound = $routeParams.notFound;\n\n $scope.title = service.type;\n\n es.get({\n index: kbnIndex,\n type: service.type,\n id: $routeParams.id\n })\n .then(function (obj) {\n $scope.obj = obj;\n $scope.link = service.urlFor(obj._id);\n\n var fields = _.reduce(obj._source, createField, []);\n if (service.Class) readObjectClass(fields, service.Class);\n $scope.fields = _.sortBy(fields, 'name');\n })\n .catch(notify.fatal);\n\n // This handles the validation of the Ace Editor. Since we don't have any\n // other hooks into the editors to tell us if the content is valid or not\n // we need to use the annotations to see if they have any errors. If they\n // do then we push the field.name to aceInvalidEditor variable.\n // Otherwise we remove it.\n var loadedEditors = [];\n $scope.aceInvalidEditors = [];\n\n $scope.aceLoaded = function (editor) {\n if (_.contains(loadedEditors, editor)) return;\n loadedEditors.push(editor);\n\n var session = editor.getSession();\n var fieldName = editor.container.id;\n\n session.setTabSize(2);\n session.setUseSoftTabs(true);\n session.on('changeAnnotation', function () {\n var annotations = session.getAnnotations();\n if (_.some(annotations, { type: 'error'})) {\n if (!_.contains($scope.aceInvalidEditors, fieldName)) {\n $scope.aceInvalidEditors.push(fieldName);\n }\n } else {\n $scope.aceInvalidEditors = _.without($scope.aceInvalidEditors, fieldName);\n }\n $rootScope.$$phase || $scope.$apply();\n });\n };\n\n $scope.cancel = function () {\n $window.history.back();\n return false;\n };\n\n /**\n * Deletes an object and sets the notification\n * @param {type} name description\n * @returns {type} description\n */\n $scope.delete = function () {\n es.delete({\n index: kbnIndex,\n type: service.type,\n id: $routeParams.id\n })\n .then(function (resp) {\n return redirectHandler('deleted');\n })\n .catch(notify.fatal);\n };\n\n $scope.submit = function () {\n var source = _.cloneDeep($scope.obj._source);\n\n _.each($scope.fields, function (field) {\n var value = field.value;\n\n if (field.type === 'number') {\n value = Number(field.value);\n }\n\n if (field.type === 'array') {\n value = JSON.parse(field.value);\n }\n\n _.set(source, field.name, value);\n });\n\n es.index({\n index: kbnIndex,\n type: service.type,\n id: $routeParams.id,\n body: source\n })\n .then(function (resp) {\n return redirectHandler('updated');\n })\n .catch(notify.fatal);\n };\n\n function redirectHandler(action) {\n return es.indices.refresh({\n index: kbnIndex\n })\n .then(function (resp) {\n var msg = 'You successfully ' + action + ' the \"' + $scope.obj._source.title + '\" ' + $scope.title.toLowerCase() + ' object';\n\n $location.path('/settings/objects').search({\n _a: rison.encode({\n tab: serviceObj.title\n })\n });\n notify.info(msg);\n });\n }\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/objects/_view.js\n ** module id = 613\n ** module chunks = 0\n **/","define(function (require) {\n require('plugins/kibana/settings/sections/objects/_view');\n require('plugins/kibana/settings/sections/objects/_objects');\n\n require('angular-ui-ace');\n require('angular-elastic');\n require('directives/confirm_click');\n\n // add the module deps to this module\n require('modules').get('apps/settings', ['ui.ace', 'monospaced.elastic']);\n\n return {\n name: 'objects',\n display: 'Objects',\n url: '#/settings/objects'\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/settings/sections/objects/index.js\n ** module id = 614\n ** module chunks = 0\n **/","define(function (require) {\n require('modules')\n .get('app/visualize')\n .directive('visEditorAgg', function ($compile, $parse, $filter, Private, Notifier) {\n require('plugins/kibana/visualize/editor/agg_params');\n require('plugins/kibana/visualize/editor/agg_add');\n\n var _ = require('lodash');\n var $ = require('jquery');\n var aggTypes = Private(require('components/agg_types/index'));\n var advancedToggleHtml = require('plugins/kibana/visualize/editor/advanced_toggle.html');\n\n var notify = new Notifier({\n location: 'visAggGroup'\n });\n\n return {\n restrict: 'A',\n template: require('plugins/kibana/visualize/editor/agg.html'),\n require: 'form',\n link: function ($scope, $el, attrs, kbnForm) {\n $scope.$bind('outputAgg', 'outputVis.aggs.byId[agg.id]', $scope);\n $scope.editorOpen = !!$scope.agg.brandNew;\n\n $scope.$watch('editorOpen', function (open) {\n // make sure that all of the form inputs are \"touched\"\n // so that their errors propogate\n if (!open) kbnForm.$setTouched();\n });\n\n $scope.$watchMulti([\n '$index',\n 'group.length'\n ], function () {\n $scope.aggIsTooLow = calcAggIsTooLow();\n });\n\n /**\n * Describe the aggregation, for display in the collapsed agg header\n * @return {[type]} [description]\n */\n $scope.describe = function () {\n if (!$scope.agg.type.makeLabel) return '';\n var label = $scope.agg.type.makeLabel($scope.agg);\n return label ? label : '';\n };\n\n function move(below, agg) {\n _.move($scope.vis.aggs, agg, below, function (otherAgg) {\n return otherAgg.schema.group === agg.schema.group;\n });\n }\n $scope.moveUp = _.partial(move, false);\n $scope.moveDown = _.partial(move, true);\n\n $scope.remove = function (agg) {\n var aggs = $scope.vis.aggs;\n\n var index = aggs.indexOf(agg);\n if (index === -1) return notify.log('already removed');\n\n aggs.splice(index, 1);\n };\n\n $scope.canRemove = function (aggregation) {\n var metricCount = _.reduce($scope.group, function (count, agg) {\n return (agg.schema.name === aggregation.schema.name) ? ++count : count;\n }, 0);\n\n // make sure the the number of these aggs is above the min\n return metricCount > aggregation.schema.min;\n };\n\n function calcAggIsTooLow() {\n if (!$scope.agg.schema.mustBeFirst) {\n return false;\n }\n\n var firstDifferentSchema = _.findIndex($scope.group, function (agg) {\n return agg.schema !== $scope.agg.schema;\n });\n\n if (firstDifferentSchema === -1) {\n return false;\n }\n\n return $scope.$index > firstDifferentSchema;\n }\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/editor/agg.js\n ** module id = 615\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var propFilter = require('filters/_prop_filter');\n\n require('modules')\n .get('kibana')\n .filter('aggFilter', function () {\n return propFilter('name');\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/editor/agg_filter.js\n ** module id = 616\n ** module chunks = 0\n **/","define(function (require) {\n require('modules')\n .get('app/visualize')\n .directive('visEditorAggGroup', function (Private) {\n require('plugins/kibana/visualize/editor/agg');\n require('plugins/kibana/visualize/editor/agg_add');\n require('plugins/kibana/visualize/editor/nesting_indicator');\n\n return {\n restrict: 'E',\n template: require('plugins/kibana/visualize/editor/agg_group.html'),\n scope: true,\n link: function ($scope, $el, attr) {\n $scope.groupName = attr.groupName;\n $scope.$bind('group', 'vis.aggs.bySchemaGroup[\"' + $scope.groupName + '\"]');\n $scope.$bind('schemas', 'vis.type.schemas[\"' + $scope.groupName + '\"]');\n\n $scope.$watchMulti([\n 'schemas',\n '[]group'\n ], function () {\n var stats = $scope.stats = {\n min: 0,\n max: 0,\n count: $scope.group ? $scope.group.length : 0\n };\n\n if (!$scope.schemas) return;\n\n $scope.schemas.forEach(function (schema) {\n stats.min += schema.min;\n stats.max += schema.max;\n });\n\n $scope.availableSchema = $scope.schemas.filter(function (schema) {\n var count = 0;\n\n if ($scope.group) {\n count = $scope.group.reduce(function (count, aggConfig) {\n if (aggConfig.schema === schema) count += 1;\n return count;\n }, 0);\n }\n\n if (count < schema.max) return true;\n });\n });\n }\n };\n\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/editor/agg_group.js\n ** module id = 617\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n require('modules')\n .get('app/visualize')\n .directive('visAggParamEditor', function (config, $parse, Private) {\n return {\n restrict: 'E',\n scope: true,\n template: function ($el) {\n return $el.html();\n },\n link: {\n pre: function ($scope, $el, attr) {\n $scope.$bind('aggParam', attr.aggParam);\n },\n post: function ($scope, $el, attr) {\n $scope.config = config;\n\n $scope.optionEnabled = function (option) {\n if (option && _.isFunction(option.enabled)) {\n return option.enabled($scope.agg);\n }\n\n return true;\n };\n }\n }\n };\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/editor/agg_param.js\n ** module id = 618\n ** module chunks = 0\n **/","define(function (require) {\n var IndexedArray = require('components/indexed_array/index');\n\n require('modules')\n .get('app/visualize')\n .directive('visEditorAggParams', function ($compile, $parse, Private, Notifier, $filter) {\n var _ = require('lodash');\n var $ = require('jquery');\n var aggTypes = Private(require('components/agg_types/index'));\n var aggSelectHtml = require('plugins/kibana/visualize/editor/agg_select.html');\n var advancedToggleHtml = require('plugins/kibana/visualize/editor/advanced_toggle.html');\n require('filters/match_any');\n require('plugins/kibana/visualize/editor/agg_param');\n\n var notify = new Notifier({\n location: 'visAggGroup'\n });\n\n return {\n restrict: 'E',\n template: require('plugins/kibana/visualize/editor/agg_params.html'),\n scope: true,\n link: function ($scope, $el, attr) {\n $scope.$bind('agg', attr.agg);\n $scope.$bind('groupName', attr.groupName);\n\n $scope.aggTypeOptions = aggTypes.byType[$scope.groupName];\n $scope.advancedToggled = false;\n\n // this will contain the controls for the schema (rows or columns?), which are unrelated to\n // controls for the agg, which is why they are first\n var $schemaEditor = $('
').addClass('schemaEditors').appendTo($el);\n\n if ($scope.agg.schema.editor) {\n $schemaEditor.append($scope.agg.schema.editor);\n $compile($schemaEditor)($scope.$new());\n }\n\n // allow selection of an aggregation\n var $aggSelect = $(aggSelectHtml).appendTo($el);\n $compile($aggSelect)($scope);\n\n // params for the selected agg, these are rebuilt every time the agg in $aggSelect changes\n var $aggParamEditors; // container for agg type param editors\n var $aggParamEditorsScope;\n $scope.$watch('agg.type', function updateAggParamEditor(newType, oldType) {\n if ($aggParamEditors) {\n $aggParamEditors.remove();\n $aggParamEditors = null;\n }\n\n // if there's an old scope, destroy it\n if ($aggParamEditorsScope) {\n $aggParamEditorsScope.$destroy();\n $aggParamEditorsScope = null;\n }\n\n // create child scope, used in the editors\n $aggParamEditorsScope = $scope.$new();\n\n var agg = $scope.agg;\n if (!agg) return;\n\n var type = $scope.agg.type;\n\n if (newType !== oldType) {\n // don't reset on initial load, the\n // saved params should persist\n agg.resetParams();\n }\n\n if (!type) return;\n\n var aggParamHTML = {\n basic: [],\n advanced: []\n };\n\n // build collection of agg params html\n type.params.forEach(function (param, i) {\n var aggParam;\n // if field param exists, compute allowed fields\n if (param.name === 'field') {\n $aggParamEditorsScope.indexedFields = getIndexedFields(param);\n }\n\n if ($aggParamEditorsScope.indexedFields) {\n var hasIndexedFields = $aggParamEditorsScope.indexedFields.length > 0;\n var isExtraParam = i > 0;\n if (!hasIndexedFields && isExtraParam) { // don't draw the rest of the options if their are no indexed fields.\n return;\n }\n }\n\n\n var type = 'basic';\n if (param.advanced) type = 'advanced';\n\n if (aggParam = getAggParamHTML(param, i)) {\n aggParamHTML[type].push(aggParam);\n }\n\n });\n\n // compile the paramEditors html elements\n var paramEditors = aggParamHTML.basic;\n\n if (aggParamHTML.advanced.length) {\n paramEditors.push($(advancedToggleHtml).get(0));\n paramEditors = paramEditors.concat(aggParamHTML.advanced);\n }\n\n $aggParamEditors = $(paramEditors).appendTo($el);\n $compile($aggParamEditors)($aggParamEditorsScope);\n });\n\n // build HTML editor given an aggParam and index\n function getAggParamHTML(param, idx) {\n // don't show params without an editor\n if (!param.editor) {\n return;\n }\n\n var attrs = {\n 'agg-param': 'agg.type.params[' + idx + ']'\n };\n\n if (param.advanced) {\n attrs['ng-show'] = 'advancedToggled';\n }\n\n return $('')\n .attr(attrs)\n .append(param.editor)\n .get(0);\n }\n\n function getIndexedFields(param) {\n var fields = $scope.agg.vis.indexPattern.fields.raw;\n var fieldTypes = param.filterFieldTypes;\n\n if (fieldTypes) {\n fields = $filter('fieldType')(fields, fieldTypes);\n fields = $filter('filter')(fields, { bucketable: true });\n fields = $filter('orderBy')(fields, ['type', 'name']);\n }\n\n return new IndexedArray({\n\n /**\n * @type {Array}\n */\n index: ['name'],\n\n /**\n * [group description]\n * @type {Array}\n */\n initialSet: fields\n });\n }\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/editor/agg_params.js\n ** module id = 619\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n require('plugins/kibana/visualize/saved_visualizations/saved_visualizations');\n require('plugins/kibana/visualize/editor/sidebar');\n require('plugins/kibana/visualize/editor/agg_filter');\n\n require('components/visualize/visualize');\n require('components/clipboard/clipboard');\n\n require('routes')\n .when('/visualize/create', {\n template: require('plugins/kibana/visualize/editor/editor.html'),\n resolve: {\n savedVis: function (savedVisualizations, courier, $route, Private) {\n var visTypes = Private(require('registry/vis_types'));\n var visType = _.find(visTypes, {name: $route.current.params.type});\n if (visType.requiresSearch && !$route.current.params.indexPattern && !$route.current.params.savedSearchId) {\n throw new Error('You must provide either an indexPattern or a savedSearchId');\n }\n\n return savedVisualizations.get($route.current.params)\n .catch(courier.redirectWhenMissing({\n '*': '/visualize'\n }));\n }\n }\n })\n .when('/visualize/edit/:id', {\n template: require('plugins/kibana/visualize/editor/editor.html'),\n resolve: {\n savedVis: function (savedVisualizations, courier, $route) {\n return savedVisualizations.get($route.current.params.id)\n .catch(courier.redirectWhenMissing({\n 'visualization': '/visualize',\n 'search': '/settings/objects/savedVisualizations/' + $route.current.params.id,\n 'index-pattern': '/settings/objects/savedVisualizations/' + $route.current.params.id,\n 'index-pattern-field': '/settings/objects/savedVisualizations/' + $route.current.params.id\n }));\n }\n }\n });\n\n require('modules')\n .get('app/visualize', [\n 'kibana/notify',\n 'kibana/courier'\n ])\n .controller('VisEditor', function ($scope, $route, timefilter, AppState, $location, kbnUrl, $timeout, courier, Private, Promise) {\n\n var _ = require('lodash');\n var angular = require('angular');\n var ConfigTemplate = require('utils/config_template');\n var Notifier = require('components/notify/_notifier');\n var docTitle = Private(require('components/doc_title/doc_title'));\n var brushEvent = Private(require('utils/brush_event'));\n var queryFilter = Private(require('components/filter_bar/query_filter'));\n var filterBarClickHandler = Private(require('components/filter_bar/filter_bar_click_handler'));\n\n var notify = new Notifier({\n location: 'Visualization Editor'\n });\n\n var savedVis = $route.current.locals.savedVis;\n\n var vis = savedVis.vis;\n var editableVis = vis.createEditableVis();\n vis.requesting = function () {\n var requesting = editableVis.requesting;\n requesting.call(vis);\n requesting.call(editableVis);\n };\n\n var searchSource = savedVis.searchSource;\n\n // config panel templates\n var configTemplate = new ConfigTemplate({\n save: require('plugins/kibana/visualize/editor/panels/save.html'),\n load: require('plugins/kibana/visualize/editor/panels/load.html'),\n share: require('plugins/kibana/visualize/editor/panels/share.html'),\n });\n\n if (savedVis.id) {\n docTitle.change(savedVis.title);\n }\n\n var $state = $scope.$state = (function initState() {\n var savedVisState = vis.getState();\n var stateDefaults = {\n linked: !!savedVis.savedSearchId,\n query: searchSource.getOwn('query') || {query_string: {query: '*'}},\n filters: searchSource.getOwn('filter') || [],\n vis: savedVisState\n };\n\n var $state = new AppState(stateDefaults);\n\n if (!angular.equals($state.vis, savedVisState)) {\n Promise.try(function () {\n vis.setState($state.vis);\n editableVis.setState($state.vis);\n })\n .catch(courier.redirectWhenMissing({\n 'index-pattern-field': '/visualize'\n }));\n }\n\n return $state;\n }());\n\n function init() {\n // export some objects\n $scope.savedVis = savedVis;\n $scope.searchSource = searchSource;\n $scope.vis = vis;\n $scope.indexPattern = vis.indexPattern;\n $scope.editableVis = editableVis;\n $scope.state = $state;\n $scope.conf = _.pick($scope, 'doSave', 'savedVis', 'shareData');\n $scope.configTemplate = configTemplate;\n\n editableVis.listeners.click = vis.listeners.click = filterBarClickHandler($state);\n editableVis.listeners.brush = vis.listeners.brush = brushEvent;\n\n // track state of editable vis vs. \"actual\" vis\n $scope.stageEditableVis = transferVisState(editableVis, vis, true);\n $scope.resetEditableVis = transferVisState(vis, editableVis);\n $scope.$watch(function () {\n return editableVis.getState();\n }, function (newState) {\n editableVis.dirty = !angular.equals(newState, vis.getState());\n\n $scope.responseValueAggs = null;\n try {\n $scope.responseValueAggs = editableVis.aggs.getResponseAggs().filter(function (agg) {\n return _.get(agg, 'schema.group') === 'metrics';\n });\n } catch (e) {\n // this can fail when the agg.type is changed but the\n // params have not been set yet. watcher will trigger again\n // when the params update\n }\n }, true);\n\n $state.replace();\n\n $scope.$watch('searchSource.get(\"index\").timeFieldName', function (timeField) {\n timefilter.enabled = !!timeField;\n });\n\n // update the searchSource when filters update\n $scope.$listen(queryFilter, 'update', function () {\n searchSource.set('filter', queryFilter.getFilters());\n $state.save();\n });\n\n // fetch data when filters fire fetch event\n $scope.$listen(queryFilter, 'fetch', $scope.fetch);\n\n\n $scope.$listen($state, 'fetch_with_changes', function (keys) {\n if (_.contains(keys, 'linked') && $state.linked === true) {\n // abort and reload route\n $route.reload();\n return;\n }\n\n if (_.contains(keys, 'vis')) {\n $state.vis.listeners = _.defaults($state.vis.listeners || {}, vis.listeners);\n\n // only update when we need to, otherwise colors change and we\n // risk loosing an in-progress result\n vis.setState($state.vis);\n editableVis.setState($state.vis);\n }\n\n // we use state to track query, must write before we fetch\n if ($state.query && !$state.linked) {\n searchSource.set('query', $state.query);\n } else {\n searchSource.set('query', null);\n }\n\n if (_.isEqual(keys, ['filters'])) {\n // updates will happen in filter watcher if needed\n return;\n }\n\n $scope.fetch();\n });\n\n // Without this manual emission, we'd miss filters and queries that were on the $state initially\n $state.emit('fetch_with_changes');\n\n $scope.$listen(timefilter, 'fetch', _.bindKey($scope, 'fetch'));\n\n $scope.$on('ready:vis', function () {\n $scope.$emit('application.load');\n });\n\n $scope.$on('$destroy', function () {\n savedVis.destroy();\n });\n }\n\n $scope.fetch = function () {\n $state.save();\n searchSource.set('filter', queryFilter.getFilters());\n if (!$state.linked) searchSource.set('query', $state.query);\n if ($scope.vis.type.requiresSearch) {\n courier.fetch();\n }\n };\n\n\n $scope.startOver = function () {\n kbnUrl.change('/visualize', {});\n };\n\n $scope.doSave = function () {\n savedVis.id = savedVis.title;\n savedVis.visState = $state.vis;\n\n savedVis.save()\n .then(function (id) {\n configTemplate.close('save');\n\n if (id) {\n notify.info('Saved Visualization \"' + savedVis.title + '\"');\n if (savedVis.id === $route.current.params.id) return;\n kbnUrl.change('/visualize/edit/{{id}}', {id: savedVis.id});\n }\n }, notify.fatal);\n };\n\n $scope.shareData = function () {\n return {\n link: $location.absUrl(),\n // This sucks, but seems like the cleanest way. Uhg.\n embed: ''\n };\n };\n\n $scope.unlink = function () {\n if (!$state.linked) return;\n\n $state.linked = false;\n var parent = searchSource.getParent(true);\n var parentsParent = parent.getParent(true);\n\n // display unlinking for 2 seconds, unless it is double clicked\n $scope.unlinking = $timeout($scope.clearUnlinking, 2000);\n\n delete savedVis.savedSearchId;\n parent.set('filter', _.union(searchSource.getOwn('filter'), parent.getOwn('filter')));\n\n // copy over all state except \"aggs\" and filter, which is already copied\n _(parent.toJSON())\n .omit('aggs')\n .forOwn(function (val, key) {\n searchSource.set(key, val);\n })\n .commit();\n\n $state.query = searchSource.get('query');\n $state.filters = searchSource.get('filter');\n searchSource.inherits(parentsParent);\n };\n\n $scope.clearUnlinking = function () {\n if ($scope.unlinking) {\n $timeout.cancel($scope.unlinking);\n $scope.unlinking = null;\n }\n };\n\n function transferVisState(fromVis, toVis, fetch) {\n return function () {\n toVis.setState(fromVis.getState());\n editableVis.dirty = false;\n $state.vis = vis.getState();\n $state.save();\n\n if (fetch) $scope.fetch();\n };\n }\n\n init();\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/editor/editor.js\n ** module id = 620\n ** module chunks = 0\n **/","define(function (require) {\n require('modules')\n .get('kibana')\n .directive('nestingIndicator', function ($rootScope, $parse, Private) {\n var _ = require('lodash');\n var $ = require('jquery');\n var getColors = Private(require('components/vislib/components/color/color_palette'));\n\n return {\n restrict: 'E',\n scope: {\n item: '=',\n list: '='\n },\n link: function ($scope, $el, attr) {\n $scope.$watchCollection('list', function () {\n if (!$scope.list || !$scope.item) return;\n\n var item = $scope.item;\n var index = $scope.list.indexOf($scope.item);\n var bars = $scope.list.slice(0, index + 1);\n var colors = getColors(bars.length);\n\n $el.html(bars.map(function (item, i) {\n return $(document.createElement('span'))\n .css('background-color', colors[i]);\n }));\n });\n }\n };\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/editor/nesting_indicator.js\n ** module id = 621\n ** module chunks = 0\n **/","define(function (require) {\n require('modules')\n .get('app/visualize')\n .directive('visEditorSidebar', function () {\n var _ = require('lodash');\n\n require('plugins/kibana/visualize/editor/agg_group');\n require('plugins/kibana/visualize/editor/vis_options');\n\n return {\n restrict: 'E',\n template: require('plugins/kibana/visualize/editor/sidebar.html'),\n scope: true,\n controllerAs: 'sidebar',\n controller: function ($scope) {\n $scope.$bind('vis', 'editableVis');\n $scope.$bind('outputVis', 'vis');\n this.section = _.get($scope, 'vis.type.requiresSearch') ? 'data' : 'options';\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/editor/sidebar.js\n ** module id = 622\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var $ = require('jquery');\n\n require('modules')\n .get('app/visualize')\n .directive('visEditorVisOptions', function (Private, $timeout, $compile) {\n return {\n restrict: 'E',\n template: require('plugins/kibana/visualize/editor/vis_options.html'),\n scope: {\n vis: '=',\n },\n link: function ($scope, $el) {\n var $optionContainer = $('.visualization-options');\n var $editor = $compile($scope.vis.type.params.editor)($scope);\n $optionContainer.append($editor);\n\n $scope.$watch('vis.type.schemas.all.length', function (len) {\n $scope.alwaysShowOptions = len === 0;\n });\n }\n };\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/editor/vis_options.js\n ** module id = 623\n ** module chunks = 0\n **/","define(function (require) {\n require('plugins/kibana/visualize/styles/main.less');\n\n require('plugins/kibana/visualize/editor/editor');\n require('plugins/kibana/visualize/wizard/wizard');\n\n require('routes')\n .when('/visualize', {\n redirectTo: '/visualize/step/1'\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/index.js\n ** module id = 624\n ** module chunks = 0\n **/","define(function (require) {\n require('modules')\n .get('app/visualize')\n .factory('SavedVis', function (config, $injector, courier, Promise, savedSearches, Private, Notifier) {\n var _ = require('lodash');\n var Vis = Private(require('components/vis/vis'));\n\n var notify = new Notifier({\n location: 'SavedVis'\n });\n\n _.class(SavedVis).inherits(courier.SavedObject);\n function SavedVis(opts) {\n var self = this;\n opts = opts || {};\n if (typeof opts !== 'object') opts = { id: opts };\n\n SavedVis.Super.call(self, {\n type: SavedVis.type,\n mapping: SavedVis.mapping,\n searchSource: SavedVis.searchSource,\n\n id: opts.id,\n indexPattern: opts.indexPattern,\n defaults: {\n title: 'New Visualization',\n visState: (function () {\n if (!opts.type) return null;\n var def = {};\n def.type = opts.type;\n return def;\n }()),\n description: '',\n savedSearchId: opts.savedSearchId,\n version: 1\n },\n\n afterESResp: this._afterEsResp\n });\n }\n\n SavedVis.type = 'visualization';\n\n SavedVis.mapping = {\n title: 'string',\n visState: 'json',\n description: 'string',\n savedSearchId: 'string',\n version: 'integer'\n };\n\n SavedVis.searchSource = true;\n\n SavedVis.prototype._afterEsResp = function () {\n var self = this;\n\n return self._getLinkedSavedSearch()\n .then(function () {\n self.searchSource.size(0);\n\n return self.vis ? self._updateVis() : self._createVis();\n })\n .then(function (vis) {\n self.searchSource.aggs(function () {\n self.vis.requesting();\n return self.vis.aggs.toDsl();\n });\n\n return self;\n });\n };\n\n SavedVis.prototype._getLinkedSavedSearch = Promise.method(function () {\n var self = this;\n var linkedSearch = !!self.savedSearchId;\n var current = self.savedSearch;\n\n if (linkedSearch && current && current.id === self.savedSearchId) {\n return;\n }\n\n if (self.savedSearch) {\n self.searchSource.inherits(self.savedSearch.searchSource.getParent());\n self.savedSearch.destroy();\n self.savedSearch = null;\n }\n\n if (linkedSearch) {\n return savedSearches.get(self.savedSearchId)\n .then(function (savedSearch) {\n self.savedSearch = savedSearch;\n self.searchSource.inherits(self.savedSearch.searchSource);\n });\n }\n });\n\n SavedVis.prototype._createVis = function () {\n var self = this;\n\n if (self.stateJSON) {\n self.visState = Vis.convertOldState(self.typeName, JSON.parse(self.stateJSON));\n }\n\n return self.vis = new Vis(\n self.searchSource.get('index'),\n self.visState\n );\n };\n\n SavedVis.prototype._updateVis = function () {\n var self = this;\n\n self.vis.indexPattern = self.searchSource.get('index');\n self.vis.setState(self.visState);\n };\n\n return SavedVis;\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/saved_visualizations/_saved_vis.js\n ** module id = 625\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n require('plugins/kibana/visualize/saved_visualizations/saved_visualizations');\n require('directives/saved_object_finder');\n require('plugins/kibana/discover/saved_searches/saved_searches');\n\n var templateStep = function (num, txt) {\n return '
' + txt + '
';\n };\n\n var module = require('modules').get('app/visualize', ['kibana/courier']);\n var routes = require('routes');\n\n /********\n /** Wizard Step 1\n /********/\n routes.when('/visualize/step/1', {\n template: templateStep(1, require('plugins/kibana/visualize/wizard/step_1.html'))\n });\n\n module.controller('VisualizeWizardStep1', function ($scope, $route, $location, timefilter, Private) {\n timefilter.enabled = false;\n\n $scope.visTypes = Private(require('registry/vis_types'));\n $scope.visTypeUrl = function (visType) {\n if (!visType.requiresSearch) return '#/visualize/create?type=' + encodeURIComponent(visType.name);\n else return '#/visualize/step/2?type=' + encodeURIComponent(visType.name);\n };\n });\n\n /********\n /** Wizard Step 2\n /********/\n routes.when('/visualize/step/2', {\n template: templateStep(2, require('plugins/kibana/visualize/wizard/step_2.html')),\n resolve: {\n indexPatternIds: function (courier) {\n return courier.indexPatterns.getIds();\n }\n }\n });\n\n module.controller('VisualizeWizardStep2', function ($route, $scope, $location, timefilter, kbnUrl) {\n var type = $route.current.params.type;\n\n $scope.step2WithSearchUrl = function (hit) {\n return kbnUrl.eval('#/visualize/create?&type={{type}}&savedSearchId={{id}}', {type: type, id: hit.id});\n };\n\n timefilter.enabled = false;\n\n $scope.indexPattern = {\n selection: null,\n list: $route.current.locals.indexPatternIds\n };\n\n $scope.$watch('stepTwoMode', function (mode) {\n if (mode === 'new') {\n if ($scope.indexPattern.list && $scope.indexPattern.list.length === 1) {\n $scope.indexPattern.selection = $scope.indexPattern.list[0];\n }\n }\n });\n\n $scope.$watch('indexPattern.selection', function (pattern) {\n if (!pattern) return;\n kbnUrl.change('/visualize/create?type={{type}}&indexPattern={{pattern}}', {type: type, pattern: pattern});\n });\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/visualize/wizard/wizard.js\n ** module id = 626\n ** module chunks = 0\n **/","define(function (require) {\n // we need to load the css ourselves\n require('plugins/markdown_vis/markdown_vis.less');\n\n // we also need to load the controller and used by the template\n require('plugins/markdown_vis/markdown_vis_controller');\n\n // register the provider with the visTypes registry so that other know it exists\n require('registry/vis_types').register(MarkdownVisProvider);\n\n function MarkdownVisProvider(Private) {\n var TemplateVisType = Private(require('components/template_vis_type/TemplateVisType'));\n\n // return the visType object, which kibana will use to display and configure new\n // Vis object of this type.\n return new TemplateVisType({\n name: 'markdown',\n title: 'Markdown widget',\n icon: 'fa-code',\n description: 'Useful for displaying explanations or instructions for dashboards.',\n template: require('plugins/markdown_vis/markdown_vis.html'),\n params: {\n editor: require('plugins/markdown_vis/markdown_vis_params.html')\n },\n requiresSearch: false\n });\n }\n\n // export the provider so that the visType can be required with Private()\n return MarkdownVisProvider;\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/markdown_vis/public/markdown_vis.js\n ** module id = 627\n ** module chunks = 0\n **/","define(function (require) {\n var marked = require('marked');\n marked.setOptions({\n gfm: true, // Github-flavored markdown\n sanitize: true // Sanitize HTML tags\n });\n\n var module = require('modules').get('kibana/markdown_vis', ['kibana']);\n module.controller('KbnMarkdownVisController', function ($scope, $sce) {\n $scope.$watch('vis.params.markdown', function (html) {\n if (!html) return;\n $scope.html = $sce.trustAsHtml(marked(html));\n });\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/markdown_vis/public/markdown_vis_controller.js\n ** module id = 628\n ** module chunks = 0\n **/","define(function (require) {\n // we need to load the css ourselves\n require('plugins/metric_vis/metric_vis.less');\n\n // we also need to load the controller and used by the template\n require('plugins/metric_vis/metric_vis_controller');\n\n // register the provider with the visTypes registry\n require('registry/vis_types').register(MetricVisProvider);\n\n function MetricVisProvider(Private) {\n var TemplateVisType = Private(require('components/template_vis_type/TemplateVisType'));\n var Schemas = Private(require('components/vis/Schemas'));\n\n // return the visType object, which kibana will use to display and configure new\n // Vis object of this type.\n return new TemplateVisType({\n name: 'metric',\n title: 'Metric',\n description: 'One big number for all of your one big number needs. Perfect for show ' +\n 'a count of hits, or the exact average a numeric field.',\n icon: 'fa-calculator',\n template: require('plugins/metric_vis/metric_vis.html'),\n params: {\n defaults: {\n fontSize: 60\n },\n editor: require('plugins/metric_vis/metric_vis_params.html')\n },\n schemas: new Schemas([\n {\n group: 'metrics',\n name: 'metric',\n title: 'Metric',\n min: 1,\n defaults: [\n { type: 'count', schema: 'metric' }\n ]\n }\n ])\n });\n }\n\n // export the provider so that the visType can be required with Private()\n return MetricVisProvider;\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/metric_vis/public/metric_vis.js\n ** module id = 629\n ** module chunks = 0\n **/","define(function (require) {\n // get the kibana/metric_vis module, and make sure that it requires the \"kibana\" module if it\n // didn't already\n var module = require('modules').get('kibana/metric_vis', ['kibana']);\n\n module.controller('KbnMetricVisController', function ($scope, Private) {\n var tabifyAggResponse = Private(require('components/agg_response/tabify/tabify'));\n\n var metrics = $scope.metrics = [];\n\n $scope.processTableGroups = function (tableGroups) {\n tableGroups.tables.forEach(function (table) {\n table.columns.forEach(function (column, i) {\n var fieldFormatter = table.aggConfig(column).fieldFormatter();\n metrics.push({\n label: column.title,\n value: fieldFormatter(table.rows[0][i])\n });\n });\n });\n };\n\n $scope.$watch('esResponse', function (resp) {\n if (resp) {\n metrics.length = 0;\n $scope.processTableGroups(tabifyAggResponse($scope.vis, resp));\n }\n });\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/metric_vis/public/metric_vis_controller.js\n ** module id = 630\n ** module chunks = 0\n **/","define(function (require) {\n // we need to load the css ourselves\n require('plugins/table_vis/table_vis.less');\n\n // we also need to load the controller and used by the template\n require('plugins/table_vis/table_vis_controller');\n\n // our params are a bit complex so we will manage them with a directive\n require('plugins/table_vis/table_vis_params');\n\n // require the directives that we use as well\n require('components/agg_table/agg_table');\n require('components/agg_table/agg_table_group');\n\n // register the provider with the visTypes registry\n require('registry/vis_types').register(TableVisTypeProvider);\n\n // define the TableVisType\n function TableVisTypeProvider(Private) {\n var TemplateVisType = Private(require('components/template_vis_type/TemplateVisType'));\n var Schemas = Private(require('components/vis/Schemas'));\n\n // define the TableVisController which is used in the template\n // by angular's ng-controller directive\n\n // return the visType object, which kibana will use to display and configure new\n // Vis object of this type.\n return new TemplateVisType({\n name: 'table',\n title: 'Data table',\n icon: 'fa-table',\n description: 'The data table provides a detailed breakdown, in tabular format, of the results of a composed ' +\n 'aggregation. Tip, a data table is available from many other charts by clicking grey bar at the bottom of the chart.',\n template: require('plugins/table_vis/table_vis.html'),\n params: {\n defaults: {\n perPage: 10,\n showPartialRows: false,\n showMeticsAtAllLevels: false\n },\n editor: ''\n },\n hierarchicalData: function (vis) {\n return Boolean(vis.params.showPartialRows || vis.params.showMeticsAtAllLevels);\n },\n schemas: new Schemas([\n {\n group: 'metrics',\n name: 'metric',\n title: 'Metric',\n min: 1,\n defaults: [\n { type: 'count', schema: 'metric' }\n ]\n },\n {\n group: 'buckets',\n name: 'bucket',\n title: 'Split Rows'\n },\n {\n group: 'buckets',\n name: 'split',\n title: 'Split Table'\n }\n ])\n });\n }\n\n return TableVisTypeProvider;\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/table_vis/public/table_vis.js\n ** module id = 632\n ** module chunks = 0\n **/","define(function (require) {\n // get the kibana/table_vis module, and make sure that it requires the \"kibana\" module if it\n // didn't already\n var module = require('modules').get('kibana/table_vis', ['kibana']);\n\n // add a controller to tha module, which will transform the esResponse into a\n // tabular format that we can pass to the table directive\n module.controller('KbnTableVisController', function ($scope, Private) {\n var tabifyAggResponse = Private(require('components/agg_response/tabify/tabify'));\n\n $scope.$watch('esResponse', function (resp, oldResp) {\n var tableGroups = $scope.tableGroups = null;\n var hasSomeRows = $scope.hasSomeRows = null;\n\n if (resp) {\n var vis = $scope.vis;\n var params = vis.params;\n\n tableGroups = tabifyAggResponse(vis, resp, {\n partialRows: params.showPartialRows,\n minimalColumns: vis.isHierarchical() && !params.showMeticsAtAllLevels,\n asAggConfigResults: true\n });\n\n hasSomeRows = tableGroups.tables.some(function haveRows(table) {\n if (table.tables) return table.tables.some(haveRows);\n return table.rows.length > 0;\n });\n }\n\n $scope.hasSomeRows = hasSomeRows;\n if (hasSomeRows) {\n $scope.tableGroups = tableGroups;\n }\n\n });\n });\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/table_vis/public/table_vis_controller.js\n ** module id = 633\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n require('modules').get('kibana/table_vis')\n .directive('tableVisParams', function () {\n return {\n restrict: 'E',\n template: require('plugins/table_vis/table_vis_params.html'),\n link: function ($scope) {\n $scope.$watchMulti([\n 'vis.params.showPartialRows',\n 'vis.params.showMeticsAtAllLevels'\n ], function () {\n if (!$scope.vis) return;\n\n var params = $scope.vis.params;\n if (params.showPartialRows || params.showMeticsAtAllLevels) {\n $scope.metricsAtAllLevels = true;\n } else {\n $scope.metricsAtAllLevels = false;\n }\n });\n }\n };\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/table_vis/public/table_vis_params.js\n ** module id = 634\n ** module chunks = 0\n **/","define(function (require) {\n // register the spy mode or it won't show up in the spys\n require('registry/spy_modes').register(VisDetailsSpyProvider);\n\n function VisDetailsSpyProvider(Notifier, $filter, $rootScope, config) {\n require('components/clipboard/clipboard');\n\n return {\n name: 'debug',\n display: 'Debug',\n template: require('plugins/vis_debug_spy/vis_debug_spy.html'),\n order: 5,\n link: function ($scope, $el) {\n $scope.$watch('vis.getState() | json', function (json) {\n $scope.visStateJson = json;\n });\n }\n };\n }\n\n return VisDetailsSpyProvider;\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/vis_debug_spy/public/vis_debug_spy.js\n ** module id = 635\n ** module chunks = 0\n **/","define(function (require) {\n return function TileMapTooltipFormatter($compile, $rootScope, Private) {\n var $ = require('jquery');\n var _ = require('lodash');\n\n var fieldFormats = Private(require('registry/field_formats'));\n var $tooltipScope = $rootScope.$new();\n var $el = $('
').html(require('components/agg_response/geo_json/_tooltip.html'));\n $compile($el)($tooltipScope);\n\n return function tooltipFormatter(feature) {\n if (!feature) return '';\n\n var value = feature.properties.value;\n var acr = feature.properties.aggConfigResult;\n var vis = acr.aggConfig.vis;\n\n var metricAgg = acr.aggConfig;\n var geoFormat = _.get(vis.aggs, 'byTypeName.geohash_grid[0].format');\n if (!geoFormat) geoFormat = fieldFormats.getDefaultInstance('geo_point');\n\n $tooltipScope.details = [\n {\n label: metricAgg.makeLabel(),\n value: metricAgg.fieldFormatter()(value)\n },\n {\n label: 'Center',\n value: geoFormat.convert({\n lat: feature.geometry.coordinates[1],\n lon: feature.geometry.coordinates[0]\n })\n }\n ];\n\n $tooltipScope.$apply();\n\n return $el.html();\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/geo_json/_tooltip_formatter.js\n ** module id = 636\n ** module chunks = 0\n **/","define(function (require) {\n var decodeGeoHash = require('utils/decode_geo_hash');\n var AggConfigResult = require('components/vis/AggConfigResult');\n var _ = require('lodash');\n\n function getAcr(val) {\n return val instanceof AggConfigResult ? val : null;\n }\n\n function unwrap(val) {\n return getAcr(val) ? val.value : val;\n }\n\n function convertRowsToFeatures(table, geoI, metricI) {\n return _.transform(table.rows, function (features, row) {\n var geohash = unwrap(row[geoI]);\n if (!geohash) return;\n\n var location = decodeGeoHash(geohash);\n var center = [\n location.longitude[2],\n location.latitude[2]\n ];\n\n var rectangle = [\n [location.longitude[0], location.latitude[0]],\n [location.longitude[1], location.latitude[0]],\n [location.longitude[1], location.latitude[1]],\n [location.longitude[0], location.latitude[1]]\n ];\n\n features.push({\n type: 'Feature',\n geometry: {\n type: 'Point',\n coordinates: center\n },\n properties: {\n geohash: geohash,\n value: unwrap(row[metricI]),\n aggConfigResult: getAcr(row[metricI]),\n center: center,\n rectangle: rectangle\n }\n });\n }, []);\n }\n\n return convertRowsToFeatures;\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/geo_json/rowsToFeatures.js\n ** module id = 637\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n return function (buckets) {\n var previous;\n _.each(buckets, function (bucket) {\n if (previous) {\n bucket._previous = previous;\n previous._next = bucket;\n }\n previous = bucket;\n });\n return buckets;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/hierarchical/_array_to_linked_list.js\n ** module id = 638\n ** module chunks = 0\n **/","define(function (require) {\n return function biuldSplitProvider(Private) {\n var transformer = Private(require('components/agg_response/hierarchical/_transform_aggregation'));\n var collectKeys = require('components/agg_response/hierarchical/_collect_keys');\n return function (agg, metric, aggData) {\n // Ceate the split structure\n var split = { label: '', slices: { children: [] } };\n\n // Transform the aggData into splits\n split.slices.children = transformer(agg, metric, aggData);\n\n // Collect all the keys\n split.names = collectKeys(split.slices.children);\n return split;\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/hierarchical/_build_split.js\n ** module id = 639\n ** module chunks = 0\n **/","define(function () {\n return function (leaf) {\n // walk up the branch for each parent\n function walk(item, memo) {\n // record the the depth\n var depth = item.depth - 1;\n\n // Using the aggConfig determine what the field name is. If the aggConfig\n // doesn't exist (which means it's an _all agg) then use the level for\n // the field name\n var col = item.aggConfig;\n var field = (col && col.params && col.params.field && col.params.field.displayName)\n || (col && col.label)\n || ('level ' + item.depth);\n\n // Add the row to the tooltipScope.rows\n memo.unshift({\n aggConfig: col,\n depth: depth,\n field: field,\n bucket: item.name,\n metric: item.size,\n item: item\n });\n\n // If the item has a parent and it's also a child then continue walking\n // up the branch\n if (item.parent && item.parent.parent) {\n return walk(item.parent, memo);\n } else {\n return memo;\n }\n }\n\n return walk(leaf, []);\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/hierarchical/_collect_branch.js\n ** module id = 640\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n return function collectKeys(children) {\n var nextChildren = _.pluck(children, 'children');\n var keys = _.pluck(children, 'name');\n return _(nextChildren)\n .map(collectKeys)\n .flattenDeep()\n .union(keys)\n .value();\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/hierarchical/_collect_keys.js\n ** module id = 641\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var extractBuckets = require('components/agg_response/hierarchical/_extract_buckets');\n return function (vis, resp) {\n\n // Create the initial results structure\n var results = { rows: [] };\n\n // Create a reference to the buckets and metrics\n var metrics = vis.aggs.bySchemaGroup.metrics;\n var buckets = vis.aggs.bySchemaGroup.buckets;\n var aggs = [];\n\n if (buckets) {\n _.each(buckets, function (bucket) {\n aggs.push(bucket);\n aggs.push(metrics);\n });\n } else {\n aggs.push(metrics);\n }\n\n // Create the columns\n results.columns = _(aggs)\n .flattenDeep()\n .map(function (agg) {\n return {\n categoryName: agg.schema.name,\n id: agg.id,\n aggConfig: agg,\n aggType: agg.type,\n field: agg.params.field,\n label: agg.type.makeLabel(agg)\n };\n })\n .value();\n\n\n // if there are no buckets then we need to just set the value and return\n if (!buckets) {\n var value = resp.aggregations\n && resp.aggregations[metrics[0].id]\n && resp.aggregations[metrics[0].id].value\n || resp.hits.total;\n results.rows.push([value]);\n return results;\n }\n\n /**\n * Walk the buckets and create records for each leaf\n * @param {aggConfig} agg The aggConfig for the current level\n * @param {object} data The aggergation object\n * @param {array} [record] The record that will eventually get pushed to the rows\n * @returns {void}\n */\n function walkBuckets(agg, data, record) {\n if (!_.isArray(record)) {\n record = [];\n }\n\n // iterate through all the buckets\n _.each(extractBuckets(data[agg.id]), function (bucket) {\n\n var _record = _.flattenDeep([record, bucket.key]);\n _.each(metrics, function (metric) {\n var value = bucket.doc_count;\n if (bucket[metric.id] && !_.isUndefined(bucket[metric.id].value)) {\n value = bucket[metric.id].value;\n }\n _record.push(value);\n });\n\n // If there is another agg to call we need to check to see if it has\n // buckets. If it does then we need to keep on walking the tree.\n // This is where the recursion happens.\n if (agg._next) {\n var nextBucket = bucket[agg._next.id];\n if (nextBucket && nextBucket.buckets) {\n walkBuckets(agg._next, bucket, _record);\n }\n }\n // if there are no more aggs to walk then push the record to the rows.\n else {\n results.rows.push(_record);\n }\n });\n }\n\n // Start walking the buckets at the beginning of the aggregations object.\n walkBuckets(buckets[0], resp.aggregations);\n\n return results;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/hierarchical/_create_raw_data.js\n ** module id = 642\n ** module chunks = 0\n **/","define(function (require) {\n return function HierarchicalTooltipFormaterProvider($rootScope, $compile, $sce) {\n var _ = require('lodash');\n var $ = require('jquery');\n var $tooltip = $(require('components/agg_response/hierarchical/_tooltip.html'));\n var collectBranch = require('components/agg_response/hierarchical/_collect_branch');\n var $tooltipScope = $rootScope.$new();\n var numeral = require('numeral');\n\n $compile($tooltip)($tooltipScope);\n\n return function (columns) {\n return function (event) {\n var datum = event.datum;\n\n // Collect the current leaf and parents into an array of values\n $tooltipScope.rows = collectBranch(datum);\n\n var metricCol = $tooltipScope.metricCol = _.find(columns, { categoryName: 'metric' });\n\n // Map those values to what the tooltipSource.rows format.\n _.forEachRight($tooltipScope.rows, function (row, i, rows) {\n row.spacer = $sce.trustAsHtml(_.repeat(' ', row.depth));\n\n var percent;\n if (row.item.percentOfGroup != null) {\n percent = row.item.percentOfGroup;\n }\n\n row.metric = metricCol.aggConfig.fieldFormatter()(row.metric);\n\n if (percent != null) {\n row.metric += ' (' + numeral(percent).format('0.[00]%') + ')';\n }\n\n return row;\n });\n\n $tooltipScope.$apply();\n return $tooltip[0].outerHTML;\n };\n\n };\n\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/hierarchical/_hierarchical_tooltip_formatter.js\n ** module id = 643\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var extractBuckets = require('components/agg_response/hierarchical/_extract_buckets');\n return function transformAggregationProvider(Private) {\n var AggConfigResult = require('components/vis/AggConfigResult');\n return function transformAggregation(agg, metric, aggData, parent) {\n return _.map(extractBuckets(aggData), function (bucket) {\n var aggConfigResult = new AggConfigResult(\n agg,\n parent && parent.aggConfigResult,\n metric.getValue(bucket),\n agg.getKey(bucket)\n );\n\n var branch = {\n name: agg.fieldFormatter()(bucket.key),\n size: aggConfigResult.value,\n aggConfig: agg,\n aggConfigResult: aggConfigResult\n };\n\n // if the parent is defined then we need to set the parent of the branch\n // this will be used later for filters for waking up the parent path.\n if (parent) {\n branch.parent = parent;\n }\n\n // If the next bucket exists and it has children the we need to\n // transform it as well. This is where the recursion happens.\n if (agg._next) {\n var nextBucket = bucket[agg._next.id];\n if (nextBucket && nextBucket.buckets) {\n branch.children = transformAggregation(agg._next, metric, nextBucket, branch);\n }\n }\n\n return branch;\n });\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/hierarchical/_transform_aggregation.js\n ** module id = 644\n ** module chunks = 0\n **/","define(function (require) {\n return function buildHierarchicalDataProvider(Private, Notifier) {\n var _ = require('lodash');\n var buildSplit = Private(require('components/agg_response/hierarchical/_build_split'));\n var extractBuckets = require('components/agg_response/hierarchical/_extract_buckets');\n var createRawData = require('components/agg_response/hierarchical/_create_raw_data');\n var arrayToLinkedList = require('components/agg_response/hierarchical/_array_to_linked_list');\n var tooltipFormatter = Private(require('components/agg_response/hierarchical/_hierarchical_tooltip_formatter'));\n\n var AggConfigResult = require('components/vis/AggConfigResult');\n\n var notify = new Notifier({\n location: 'Pie chart response converter'\n });\n\n return function (vis, resp) {\n // Create a refrenece to the buckets\n var buckets = vis.aggs.bySchemaGroup.buckets;\n\n\n // Find the metric so it's easier to reference.\n // TODO: Change this to support multiple metrics.\n var metric = vis.aggs.bySchemaGroup.metrics[0];\n\n // Link each agg to the next agg. This will be\n // to identify the next bucket aggregation\n buckets = arrayToLinkedList(buckets);\n\n // Create the raw data to be used in the spy panel\n var raw = createRawData(vis, resp);\n\n // If buckets is falsy then we should just return the aggs\n if (!buckets) {\n var value = resp.aggregations\n && resp.aggregations[metric.id]\n && resp.aggregations[metric.id].value\n || resp.hits.total;\n return {\n hits: resp.hits.total,\n raw: raw,\n names: ['_all'],\n tooltipFormatter: tooltipFormatter(raw.columns),\n slices: {\n children: [\n { name: '_all', size: value }\n ]\n }\n };\n }\n\n var firstAgg = buckets[0];\n var aggData = resp.aggregations[firstAgg.id];\n\n if (!firstAgg._next && firstAgg.schema.name === 'split') {\n notify.error('Splitting charts without splitting slices is not supported. Pretending that we are just splitting slices.');\n }\n\n // start with splitting slices\n if (!firstAgg._next || firstAgg.schema.name === 'segment') {\n var split = buildSplit(firstAgg, metric, aggData);\n split.hits = resp.hits.total;\n split.raw = raw;\n split.tooltipFormatter = tooltipFormatter(raw.columns);\n return split;\n }\n\n // map the split aggregations into rows.\n var rows = _.map(extractBuckets(aggData), function (bucket) {\n var agg = firstAgg._next;\n var split = buildSplit(agg, metric, bucket[agg.id]);\n // Since splits display labels we need to set it.\n split.label = firstAgg.fieldFormatter()(bucket.key);\n\n var displayName = firstAgg.fieldDisplayName();\n if (!_.isEmpty(displayName)) split.label += ': ' + displayName;\n\n split.tooltipFormatter = tooltipFormatter(raw.columns);\n var aggConfigResult = new AggConfigResult(firstAgg, null, null, firstAgg.getKey(bucket));\n split.split = { aggConfig: firstAgg, aggConfigResult: aggConfigResult, key: bucket.key };\n _.each(split.slices.children, function (child) {\n child.aggConfigResult.$parent = aggConfigResult;\n });\n return split;\n });\n\n var result = { hits: resp.hits.total, raw: raw };\n if (firstAgg.params.row) {\n result.rows = rows;\n } else {\n result.columns = rows;\n }\n\n return result;\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/hierarchical/build_hierarchical_data.js\n ** module id = 645\n ** module chunks = 0\n **/","define(function (require) {\n return function NormalizeChartDataFactory(Private) {\n return {\n hierarchical: Private(require('components/agg_response/hierarchical/build_hierarchical_data')),\n pointSeries: Private(require('components/agg_response/point_series/point_series')),\n tabify: Private(require('components/agg_response/tabify/tabify')),\n geoJson: Private(require('components/agg_response/geo_json/geo_json'))\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/index.js\n ** module id = 646\n ** module chunks = 0\n **/","define(function (require) {\n return function PointSeriesAddToSiri() {\n return function addToSiri(series, point, id, label) {\n id = id == null ? '' : id + '';\n\n if (series[id]) {\n series[id].values.push(point);\n return;\n }\n\n series[id] = {\n label: label == null ? id : label,\n values: [point]\n };\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/point_series/_add_to_siri.js\n ** module id = 647\n ** module chunks = 0\n **/","define(function (require) {\n return function PointSeriesFakeXAxis(Private) {\n var AggConfig = Private(require('components/vis/AggConfig'));\n var AggType = Private(require('components/agg_types/_agg_type'));\n\n var allAgg = new AggType({\n name: 'all',\n title: 'All docs',\n ordered: false,\n hasNoDsl: true\n });\n\n return function makeFakeXAxis(vis) {\n var fake = new AggConfig(vis, {\n type: allAgg,\n schema: vis.type.schemas.all.byName.segment\n });\n\n return {\n i: -1,\n agg: fake,\n col: {\n aggConfig: fake,\n label: fake.makeLabel()\n }\n };\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/point_series/_fake_x_aspect.js\n ** module id = 648\n ** module chunks = 0\n **/","define(function (require) {\n return function PointSeriesGetAspects(Private) {\n var _ = require('lodash');\n var fakeXAspect = Private(require('components/agg_response/point_series/_fake_x_aspect'));\n\n var map = {\n segment: 'x',\n metric: 'y',\n radius: 'z',\n width: 'width',\n group: 'series'\n };\n\n function columnToAspect(aspects, col, i) {\n var schema = col.aggConfig.schema.name;\n\n var name = map[schema];\n if (!name) throw new TypeError('unknown schema name \"' + schema + '\"');\n\n var aspect = {\n i: i,\n col: col,\n agg: col.aggConfig\n };\n\n if (!aspects[name]) aspects[name] = [];\n aspects[name].push(aspect);\n }\n\n /**\n * Identify and group the columns based on the aspect of the pointSeries\n * they represent.\n *\n * @param {array} columns - the list of columns\n * @return {object} - an object with a key for each aspect (see map). The values\n * may be undefined, a single aspect, or an array of aspects.\n */\n return function getAspects(vis, table) {\n var aspects = _(table.columns)\n // write each column into the aspects under it's group\n .transform(columnToAspect, {})\n // unwrap groups that only have one value, and validate groups that have more\n .transform(function (aspects, group, name) {\n if (name !== 'y' && group.length > 1) {\n throw new TypeError('Only multiple metrics are supported in point series');\n }\n\n aspects[name] = group.length > 1 ? group : group[0];\n })\n .value();\n\n if (!aspects.x) {\n aspects.x = fakeXAspect(vis);\n }\n\n return aspects;\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/point_series/_get_aspects.js\n ** module id = 649\n ** module chunks = 0\n **/","define(function (require) {\n return function PointSeriesGetPoint() {\n var _ = require('lodash');\n function unwrap(aggConfigResult, def) {\n return aggConfigResult ? aggConfigResult.value : def;\n }\n\n return function getPoint(x, series, yScale, row, y, z) {\n var zRow = z && row[z.i];\n var xRow = row[x.i];\n\n var point = {\n x: unwrap(xRow, '_all'),\n xi: xRow && xRow.$order,\n y: unwrap(row[y.i]),\n z: zRow && unwrap(zRow),\n aggConfigResult: row[y.i],\n extraMetrics: _.compact([zRow]),\n yScale: yScale\n };\n\n if (point.y === 'NaN' || point.y == null) {\n // filter out NaN from stats and null\n // from metrics that are not based at zero\n return;\n }\n\n if (series) {\n point.series = series.agg.fieldFormatter()(unwrap(row[series.i]));\n }\n\n if (yScale) {\n point.y *= yScale;\n }\n\n return point;\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/point_series/_get_point.js\n ** module id = 650\n ** module chunks = 0\n **/","define(function (require) {\n return function PointSeriesGetSeries(Private) {\n var _ = require('lodash');\n var getPoint = Private(require('components/agg_response/point_series/_get_point'));\n var addToSiri = Private(require('components/agg_response/point_series/_add_to_siri'));\n\n return function getSeries(rows, chart) {\n var aspects = chart.aspects;\n var multiY = _.isArray(aspects.y);\n var yScale = chart.yScale;\n var partGetPoint = _.partial(getPoint, aspects.x, aspects.series, yScale);\n\n var series = _(rows)\n .transform(function (series, row) {\n\n if (!multiY) {\n var point = partGetPoint(row, aspects.y, aspects.z);\n if (point) addToSiri(series, point, point.series);\n return;\n }\n\n aspects.y.forEach(function (y) {\n var point = partGetPoint(row, y, aspects.z);\n if (!point) return;\n\n var prefix = point.series ? point.series + ': ' : '';\n var seriesId = prefix + y.agg.id;\n var seriesLabel = prefix + y.col.title;\n\n addToSiri(series, point, seriesId, seriesLabel);\n });\n\n }, {})\n .values()\n .value();\n\n if (multiY) {\n series = _.sortBy(series, function (siri) {\n var firstVal = siri.values[0];\n var y;\n\n if (firstVal) {\n var agg = firstVal.aggConfigResult.aggConfig;\n y = _.find(aspects.y, function (y) {\n return y.agg === agg;\n });\n }\n\n return y ? y.i : series.length;\n });\n }\n\n return series;\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/point_series/_get_series.js\n ** module id = 651\n ** module chunks = 0\n **/","define(function () {\n return function PointSeriesInitX() {\n return function initXAxis(chart) {\n var x = chart.aspects.x;\n chart.xAxisFormatter = x.agg ? x.agg.fieldFormatter() : String;\n chart.xAxisLabel = x.col.title;\n\n if (!x.agg || !x.agg.type.ordered) return;\n\n chart.ordered = {};\n var xAggOutput = x.agg.write();\n if (xAggOutput.params.interval) {\n chart.ordered.interval = xAggOutput.params.interval;\n }\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/point_series/_init_x_axis.js\n ** module id = 652\n ** module chunks = 0\n **/","define(function (require) {\n return function PointSeriesInitYAxis() {\n var _ = require('lodash');\n\n return function initYAxis(chart) {\n var y = chart.aspects.y;\n var x = chart.aspects.x;\n\n if (_.isArray(y)) {\n // TODO: vis option should allow choosing this format\n chart.yAxisFormatter = y[0].agg.fieldFormatter();\n chart.yAxisLabel = ''; // use the legend\n } else {\n chart.yAxisFormatter = y.agg.fieldFormatter();\n chart.yAxisLabel = y.col.title;\n }\n\n var xAggOutput = x.agg.write();\n chart.yScale = xAggOutput.metricScale || null;\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/point_series/_init_y_axis.js\n ** module id = 653\n ** module chunks = 0\n **/","define(function (require) {\n return function PointSeriesOrderedDateAxis(timefilter) {\n var moment = require('moment');\n\n return function orderedDateAxis(vis, chart) {\n var xAgg = chart.aspects.x.agg;\n var buckets = xAgg.buckets;\n var format = buckets.getScaledDateFormat();\n\n chart.xAxisFormatter = function (val) {\n return moment(val).format(format);\n };\n\n chart.ordered = {\n date: true,\n interval: buckets.getInterval(),\n };\n\n var axisOnTimeField = xAgg.fieldIsTimeField();\n var bounds = buckets.getBounds();\n if (bounds && axisOnTimeField) {\n chart.ordered.min = bounds.min;\n chart.ordered.max = bounds.max;\n } else {\n chart.ordered.endzones = false;\n }\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/point_series/_ordered_date_axis.js\n ** module id = 654\n ** module chunks = 0\n **/","define(function (require) {\n return function PointSeriesTooltipFormatter($compile, $rootScope) {\n var $ = require('jquery');\n\n var $tooltipScope = $rootScope.$new();\n var $tooltip = $(require('components/agg_response/point_series/_tooltip.html'));\n $compile($tooltip)($tooltipScope);\n\n return function tooltipFormatter(event) {\n var datum = event.datum;\n if (!datum || !datum.aggConfigResult) return '';\n\n var details = $tooltipScope.details = [];\n var result = { $parent: datum.aggConfigResult };\n\n function addDetail(result) {\n var agg = result.aggConfig;\n var value = result.value;\n\n var detail = {\n value: agg.fieldFormatter()(value),\n label: agg.makeLabel()\n };\n\n if (agg === datum.aggConfigResult.aggConfig) {\n detail.percent = event.percent;\n if (datum.yScale != null) {\n detail.value = agg.fieldFormatter()(value * datum.yScale);\n }\n }\n\n details.push(detail);\n }\n\n datum.extraMetrics.forEach(addDetail);\n while ((result = result.$parent) && result.aggConfig) {\n addDetail(result);\n }\n\n\n $tooltipScope.$apply();\n return $tooltip[0].outerHTML;\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/point_series/_tooltip_formatter.js\n ** module id = 655\n ** module chunks = 0\n **/","define(function (require) {\n return function AggResponseBucketsProvider() {\n var _ = require('lodash');\n\n function Buckets(aggResp) {\n aggResp = aggResp || false;\n this.buckets = aggResp.buckets || [];\n this.objectMode = _.isPlainObject(this.buckets);\n\n if (this.objectMode) {\n this._keys = _.keys(this.buckets);\n this.length = this._keys.length;\n } else {\n this.length = this.buckets.length;\n }\n }\n\n Buckets.prototype.forEach = function (fn) {\n var buckets = this.buckets;\n\n if (this.objectMode) {\n this._keys.forEach(function (key) {\n fn(buckets[key], key);\n });\n } else {\n buckets.forEach(function (bucket) {\n fn(bucket, bucket.key);\n });\n }\n };\n\n return Buckets;\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/tabify/_buckets.js\n ** module id = 656\n ** module chunks = 0\n **/","define(function (require) {\n return function GetColumnsProvider(Private) {\n var _ = require('lodash');\n var AggConfig = Private(require('components/vis/AggConfig'));\n\n return function getColumns(vis, minimal) {\n var aggs = vis.aggs.getResponseAggs();\n\n if (minimal == null) minimal = !vis.isHierarchical();\n\n if (!vis.aggs.bySchemaGroup.metrics) {\n aggs.push(new AggConfig(vis, {\n type: 'count',\n schema: vis.type.schemas.metrics[0].name\n }));\n }\n\n // pick the columns\n if (minimal) {\n return aggs.map(function (agg) {\n return { aggConfig: agg };\n });\n }\n\n // supposed to be bucket,...metrics,bucket,...metrics\n var columns = [];\n\n // seperate the metrics\n var grouped = _.groupBy(aggs, function (agg) {\n return agg.schema.group;\n });\n\n if (!grouped.buckets) {\n // return just the metrics, in column format\n return grouped.metrics.map(function (agg) {\n return { aggConfig: agg };\n });\n }\n\n // return the buckets, and after each place all of the metrics\n grouped.buckets.forEach(function (agg, i) {\n columns.push({ aggConfig: agg });\n grouped.metrics.forEach(function (metric) {\n columns.push({ aggConfig: metric });\n });\n });\n\n return columns;\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/tabify/_get_columns.js\n ** module id = 657\n ** module chunks = 0\n **/","define(function (require) {\n return function TabbedAggResponseWriterProvider(Private) {\n var _ = require('lodash');\n var Table = Private(require('components/agg_response/tabify/_table'));\n var TableGroup = Private(require('components/agg_response/tabify/_table_group'));\n var getColumns = Private(require('components/agg_response/tabify/_get_columns'));\n\n var AggConfigResult = require('components/vis/AggConfigResult');\n\n _.class(SplitAcr).inherits(AggConfigResult);\n function SplitAcr(agg, parent, key) {\n SplitAcr.Super.call(this, agg, parent, key, key);\n }\n\n /**\n * Writer class that collects information about an aggregation response and\n * produces a table, or a series of tables.\n *\n * @param {Vis} vis - the vis object to which the aggregation response correlates\n */\n function TabbedAggResponseWriter(vis, opts) {\n this.vis = vis;\n this.opts = opts || {};\n this.rowBuffer = [];\n\n var visIsHier = vis.isHierarchical();\n\n // do the options allow for splitting? we will only split if true and\n // tabify calls the split method.\n this.canSplit = this.opts.canSplit !== false;\n\n // should we allow partial rows to be included in the tables? if a\n // partial row is found, it is filled with empty strings ''\n this.partialRows = this.opts.partialRows == null ? visIsHier : this.opts.partialRows;\n\n // if true, we will not place metric columns after every bucket\n // even if the vis is hierarchical. if false, and the vis is\n // hierarchical, then we will display metric columns after\n // every bucket col\n this.minimalColumns = visIsHier ? !!this.opts.minimalColumns : true;\n\n // true if we can expect metrics to have been calculated\n // for every bucket\n this.metricsForAllBuckets = visIsHier;\n\n // if true, values will be wrapped in aggConfigResult objects which link them\n // to their aggConfig and enable the filterbar and tooltip formatters\n this.asAggConfigResults = !!this.opts.asAggConfigResults;\n\n this.columns = getColumns(vis, this.minimalColumns);\n this.aggStack = _.pluck(this.columns, 'aggConfig');\n\n this.root = new TableGroup();\n this.acrStack = [];\n this.splitStack = [this.root];\n }\n\n /**\n * Create a Table of TableGroup object, link it to it's parent (if any), and determine if\n * it's the root\n *\n * @param {boolean} group - is this a TableGroup or just a normal Table\n * @param {AggConfig} agg - the aggregation that create this table, only applies to groups\n * @param {any} key - the bucketKey that this table relates to\n * @return {Table/TableGroup} table - the created table\n */\n TabbedAggResponseWriter.prototype._table = function (group, agg, key) {\n var Class = (group) ? TableGroup : Table;\n var table = new Class();\n var parent = this.splitStack[0];\n\n if (group) {\n table.aggConfig = agg;\n table.key = key;\n table.title = (table.fieldFormatter()(key)) + ': ' + agg.makeLabel() ;\n }\n\n // link the parent and child\n table.$parent = parent;\n parent.tables.push(table);\n\n return table;\n };\n\n /**\n * Enter into a split table, called for each bucket of a splitting agg. The new table\n * is either created or located using the agg and key arguments, and then the block is\n * executed with the table as it's this context. Within this function, you should\n * walk into the remaining branches and end up writing some rows to the table.\n *\n * @param {aggConfig} agg - the aggConfig that created this split\n * @param {Buckets} buckets - the buckets produces by the agg\n * @param {function} block - a function to execute for each sub bucket\n */\n TabbedAggResponseWriter.prototype.split = function (agg, buckets, block) {\n var self = this;\n\n if (!self.canSplit) {\n throw new Error('attempted to split when splitting is disabled');\n }\n\n self._removeAggFromColumns(agg);\n\n buckets.forEach(function (bucket, key) {\n // find the existing split that we should extend\n var tableGroup = _.find(self.splitStack[0].tables, { aggConfig: agg, key: key });\n // create the split if it doesn't exist yet\n if (!tableGroup) tableGroup = self._table(true, agg, key);\n\n var splitAcr = false;\n if (self.asAggConfigResults) {\n splitAcr = self._injectParentSplit(agg, key);\n }\n\n // push the split onto the stack so that it will receive written tables\n self.splitStack.unshift(tableGroup);\n\n // call the block\n if (_.isFunction(block)) block.call(self, bucket, key);\n\n // remove the split from the stack\n self.splitStack.shift();\n splitAcr && _.pull(self.acrStack, splitAcr);\n });\n };\n\n TabbedAggResponseWriter.prototype._removeAggFromColumns = function (agg) {\n var i = _.findIndex(this.columns, function (col) {\n return col.aggConfig === agg;\n });\n\n // we must have already removed this column\n if (i === -1) return;\n\n this.columns.splice(i, 1);\n\n if (this.minimalColumns) return;\n\n // hierarchical vis creats additional columns for each bucket\n // we will remove those too\n var mCol = this.columns.splice(i, 1).pop();\n var mI = _.findIndex(this.aggStack, function (agg) {\n return agg === mCol.aggConfig;\n });\n\n if (mI > -1) this.aggStack.splice(mI, 1);\n };\n\n /**\n * When a split is found while building the aggConfigResult tree, we\n * want to push the split into the tree at another point. Since each\n * branch in the tree is a double-linked list we need do some special\n * shit to pull this off.\n *\n * @private\n * @param {AggConfig} - The agg which produced the split bucket\n * @param {any} - The value which identifies the bucket\n * @return {SplitAcr} - the AggConfigResult created for the split bucket\n */\n TabbedAggResponseWriter.prototype._injectParentSplit = function (agg, key) {\n var oldList = this.acrStack;\n var newList = this.acrStack = [];\n\n // walk from right to left through the old stack\n // and move things to the new stack\n var injected = false;\n\n if (!oldList.length) {\n injected = new SplitAcr(agg, null, key);\n newList.unshift(injected);\n return injected;\n }\n\n // walk from right to left, emptying the previous list\n while (oldList.length) {\n var acr = oldList.pop();\n\n // ignore other splits\n if (acr instanceof SplitAcr) {\n newList.unshift(acr);\n continue;\n }\n\n // inject the split\n if (!injected) {\n injected = new SplitAcr(agg, newList[0], key);\n newList.unshift(injected);\n }\n\n var newAcr = new AggConfigResult(acr.aggConfig, newList[0], acr.value, acr.aggConfig.getKey(acr));\n newList.unshift(newAcr);\n\n // and replace the acr in the row buffer if its there\n var rowI = this.rowBuffer.indexOf(acr);\n if (rowI > -1) {\n this.rowBuffer[rowI] = newAcr;\n }\n }\n\n return injected;\n };\n\n /**\n * Push a value into the row, then run a block. Once the block is\n * complete the value is pulled from the stack.\n *\n * @param {any} value - the value that should be added to the row\n * @param {function} block - the function to run while this value is in the row\n * @return {any} - the value that was added\n */\n TabbedAggResponseWriter.prototype.cell = function (agg, value, block) {\n if (this.asAggConfigResults) {\n value = new AggConfigResult(agg, this.acrStack[0], value, value);\n }\n\n var staskResult = this.asAggConfigResults && value.type === 'bucket';\n\n this.rowBuffer.push(value);\n if (staskResult) this.acrStack.unshift(value);\n\n if (_.isFunction(block)) block.call(this);\n\n this.rowBuffer.pop(value);\n if (staskResult) this.acrStack.shift();\n\n return value;\n };\n\n /**\n * Create a new row by reading the row buffer. This will do nothing if\n * the row is incomplete and the vis this data came from is NOT flagged as\n * hierarchical.\n *\n * @param {array} [buffer] - optional buffer to use in place of the stored rowBuffer\n * @return {undefined}\n */\n TabbedAggResponseWriter.prototype.row = function (buffer) {\n var cells = buffer || this.rowBuffer.slice(0);\n\n if (!this.partialRows && cells.length < this.columns.length) {\n return;\n }\n\n var split = this.splitStack[0];\n var table = split.tables[0] || this._table(false);\n\n while (cells.length < this.columns.length) cells.push('');\n table.rows.push(cells);\n return table;\n };\n\n /**\n * Get the actual response\n *\n * @return {object} - the final table-tree\n */\n TabbedAggResponseWriter.prototype.response = function () {\n var columns = this.columns;\n\n // give the columns some metadata\n columns.map(function (col) {\n col.title = col.aggConfig.makeLabel();\n });\n\n // walk the tree and write the columns to each table\n (function step(table, group) {\n if (table.tables) table.tables.forEach(step);\n else table.columns = columns.slice(0);\n }(this.root));\n\n if (this.canSplit) return this.root;\n\n var table = this.root.tables[0];\n if (!table) return;\n\n delete table.$parent;\n return table;\n };\n\n return TabbedAggResponseWriter;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/tabify/_response_writer.js\n ** module id = 658\n ** module chunks = 0\n **/","define(function (require) {\n return function TableGroupProvider() {\n var _ = require('lodash');\n\n /**\n * Simple object that wraps multiple tables. It contains information about the aggConfig\n * and bucket that created this group and a list of the tables within it.\n */\n function TableGroup() {\n this.aggConfig = null;\n this.key = null;\n this.title = null;\n this.tables = [];\n }\n\n TableGroup.prototype.field = function () {\n if (this.aggConfig) return this.aggConfig.field();\n };\n\n TableGroup.prototype.fieldFormatter = function () {\n if (this.aggConfig) return this.aggConfig.fieldFormatter();\n };\n\n return TableGroup;\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_response/tabify/_table_group.js\n ** module id = 659\n ** module chunks = 0\n **/","define(function (require) {\n require('components/compile_recursive_directive');\n require('components/agg_table/agg_table');\n\n require('modules')\n .get('kibana')\n .directive('kbnAggTableGroup', function (compileRecursiveDirective) {\n return {\n restrict: 'E',\n template: require('components/agg_table/agg_table_group.html'),\n scope: {\n group: '=',\n perPage: '=?'\n },\n compile: function ($el) {\n // Use the compile function from the RecursionHelper,\n // And return the linking function(s) which it returns\n return compileRecursiveDirective.compile($el, {\n post: function ($scope) {\n $scope.$watch('group', function (group) {\n // clear the previous \"state\"\n $scope.rows = $scope.columns = false;\n\n if (!group || !group.tables.length) return;\n\n var firstTable = group.tables[0];\n var params = firstTable.aggConfig && firstTable.aggConfig.params;\n // render groups that have Table children as if they were rows, because itteration is cleaner\n var childLayout = (params && !params.row) ? 'columns' : 'rows';\n\n $scope[childLayout] = group.tables;\n });\n }\n });\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_table/agg_table_group.js\n ** module id = 660\n ** module chunks = 0\n **/","define(function (require) {\n return function BucketCountBetweenUtil() {\n\n /**\n * Count the number of bucket aggs between two agg config objects owned\n * by the same vis.\n *\n * If one of the two aggs was not found in the agg list, returns null.\n * If a was found after b, the count will be negative\n * If a was found first, the count will be positive.\n *\n * @param {AggConfig} aggConfigA - the aggConfig that is expected first\n * @param {AggConfig} aggConfigB - the aggConfig that is expected second\n * @return {null|number}\n */\n function bucketCountBetween(aggConfigA, aggConfigB) {\n var aggs = aggConfigA.vis.aggs.getRequestAggs();\n\n var aIndex = aggs.indexOf(aggConfigA);\n var bIndex = aggs.indexOf(aggConfigB);\n\n if (aIndex === -1 || bIndex === -1) {\n return null;\n }\n\n // return a negative distance, if b is before a\n var negative = (aIndex > bIndex);\n\n var count = aggs\n .slice(Math.min(aIndex, bIndex), Math.max(aIndex, bIndex))\n .reduce(function (count, cfg) {\n if (cfg === aggConfigA || cfg === aggConfigB || cfg.schema.group !== 'buckets') {\n return count;\n } else {\n return count + 1;\n }\n }, 0);\n\n return (negative ? -1 : 1) * count;\n }\n\n return bucketCountBetween;\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/_bucket_count_between.js\n ** module id = 661\n ** module chunks = 0\n **/","define(function (require) {\n return function createDateHistogramFilterProvider(Private) {\n var moment = require('moment');\n var buildRangeFilter = require('components/filter_manager/lib/range');\n\n return function (agg, key) {\n var start = moment(key);\n var interval = agg.buckets.getInterval();\n\n return buildRangeFilter(agg.params.field, {\n gte: start.valueOf(),\n lte: start.add(interval).subtract(1, 'ms').valueOf()\n }, agg.vis.indexPattern);\n };\n\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/create_filter/date_histogram.js\n ** module id = 662\n ** module chunks = 0\n **/","define(function (require) {\n var dateRange = require('utils/date_range');\n\n return function createDateRangeFilterProvider(config) {\n var buildRangeFilter = require('components/filter_manager/lib/range');\n\n return function (agg, key) {\n var range = dateRange.parse(key, config.get('dateFormat'));\n\n var filter = {};\n if (range.from) filter.gte = +range.from;\n if (range.to) filter.lt = +range.to;\n if (range.to && range.from) filter.format = 'epoch_millis';\n\n return buildRangeFilter(agg.params.field, filter, agg.vis.indexPattern);\n };\n\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/create_filter/date_range.js\n ** module id = 663\n ** module chunks = 0\n **/","define(function (require) {\n var buildQueryFilter = require('components/filter_manager/lib/query');\n var _ = require('lodash');\n return function CreateFilterFiltersProvider(Private) {\n return function (aggConfig, key) {\n // have the aggConfig write agg dsl params\n var dslFilters = _.get(aggConfig.toDsl(), 'filters.filters');\n var filter = dslFilters[key];\n\n if (filter) {\n return buildQueryFilter(filter.query, aggConfig.vis.indexPattern.id);\n }\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/create_filter/filters.js\n ** module id = 664\n ** module chunks = 0\n **/","define(function (require) {\n var buildRangeFilter = require('components/filter_manager/lib/range');\n\n return function createHistogramFitlerProvider(Private) {\n return function (aggConfig, key) {\n var value = parseInt(key, 10);\n\n return buildRangeFilter(aggConfig.params.field, {\n gte: value,\n lt: value + aggConfig.params.interval\n }, aggConfig.vis.indexPattern);\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/create_filter/histogram.js\n ** module id = 665\n ** module chunks = 0\n **/","define(function (require) {\n var CidrMask = require('utils/cidr_mask');\n var buildRangeFilter = require('components/filter_manager/lib/range');\n return function createIpRangeFilterProvider() {\n return function (aggConfig, key) {\n var range;\n if (aggConfig.params.ipRangeType === 'mask') {\n range = new CidrMask(key).getRange();\n } else {\n var addresses = key.split(/\\-/);\n range = {\n from: addresses[0],\n to: addresses[1]\n };\n }\n\n return buildRangeFilter(aggConfig.params.field, {gte: range.from, lte: range.to}, aggConfig.vis.indexPattern);\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/create_filter/ip_range.js\n ** module id = 666\n ** module chunks = 0\n **/","define(function (require) {\n var buildRangeFilter = require('components/filter_manager/lib/range');\n return function createRangeFilterProvider(Private) {\n return function (aggConfig, key) {\n var splits = key.split(/\\-/);\n var gte = Number(splits[0]);\n var lt = Number(splits[1]);\n return buildRangeFilter(aggConfig.params.field, {\n gte: gte,\n lt: lt\n }, aggConfig.vis.indexPattern);\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/create_filter/range.js\n ** module id = 667\n ** module chunks = 0\n **/","define(function (require) {\n return function DateHistogramAggType(timefilter, config, Private) {\n var _ = require('lodash');\n var moment = require('moment');\n var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type'));\n var TimeBuckets = Private(require('components/time_buckets/time_buckets'));\n var createFilter = Private(require('components/agg_types/buckets/create_filter/date_histogram'));\n var intervalOptions = Private(require('components/agg_types/buckets/_interval_options'));\n\n var tzOffset = moment().format('Z');\n\n function getInterval(agg) {\n var interval = _.get(agg, ['params', 'interval']);\n if (interval && interval.val === 'custom') interval = _.get(agg, ['params', 'customInterval']);\n return interval;\n }\n\n function setBounds(agg, force) {\n if (agg.buckets._alreadySet && !force) return;\n agg.buckets._alreadySet = true;\n agg.buckets.setBounds(agg.fieldIsTimeField() && timefilter.getActiveBounds());\n }\n\n require('filters/field_type');\n require('components/validateDateInterval');\n\n return new BucketAggType({\n name: 'date_histogram',\n title: 'Date Histogram',\n ordered: {\n date: true\n },\n makeLabel: function (agg) {\n var output = this.params.write(agg);\n var params = output.params;\n return params.field + ' per ' + (output.metricScaleText || output.bucketInterval.description);\n },\n createFilter: createFilter,\n decorateAggConfig: function () {\n var buckets;\n return {\n buckets: {\n configurable: true,\n get: function () {\n if (buckets) return buckets;\n\n buckets = new TimeBuckets();\n buckets.setInterval(getInterval(this));\n setBounds(this);\n\n return buckets;\n }\n }\n };\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: 'date',\n default: function (agg) {\n return agg.vis.indexPattern.timeFieldName;\n },\n onChange: function (agg) {\n if (_.get(agg, 'params.interval.val') === 'auto' && !agg.fieldIsTimeField()) {\n delete agg.params.interval;\n }\n\n setBounds(agg, true);\n }\n },\n\n {\n name: 'interval',\n type: 'optioned',\n deserialize: function (state) {\n var interval = _.find(intervalOptions, {val: state});\n return interval || _.find(intervalOptions, function (option) {\n // For upgrading from 4.0.x to 4.1.x - intervals are now stored as 'y' instead of 'year',\n // but this maps the old values to the new values\n return Number(moment.duration(1, state)) === Number(moment.duration(1, option.val));\n });\n },\n default: 'auto',\n options: intervalOptions,\n editor: require('components/agg_types/controls/interval.html'),\n onRequest: function (agg) {\n setBounds(agg, true);\n },\n write: function (agg, output) {\n setBounds(agg);\n agg.buckets.setInterval(getInterval(agg));\n\n var interval = agg.buckets.getInterval();\n output.bucketInterval = interval;\n output.params.interval = interval.expression;\n output.params.time_zone = tzOffset;\n\n var scaleMetrics = interval.scaled && interval.scale < 1;\n if (scaleMetrics) {\n scaleMetrics = _.every(agg.vis.aggs.bySchemaGroup.metrics, function (agg) {\n return agg.type && (agg.type.name === 'count' || agg.type.name === 'sum');\n });\n }\n\n if (scaleMetrics) {\n output.metricScale = interval.scale;\n output.metricScaleText = interval.preScaled.description;\n }\n }\n },\n\n {\n name: 'customInterval',\n default: '2h',\n write: _.noop\n },\n\n {\n name: 'format'\n },\n\n {\n name: 'min_doc_count',\n default: 1\n },\n\n {\n name: 'extended_bounds',\n default: {},\n write: function (agg, output) {\n var val = agg.params.extended_bounds;\n\n if (val.min != null || val.max != null) {\n output.params.extended_bounds = {\n min: moment(val.min).valueOf(),\n max: moment(val.max).valueOf()\n };\n\n return;\n }\n\n var bounds = timefilter.getActiveBounds();\n if (bounds) {\n output.params.extended_bounds = {\n min: moment(bounds.min).valueOf(),\n max: moment(bounds.max).valueOf()\n };\n }\n }\n }\n ]\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/date_histogram.js\n ** module id = 668\n ** module chunks = 0\n **/","define(function (require) {\n var moment = require('moment');\n var dateRange = require('utils/date_range');\n require('directives/validate_date_math');\n\n return function DateRangeAggDefinition(Private, config) {\n var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type'));\n var createFilter = Private(require('components/agg_types/buckets/create_filter/date_range'));\n var fieldFormats = Private(require('registry/field_formats'));\n\n\n return new BucketAggType({\n name: 'date_range',\n title: 'Date Range',\n createFilter: createFilter,\n getKey: function (bucket, key, agg) {\n var formatter;\n if (agg.field()) {\n formatter = agg.field().format.getConverterFor('text');\n } else {\n formatter = fieldFormats.getDefaultInstance('date').getConverterFor('text');\n }\n return dateRange.toString(bucket, formatter);\n },\n getFormat: function () {\n return fieldFormats.getDefaultInstance('string');\n },\n makeLabel: function (aggConfig) {\n return aggConfig.params.field.displayName + ' date ranges';\n },\n params: [{\n name: 'field',\n filterFieldTypes: 'date',\n default: function (agg) {\n return agg.vis.indexPattern.timeFieldName;\n }\n }, {\n name: 'ranges',\n default: [{\n from: 'now-1w/w',\n to: 'now'\n }],\n editor: require('components/agg_types/controls/date_ranges.html')\n }]\n });\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/date_range.js\n ** module id = 669\n ** module chunks = 0\n **/","define(function (require) {\n return function FiltersAggDefinition(Private, Notifier) {\n var _ = require('lodash');\n var angular = require('angular');\n var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type'));\n var createFilter = Private(require('components/agg_types/buckets/create_filter/filters'));\n var decorateQuery = Private(require('components/courier/data_source/_decorate_query'));\n var notif = new Notifier({ location: 'Filters Agg' });\n\n return new BucketAggType({\n name: 'filters',\n title: 'Filters',\n createFilter: createFilter,\n params: [\n {\n name: 'filters',\n editor: require('components/agg_types/controls/filters.html'),\n default: [ {input: {}, label: ''} ],\n write: function (aggConfig, output) {\n var inFilters = aggConfig.params.filters;\n if (!_.size(inFilters)) return;\n\n var outFilters = _.transform(inFilters, function (filters, filter) {\n var input = filter.input;\n if (!input) return notif.log('malformed filter agg params, missing \"input\" query');\n\n var query = input.query;\n if (!query) return notif.log('malformed filter agg params, missing \"query\" on input');\n\n decorateQuery(query);\n\n var label = filter.label || _.get(query, 'query_string.query') || angular.toJson(query);\n filters[label] = input;\n }, {});\n\n if (!_.size(outFilters)) return;\n\n var params = output.params || (output.params = {});\n params.filters = outFilters;\n }\n }\n ]\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/filters.js\n ** module id = 670\n ** module chunks = 0\n **/","define(function (require) {\n return function GeoHashAggDefinition(Private, config) {\n var _ = require('lodash');\n var moment = require('moment');\n var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type'));\n var defaultPrecision = 2;\n\n function getPrecision(precision) {\n var maxPrecision = _.parseInt(config.get('visualization:tileMap:maxPrecision'));\n\n precision = parseInt(precision, 10);\n\n if (isNaN(precision)) {\n precision = defaultPrecision;\n }\n\n if (precision > maxPrecision) {\n return maxPrecision;\n }\n\n return precision;\n }\n\n return new BucketAggType({\n name: 'geohash_grid',\n title: 'Geohash',\n params: [\n {\n name: 'field',\n filterFieldTypes: 'geo_point'\n },\n {\n name: 'autoPrecision',\n default: true,\n write: _.noop\n },\n {\n name: 'mapZoom',\n write: _.noop\n },\n {\n name: 'mapCenter',\n write: _.noop\n },\n {\n name: 'precision',\n default: defaultPrecision,\n editor: require('components/agg_types/controls/precision.html'),\n controller: function ($scope) {\n $scope.$watchMulti([\n 'agg.params.autoPrecision',\n 'outputAgg.params.precision'\n ], function (cur, prev) {\n if (cur[1]) $scope.agg.params.precision = cur[1];\n });\n },\n deserialize: getPrecision,\n write: function (aggConfig, output) {\n output.params.precision = getPrecision(aggConfig.params.precision);\n }\n }\n ]\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/geo_hash.js\n ** module id = 671\n ** module chunks = 0\n **/","define(function (require) {\n return function HistogramAggDefinition(Private) {\n var _ = require('lodash');\n var moment = require('moment');\n var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type'));\n var createFilter = Private(require('components/agg_types/buckets/create_filter/histogram'));\n\n require('components/validateDateInterval');\n\n return new BucketAggType({\n name: 'histogram',\n title: 'Histogram',\n ordered: {},\n makeLabel: function (aggConfig) {\n return aggConfig.params.field.displayName;\n },\n createFilter: createFilter,\n params: [\n {\n name: 'field',\n filterFieldTypes: 'number'\n },\n\n {\n name: 'interval',\n editor: require('components/agg_types/controls/interval.html'),\n write: function (aggConfig, output) {\n output.params.interval = parseInt(aggConfig.params.interval, 10);\n }\n },\n\n {\n name: 'min_doc_count',\n default: null,\n editor: require('components/agg_types/controls/min_doc_count.html'),\n write: function (aggConfig, output) {\n if (aggConfig.params.min_doc_count) {\n output.params.min_doc_count = 0;\n }\n }\n },\n\n {\n name: 'extended_bounds',\n default: {},\n editor: require('components/agg_types/controls/extended_bounds.html'),\n write: function (aggConfig, output) {\n var val = aggConfig.params.extended_bounds;\n\n if (val.min != null || val.max != null) {\n output.params.extended_bounds = {\n min: val.min,\n max: val.max\n };\n }\n },\n\n // called from the editor\n shouldShow: function (aggConfig) {\n var field = aggConfig.params.field;\n if (\n field\n && (field.type === 'number' || field.type === 'date')\n ) {\n return aggConfig.params.min_doc_count;\n }\n }\n }\n ]\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/histogram.js\n ** module id = 672\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n require('directives/validate_ip');\n require('directives/validate_cidr_mask');\n\n return function RangeAggDefinition(Private) {\n var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type'));\n var createFilter = Private(require('components/agg_types/buckets/create_filter/ip_range'));\n\n return new BucketAggType({\n name: 'ip_range',\n title: 'IPv4 Range',\n createFilter: createFilter,\n makeLabel: function (aggConfig) {\n return aggConfig.params.field.displayName + ' IP ranges';\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: 'ip'\n }, {\n name: 'ipRangeType',\n default: 'fromTo',\n write: _.noop\n }, {\n name: 'ranges',\n default: {\n fromTo: [\n {from: '0.0.0.0', to: '127.255.255.255'},\n {from: '128.0.0.0', to: '191.255.255.255'}\n ],\n mask: [\n {mask: '0.0.0.0/1'},\n {mask: '128.0.0.0/2'}\n ]\n },\n editor: require('components/agg_types/controls/ip_ranges.html'),\n write: function (aggConfig, output) {\n var ipRangeType = aggConfig.params.ipRangeType;\n output.params.ranges = aggConfig.params.ranges[ipRangeType];\n }\n }\n ]\n });\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/ip_range.js\n ** module id = 673\n ** module chunks = 0\n **/","define(function (require) {\n return function RangeAggDefinition(Private) {\n var _ = require('lodash');\n var moment = require('moment');\n var angular = require('angular');\n var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type'));\n var createFilter = Private(require('components/agg_types/buckets/create_filter/range'));\n\n return new BucketAggType({\n name: 'range',\n title: 'Range',\n createFilter: createFilter,\n makeLabel: function (aggConfig) {\n return aggConfig.params.field.displayName + ' ranges';\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: ['number']\n },\n {\n name: 'ranges',\n default: [\n { from: 0, to: 1000 },\n { from: 1000, to: 2000 }\n ],\n editor: require('components/agg_types/controls/ranges.html'),\n write: function (aggConfig, output) {\n output.params.ranges = aggConfig.params.ranges;\n output.params.keyed = true;\n }\n }\n ]\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/range.js\n ** module id = 674\n ** module chunks = 0\n **/","define(function (require) {\n return function SignificantTermsAggDefinition(Private) {\n var _ = require('lodash');\n var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type'));\n var createFilter = Private(require('components/agg_types/buckets/create_filter/terms'));\n\n return new BucketAggType({\n name: 'significant_terms',\n title: 'Significant Terms',\n makeLabel: function (aggConfig) {\n return 'Top ' + aggConfig.params.size + ' unusual terms in ' + aggConfig.params.field.displayName;\n },\n createFilter: createFilter,\n params: [\n {\n name: 'field',\n filterFieldTypes: 'string'\n },\n {\n name: 'size',\n editor: require('components/agg_types/controls/order_and_size.html'),\n },\n {\n name: 'exclude',\n type: 'regex',\n advanced: true\n },\n {\n name: 'include',\n type: 'regex',\n advanced: true\n }\n ]\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/significant_terms.js\n ** module id = 675\n ** module chunks = 0\n **/","define(function (require) {\n return function TermsAggDefinition(Private) {\n var _ = require('lodash');\n var BucketAggType = Private(require('components/agg_types/buckets/_bucket_agg_type'));\n var bucketCountBetween = Private(require('components/agg_types/buckets/_bucket_count_between'));\n var AggConfig = Private(require('components/vis/AggConfig'));\n var Schemas = Private(require('components/vis/Schemas'));\n var createFilter = Private(require('components/agg_types/buckets/create_filter/terms'));\n\n var orderAggSchema = (new Schemas([\n {\n group: 'none',\n name: 'orderAgg',\n title: 'Order Agg',\n aggFilter: ['!percentiles', '!std_dev']\n }\n ])).all[0];\n\n function isNotType(type) {\n return function (agg) {\n var field = agg.params.field;\n return !field || field.type !== type;\n };\n }\n\n return new BucketAggType({\n name: 'terms',\n title: 'Terms',\n makeLabel: function (agg) {\n var params = agg.params;\n return params.field.displayName + ': ' + params.order.display;\n },\n createFilter: createFilter,\n params: [\n {\n name: 'field',\n scriptable: true,\n filterFieldTypes: ['number', 'boolean', 'date', 'ip', 'string']\n },\n {\n name: 'exclude',\n type: 'regex',\n advanced: true,\n disabled: isNotType('string')\n },\n {\n name: 'include',\n type: 'regex',\n advanced: true,\n disabled: isNotType('string')\n },\n {\n name: 'size',\n default: 5\n },\n {\n name: 'orderAgg',\n type: AggConfig,\n default: null,\n editor: require('components/agg_types/controls/order_agg.html'),\n serialize: function (orderAgg) {\n return orderAgg.toJSON();\n },\n deserialize: function (state, agg) {\n return this.makeOrderAgg(agg, state);\n },\n makeOrderAgg: function (termsAgg, state) {\n state = state || {};\n state.schema = orderAggSchema;\n var orderAgg = new AggConfig(termsAgg.vis, state);\n orderAgg.id = termsAgg.id + '-orderAgg';\n return orderAgg;\n },\n controller: function ($scope) {\n $scope.safeMakeLabel = function (agg) {\n try {\n return agg.makeLabel();\n } catch (e) {\n return '- agg not valid -';\n }\n };\n\n var INIT = {}; // flag to know when prevOrderBy has changed\n var prevOrderBy = INIT;\n\n $scope.$watch('responseValueAggs', updateOrderAgg);\n $scope.$watch('agg.params.orderBy', updateOrderAgg);\n\n function updateOrderAgg() {\n var agg = $scope.agg;\n var aggs = agg.vis.aggs;\n var params = agg.params;\n var orderBy = params.orderBy;\n var paramDef = agg.type.params.byName.orderAgg;\n\n // setup the initial value of orderBy\n if (!orderBy && prevOrderBy === INIT) {\n // abort until we get the responseValueAggs\n if (!$scope.responseValueAggs) return;\n params.orderBy = (_.first($scope.responseValueAggs) || { id: 'custom' }).id;\n return;\n }\n\n // track the previous value\n prevOrderBy = orderBy;\n\n // we aren't creating a custom aggConfig\n if (!orderBy || orderBy !== 'custom') {\n params.orderAgg = null;\n\n if (orderBy === '_term') {\n params.orderBy = '_term';\n return;\n }\n\n // ensure that orderBy is set to a valid agg\n if (!_.find($scope.responseValueAggs, { id: orderBy })) {\n params.orderBy = null;\n }\n return;\n }\n\n params.orderAgg = params.orderAgg || paramDef.makeOrderAgg(agg);\n }\n },\n write: function (agg, output) {\n var vis = agg.vis;\n var dir = agg.params.order.val;\n var order = output.params.order = {};\n\n var orderAgg = agg.params.orderAgg || vis.aggs.getResponseAggById(agg.params.orderBy);\n\n // TODO: This works around an Elasticsearch bug the always casts terms agg scripts to strings\n // thus causing issues with filtering. This probably causes other issues since float might not\n // be able to contain the number on the elasticsearch side\n if (output.params.script) {\n output.params.valueType = agg.field().type === 'number' ? 'float' : agg.field().type;\n }\n\n if (!orderAgg) {\n order[agg.params.orderBy || '_count'] = dir;\n return;\n }\n\n if (orderAgg.type.name === 'count') {\n order._count = dir;\n return;\n }\n\n var orderAggId = orderAgg.id;\n if (orderAgg.parentId) {\n orderAgg = vis.aggs.byId[orderAgg.parentId];\n }\n\n output.subAggs = (output.subAggs || []).concat(orderAgg);\n order[orderAggId] = dir;\n }\n },\n {\n name: 'order',\n type: 'optioned',\n default: 'desc',\n editor: require('components/agg_types/controls/order_and_size.html'),\n options: [\n { display: 'Descending', val: 'desc' },\n { display: 'Ascending', val: 'asc' }\n ],\n write: _.noop // prevent default write, it's handled by orderAgg\n },\n {\n name: 'orderBy',\n write: _.noop // prevent default write, it's handled by orderAgg\n }\n ]\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/buckets/terms.js\n ** module id = 676\n ** module chunks = 0\n **/","define(function (require) {\n return function AggTypeMetricAvgProvider(Private) {\n var MetricAggType = Private(require('components/agg_types/metrics/_metric_agg_type'));\n\n return new MetricAggType({\n name: 'avg',\n title: 'Average',\n makeLabel: function (aggConfig) {\n return 'Average ' + aggConfig.params.field.displayName;\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: 'number'\n }\n ]\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/metrics/avg.js\n ** module id = 677\n ** module chunks = 0\n **/","define(function (require) {\n return function AggTypeMetricCardinalityProvider(Private) {\n var MetricAggType = Private(require('components/agg_types/metrics/_metric_agg_type'));\n var fieldFormats = Private(require('registry/field_formats'));\n\n return new MetricAggType({\n name: 'cardinality',\n title: 'Unique Count',\n makeLabel: function (aggConfig) {\n return 'Unique count of ' + aggConfig.params.field.displayName;\n },\n getFormat: function () {\n return fieldFormats.getDefaultInstance('number');\n },\n params: [\n {\n name: 'field'\n }\n ]\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/metrics/cardinality.js\n ** module id = 678\n ** module chunks = 0\n **/","define(function (require) {\n return function AggTypeMetricCountProvider(Private) {\n var MetricAggType = Private(require('components/agg_types/metrics/_metric_agg_type'));\n var fieldFormats = Private(require('registry/field_formats'));\n\n return new MetricAggType({\n name: 'count',\n title: 'Count',\n hasNoDsl: true,\n makeLabel: function () {\n return 'Count';\n },\n getFormat: function () {\n return fieldFormats.getDefaultInstance('number');\n },\n getValue: function (agg, bucket) {\n return bucket.doc_count;\n }\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/metrics/count.js\n ** module id = 679\n ** module chunks = 0\n **/","define(function (require) {\n return function AggTypeMetricMaxProvider(Private) {\n var MetricAggType = Private(require('components/agg_types/metrics/_metric_agg_type'));\n\n return new MetricAggType({\n name: 'max',\n title: 'Max',\n makeLabel: function (aggConfig) {\n return 'Max ' + aggConfig.params.field.displayName;\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: 'number,date'\n }\n ]\n });\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/metrics/max.js\n ** module id = 680\n ** module chunks = 0\n **/","define(function (require) {\n return function AggTypeMetricMinProvider(Private) {\n var MetricAggType = Private(require('components/agg_types/metrics/_metric_agg_type'));\n\n return new MetricAggType({\n name: 'min',\n title: 'Min',\n makeLabel: function (aggConfig) {\n return 'Min ' + aggConfig.params.field.displayName;\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: 'number,date'\n }\n ]\n });\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/metrics/min.js\n ** module id = 681\n ** module chunks = 0\n **/","define(function (require) {\n return function AggTypeMetricPercentileRanksProvider(Private) {\n var _ = require('lodash');\n\n var MetricAggType = Private(require('components/agg_types/metrics/_metric_agg_type'));\n var getResponseAggConfig = Private(require('components/agg_types/metrics/_get_response_agg_config'));\n var fieldFormats = Private(require('registry/field_formats'));\n\n var valuesEditor = require('components/agg_types/controls/percentile_ranks.html');\n // required by the values editor\n require('components/number_list/number_list');\n\n var valueProps = {\n makeLabel: function () {\n var field = this.field();\n var format = (field && field.format) || fieldFormats.getDefaultInstance('number');\n\n return 'Percentile rank ' + format.convert(this.key, 'text') + ' of \"' + this.fieldDisplayName() + '\"';\n }\n };\n\n return new MetricAggType({\n name: 'percentile_ranks',\n title: 'Percentile Ranks',\n makeLabel: function (agg) {\n return 'Percentile ranks of ' + agg.fieldDisplayName();\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: 'number'\n },\n {\n name: 'values',\n editor: valuesEditor,\n default: []\n }\n ],\n getResponseAggs: function (agg) {\n var ValueAggConfig = getResponseAggConfig(agg, valueProps);\n\n return agg.params.values.map(function (value) {\n return new ValueAggConfig(value);\n });\n },\n getFormat: function () {\n return fieldFormats.getInstance('percent') || fieldFormats.getDefaultInstance('number');\n },\n getValue: function (agg, bucket) {\n // values for 1, 5, and 10 will come back as 1.0, 5.0, and 10.0 so we\n // parse the keys and respond with the value that matches\n return _.find(bucket[agg.parentId].values, function (value, key) {\n return agg.key === parseFloat(key);\n }) / 100;\n }\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/metrics/percentile_ranks.js\n ** module id = 682\n ** module chunks = 0\n **/","define(function (require) {\n return function AggTypeMetricPercentilesProvider(Private) {\n var _ = require('lodash');\n\n var MetricAggType = Private(require('components/agg_types/metrics/_metric_agg_type'));\n var getResponseAggConfig = Private(require('components/agg_types/metrics/_get_response_agg_config'));\n var ordinalSuffix = require('utils/ordinal_suffix');\n var fieldFormats = Private(require('registry/field_formats'));\n\n var percentsEditor = require('components/agg_types/controls/percentiles.html');\n // required by the percentiles editor\n require('components/number_list/number_list');\n\n var valueProps = {\n makeLabel: function () {\n return ordinalSuffix(this.key) + ' percentile of ' + this.fieldDisplayName();\n }\n };\n\n return new MetricAggType({\n name: 'percentiles',\n title: 'Percentiles',\n makeLabel: function (agg) {\n return 'Percentiles of ' + agg.fieldDisplayName();\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: 'number'\n },\n {\n name: 'percents',\n editor: percentsEditor,\n default: [1, 5, 25, 50, 75, 95, 99]\n }\n ],\n getResponseAggs: function (agg) {\n var ValueAggConfig = getResponseAggConfig(agg, valueProps);\n\n return agg.params.percents.map(function (percent) {\n return new ValueAggConfig(percent);\n });\n },\n getValue: function (agg, bucket) {\n // percentiles for 1, 5, and 10 will come back as 1.0, 5.0, and 10.0 so we\n // parse the keys and respond with the value that matches\n return _.find(bucket[agg.parentId].values, function (value, key) {\n return agg.key === parseFloat(key);\n });\n }\n });\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/metrics/percentiles.js\n ** module id = 683\n ** module chunks = 0\n **/","define(function (require) {\n return function AggTypeMetricStandardDeviationProvider(Private) {\n var _ = require('lodash');\n var MetricAggType = Private(require('components/agg_types/metrics/_metric_agg_type'));\n var getResponseAggConfig = Private(require('components/agg_types/metrics/_get_response_agg_config'));\n\n var responseAggConfigProps = {\n valProp: function () {\n var details = this.keyedDetails[this.key];\n return details.valProp;\n },\n makeLabel: function () {\n var details = this.keyedDetails[this.key];\n return details.title + ' of ' + this.fieldDisplayName();\n },\n keyedDetails: {\n std_lower: {\n valProp: ['std_deviation_bounds', 'lower'],\n title: 'Lower Standard Deviation'\n },\n avg: {\n valProp: 'avg',\n title: 'Average'\n },\n std_upper: {\n valProp: ['std_deviation_bounds', 'upper'],\n title: 'Upper Standard Deviation'\n }\n }\n };\n\n return new MetricAggType({\n name: 'std_dev',\n dslName: 'extended_stats',\n title: 'Standard Deviation',\n makeLabel: function (agg) {\n return 'Standard Deviation of ' + agg.fieldDisplayName();\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: 'number'\n }\n ],\n\n getResponseAggs: function (agg) {\n var ValueAggConfig = getResponseAggConfig(agg, responseAggConfigProps);\n\n return [\n new ValueAggConfig('std_lower'),\n new ValueAggConfig('avg'),\n new ValueAggConfig('std_upper')\n ];\n },\n\n getValue: function (agg, bucket) {\n return _.get(bucket[agg.parentId], agg.valProp());\n }\n });\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/metrics/std_deviation.js\n ** module id = 684\n ** module chunks = 0\n **/","define(function (require) {\n return function AggTypeMetricSumProvider(Private) {\n var MetricAggType = Private(require('components/agg_types/metrics/_metric_agg_type'));\n\n return new MetricAggType({\n name: 'sum',\n title: 'Sum',\n makeLabel: function (aggConfig) {\n return 'Sum of ' + aggConfig.params.field.displayName;\n },\n params: [\n {\n name: 'field',\n filterFieldTypes: 'number'\n }\n ]\n });\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/metrics/sum.js\n ** module id = 685\n ** module chunks = 0\n **/","define(function (require) {\n return function FieldAggParamFactory(Private) {\n var _ = require('lodash');\n\n var editorHtml = require('components/agg_types/controls/field.html');\n var BaseAggParam = Private(require('components/agg_types/param_types/base'));\n var SavedObjectNotFound = require('errors').SavedObjectNotFound;\n\n _.class(FieldAggParam).inherits(BaseAggParam);\n function FieldAggParam(config) {\n FieldAggParam.Super.call(this, config);\n }\n\n FieldAggParam.prototype.editor = editorHtml;\n FieldAggParam.prototype.scriptable = false;\n FieldAggParam.prototype.filterFieldTypes = '*';\n\n /**\n * Called to serialize values for saving an aggConfig object\n *\n * @param {field} field - the field that was selected\n * @return {string}\n */\n FieldAggParam.prototype.serialize = function (field) {\n return field.name;\n };\n\n /**\n * Called to read values from a database record into the\n * aggConfig object\n *\n * @param {string} fieldName\n * @return {field}\n */\n FieldAggParam.prototype.deserialize = function (fieldName, aggConfig) {\n var field = aggConfig.vis.indexPattern.fields.byName[fieldName];\n\n if (!field) {\n throw new SavedObjectNotFound('index-pattern-field', fieldName);\n }\n\n return field;\n };\n\n /**\n * Write the aggregation parameter.\n *\n * @param {AggConfig} aggConfig - the entire configuration for this agg\n * @param {object} output - the result of calling write on all of the aggregations\n * parameters.\n * @param {object} output.params - the final object that will be included as the params\n * for the agg\n * @return {undefined}\n */\n FieldAggParam.prototype.write = function (aggConfig, output) {\n var field = aggConfig.params.field;\n\n if (field.scripted) {\n output.params.script = field.script;\n output.params.lang = field.lang;\n } else {\n output.params.field = field.name;\n }\n };\n\n return FieldAggParam;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/param_types/field.js\n ** module id = 686\n ** module chunks = 0\n **/","define(function (require) {\n return function OptionedAggParamFactory(Private) {\n var _ = require('lodash');\n\n var IndexedArray = require('components/indexed_array/index');\n var BaseAggParam = Private(require('components/agg_types/param_types/base'));\n\n _.class(OptionedAggParam).inherits(BaseAggParam);\n function OptionedAggParam(config) {\n OptionedAggParam.Super.call(this, config);\n\n this.options = new IndexedArray({\n index: ['val'],\n immutable: true,\n initialSet: this.options\n });\n }\n\n /**\n * Serialize a selection to be stored in the database\n * @param {object} selected - the option that was selected\n * @return {any}\n */\n OptionedAggParam.prototype.serialize = function (selected) {\n return selected.val;\n };\n\n /**\n * Take a value that was serialized to the database and\n * return the option that is represents\n *\n * @param {any} val - the value that was saved\n * @return {object}\n */\n OptionedAggParam.prototype.deserialize = function (val) {\n return this.options.byVal[val];\n };\n\n /**\n * Write the aggregation parameter.\n *\n * @param {AggConfig} aggConfig - the entire configuration for this agg\n * @param {object} output - the result of calling write on all of the aggregations\n * parameters.\n * @param {object} output.params - the final object that will be included as the params\n * for the agg\n * @return {undefined}\n */\n OptionedAggParam.prototype.write = function (aggConfig, output) {\n output.params[this.name] = aggConfig.params[this.name].val;\n };\n\n return OptionedAggParam;\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/param_types/optioned.js\n ** module id = 687\n ** module chunks = 0\n **/","define(function (require) {\n return function RawJSONAggParamFactory(Private) {\n var _ = require('lodash');\n\n var BaseAggParam = Private(require('components/agg_types/param_types/base'));\n var editorHtml = require('components/agg_types/controls/raw_json.html');\n\n _.class(RawJSONAggParam).inherits(BaseAggParam);\n function RawJSONAggParam(config) {\n // force name override\n config = _.defaults(config, { name: 'json' });\n RawJSONAggParam.Super.call(this, config);\n }\n\n RawJSONAggParam.prototype.editor = editorHtml;\n\n /**\n * Write the aggregation parameter.\n *\n * @param {AggConfig} aggConfig - the entire configuration for this agg\n * @param {object} output - the result of calling write on all of the aggregations\n * parameters.\n * @param {object} output.params - the final object that will be included as the params\n * for the agg\n * @return {undefined}\n */\n RawJSONAggParam.prototype.write = function (aggConfig, output) {\n var paramJSON;\n var param = aggConfig.params[this.name];\n\n if (!param) {\n return;\n }\n\n // handle invalid JSON input\n try {\n paramJSON = JSON.parse(param);\n } catch (err) {\n return;\n }\n\n function filteredCombine(srcA, srcB) {\n function mergeObjs(a, b) {\n return _(a)\n .keys()\n .union(_.keys(b))\n .transform(function (dest, key) {\n var val = compare(a[key], b[key]);\n if (val !== undefined) dest[key] = val;\n }, {})\n .value();\n }\n\n function mergeArrays(a, b) {\n // attempt to merge each value\n return _.times(Math.max(a.length, b.length), function (i) {\n return compare(a[i], b[i]);\n });\n }\n\n function compare(a, b) {\n if (_.isPlainObject(a) && _.isPlainObject(b)) return mergeObjs(a, b);\n if (_.isArray(a) && _.isArray(b)) return mergeArrays(a, b);\n if (b === null) return undefined;\n if (b !== undefined) return b;\n return a;\n }\n\n return compare(srcA, srcB);\n }\n\n output.params = filteredCombine(output.params, paramJSON);\n return;\n };\n\n return RawJSONAggParam;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/param_types/raw_json.js\n ** module id = 688\n ** module chunks = 0\n **/","define(function (require) {\n return function RegexAggParamFactory(Private) {\n var _ = require('lodash');\n\n var BaseAggParam = Private(require('components/agg_types/param_types/base'));\n var editorHtml = require('components/agg_types/controls/regular_expression.html');\n\n _.class(RegexAggParam).inherits(BaseAggParam);\n function RegexAggParam(config) {\n // Java RegExp flags\n var flags = [\n 'CANON_EQ',\n 'CASE_INSENSITIVE',\n 'COMMENTS',\n 'DOTALL',\n 'LITERAL',\n 'MULTILINE',\n 'UNICODE_CASE',\n 'UNICODE_CHARACTER_CLASS',\n 'UNIX_LINES'\n ];\n\n _.defaults(config, { pattern: '', flags: flags });\n RegexAggParam.Super.call(this, config);\n }\n\n RegexAggParam.prototype.editor = editorHtml;\n\n /**\n * Disabled state of the agg param\n *\n * @return {bool}\n */\n RegexAggParam.prototype.disabled = function (aggConfig) {\n return false;\n };\n\n /**\n * Write the aggregation parameter.\n *\n * @param {AggConfig} aggConfig - the entire configuration for this agg\n * @param {object} output - the result of calling write on all of the aggregations\n * parameters.\n * @param {object} output.params - the final object that will be included as the params\n * for the agg\n * @return {undefined}\n */\n RegexAggParam.prototype.write = function (aggConfig, output) {\n var param = aggConfig.params[this.name];\n var paramType = aggConfig.type.params.byName[this.name];\n\n // clear aggParam if pattern is not set or is disabled\n if (!param || !param.pattern || !param.pattern.length || paramType.disabled(aggConfig)) {\n return;\n }\n\n var obj = {\n pattern: param.pattern\n };\n\n // include any selected flags\n if (_.isArray(param.flags) && param.flags.length) {\n obj.flags = param.flags.join('|');\n }\n\n output.params[this.name] = obj;\n };\n\n return RegexAggParam;\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/param_types/regex.js\n ** module id = 689\n ** module chunks = 0\n **/","define(function (require) {\n return function FieldAggParamFactory(Private) {\n var _ = require('lodash');\n\n var editorHtml = require('components/agg_types/controls/string.html');\n var BaseAggParam = Private(require('components/agg_types/param_types/base'));\n\n _.class(ScriptAggParam).inherits(BaseAggParam);\n function ScriptAggParam(config) {\n ScriptAggParam.Super.call(this, config);\n }\n\n ScriptAggParam.prototype.editor = editorHtml;\n\n /**\n * Write the aggregation parameter.\n *\n * @param {AggConfig} aggConfig - the entire configuration for this agg\n * @param {object} output - the result of calling write on all of the aggregations\n * parameters.\n * @param {object} output.params - the final object that will be included as the params\n * for the agg\n * @return {undefined}\n */\n ScriptAggParam.prototype.write = function (aggConfig, output) {\n if (aggConfig.params[this.name] && aggConfig.params[this.name].length)\n output.params[this.name] = aggConfig.params[this.name];\n };\n\n return ScriptAggParam;\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/agg_types/param_types/string.js\n ** module id = 690\n ** module chunks = 0\n **/","define(function (require) {\n require('components/collapsible_sidebar/collapsible_sidebar.less');\n\n var _ = require('lodash');\n var $ = require('jquery');\n\n require('modules')\n .get('kibana')\n .directive('collapsibleSidebar', function () {\n // simply a list of all of all of angulars .col-md-* classes except 12\n var listOfWidthClasses = _.times(11, function (i) { return 'col-md-' + i; });\n\n return {\n restrict: 'C',\n link: function ($scope, $elem) {\n var $collapser = $('
');\n var $siblings = $elem.siblings();\n\n var siblingsClass = listOfWidthClasses.reduce(function (prev, className) {\n if (prev) return prev;\n return $siblings.hasClass(className) && className;\n }, false);\n\n $collapser.on('click', function () {\n $elem.toggleClass('closed');\n // if there is are only two elements we can assume the other one will take 100% of the width\n if ($siblings.length === 1 && siblingsClass) {\n $siblings.toggleClass(siblingsClass + ' col-md-12');\n }\n })\n\n .appendTo($elem);\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/collapsible_sidebar/collapsible_sidebar.js\n ** module id = 691\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var module = require('modules').get('app/discover');\n\n require('filters/short_dots');\n\n module.directive('kbnTableHeader', function (shortDotsFilter) {\n var headerHtml = require('components/doc_table/components/table_header.html');\n return {\n restrict: 'A',\n scope: {\n columns: '=',\n sorting: '=',\n indexPattern: '=',\n },\n template: headerHtml,\n controller: function ($scope) {\n\n var sortableField = function (field) {\n if (!$scope.indexPattern) return;\n var sortable = _.get($scope.indexPattern.fields.byName[field], 'sortable');\n return sortable;\n };\n\n $scope.tooltip = function (column) {\n if (!sortableField(column)) return '';\n return 'Sort by ' + shortDotsFilter(column);\n };\n\n $scope.canRemove = function (name) {\n return (name !== '_source' || $scope.columns.length !== 1);\n };\n\n $scope.headerClass = function (column) {\n if (!sortableField(column)) return;\n\n var sorting = $scope.sorting;\n var defaultClass = ['fa', 'fa-sort-up', 'table-header-sortchange'];\n\n if (!sorting || column !== sorting[0]) return defaultClass;\n return ['fa', sorting[1] === 'asc' ? 'fa-sort-up' : 'fa-sort-down'];\n };\n\n $scope.moveLeft = function (column) {\n var index = _.indexOf($scope.columns, column);\n if (index === 0) return;\n\n _.move($scope.columns, index, --index);\n };\n\n $scope.moveRight = function (column) {\n var index = _.indexOf($scope.columns, column);\n if (index === $scope.columns.length - 1) return;\n\n _.move($scope.columns, index, ++index);\n };\n\n $scope.toggleColumn = function (fieldName) {\n _.toggleInOut($scope.columns, fieldName);\n };\n\n $scope.sort = function (column) {\n if (!column || !sortableField(column)) return;\n\n var sorting = $scope.sorting = $scope.sorting || [];\n\n var direction = sorting[1] || 'asc';\n if (sorting[0] !== column) {\n direction = 'asc';\n } else {\n direction = sorting[1] === 'asc' ? 'desc' : 'asc';\n }\n\n $scope.sorting[0] = column;\n $scope.sorting[1] = direction;\n };\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/doc_table/components/table_header.js\n ** module id = 692\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var $ = require('jquery');\n var addWordBreaks = require('utils/add_word_breaks');\n var module = require('modules').get('app/discover');\n\n require('components/highlight/highlight');\n require('components/highlight/highlight_tags');\n require('components/doc_viewer/doc_viewer');\n require('filters/trust_as_html');\n require('filters/short_dots');\n\n\n // guesstimate at the minimum number of chars wide cells in the table should be\n var MIN_LINE_LENGTH = 20;\n\n /**\n * kbnTableRow directive\n *\n * Display a row in the table\n * ```\n * \n * ```\n */\n module.directive('kbnTableRow', function ($compile) {\n var noWhiteSpace = require('utils/no_white_space');\n var openRowHtml = require('components/doc_table/components/table_row/open.html');\n var detailsHtml = require('components/doc_table/components/table_row/details.html');\n var cellTemplate = _.template(noWhiteSpace(require('components/doc_table/components/table_row/cell.html')));\n var truncateByHeightTemplate = _.template(noWhiteSpace(require('partials/truncate_by_height.html')));\n\n return {\n restrict: 'A',\n scope: {\n columns: '=',\n filter: '=',\n indexPattern: '=',\n row: '=kbnTableRow'\n },\n link: function ($scope, $el) {\n $el.after('');\n $el.empty();\n\n var init = function () {\n createSummaryRow($scope.row, $scope.row._id);\n };\n\n // when we compile the details, we use this $scope\n var $detailsScope;\n\n // when we compile the toggle button in the summary, we use this $scope\n var $toggleScope;\n\n // toggle display of the rows details, a full list of the fields from each row\n $scope.toggleRow = function () {\n var $detailsTr = $el.next();\n\n $scope.open = !$scope.open;\n\n ///\n // add/remove $details children\n ///\n\n $detailsTr.toggle($scope.open);\n\n if (!$scope.open) {\n // close the child scope if it exists\n $detailsScope.$destroy();\n // no need to go any further\n return;\n } else {\n $detailsScope = $scope.$new();\n }\n\n // empty the details and rebuild it\n $detailsTr.html(detailsHtml);\n\n $detailsScope.row = $scope.row;\n\n $compile($detailsTr)($detailsScope);\n };\n\n $scope.$watchCollection('columns', function () {\n createSummaryRow($scope.row, $scope.row._id);\n });\n\n $scope.$watchMulti(['indexPattern.timeFieldName', 'row.highlight'], function () {\n createSummaryRow($scope.row, $scope.row._id);\n });\n\n // create a tr element that lists the value for each *column*\n function createSummaryRow(row) {\n var indexPattern = $scope.indexPattern;\n\n // We just create a string here because its faster.\n var newHtmls = [\n openRowHtml\n ];\n\n if (indexPattern.timeFieldName) {\n newHtmls.push(cellTemplate({\n timefield: true,\n formatted: _displayField(row, indexPattern.timeFieldName)\n }));\n }\n\n $scope.columns.forEach(function (column) {\n newHtmls.push(cellTemplate({\n timefield: false,\n sourcefield: (column === '_source'),\n formatted: _displayField(row, column, true)\n }));\n });\n\n var $cells = $el.children();\n newHtmls.forEach(function (html, i) {\n var $cell = $cells.eq(i);\n if ($cell.data('discover:html') === html) return;\n\n var reuse = _.find($cells.slice(i + 1), function (cell) {\n return $.data(cell, 'discover:html') === html;\n });\n\n var $target = reuse ? $(reuse).detach() : $(html);\n $target.data('discover:html', html);\n var $before = $cells.eq(i - 1);\n if ($before.size()) {\n $before.after($target);\n } else {\n $el.append($target);\n }\n\n // rebuild cells since we modified the children\n $cells = $el.children();\n\n if (i === 0 && !reuse) {\n $toggleScope = $scope.$new();\n $compile($target)($toggleScope);\n }\n });\n\n if ($scope.open) {\n $detailsScope.row = row;\n }\n\n // trim off cells that were not used rest of the cells\n $cells.filter(':gt(' + (newHtmls.length - 1) + ')').remove();\n }\n\n /**\n * Fill an element with the value of a field\n */\n function _displayField(row, fieldName, breakWords) {\n var indexPattern = $scope.indexPattern;\n var text = indexPattern.formatField(row, fieldName);\n\n if (breakWords) {\n text = addWordBreaks(text, MIN_LINE_LENGTH);\n\n if (text.length > MIN_LINE_LENGTH) {\n return truncateByHeightTemplate({\n body: text\n });\n }\n }\n\n return text;\n }\n\n init();\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/doc_table/components/table_row.js\n ** module id = 693\n ** module chunks = 0\n **/","define(function (require) {\n\n require('components/field_format_editor/field_format_editor');\n\n require('modules')\n .get('kibana')\n .directive('fieldEditor', function (Private, $sce) {\n var _ = require('lodash');\n var fieldFormats = Private(require('registry/field_formats'));\n var Field = Private(require('components/index_patterns/_field'));\n var scriptingInfo = $sce.trustAsHtml(require('components/field_editor/scripting_info.html'));\n var scriptingWarning = $sce.trustAsHtml(require('components/field_editor/scripting_warning.html'));\n\n return {\n restrict: 'E',\n template: require('components/field_editor/field_editor.html'),\n scope: {\n getIndexPattern: '&indexPattern',\n getField: '&field'\n },\n controllerAs: 'editor',\n controller: function ($scope, Notifier, kbnUrl) {\n var self = this;\n var notify = new Notifier({ location: 'Field Editor' });\n\n self.scriptingInfo = scriptingInfo;\n self.scriptingWarning = scriptingWarning;\n\n self.indexPattern = $scope.getIndexPattern();\n self.field = shadowCopy($scope.getField());\n self.formatParams = self.field.format.params();\n\n // only init on first create\n self.creating = !self.indexPattern.fields.byName[self.field.name];\n self.selectedFormatId = _.get(self.indexPattern, ['fieldFormatMap', self.field.name, 'type', 'id']);\n self.defFormatType = initDefaultFormat();\n self.fieldFormatTypes = [self.defFormatType].concat(fieldFormats.byFieldType[self.field.type] || []);\n\n self.cancel = redirectAway;\n self.save = function () {\n var indexPattern = self.indexPattern;\n var fields = indexPattern.fields;\n var field = self.field.toActualField();\n\n _.remove(fields, { name: field.name });\n fields.push(field);\n\n if (!self.selectedFormatId) {\n delete indexPattern.fieldFormatMap[field.name];\n } else {\n indexPattern.fieldFormatMap[field.name] = self.field.format;\n }\n\n return indexPattern.save()\n .then(function () {\n notify.info('Saved Field \"' + self.field.name + '\"');\n redirectAway();\n });\n };\n\n self.delete = function () {\n var indexPattern = self.indexPattern;\n var field = self.field;\n\n _.remove(indexPattern.fields, { name: field.name });\n return indexPattern.save()\n .then(function () {\n notify.info('Deleted Field \"' + field.name + '\"');\n redirectAway();\n });\n };\n\n $scope.$watch('editor.selectedFormatId', function (cur, prev) {\n var format = self.field.format;\n var changedFormat = cur !== prev;\n var missingFormat = cur && (!format || format.type.id !== cur);\n\n if (!changedFormat || !missingFormat) return;\n\n // reset to the defaults, but make sure it's an object\n self.formatParams = _.assign({}, getFieldFormatType().paramDefaults);\n });\n\n $scope.$watch('editor.formatParams', function () {\n var FieldFormat = getFieldFormatType();\n self.field.format = new FieldFormat(self.formatParams);\n }, true);\n\n // copy the defined properties of the field to a plain object\n // which is mutable, and capture the changed seperately.\n function shadowCopy(field) {\n var changes = {};\n var shadowProps = {\n toActualField: {\n // bring the shadow copy out of the shadows\n value: function toActualField() {\n return new Field(self.indexPattern, _.defaults({}, changes, field.$$spec));\n }\n }\n };\n\n Object.getOwnPropertyNames(field).forEach(function (prop) {\n var desc = Object.getOwnPropertyDescriptor(field, prop);\n shadowProps[prop] = {\n enumerable: desc.enumerable,\n get: function () {\n return _.has(changes, prop) ? changes[prop] : field[prop];\n },\n set: function (v) {\n changes[prop] = v;\n }\n };\n });\n\n return Object.create(null, shadowProps);\n }\n\n function redirectAway() {\n kbnUrl.changeToRoute(self.indexPattern, self.field.scripted ? 'scriptedFields' : 'indexedFields');\n }\n\n function getFieldFormatType() {\n if (self.selectedFormatId) return fieldFormats.getType(self.selectedFormatId);\n else return fieldFormats.getDefaultType(self.field.type);\n }\n\n function initDefaultFormat() {\n var def = Object.create(fieldFormats.getDefaultType(self.field.type));\n\n // explicitly set to undefined to prevent inheritting the prototypes id\n def.id = undefined;\n def.resolvedTitle = def.title;\n def.title = '- default - ';\n\n return def;\n }\n }\n };\n });\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/field_editor/field_editor.js\n ** module id = 694\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var $ = require('jquery');\n\n require('modules')\n .get('app/settings')\n .directive('fieldFormatEditor', function (Private, $compile) {\n return {\n restrict: 'A',\n scope: {\n getField: '&field',\n getFormatParams: '&formatParams'\n },\n controllerAs: 'editor',\n controller: function ($scope) {\n var self = this;\n\n // bind the scope values to the controller, down with $scope.values\n $scope.editor = this;\n $scope.$bind('editor.field', 'getField()', $scope);\n $scope.$bind('editor.formatParams', 'getFormatParams()', $scope);\n\n /**\n * Read the FieldFormat's editor property and convert it into\n * a \"pseudoDirective\". For clarity I'm reusing the directive def\n * object api, but for simplicity not implementing the entire thing.\n *\n * possible configs:\n * string:\n * - used as an angular template\n * directive def object, with support for the following opts:\n * - template\n * - compile or link\n * - scope (creates isolate, reads from parent scope, not attributes)\n * - controller\n * - controllerAs\n *\n * @param {angular.element} $el - template\n * @param {object} directiveDef - the directive definition object\n * @return {undefined}\n */\n $scope.$watch('editor.field.format.type', function (FieldFormat) {\n var opts = FieldFormat && FieldFormat.editor;\n\n if (!opts) {\n delete self.$$pseudoDirective;\n return;\n }\n\n if (typeof opts === 'string') {\n self.$$pseudoDirective = {\n template: opts\n };\n return;\n }\n\n self.$$pseudoDirective = {\n template: opts.template,\n compile: opts.compile || function () {\n return opts.link;\n },\n scope: opts.scope || false,\n controller: opts.controller,\n controllerAs: opts.controllerAs\n };\n });\n\n },\n link: function ($scope, $el) {\n var scopesToTeardown = [];\n\n function setupScope(opts) {\n if (typeof opts !== 'object') {\n return scopesToTeardown[scopesToTeardown.push($scope.$new()) - 1];\n }\n\n var isolate = scopesToTeardown[scopesToTeardown.push($scope.$new(true)) - 1];\n _.forOwn(opts, function (from, to) {\n isolate.$bind(to, from, $scope);\n });\n return isolate;\n }\n\n $scope.$watch('editor.$$pseudoDirective', function (directive) {\n $el.empty();\n _.invoke(scopesToTeardown.splice(0), '$destroy');\n\n if (!directive) return $el.hide();\n else $el.show();\n\n var askedForChild = !!directive.scope;\n var reuseScope = !askedForChild && !directive.controller;\n\n var $formatEditor = $('
').html(directive.template);\n var $formatEditorScope = reuseScope ? $scope : setupScope(directive.scope);\n\n if (directive.controller) {\n // bind the controller to the injected element\n var cntrlAs = (directive.controllerAs ? ' as ' + directive.controllerAs : '');\n $formatEditorScope.Controller = directive.controller;\n $formatEditor.attr('ng-controller', 'Controller' + cntrlAs);\n }\n\n var attrs = {};\n var linkFns = directive.compile && directive.compile($el, attrs);\n if (!linkFns || _.isFunction(linkFns)) {\n linkFns = {\n pre: _.noop,\n post: linkFns || _.noop\n };\n }\n\n $el.html($formatEditor);\n linkFns.pre($formatEditorScope, $formatEditor, attrs);\n $compile($formatEditor)($formatEditorScope);\n linkFns.post($formatEditorScope, $formatEditor, attrs);\n });\n\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/field_format_editor/field_format_editor.js\n ** module id = 695\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n return function () {\n return function ($state) {\n if (!_.isObject($state)) throw new Error ('pushFilters requires a state object');\n return function (filter, negate, index) {\n // Hierarchical and tabular data set their aggConfigResult parameter\n // differently because of how the point is rewritten between the two. So\n // we need to check if the point.orig is set, if not use try the point.aggConfigResult\n var filters = _.clone($state.filters || []);\n var pendingFilter = { meta: { negate: negate, index: index }};\n _.extend(pendingFilter, filter);\n filters.push(pendingFilter);\n $state.filters = filters;\n };\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/filter_bar/push_filter.js\n ** module id = 696\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n return function buildPhraseFilter(field, value, indexPattern) {\n var filter = { meta: { index: indexPattern.id} };\n\n if (field.scripted) {\n filter.script = {\n script: '(' + field.script + ') == value',\n lang: field.lang,\n params: {\n value: value\n }\n };\n filter.meta.field = field.name;\n } else {\n filter.query = { match: {} };\n filter.query.match[field.name] = {\n query: value,\n type: 'phrase'\n };\n }\n return filter;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/filter_manager/lib/phrase.js\n ** module id = 697\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n return function buildQueryFilter(query, index) {\n return {\n query: query,\n meta: {\n index: index\n }\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/filter_manager/lib/query.js\n ** module id = 698\n ** module chunks = 0\n **/","define(function (require) {\n var $ = require('jquery');\n var _ = require('lodash');\n\n var SCROLLER_HEIGHT = 20;\n\n require('modules')\n .get('kibana')\n .directive('fixedScroll', function ($timeout) {\n return {\n restrict: 'A',\n link: function ($scope, $el) {\n var $window = $(window);\n var $scroller = $('
').height(SCROLLER_HEIGHT);\n\n /**\n * Listen for scroll events on the $scroller and the $el, sets unlisten()\n *\n * unlisten must be called before calling or listen() will throw an Error\n *\n * Since the browser emits \"scroll\" events after setting scrollLeft\n * the listeners also prevent tug-of-war\n *\n * @throws {Error} If unlisten was not called first\n * @return {undefined}\n */\n function listen() {\n if (unlisten !== _.noop) {\n throw new Error('fixedScroll listeners were not cleaned up properly before re-listening!');\n }\n\n var blockTo;\n function bind($from, $to) {\n function handler() {\n if (blockTo === $to) return (blockTo = null);\n $to.scrollLeft((blockTo = $from).scrollLeft());\n }\n\n $from.on('scroll', handler);\n return function () {\n $from.off('scroll', handler);\n };\n }\n\n unlisten = _.flow(\n bind($el, $scroller),\n bind($scroller, $el),\n function () { unlisten = _.noop; }\n );\n }\n\n /**\n * Remove the listeners bound in listen()\n * @type {function}\n */\n var unlisten = _.noop;\n\n /**\n * Revert DOM changes and event listeners\n * @return {undefined}\n */\n function cleanUp() {\n unlisten();\n $scroller.detach();\n $el.css('padding-bottom', 0);\n }\n\n /**\n * Modify the DOM and attach event listeners based on need.\n * Is called many times to re-setup, must be idempotent\n * @return {undefined}\n */\n function setup() {\n cleanUp();\n\n var containerWidth = $el.width();\n var contentWidth = $el.prop('scrollWidth');\n var containerHorizOverflow = contentWidth - containerWidth;\n\n var elTop = $el.offset().top - $window.scrollTop();\n var elBottom = elTop + $el.height();\n var windowVertOverflow = elBottom - $window.height();\n\n var requireScroller = containerHorizOverflow > 0 && windowVertOverflow > 0;\n if (!requireScroller) return;\n\n // push the content away from the scroller\n $el.css('padding-bottom', SCROLLER_HEIGHT);\n\n // fill the scroller with a dummy element that mimics the content\n $scroller\n .width(containerWidth)\n .html($('
').css({ width: contentWidth, height: SCROLLER_HEIGHT }))\n .insertAfter($el);\n\n // listen for scroll events\n listen();\n }\n\n // reset when the width or scrollWidth of the $el changes\n $scope.$watchMulti([\n function () { return $el.prop('scrollWidth'); },\n function () { return $el.width(); }\n ], setup);\n\n // cleanup when the scope is destroyed\n $scope.$on('$destroy', function () {\n cleanUp();\n $scroller = $window = null;\n });\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/fixedScroll.js\n ** module id = 699\n ** module chunks = 0\n **/","define(function (require) {\n var $ = require('jquery');\n var _ = require('lodash');\n var keyMap = require('utils/key_map');\n\n var INVALID = {}; // invalid flag\n var FLOATABLE = /^[\\d\\.e\\-\\+]+$/i;\n\n var VALIDATION_ERROR = 'numberListRangeAndOrder';\n var DIRECTIVE_ATTR = 'kbn-number-list-input';\n\n require('modules')\n .get('kibana')\n .directive('kbnNumberListInput', function ($parse) {\n return {\n restrict: 'A',\n require: ['ngModel', '^kbnNumberList'],\n link: function ($scope, $el, attrs, controllers) {\n var ngModelCntr = controllers[0];\n var numberListCntr = controllers[1];\n\n var $setModel = $parse(attrs.ngModel).assign;\n var $repeater = $el.closest('[ng-repeat]');\n\n var handlers = {\n up: change(add, 1),\n 'shift-up': change(addTenth, 1),\n\n down: change(add, -1),\n 'shift-down': change(addTenth, -1),\n\n tab: go('next'),\n 'shift-tab': go('prev'),\n\n 'shift-enter': numberListCntr.add,\n\n backspace: removeIfEmpty,\n delete: removeIfEmpty\n };\n\n function removeIfEmpty(event) {\n if (!ngModelCntr.$viewValue) {\n $get('prev').focus();\n numberListCntr.remove($scope.$index);\n event.preventDefault();\n }\n\n return false;\n }\n\n function $get(dir) {\n return $repeater[dir]().find('[' + DIRECTIVE_ATTR + ']');\n }\n\n function go(dir) {\n return function () {\n var $to = $get(dir);\n if ($to.size()) $to.focus();\n else return false;\n };\n }\n\n function idKey(event) {\n var id = [];\n if (event.ctrlKey) id.push('ctrl');\n if (event.shiftKey) id.push('shift');\n if (event.metaKey) id.push('meta');\n if (event.altKey) id.push('alt');\n id.push(keyMap[event.keyCode] || event.keyCode);\n return id.join('-');\n }\n\n function add(n, val) {\n return parse(val + n);\n }\n\n function addTenth(n, val, str) {\n var int = Math.floor(val);\n var dec = parseInt(str.split('.')[1] || 0, 10);\n dec = dec + parseInt(n, 10);\n\n if (dec < 0 || dec > 9) {\n int += Math.floor(dec / 10);\n if (dec < 0) {\n dec = 10 + (dec % 10);\n } else {\n dec = dec % 10;\n }\n }\n\n return parse(int + '.' + dec);\n }\n\n function change(using, mod) {\n return function () {\n var str = String(ngModelCntr.$viewValue);\n var val = parse(str);\n if (val === INVALID) return;\n\n var next = using(mod, val, str);\n if (next === INVALID) return;\n\n $el.val(next);\n ngModelCntr.$setViewValue(next);\n };\n }\n\n function onKeydown(event) {\n var handler = handlers[idKey(event)];\n if (!handler) return;\n\n if (handler(event) !== false) {\n event.preventDefault();\n }\n\n $scope.$apply();\n }\n\n $el.on('keydown', onKeydown);\n $scope.$on('$destroy', function () {\n $el.off('keydown', onKeydown);\n });\n\n function parse(viewValue) {\n var num = viewValue;\n\n if (typeof num !== 'number' || isNaN(num)) {\n // parse non-numbers\n num = String(viewValue || 0).trim();\n if (!FLOATABLE.test(num)) return INVALID;\n\n num = parseFloat(num);\n if (isNaN(num)) return INVALID;\n }\n\n var range = numberListCntr.range;\n if (!range.within(num)) return INVALID;\n\n if ($scope.$index > 0) {\n var i = $scope.$index - 1;\n var list = numberListCntr.getList();\n var prev = list[i];\n if (num <= prev) return INVALID;\n }\n\n return num;\n }\n\n $scope.$watchMulti([\n '$index',\n {\n fn: $scope.$watchCollection,\n get: function () {\n return numberListCntr.getList();\n }\n }\n ], function () {\n var valid = parse(ngModelCntr.$viewValue) !== INVALID;\n ngModelCntr.$setValidity(VALIDATION_ERROR, valid);\n });\n\n function validate(then) {\n return function (input) {\n var value = parse(input);\n var valid = value !== INVALID;\n value = valid ? value : input;\n ngModelCntr.$setValidity(VALIDATION_ERROR, valid);\n then && then(input, value);\n return value;\n };\n }\n\n ngModelCntr.$parsers.push(validate());\n ngModelCntr.$formatters.push(validate(function (input, value) {\n if (input !== value) $setModel($scope, value);\n }));\n\n if (parse(ngModelCntr.$viewValue) === INVALID) {\n ngModelCntr.$setTouched();\n }\n }\n };\n });\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/number_list/number_list_input.js\n ** module id = 700\n ** module chunks = 0\n **/","define(function (require) {\n return function ReflowWatcherService(Private, $rootScope, $http) {\n var angular = require('angular');\n var $ = require('jquery');\n var _ = require('lodash');\n\n var EventEmitter = Private(require('components/events'));\n var $body = $(document.body);\n var $window = $(window);\n\n var MOUSE_EVENTS = 'mouseup';\n var WINDOW_EVENTS = 'resize';\n\n _.class(ReflowWatcher).inherits(EventEmitter);\n /**\n * Watches global activity which might hint at a change in the content, which\n * in turn provides a hint to resizers that they should check their size\n */\n function ReflowWatcher() {\n ReflowWatcher.Super.call(this);\n\n // bound version of trigger that can be used as a handler\n this.trigger = _.bind(this.trigger, this);\n this._emitReflow = _.bind(this._emitReflow, this);\n\n // list of functions to call that will unbind our watchers\n this._unwatchers = [\n $rootScope.$watchCollection(function () {\n return $http.pendingRequests;\n }, this.trigger)\n ];\n\n $body.on(MOUSE_EVENTS, this.trigger);\n $window.on(WINDOW_EVENTS, this.trigger);\n }\n\n /**\n * Simply emit reflow, but in a way that can be bound and passed to\n * other functions. Using _.bind caused extra arguments to be added, and\n * then emitted to other places. No Bueno\n *\n * @return {void}\n */\n ReflowWatcher.prototype._emitReflow = function () {\n this.emit('reflow');\n };\n\n /**\n * Emit the \"reflow\" event in the next tick of the digest cycle\n * @return {void}\n */\n ReflowWatcher.prototype.trigger = function () {\n $rootScope.$evalAsync(this._emitReflow);\n };\n\n /**\n * Signal to the ReflowWatcher that it should clean up it's listeners\n * @return {void}\n */\n ReflowWatcher.prototype.destroy = function () {\n $body.off(MOUSE_EVENTS, this.trigger);\n $window.off(WINDOW_EVENTS, this.trigger);\n _.callEach(this._unwatchers);\n };\n\n return new ReflowWatcher();\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/reflow_watcher.js\n ** module id = 701\n ** module chunks = 0\n **/","define(function (require) {\n return function TemplateRenderbotFactory(Private, $compile, $rootScope) {\n var _ = require('lodash');\n var Renderbot = Private(require('components/vis/Renderbot'));\n\n _.class(TemplateRenderbot).inherits(Renderbot);\n function TemplateRenderbot(vis, $el) {\n TemplateRenderbot.Super.call(this, vis, $el);\n\n this.$scope = $rootScope.$new();\n this.$scope.vis = vis;\n\n $el.html($compile(this.vis.type.template)(this.$scope));\n }\n\n TemplateRenderbot.prototype.render = function (esResponse) {\n this.$scope.esResponse = esResponse;\n };\n\n TemplateRenderbot.prototype.destroy = function () {\n this.$scope.$destroy();\n };\n\n return TemplateRenderbot;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/template_vis_type/TemplateRenderbot.js\n ** module id = 702\n ** module chunks = 0\n **/","define(function (require) {\n return function DateIntervalRoundingRulesProvider() {\n var moment = require('moment');\n // these are the rounding rules used by roundInterval()\n var d = require('moment').duration;\n\n var roundingRules = [\n [ d(500, 'ms'), d(100, 'ms') ],\n [ d(5, 'second'), d(1, 'second') ],\n [ d(7.5, 'second'), d(5, 'second') ],\n [ d(15, 'second'), d(10, 'second') ],\n [ d(45, 'second'), d(30, 'second') ],\n [ d(3, 'minute'), d(1, 'minute') ],\n [ d(9, 'minute'), d(5, 'minute') ],\n [ d(20, 'minute'), d(10, 'minute') ],\n [ d(45, 'minute'), d(30, 'minute') ],\n [ d(2, 'hour'), d(1, 'hour') ],\n [ d(6, 'hour'), d(3, 'hour') ],\n [ d(24, 'hour'), d(12, 'hour') ],\n [ d(1, 'week'), d(1, 'd') ],\n [ d(3, 'week'), d(1, 'week') ],\n [ d(1, 'year'), d(1, 'month') ],\n [ Infinity, d(1, 'year') ]\n ];\n\n var revRoundingRules = roundingRules.slice(0).reverse();\n\n function find(rules, check, last) {\n function pick(buckets, duration) {\n var target = duration / buckets;\n var lastResp;\n\n for (var i = 0; i < rules.length; i++) {\n var rule = rules[i];\n var resp = check(rule[0], rule[1], target);\n\n if (resp == null) {\n if (!last) continue;\n if (lastResp) return lastResp;\n break;\n }\n\n if (!last) return resp;\n lastResp = resp;\n }\n\n // fallback to just a number of milliseconds, ensure ms is >= 1\n var ms = Math.max(Math.floor(target), 1);\n return moment.duration(ms, 'ms');\n }\n\n return function (buckets, duration) {\n var interval = pick(buckets, duration);\n if (interval) return moment.duration(interval._data);\n };\n }\n\n return {\n near: find(revRoundingRules, function near(bound, interval, target) {\n if (bound > target) return interval;\n }, true),\n\n lessThan: find(revRoundingRules, function (bound, interval, target) {\n if (interval < target) return interval;\n }),\n\n atLeast: find(revRoundingRules, function atLeast(bound, interval, target) {\n if (interval <= target) return interval;\n }),\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/time_buckets/calc_auto_interval.js\n ** module id = 703\n ** module chunks = 0\n **/","define(function (require) {\n return function () {\n var moment = require('moment');\n var datemath = require('utils/datemath');\n\n var unitsDesc = datemath.unitsDesc;\n var largeMax = unitsDesc.indexOf('M');\n\n /**\n * Convert a moment.duration into an es\n * compatible expression, and provide\n * associated metadata\n *\n * @param {moment.duration} duration\n * @return {object}\n */\n function esDuration(duration) {\n for (var i = 0; i < unitsDesc.length; i++) {\n var unit = unitsDesc[i];\n var val = duration.as(unit);\n // find a unit that rounds neatly\n if (val >= 1 && Math.floor(val) === val) {\n\n // if the unit is \"large\", like years, but\n // isn't set to 1 ES will puke. So keep going until\n // we get out of the \"large\" units\n if (i <= largeMax && val !== 1) {\n continue;\n }\n\n return {\n value: val,\n unit: unit,\n expression: val + unit\n };\n }\n }\n\n var ms = duration.as('ms');\n return {\n value: ms,\n unit: 'ms',\n expression: ms + 'ms'\n };\n }\n\n\n return esDuration;\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/time_buckets/calc_es_interval.js\n ** module id = 704\n ** module chunks = 0\n **/","define(function (require) {\n return function IntervalHelperProvider(Private, timefilter, config) {\n var _ = require('lodash');\n var moment = require('moment');\n\n var datemath = require('utils/datemath');\n var parseInterval = require('utils/parse_interval');\n var calcAuto = Private(require('components/time_buckets/calc_auto_interval'));\n var calcEsInterval = Private(require('components/time_buckets/calc_es_interval'));\n var tzOffset = moment().format('Z');\n\n function isValidMoment(m) {\n return m && ('isValid' in m) && m.isValid();\n }\n\n /**\n * Helper class for wrapping the concept of an \"Interval\",\n * which describes a timespan that will seperate moments.\n *\n * @param {state} object - one of \"\"\n * @param {[type]} display [description]\n */\n function TimeBuckets() {\n return TimeBuckets.__cached__(this);\n }\n\n /****\n * PUBLIC API\n ****/\n\n /**\n * Set the bounds that these buckets are expected to cover.\n * This is required to support interval \"auto\" as well\n * as interval scaling.\n *\n * @param {object} input - an object with properties min and max,\n * representing the edges for the time span\n * we should cover\n *\n * @returns {undefined}\n */\n TimeBuckets.prototype.setBounds = function (input) {\n if (!input) return this.clearBounds();\n\n var bounds;\n if (_.isPlainObject(input)) {\n // accept the response from timefilter.getActiveBounds()\n bounds = [input.min, input.max];\n } else {\n bounds = _.isArray(input) ? input : [];\n }\n\n var moments = _(bounds)\n .map(_.ary(moment, 1))\n .sortBy(Number);\n\n var valid = moments.size() === 2 && moments.every(isValidMoment);\n if (!valid) {\n this.clearBounds();\n throw new Error('invalid bounds set: ' + input);\n }\n\n this._lb = moments.shift();\n this._ub = moments.pop();\n if (this.getDuration().asSeconds() < 0) {\n throw new TypeError('Intervals must be positive');\n }\n };\n\n /**\n * Clear the stored bounds\n *\n * @return {undefined}\n */\n TimeBuckets.prototype.clearBounds = function () {\n this._lb = this._ub = null;\n };\n\n /**\n * Check to see if we have received bounds yet\n *\n * @return {Boolean}\n */\n TimeBuckets.prototype.hasBounds = function () {\n return isValidMoment(this._ub) && isValidMoment(this._lb);\n };\n\n /**\n * Return the current bounds, if we have any.\n *\n * THIS DOES NOT CLONE THE BOUNDS, so editting them\n * may have unexpected side-effects. Always\n * call bounds.min.clone() before editting\n *\n * @return {object|undefined} - If bounds are not defined, this\n * returns undefined, else it returns the bounds\n * for these buckets. This object has two props,\n * min and max. Each property will be a moment()\n * object\n *\n */\n TimeBuckets.prototype.getBounds = function () {\n if (!this.hasBounds()) return;\n return {\n min: this._lb,\n max: this._ub\n };\n };\n\n /**\n * Get a moment duration object representing\n * the distance between the bounds, if the bounds\n * are set.\n *\n * @return {moment.duration|undefined}\n */\n TimeBuckets.prototype.getDuration = function () {\n if (!this.hasBounds()) return;\n return moment.duration(this._ub - this._lb, 'ms');\n };\n\n /**\n * Update the interval at which buckets should be\n * generated.\n *\n * Input can be one of the following:\n * - Any object from src/kibana/components/agg_types/buckets/_interval_options.js\n * - \"auto\"\n * - Pass a valid moment unit\n * - a moment.duration object.\n *\n * @param {object|string|moment.duration} input - see desc\n */\n TimeBuckets.prototype.setInterval = function (input) {\n var interval = input;\n\n // selection object -> val\n if (_.isObject(input)) {\n interval = input.val;\n }\n\n if (!interval || interval === 'auto') {\n this._i = 'auto';\n return;\n }\n\n if (_.isString(interval)) {\n input = interval;\n interval = parseInterval(interval);\n if (+interval === 0) {\n interval = null;\n }\n }\n\n // if the value wasn't converted to a duration, and isn't\n // already a duration, we have a problem\n if (!moment.isDuration(interval)) {\n throw new TypeError('\"' + input + '\" is not a valid interval.');\n }\n\n this._i = interval;\n };\n\n /**\n * Get the interval for the buckets. If the\n * number of buckets created by the interval set\n * is larger than config:histogram:maxBars then the\n * interval will be scaled up. If the number of buckets\n * created is less than one, the interval is scaled back.\n *\n * The interval object returned is a moment.duration\n * object that has been decorated with the following\n * properties.\n *\n * interval.description: a text description of the interval.\n * designed to be used list \"field per {{ desc }}\".\n * - \"minute\"\n * - \"10 days\"\n * - \"3 years\"\n *\n * interval.expr: the elasticsearch expression that creates this\n * interval. If the interval does not properly form an elasticsearch\n * expression it will be forced into one.\n *\n * interval.scaled: the interval was adjusted to\n * accomidate the maxBars setting.\n *\n * interval.scale: the numer that y-values should be\n * multiplied by\n *\n * interval.scaleDescription: a description that reflects\n * the values which will be produced by using the\n * interval.scale.\n *\n *\n * @return {[type]} [description]\n */\n TimeBuckets.prototype.getInterval = function () {\n var self = this;\n var duration = self.getDuration();\n return decorateInterval(maybeScaleInterval(readInterval()));\n\n // either pull the interval from state or calculate the auto-interval\n function readInterval() {\n var interval = self._i;\n if (moment.isDuration(interval)) return interval;\n return calcAuto.near(config.get('histogram:barTarget'), duration);\n }\n\n // check to see if the interval should be scaled, and scale it if so\n function maybeScaleInterval(interval) {\n if (!self.hasBounds()) return interval;\n\n var maxLength = config.get('histogram:maxBars');\n var approxLen = duration / interval;\n var scaled;\n\n if (approxLen > maxLength) {\n scaled = calcAuto.lessThan(maxLength, duration);\n } else {\n return interval;\n }\n\n if (+scaled === +interval) return interval;\n\n decorateInterval(interval);\n return _.assign(scaled, {\n preScaled: interval,\n scale: interval / scaled,\n scaled: true\n });\n }\n\n // append some TimeBuckets specific props to the interval\n function decorateInterval(interval) {\n var esInterval = calcEsInterval(interval);\n interval.esValue = esInterval.value;\n interval.esUnit = esInterval.unit;\n interval.expression = esInterval.expression;\n interval.overflow = duration > interval ? moment.duration(interval - duration) : false;\n\n var prettyUnits = moment.normalizeUnits(esInterval.unit);\n if (esInterval.value === 1) {\n interval.description = prettyUnits;\n } else {\n interval.description = esInterval.value + ' ' + prettyUnits + 's';\n }\n\n return interval;\n }\n };\n\n /**\n * Get a date format string that will represent dates that\n * progress at our interval.\n *\n * Since our interval can be as small as 1ms, the default\n * date format is usually way too much. with `dateFormat:scaled`\n * users can modify how dates are formatted within series\n * produced by TimeBuckets\n *\n * @return {string}\n */\n TimeBuckets.prototype.getScaledDateFormat = function () {\n var interval = this.getInterval();\n var rules = config.get('dateFormat:scaled');\n\n for (var i = rules.length - 1; i >= 0; i--) {\n var rule = rules[i];\n if (!rule[0] || interval >= moment.duration(rule[0])) {\n return rule[1];\n }\n }\n\n return config.get('dateFormat');\n };\n\n\n TimeBuckets.__cached__ = function (self) {\n var cache = {};\n\n function cachedGetter(prop) {\n return {\n value: function cachedGetter() {\n if (cache.hasOwnProperty(prop)) {\n return cache[prop];\n }\n\n return cache[prop] = self[prop]();\n }\n };\n }\n\n function cacheBreaker(prop) {\n var resource = resources[breakers[prop]];\n var setup = resource.setup;\n var changes = resource.changes;\n var deps = resource.deps;\n var fn = self[prop];\n\n return {\n value: function cacheBreaker(input) {\n var prev = setup.call(self);\n var ret = fn.apply(self, arguments);\n\n if (changes.call(self, prev)) {\n cache = {};\n }\n\n return ret;\n }\n };\n }\n\n function same(checkType) {\n return function (a, b) {\n if (a === b) return true;\n if (checkType(a) === checkType(b)) return +a === +b;\n return false;\n };\n }\n\n var sameMoment = same(moment.isMoment);\n var sameDuration = same(moment.isDuration);\n\n var desc = {\n __cached__: {\n value: self\n },\n };\n\n var breakers = {\n setBounds: 'bounds',\n clearBounds: 'bounds',\n setInterval: 'interval'\n };\n\n var resources = {\n bounds: {\n setup: function () {\n return [self._lb, self._ub];\n },\n changes: function (prev) {\n return !sameMoment(prev[0], self._lb) || !sameMoment(prev[1], self._ub);\n }\n },\n interval: {\n setup: function () {\n return self._i;\n },\n changes: function (prev) {\n return !sameDuration(prev, this._i);\n }\n }\n };\n\n _.forOwn(TimeBuckets.prototype, function (fn, prop) {\n if (prop[0] === '_') return;\n\n if (breakers.hasOwnProperty(prop)) {\n desc[prop] = cacheBreaker(prop);\n } else {\n desc[prop] = cachedGetter(prop);\n }\n });\n\n return Object.create(self, desc);\n };\n\n return TimeBuckets;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/time_buckets/time_buckets.js\n ** module id = 705\n ** module chunks = 0\n **/","define(function (require) {\n return function AggConfigsFactory(Private) {\n var _ = require('lodash');\n var AggConfig = Private(require('components/vis/AggConfig'));\n var IndexedArray = require('components/indexed_array/index');\n\n AggConfig.aggTypes = Private(require('components/agg_types/index'));\n\n _.class(AggConfigs).inherits(IndexedArray);\n function AggConfigs(vis, configStates) {\n var self = this;\n self.vis = vis;\n\n configStates = AggConfig.ensureIds(configStates || []);\n\n AggConfigs.Super.call(self, {\n index: ['id'],\n group: ['schema.group', 'type.name', 'schema.name'],\n initialSet: configStates.map(function (aggConfigState) {\n if (aggConfigState instanceof AggConfig) return aggConfigState;\n return new AggConfig(vis, aggConfigState);\n })\n });\n\n\n // Set the defaults for any schema which has them. If the defaults\n // for some reason has more then the max only set the max number\n // of defaults (not sure why a someone define more...\n // but whatever). Also if a schema.name is already set then don't\n // set anything.\n if (vis && vis.type && vis.type.schemas && vis.type.schemas.all) {\n _(vis.type.schemas.all)\n .filter(function (schema) {\n return _.isArray(schema.defaults) && schema.defaults.length > 0;\n })\n .each(function (schema) {\n if (!self.bySchemaName[schema.name]) {\n var defaults = schema.defaults.slice(0, schema.max);\n _.each(defaults, function (defaultState) {\n var state = _.defaults({ id: AggConfig.nextId(self) }, defaultState);\n self.push(new AggConfig(vis, state));\n });\n }\n })\n .commit();\n }\n }\n\n AggConfigs.prototype.toDsl = function () {\n var dslTopLvl = {};\n var dslLvlCursor;\n var nestedMetric;\n\n if (this.vis.isHierarchical()) {\n // collect all metrics, and filter out the ones that we won't be copying\n var nestedMetrics = _(this.vis.aggs.bySchemaGroup.metrics)\n .filter(function (agg) {\n return agg.type.name !== 'count';\n })\n .map(function (agg) {\n return {\n config: agg,\n dsl: agg.toDsl()\n };\n })\n .value();\n }\n\n this.getRequestAggs()\n .filter(function (config) {\n return !config.type.hasNoDsl;\n })\n .forEach(function nestEachConfig(config, i, list) {\n if (!dslLvlCursor) {\n // start at the top level\n dslLvlCursor = dslTopLvl;\n } else {\n var prevConfig = list[i - 1];\n var prevDsl = dslLvlCursor[prevConfig.id];\n\n // advance the cursor and nest under the previous agg, or\n // put it on the same level if the previous agg doesn't accept\n // sub aggs\n dslLvlCursor = prevDsl.aggs || dslLvlCursor;\n }\n\n var dsl = dslLvlCursor[config.id] = config.toDsl();\n var subAggs;\n\n if (config.schema.group === 'buckets' && i < list.length - 1) {\n // buckets that are not the last item in the list accept sub-aggs\n subAggs = dsl.aggs || (dsl.aggs = {});\n }\n\n if (subAggs && nestedMetrics) {\n nestedMetrics.forEach(function (agg) {\n subAggs[agg.config.id] = agg.dsl;\n });\n }\n });\n\n return dslTopLvl;\n };\n\n AggConfigs.prototype.getRequestAggs = function () {\n return _.sortBy(this, function (agg) {\n return agg.schema.group === 'metrics' ? 1 : 0;\n });\n };\n\n /**\n * Gets the AggConfigs (and possibly ResponseAggConfigs) that\n * represent the values that will be produced when all aggs\n * are run.\n *\n * With multi-value metric aggs it is possible for a single agg\n * request to result in multiple agg values, which is why the length\n * of a vis' responseValuesAggs may be different than the vis' aggs\n *\n * @return {array[AggConfig]}\n */\n AggConfigs.prototype.getResponseAggs = function () {\n return this.getRequestAggs().reduce(function (responseValuesAggs, agg) {\n var aggs = agg.getResponseAggs();\n return aggs ? responseValuesAggs.concat(aggs) : responseValuesAggs;\n }, []);\n };\n\n\n /**\n * Find a response agg by it's id. This may be an agg in the aggConfigs, or one\n * created specifically for a response value\n *\n * @param {string} id - the id of the agg to find\n * @return {AggConfig}\n */\n AggConfigs.prototype.getResponseAggById = function (id) {\n id = String(id);\n var reqAgg = _.find(this.getRequestAggs(), function (agg) {\n return id.substr(0, String(agg.id).length) === agg.id;\n });\n if (!reqAgg) return;\n return _.find(reqAgg.getResponseAggs(), { id: id });\n };\n\n return AggConfigs;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vis/AggConfigs.js\n ** module id = 706\n ** module chunks = 0\n **/","define(function (require) {\n return function ColorUtilService(Private) {\n var _ = require('lodash');\n\n var createColorPalette = Private(require('components/vislib/components/color/color_palette'));\n\n /*\n * Accepts an array of strings or numbers that are used to create a\n * a lookup table that associates the values (key) with a hex color (value).\n * Returns a function that accepts a value (i.e. a string or number)\n * and returns a hex color associated with that value.\n */\n\n return function (arrayOfStringsOrNumbers) {\n if (!_.isArray(arrayOfStringsOrNumbers)) {\n throw new Error('ColorUtil expects an array');\n }\n\n arrayOfStringsOrNumbers.forEach(function (val) {\n if (!_.isString(val) && !_.isNumber(val) && !_.isUndefined(val)) {\n throw new TypeError('ColorUtil expects an array of strings, numbers, or undefined values');\n }\n });\n\n var arrayLength = arrayOfStringsOrNumbers.length;\n var colorObj = _.zipObject(arrayOfStringsOrNumbers, createColorPalette(arrayLength));\n\n return function (value) {\n return colorObj[value];\n };\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/color/color.js\n ** module id = 707\n ** module chunks = 0\n **/","define(function () {\n /*\n * Using a random color generator presented awful colors and unpredictable color schemes.\n * So we needed to come up with a color scheme of our own that creates consistent, pleasing color patterns.\n * The order allows us to guarantee that 1st, 2nd, 3rd, etc values always get the same color.\n * Returns an array of 72 colors.\n */\n\n return function SeedColorUtilService() {\n return [\n '#57c17b',\n '#006e8a',\n '#6f87d8',\n '#663db8',\n '#bc52bc',\n '#9e3533',\n '#daa05d'\n ];\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/color/seed_colors.js\n ** module id = 708\n ** module chunks = 0\n **/","define(function (require) {\n return function GetArrayUtilService(Private) {\n var _ = require('lodash');\n\n var flattenSeries = Private(require('components/vislib/components/labels/flatten_series'));\n\n /*\n * Accepts a Kibana data object and returns an array of values objects.\n */\n\n return function (obj) {\n if (!_.isObject(obj) || !obj.rows && !obj.columns && !obj.series) {\n throw new TypeError('GetArrayUtilService expects an object with a series, rows, or columns key');\n }\n\n if (!obj.series) {\n return flattenSeries(obj);\n }\n\n return obj.series;\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/labels/data_array.js\n ** module id = 709\n ** module chunks = 0\n **/","define(function (require) {\n return function GetSeriesUtilService() {\n var _ = require('lodash');\n\n /*\n * Accepts a Kibana data object with a rows or columns key\n * and returns an array of flattened series values.\n */\n\n return function (obj) {\n if (!_.isObject(obj) || !obj.rows && !obj.columns) {\n throw new TypeError('GetSeriesUtilService expects an object with either a rows or columns key');\n }\n\n obj = obj.rows ? obj.rows : obj.columns;\n\n return _.chain(obj)\n .pluck('series')\n .flattenDeep()\n .value();\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/labels/flatten_series.js\n ** module id = 710\n ** module chunks = 0\n **/","define(function (require) {\n return function LabelUtilService(Private) {\n var _ = require('lodash');\n\n var createArr = Private(require('components/vislib/components/labels/data_array'));\n var getArrOfUniqLabels = Private(require('components/vislib/components/labels/uniq_labels'));\n\n /*\n * Accepts a Kibana data object and returns an array of unique labels (strings).\n * Extracts the field formatter from the raw object and passes it to the\n * getArrOfUniqLabels function.\n *\n * Currently, this service is only used for vertical bar charts and line charts.\n */\n\n return function (obj) {\n if (!_.isObject(obj)) {\n throw new TypeError('LabelUtil expects an object');\n }\n\n return getArrOfUniqLabels(createArr(obj));\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/labels/labels.js\n ** module id = 711\n ** module chunks = 0\n **/","define(function (require) {\n return function UniqLabelUtilService() {\n var _ = require('lodash');\n\n /*\n * Accepts an array of data objects and a formatter function.\n * Returns a unique list of formatted labels (strings).\n */\n\n return function (arr) {\n if (!_.isArray(arr)) {\n throw new TypeError('UniqLabelUtil expects an array of objects');\n }\n\n return _(arr)\n .pluck('label')\n .unique()\n .value();\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/labels/uniq_labels.js\n ** module id = 712\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var $ = require('jquery');\n\n var OFFSET = 10;\n var $clone;\n\n // translate css properties into their basic direction\n var propDirs = {\n top: 'north',\n left: 'west'\n };\n\n function positionTooltip(opts, html) {\n if (!opts) return;\n var $chart = $(opts.$chart);\n var $el = $(opts.$el);\n var $window = $(opts.$window || window);\n var $sizer = $(opts.$sizer);\n var prev = $chart.data('previousPlacement') || {};\n var event = opts.event;\n\n if (!$chart.size() || !$el.size()) return;\n\n var size = getTtSize(html || $el.html(), $sizer);\n var pos = getBasePosition(size, event);\n var overflow = getOverflow(size, pos, [$chart, $window]);\n\n var placement = placeToAvoidOverflow(pos, prev, overflow);\n $chart.data('previousPlacement', placement);\n return placement;\n }\n\n function getTtSize(ttHtml, $sizer) {\n if ($sizer.html() !== ttHtml) {\n $sizer.html(ttHtml);\n }\n\n var size = {\n width: $sizer.outerWidth(),\n height: $sizer.outerHeight()\n };\n\n return size;\n }\n\n function getBasePosition(size, event) {\n return {\n east: event.clientX + OFFSET,\n west: event.clientX - size.width - OFFSET,\n south: event.clientY + OFFSET,\n north: event.clientY - size.height - OFFSET\n };\n }\n\n function getBounds($el) {\n // in testing, $window is not actually a window, so we need to add\n // the offsets to make it work right.\n var bounds = $el.offset() || { top: 0, left: 0 };\n bounds.top += $el.scrollTop();\n bounds.left += $el.scrollLeft();\n bounds.bottom = bounds.top + $el.outerHeight();\n bounds.right = bounds.left + $el.outerWidth();\n return bounds;\n }\n\n function getOverflow(size, pos, containers) {\n var overflow = {};\n\n containers.map(getBounds).forEach(function (bounds) {\n // number of pixels that the toolip would overflow it's far\n // side, if we placed it that way. (negative === no overflow)\n mergeOverflows(overflow, {\n north: bounds.top - pos.north,\n east: (pos.east + size.width) - bounds.right,\n south: (pos.south + size.height) - bounds.bottom,\n west: bounds.left - pos.west\n });\n });\n\n (window.overflows || (window.overflows = [])).push(overflow);\n return overflow;\n }\n\n function mergeOverflows(dest, src) {\n return _.merge(dest, src, function (a, b) {\n if (a == null || b == null) return a || b;\n if (a < 0 && b < 0) return Math.min(a, b);\n return Math.max(a, b);\n });\n }\n\n function pickPlacement(prop, pos, overflow, prev, pref, fallback, placement) {\n var stash = '_' + prop;\n\n // list of directions in order of preference\n var dirs = _.unique([prev[stash], pref, fallback].filter(Boolean));\n\n var dir;\n var value;\n\n // find the first direction that doesn't overflow\n for (var i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (overflow[dir] > 0) continue;\n value = pos[dir];\n break;\n }\n\n // if we don't find one that doesn't overflow, use\n // the first choice and offset based on overflo\n if (value == null) {\n dir = dirs[0];\n\n var offset = overflow[dir];\n if (propDirs[prop] === dir) {\n // when the property represents the same direction\n // as dir, we flip the overflow\n offset = offset * -1;\n }\n\n value = pos[dir] - offset;\n }\n\n placement[prop] = value;\n placement[stash] = dir;\n }\n\n function placeToAvoidOverflow(pos, prev, overflow) {\n var placement = {};\n pickPlacement('top', pos, overflow, prev, 'south', 'north', placement);\n pickPlacement('left', pos, overflow, prev, 'east', 'west', placement);\n return placement;\n }\n\n // expose units/helpers for testing\n positionTooltip.getTtSize = getTtSize;\n positionTooltip.getBasePosition = getBasePosition;\n positionTooltip.getOverflow = getOverflow;\n positionTooltip.getBounds = getBounds;\n positionTooltip.placeToAvoidOverflow = placeToAvoidOverflow;\n positionTooltip.removeClone = function () {\n $clone && $clone.remove();\n $clone = null;\n };\n\n return positionTooltip;\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/tooltip/_position_tooltip.js\n ** module id = 713\n ** module chunks = 0\n **/","define(function (require) {\n return function FlattenDataObjectUtilService() {\n var _ = require('lodash');\n\n /*\n * Accepts a Kibana data object, flattens the data.series values array,\n * and returns an array of values objects.\n */\n\n return function (obj) {\n var charts;\n\n if (!_.isObject(obj) || !obj.rows && !obj.columns && !obj.series) {\n throw new TypeError('FlattenDataObjUtilService expects an object with a series, rows, or columns key');\n }\n\n if (!obj.series) {\n charts = obj.rows ? obj.rows : obj.columns;\n }\n\n return _(charts ? charts : [obj])\n .pluck('series')\n .flattenDeep()\n .pluck('values')\n .flattenDeep()\n .filter(Boolean)\n .value();\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/zero_injection/flatten_data.js\n ** module id = 714\n ** module chunks = 0\n **/","define(function (require) {\n return function UniqueXValuesUtilService(Private) {\n var _ = require('lodash');\n\n var flattenDataArray = Private(require('components/vislib/components/zero_injection/flatten_data'));\n\n /*\n * Accepts a Kibana data object.\n * Returns an object with unique x axis values as keys with an object of\n * their index numbers and an isNumber boolean as their values.\n * e.g. { 'xAxisValue': { index: 1, isNumber: false }}, ...\n */\n\n return function (obj) {\n if (!_.isObject(obj)) {\n throw new TypeError('UniqueXValuesUtilService expects an object');\n }\n\n var flattenedData = flattenDataArray(obj);\n var uniqueXValues = {};\n\n var charts;\n if (!obj.series) {\n charts = obj.rows ? obj.rows : obj.columns;\n } else {\n charts = [obj];\n }\n\n var isDate = charts.every(function (chart) {\n return chart.ordered && chart.ordered.date;\n });\n\n var isOrdered = charts.every(function (chart) {\n return chart.ordered;\n });\n\n flattenedData.forEach(function (d, i) {\n var key = d.x;\n var prev = uniqueXValues[key];\n\n if (d.xi != null) {\n i = d.xi;\n }\n\n if (prev) {\n i = Math.min(i, prev.index);\n }\n\n uniqueXValues[key] = {\n index: i,\n isDate: isDate,\n isOrdered: isOrdered,\n isNumber: _.isNumber(key)\n };\n });\n\n return uniqueXValues;\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/zero_injection/uniq_keys.js\n ** module id = 715\n ** module chunks = 0\n **/","define(function (require) {\n return function ZeroFillDataArrayUtilService(Private) {\n var _ = require('lodash');\n\n /*\n * Accepts an array of zero-filled y value objects (arr1)\n * and a kibana data.series[i].values array of objects (arr2).\n * Return a zero-filled array of objects (arr1).\n */\n\n return function (arr1, arr2) {\n if (!_.isArray(arr1) || !_.isArray(arr2)) {\n throw new TypeError('ZeroFillDataArrayUtilService expects 2 arrays');\n }\n\n var max = arr2.length;\n var getX = function (d) {\n return d.x === val.x;\n };\n var i;\n var val;\n var index;\n\n for (i = 0; i < max; i++) {\n val = arr2[i];\n index = _.findIndex(arr1, getX);\n arr1.splice(index, 1, val);\n }\n\n return arr1;\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/zero_injection/zero_fill_data_array.js\n ** module id = 716\n ** module chunks = 0\n **/","define(function () {\n return function ZeroFilledArrayUtilService() {\n var _ = require('lodash');\n\n /*\n * Accepts an array of x axis values (strings or numbers).\n * Returns a zero filled array.\n */\n\n return function (arr) {\n if (!_.isArray(arr)) {\n throw new Error('ZeroFilledArrayUtilService expects an array of strings or numbers');\n }\n\n var zeroFilledArray = [];\n\n arr.forEach(function (val) {\n zeroFilledArray.push({\n x: val,\n xi: Infinity,\n y: 0\n });\n });\n\n return zeroFilledArray;\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/components/zero_injection/zero_filled_array.js\n ** module id = 717\n ** module chunks = 0\n **/","define(function (require) {\n var module = require('modules').get('kibana/vislib', ['kibana']);\n\n require('components/private');\n\n module.service('d3', function () {\n return require('d3');\n });\n\n /**\n * Provides the Kibana4 Visualization Library\n *\n * @module vislib\n * @main vislib\n * @return {Object} Contains the version number and the Vis Class for creating visualizations\n */\n module.service('vislib', function (Private) {\n return {\n version: '0.0.0',\n Vis: Private(require('components/vislib/vis'))\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/index.js\n ** module id = 718\n ** module chunks = 0\n **/","define(function (require) {\n return function AlertsFactory(d3, Private) {\n var $ = require('jquery');\n var _ = require('lodash');\n\n /**\n * Adds allerts that float in front of a visualization\n *\n * @class Alerts\n * @constructor\n * @param el {HTMLElement} Reference to DOM element\n */\n function Alerts(vis, data, alertDefs) {\n if (!(this instanceof Alerts)) {\n return new Alerts(vis, data, alertDefs);\n }\n\n this.vis = vis;\n this.data = data;\n this.alertDefs = alertDefs || [];\n\n $(vis.el).on('mouseenter', '.vis-alerts-tray', function () {\n var $tray = $(this);\n hide();\n $(vis.el).on('mousemove', checkForExit);\n\n function hide() {\n $tray.css({\n 'pointer-events': 'none',\n opacity: 0.3\n });\n }\n\n function show() {\n $(vis.el).off('mousemove', checkForExit);\n $tray.css({\n 'pointer-events': 'auto',\n opacity: 1\n });\n }\n\n function checkForExit(event) {\n var pos = $tray.offset();\n if (pos.top > event.clientY || pos.left > event.clientX) return show();\n\n var bottom = pos.top + $tray.height();\n if (event.clientY > bottom) return show();\n\n var right = pos.left + $tray.width();\n if (event.clientX > right) return show();\n }\n });\n }\n\n /**\n * Renders chart titles\n *\n * @method render\n * @returns {D3.Selection|D3.Transition.Transition} DOM element with chart titles\n */\n Alerts.prototype.render = function () {\n var vis = this.vis;\n var data = this.data;\n\n var alerts = _(this.alertDefs)\n .map(function (alertDef) {\n if (!alertDef) return;\n if (alertDef.test && !alertDef.test(vis, data)) return;\n\n var type = alertDef.type || 'info';\n var icon = alertDef.icon || type;\n var msg = alertDef.msg;\n\n // alert container\n var $icon = $('').addClass('vis-alerts-icon fa fa-' + icon);\n var $text = $('

').addClass('vis-alerts-text').text(msg);\n\n return $('

').addClass('vis-alert vis-alert-' + type).append([$icon, $text]);\n })\n .compact();\n\n if (!alerts.size()) return;\n\n $(vis.el).find('.vis-alerts').append(\n $('
').addClass('vis-alerts-tray').append(alerts.value())\n );\n };\n\n return Alerts;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/alerts.js\n ** module id = 719\n ** module chunks = 0\n **/","define(function (require) {\n return function AxisTitleFactory(d3, Private) {\n var $ = require('jquery');\n var _ = require('lodash');\n\n var ErrorHandler = Private(require('components/vislib/lib/_error_handler'));\n\n /**\n * Appends axis title(s) to the visualization\n *\n * @class AxisTitle\n * @constructor\n * @param el {HTMLElement} DOM element\n * @param xTitle {String} X-axis title\n * @param yTitle {String} Y-axis title\n */\n _.class(AxisTitle).inherits(ErrorHandler);\n function AxisTitle(el, xTitle, yTitle) {\n if (!(this instanceof AxisTitle)) {\n return new AxisTitle(el, xTitle, yTitle);\n }\n\n this.el = el;\n this.xTitle = xTitle;\n this.yTitle = yTitle;\n }\n\n /**\n * Renders both x and y axis titles\n *\n * @method render\n * @returns {HTMLElement} DOM Element with axis titles\n */\n AxisTitle.prototype.render = function () {\n d3.select(this.el).select('.x-axis-title').call(this.draw(this.xTitle));\n d3.select(this.el).select('.y-axis-title').call(this.draw(this.yTitle));\n };\n\n /**\n * Appends an SVG with title text\n *\n * @method draw\n * @param title {String} Axis title\n * @returns {Function} Appends axis title to a D3 selection\n */\n AxisTitle.prototype.draw = function (title) {\n var self = this;\n\n return function (selection) {\n selection.each(function () {\n var el = this;\n var div = d3.select(el);\n var width = $(el).width();\n var height = $(el).height();\n\n self.validateWidthandHeight(width, height);\n\n div.append('svg')\n .attr('width', width)\n .attr('height', height)\n .append('text')\n .attr('transform', function () {\n if (div.attr('class') === 'x-axis-title') {\n return 'translate(' + width / 2 + ',11)';\n }\n return 'translate(11,' + height / 2 + ')rotate(270)';\n })\n .attr('text-anchor', 'middle')\n .text(title);\n });\n };\n };\n\n return AxisTitle;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/axis_title.js\n ** module id = 720\n ** module chunks = 0\n **/","define(function (require) {\n return function DispatchClass(d3, Private) {\n var _ = require('lodash');\n var $ = require('jquery');\n var Tooltip = Private(require('components/vislib/components/tooltip/tooltip'));\n var SimpleEmitter = require('utils/SimpleEmitter');\n\n /**\n * Handles event responses\n *\n * @class Dispatch\n * @constructor\n * @param handler {Object} Reference to Handler Class Object\n */\n\n _.class(Dispatch).inherits(SimpleEmitter);\n function Dispatch(handler) {\n if (!(this instanceof Dispatch)) {\n return new Dispatch(handler);\n }\n\n Dispatch.Super.call(this);\n this.handler = handler;\n this._listeners = {};\n }\n\n /**\n * Response to click and hover events\n *\n * @param d {Object} Data point\n * @param i {Number} Index number of data point\n * @returns {{value: *, point: *, label: *, color: *, pointIndex: *,\n * series: *, config: *, data: (Object|*),\n * e: (d3.event|*), handler: (Object|*)}} Event response object\n */\n Dispatch.prototype.eventResponse = function (d, i) {\n var datum = d._input || d;\n var data = d3.event.target.nearestViewportElement.__data__;\n var label = d.label ? d.label : d.name;\n var isSeries = !!(data.series);\n var isSlices = !!(data.slices);\n var series = isSeries ? data.series : undefined;\n var slices = isSlices ? data.slices : undefined;\n var handler = this.handler;\n var color = handler.data.color;\n var isPercentage = (handler._attr.mode === 'percentage');\n\n var eventData = {\n value: d.y,\n point: datum,\n datum: datum,\n label: label,\n color: color(label),\n pointIndex: i,\n series: series,\n slices: slices,\n config: handler._attr,\n data: data,\n e: d3.event,\n handler: handler\n };\n\n if (isSeries) {\n // Find object with the actual d value and add it to the point object\n var object = _.find(series, { 'label': d.label });\n eventData.value = +object.values[i].y;\n\n if (isPercentage) {\n // Add the formatted percentage to the point object\n eventData.percent = (100 * d.y).toFixed(1) + '%';\n }\n }\n\n return eventData;\n };\n\n /**\n * Returns a function that adds events and listeners to a D3 selection\n *\n * @method addEvent\n * @param event {String}\n * @param callback {Function}\n * @returns {Function}\n */\n Dispatch.prototype.addEvent = function (event, callback) {\n return function (selection) {\n selection.each(function () {\n var element = d3.select(this);\n\n if (typeof callback === 'function') {\n return element.on(event, callback);\n }\n });\n };\n };\n\n /**\n *\n * @method addHoverEvent\n * @returns {Function}\n */\n Dispatch.prototype.addHoverEvent = function () {\n var self = this;\n var isClickable = this.listenerCount('click') > 0;\n var addEvent = this.addEvent;\n var $el = this.handler.el;\n\n function hover(d, i) {\n // Add pointer if item is clickable\n if (isClickable) {\n self.addMousePointer.call(this, arguments);\n }\n\n self.highlightLegend.call(this, $el);\n self.emit('hover', self.eventResponse(d, i));\n }\n\n return addEvent('mouseover', hover);\n };\n\n /**\n *\n * @method addMouseoutEvent\n * @returns {Function}\n */\n Dispatch.prototype.addMouseoutEvent = function () {\n var self = this;\n var addEvent = this.addEvent;\n var $el = this.handler.el;\n\n function mouseout() {\n self.unHighlightLegend.call(this, $el);\n }\n\n return addEvent('mouseout', mouseout);\n };\n\n /**\n *\n * @method addClickEvent\n * @returns {Function}\n */\n Dispatch.prototype.addClickEvent = function () {\n var self = this;\n var addEvent = this.addEvent;\n\n function click(d, i) {\n self.emit('click', self.eventResponse(d, i));\n }\n\n return addEvent('click', click);\n };\n\n /**\n * Determine if we will allow brushing\n *\n * @method allowBrushing\n * @returns {Boolean}\n */\n Dispatch.prototype.allowBrushing = function () {\n var xAxis = this.handler.xAxis;\n return Boolean(xAxis.ordered && xAxis.xScale && _.isFunction(xAxis.xScale.invert));\n };\n\n /**\n * Determine if brushing is currently enabled\n *\n * @method isBrushable\n * @returns {Boolean}\n */\n Dispatch.prototype.isBrushable = function () {\n return this.allowBrushing() && this.listenerCount('brush') > 0;\n };\n\n /**\n *\n * @param svg\n * @returns {Function}\n */\n Dispatch.prototype.addBrushEvent = function (svg) {\n if (!this.isBrushable()) return;\n\n var xScale = this.handler.xAxis.xScale;\n var yScale = this.handler.xAxis.yScale;\n var brush = this.createBrush(xScale, svg);\n\n function brushEnd() {\n if (!validBrushClick(d3.event)) return;\n\n var bar = d3.select(this);\n var startX = d3.mouse(svg.node());\n var startXInv = xScale.invert(startX[0]);\n\n // Reset the brush value\n brush.extent([startXInv, startXInv]);\n\n // Magic!\n // Need to call brush on svg to see brush when brushing\n // while on top of bars.\n // Need to call brush on bar to allow the click event to be registered\n svg.call(brush);\n bar.call(brush);\n }\n\n return this.addEvent('mousedown', brushEnd);\n };\n\n\n /**\n * Mouseover Behavior\n *\n * @method addMousePointer\n * @returns {D3.Selection}\n */\n Dispatch.prototype.addMousePointer = function () {\n return d3.select(this).style('cursor', 'pointer');\n };\n\n /**\n * Mouseover Behavior\n *\n * @param element {D3.Selection}\n * @method highlightLegend\n */\n Dispatch.prototype.highlightLegend = function (element) {\n var label = this.getAttribute('data-label');\n\n if (!label) return;\n\n d3.select(element)\n .select('.legend-ul')\n .selectAll('li.color')\n .filter(function (d, i) {\n return this.getAttribute('data-label') !== label;\n })\n .classed('blur_shape', true);\n };\n\n /**\n * Mouseout Behavior\n *\n * @param element {D3.Selection}\n * @method unHighlightLegend\n */\n Dispatch.prototype.unHighlightLegend = function (element) {\n d3.select(element)\n .select('.legend-ul')\n .selectAll('li.color')\n .classed('blur_shape', false);\n };\n\n /**\n * Adds D3 brush to SVG and returns the brush function\n *\n * @param xScale {Function} D3 xScale function\n * @param svg {HTMLElement} Reference to SVG\n * @returns {*} Returns a D3 brush function and a SVG with a brush group attached\n */\n Dispatch.prototype.createBrush = function (xScale, svg) {\n var self = this;\n var attr = self.handler._attr;\n var height = attr.height;\n var margin = attr.margin;\n\n // Brush scale\n var brush = d3.svg.brush()\n .x(xScale)\n .on('brushend', function brushEnd() {\n\n // Assumes data is selected at the chart level\n // In this case, the number of data objects should always be 1\n var data = d3.select(this).data()[0];\n var isTimeSeries = (data.ordered && data.ordered.date);\n\n // Allows for brushing on d3.scale.ordinal()\n var selected = xScale.domain().filter(function (d) {\n return (brush.extent()[0] <= xScale(d)) && (xScale(d) <= brush.extent()[1]);\n });\n var range = isTimeSeries ? brush.extent() : selected;\n\n return self.emit('brush', {\n range: range,\n config: attr,\n e: d3.event,\n data: data\n });\n });\n\n // if `addBrushing` is true, add brush canvas\n if (self.listenerCount('brush')) {\n svg.insert('g', 'g')\n .attr('class', 'brush')\n .call(brush)\n .call(function (brushG) {\n // hijack the brush start event to filter out right/middle clicks\n var brushHandler = brushG.on('mousedown.brush');\n if (!brushHandler) return; // touch events in use\n brushG.on('mousedown.brush', function () {\n if (validBrushClick(d3.event)) brushHandler.apply(this, arguments);\n });\n })\n .selectAll('rect')\n .attr('height', height - margin.top - margin.bottom);\n\n return brush;\n }\n };\n\n function validBrushClick(event) {\n return event.button === 0;\n }\n\n\n return Dispatch;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/dispatch.js\n ** module id = 721\n ** module chunks = 0\n **/","define(function (require) {\n return function HandlerTypeFactory(Private) {\n var pointSeries = Private(require('components/vislib/lib/handler/types/point_series'));\n\n /**\n * Handles the building of each visualization\n *\n * @return {Function} Returns an Object of Handler types\n */\n return {\n histogram: pointSeries.column,\n line: pointSeries.line,\n pie: Private(require('components/vislib/lib/handler/types/pie')),\n area: pointSeries.area,\n tile_map: Private(require('components/vislib/lib/handler/types/tile_map'))\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/handler/handler_types.js\n ** module id = 722\n ** module chunks = 0\n **/","define(function (require) {\n return function PieHandler(d3, Private) {\n var Handler = Private(require('components/vislib/lib/handler/handler'));\n var Data = Private(require('components/vislib/lib/data'));\n var Legend = Private(require('components/vislib/lib/legend'));\n var ChartTitle = Private(require('components/vislib/lib/chart_title'));\n\n /*\n * Handler for Pie visualizations.\n */\n\n return function (vis) {\n var data = new Data(vis.data, vis._attr);\n\n return new Handler(vis, {\n legend: new Legend(vis, vis.el, data.pieNames(), data.getPieColorFunc(), vis._attr),\n chartTitle: new ChartTitle(vis.el)\n });\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/handler/types/pie.js\n ** module id = 723\n ** module chunks = 0\n **/","define(function (require) {\n return function ColumnHandler(d3, Private) {\n var injectZeros = Private(require('components/vislib/components/zero_injection/inject_zeros'));\n var Handler = Private(require('components/vislib/lib/handler/handler'));\n var Data = Private(require('components/vislib/lib/data'));\n var Legend = Private(require('components/vislib/lib/legend'));\n var XAxis = Private(require('components/vislib/lib/x_axis'));\n var YAxis = Private(require('components/vislib/lib/y_axis'));\n var AxisTitle = Private(require('components/vislib/lib/axis_title'));\n var ChartTitle = Private(require('components/vislib/lib/chart_title'));\n var Alerts = Private(require('components/vislib/lib/alerts'));\n\n /*\n * Create handlers for Area, Column, and Line charts which\n * are all nearly the same minus a few details\n */\n function create(opts) {\n opts = opts || {};\n\n return function (vis) {\n var isUserDefinedYAxis = vis._attr.setYExtents;\n var data;\n\n if (opts.zeroFill) {\n data = new Data(injectZeros(vis.data), vis._attr);\n } else {\n data = new Data(vis.data, vis._attr);\n }\n\n return new Handler(vis, {\n data: data,\n legend: new Legend(vis, vis.el, data.labels, data.color, vis._attr),\n axisTitle: new AxisTitle(vis.el, data.get('xAxisLabel'), data.get('yAxisLabel')),\n chartTitle: new ChartTitle(vis.el),\n xAxis: new XAxis({\n el : vis.el,\n xValues : data.xValues(),\n ordered : data.get('ordered'),\n xAxisFormatter : data.get('xAxisFormatter'),\n expandLastBucket : opts.expandLastBucket,\n _attr : vis._attr\n }),\n alerts: new Alerts(vis, data, opts.alerts),\n yAxis: new YAxis({\n el : vis.el,\n yMin : isUserDefinedYAxis ? vis._attr.yAxis.min : data.getYMin(),\n yMax : isUserDefinedYAxis ? vis._attr.yAxis.max : data.getYMax(),\n yAxisFormatter: data.get('yAxisFormatter'),\n _attr: vis._attr\n })\n });\n\n };\n }\n\n return {\n line: create(),\n\n column: create({\n zeroFill: true,\n expandLastBucket: true\n }),\n\n area: create({\n zeroFill: true,\n alerts: [\n {\n type: 'warning',\n msg: 'Positive and negative values are not accurately represented by stacked ' +\n 'area charts. Either changing the chart mode to \"overlay\" or using a ' +\n 'bar chart is recommended.',\n test: function (vis, data) {\n if (!data.shouldBeStacked() || data.maxNumberOfSeries() < 2) return;\n\n var hasPos = data.getYMax(data._getY) > 0;\n var hasNeg = data.getYMin(data._getY) < 0;\n return (hasPos && hasNeg);\n }\n }\n ]\n })\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/handler/types/point_series.js\n ** module id = 724\n ** module chunks = 0\n **/","define(function (require) {\n return function MapHandler(d3, Private) {\n var _ = require('lodash');\n\n var Handler = Private(require('components/vislib/lib/handler/handler'));\n var Data = Private(require('components/vislib/lib/data'));\n\n return function (vis) {\n var data = new Data(vis.data, vis._attr);\n\n var MapHandler = new Handler(vis, {\n data: data\n });\n\n MapHandler.resize = function () {\n this.charts.forEach(function (chart) {\n chart.resizeArea();\n });\n };\n\n return MapHandler;\n };\n };\n});\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/handler/types/tile_map.js\n ** module id = 725\n ** module chunks = 0\n **/","define(function (require) {\n return function LayoutFactory(d3, Private) {\n var _ = require('lodash');\n\n var layoutType = Private(require('components/vislib/lib/layout/layout_types'));\n\n /**\n * Builds the visualization DOM layout\n *\n * The Layout Constructor is responsible for rendering the visualization\n * layout, which includes all the DOM div elements.\n * Input:\n * 1. DOM div - parent element for which the layout is attached\n * 2. data - data is bound to the div element\n * 3. chartType (e.g. 'histogram') - specifies the layout type to grab\n *\n * @class Layout\n * @constructor\n * @param el {HTMLElement} HTML element to which the chart will be appended\n * @param data {Object} Elasticsearch query results for this specific chart\n * @param chartType {Object} Reference to chart functions, i.e. Pie\n */\n function Layout(el, data, chartType, opts) {\n if (!(this instanceof Layout)) {\n return new Layout(el, data, chartType, opts);\n }\n\n this.el = el;\n this.data = data;\n this.opts = opts;\n this.layoutType = layoutType[chartType](this.el, this.data);\n }\n\n // Render the layout\n /**\n * Renders visualization HTML layout\n * Remove all elements from the current visualization and creates the layout\n *\n * @method render\n */\n Layout.prototype.render = function () {\n this.removeAll(this.el);\n this.createLayout(this.layoutType);\n };\n\n /**\n * Create the layout based on the json array provided\n * for each object in the layout array, call the layout function\n *\n * @method createLayout\n * @param arr {Array} Json array\n * @returns {*} Creates the visualization layout\n */\n Layout.prototype.createLayout = function (arr) {\n var self = this;\n\n return _.each(arr, function (obj) {\n self.layout(obj);\n });\n };\n\n /**\n * Appends a DOM element based on the object keys\n * check to see if reference to DOM element is string but not class selector\n * Create a class selector\n *\n * @method layout\n * @param obj {Object} Instructions for creating the layout of a DOM Element\n * @returns {*} DOM Element\n */\n Layout.prototype.layout = function (obj) {\n if (!obj.parent) {\n throw new Error('No parent element provided');\n }\n\n if (!obj.type) {\n throw new Error('No element type provided');\n }\n\n if (typeof obj.type !== 'string') {\n throw new Error(obj.type + ' must be a string');\n }\n\n if (typeof obj.parent === 'string' && obj.parent.charAt(0) !== '.') {\n obj.parent = '.' + obj.parent;\n }\n\n var childEl = this.appendElem(obj.parent, obj.type, obj.class);\n\n if (obj.datum) {\n childEl.datum(obj.datum);\n }\n\n if (obj.splits) {\n childEl.call(obj.splits, obj.parent, this.opts);\n }\n\n if (obj.children) {\n var newParent = childEl[0][0];\n\n _.forEach(obj.children, function (obj) {\n if (!obj.parent) {\n obj.parent = newParent;\n }\n });\n\n this.createLayout(obj.children);\n }\n\n return childEl;\n };\n\n /**\n * Appends a `type` of DOM element to `el` and gives it a class name attribute `className`\n *\n * @method appendElem\n * @param el {HTMLElement} Reference to a DOM Element\n * @param type {String} DOM element type\n * @param className {String} CSS class name\n * @returns {*} Reference to D3 Selection\n */\n Layout.prototype.appendElem = function (el, type, className) {\n if (!el || !type || !className) {\n throw new Error('Function requires that an el, type, and class be provided');\n }\n\n if (typeof el === 'string') {\n // Create a DOM reference with a d3 selection\n // Need to make sure that the `el` is bound to this object\n // to prevent it from being appended to another Layout\n el = d3.select(this.el)\n .select(el)[0][0];\n }\n\n return d3.select(el)\n .append(type)\n .attr('class', className);\n };\n\n /**\n * Removes all DOM elements from DOM element\n *\n * @method removeAll\n * @param el {HTMLElement} Reference to DOM element\n * @returns {D3.Selection|D3.Transition.Transition} Reference to an empty DOM element\n */\n Layout.prototype.removeAll = function (el) {\n return d3.select(el).selectAll('*').remove();\n };\n\n return Layout;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/layout.js\n ** module id = 726\n ** module chunks = 0\n **/","define(function (require) {\n return function LayoutTypeFactory(Private) {\n\n /**\n * Provides the HTML layouts for each visualization class\n *\n * @module vislib\n * @submodule LayoutTypeFactory\n * @param Private {Service} Loads any function as an angular module\n * @return {Function} Returns an Object of HTML layouts for each visualization class\n */\n return {\n histogram: Private(require('components/vislib/lib/layout/types/column_layout')),\n line: Private(require('components/vislib/lib/layout/types/column_layout')),\n area: Private(require('components/vislib/lib/layout/types/column_layout')),\n pie: Private(require('components/vislib/lib/layout/types/pie_layout')),\n tile_map: Private(require('components/vislib/lib/layout/types/map_layout'))\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/layout_types.js\n ** module id = 727\n ** module chunks = 0\n **/","define(function () {\n return function ChartSplitFactory(d3) {\n /*\n * Adds div DOM elements to the `.chart-wrapper` element based on the data layout.\n * For example, if the data has rows, it returns the same number of\n * `.chart` elements as row objects.\n */\n return function split(selection) {\n selection.each(function (data) {\n var div = d3.select(this)\n .attr('class', function () {\n if (data.rows) {\n return 'chart-wrapper-row';\n } else if (data.columns) {\n return 'chart-wrapper-column';\n } else {\n return 'chart-wrapper';\n }\n });\n var divClass;\n\n var charts = div.selectAll('charts')\n .append('div')\n .data(function (d) {\n if (d.rows) {\n divClass = 'chart-row';\n return d.rows;\n } else if (d.columns) {\n divClass = 'chart-column';\n return d.columns;\n } else {\n divClass = 'chart';\n return [d];\n }\n })\n .enter()\n .append('div')\n .attr('class', function () {\n return divClass;\n });\n\n if (!data.series) {\n charts.call(split);\n }\n });\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/splits/column_chart/chart_split.js\n ** module id = 728\n ** module chunks = 0\n **/","define(function () {\n return function ChartTitleSplitFactory(d3) {\n /*\n * Adds div DOM elements to either the `.y-axis-chart-title` element or the\n * `.x-axis-chart-title` element based on the data layout.\n * For example, if the data has rows, it returns the same number of\n * `.chart-title` elements as row objects.\n * if not data.rows or data.columns, return no chart titles\n */\n return function (selection) {\n selection.each(function (data) {\n var div = d3.select(this);\n\n if (!data.series) {\n div.selectAll('.chart-title')\n .append('div')\n .data(function (d) {\n return d.rows ? d.rows : d.columns;\n })\n .enter()\n .append('div')\n .attr('class', 'chart-title');\n\n if (data.rows) {\n d3.select('.x-axis-chart-title').remove();\n } else {\n d3.select('.y-axis-chart-title').remove();\n }\n\n return div;\n }\n\n return d3.select(this).remove();\n });\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/splits/column_chart/chart_title_split.js\n ** module id = 729\n ** module chunks = 0\n **/","define(function () {\n return function XAxisSplitFactory(d3) {\n\n /*\n * Adds div DOM elements to the `.x-axis-div-wrapper` element based on the data layout.\n * For example, if the data has rows, it returns the same number of\n * `.x-axis-div` elements as row objects.\n */\n\n return function (selection) {\n selection.each(function () {\n var div = d3.select(this);\n\n div.selectAll('.x-axis-div')\n .append('div')\n .data(function (d) {\n return d.columns ? d.columns : [d];\n })\n .enter()\n .append('div')\n .attr('class', 'x-axis-div');\n });\n };\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/splits/column_chart/x_axis_split.js\n ** module id = 730\n ** module chunks = 0\n **/","define(function () {\n return function YAxisSplitFactory(d3) {\n /*\n * Adds div DOM elements to the `.y-axis-div-wrapper` element based on the data layout.\n * For example, if the data has rows, it returns the same number of\n * `.y-axis-div` elements as row objects.\n */\n\n // render and get bounding box width\n return function (selection, parent, opts) {\n var yAxis = opts && opts.yAxis;\n\n selection.each(function () {\n var div = d3.select(this);\n\n div.call(setWidth, yAxis);\n\n div.selectAll('.y-axis-div')\n .append('div')\n .data(function (d) {\n return d.rows ? d.rows : [d];\n })\n .enter()\n .append('div')\n .attr('class', 'y-axis-div');\n });\n };\n\n function setWidth(el, yAxis) {\n if (!yAxis) return;\n\n var padding = 5;\n var height = parseInt(el.node().clientHeight, 10);\n\n // render svg and get the width of the bounding box\n var svg = d3.select('body')\n .append('svg')\n .attr('style', 'position:absolute; top:-10000; left:-10000');\n var width = svg.append('g')\n .call(yAxis.getYAxis(height)).node().getBBox().width + padding;\n svg.remove();\n\n el.style('width', (width + padding) + 'px');\n }\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/splits/column_chart/y_axis_split.js\n ** module id = 731\n ** module chunks = 0\n **/","define(function () {\n return function ChartSplitFactory(d3) {\n\n /*\n * Adds div DOM elements to the `.chart-wrapper` element based on the data layout.\n * For example, if the data has rows, it returns the same number of\n * `.chart` elements as row objects.\n */\n\n return function split(selection) {\n selection.each(function (data) {\n var div = d3.select(this)\n .attr('class', function () {\n if (data.rows) {\n return 'chart-wrapper-row';\n } else if (data.columns) {\n return 'chart-wrapper-column';\n } else {\n return 'chart-wrapper';\n }\n });\n var divClass;\n\n var charts = div.selectAll('charts')\n .append('div')\n .data(function (d) {\n if (d.rows) {\n divClass = 'chart-row';\n return d.rows;\n } else if (d.columns) {\n divClass = 'chart-column';\n return d.columns;\n } else {\n divClass = 'chart';\n return [d];\n }\n })\n .enter()\n .append('div')\n .attr('class', function () {\n return divClass;\n });\n\n if (!data.slices) {\n charts.call(split);\n }\n });\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/splits/pie_chart/chart_split.js\n ** module id = 732\n ** module chunks = 0\n **/","define(function () {\n return function ChartTitleSplitFactory(d3) {\n\n /*\n * Adds div DOM elements to either the `.y-axis-chart-title` element or the\n * `.x-axis-chart-title` element based on the data layout.\n * For example, if the data has rows, it returns the same number of\n * `.chart-title` elements as row objects.\n * if not data.rows or data.columns, return no chart titles\n */\n\n return function (selection, parent) {\n selection.each(function (data) {\n var div = d3.select(this);\n\n if (!data.slices) {\n div.selectAll('.chart-title')\n .append('div')\n .data(function (d) {\n return d.rows ? d.rows : d.columns;\n })\n .enter()\n .append('div')\n .attr('class', 'chart-title');\n\n if (data.rows) {\n d3.select(parent).select('.x-axis-chart-title').remove();\n } else {\n d3.select(parent).select('.y-axis-chart-title').remove();\n }\n\n return div;\n }\n\n return d3.select(this).remove();\n });\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js\n ** module id = 733\n ** module chunks = 0\n **/","define(function () {\n return function ChartSplitFactory(d3) {\n /*\n * Adds div DOM elements to the `.chart-wrapper` element based on the data layout.\n * For example, if the data has rows, it returns the same number of\n * `.chart` elements as row objects.\n */\n return function split(selection) {\n selection.each(function (data) {\n var div = d3.select(this)\n .attr('class', function () {\n // Determine the parent class\n if (data.rows) {\n return 'chart-wrapper-row';\n } else if (data.columns) {\n return 'chart-wrapper-column';\n } else {\n return 'chart-wrapper';\n }\n });\n var divClass;\n\n var charts = div.selectAll('charts')\n .append('div')\n .data(function (d) {\n // Determine the child class\n if (d.rows) {\n divClass = 'chart-row';\n return d.rows;\n } else if (d.columns) {\n divClass = 'chart-column';\n return d.columns;\n } else {\n divClass = 'chart';\n return [d];\n }\n })\n .enter()\n .append('div')\n .attr('class', function () {\n return divClass;\n });\n\n if (!data.geoJson) {\n charts.call(split);\n }\n });\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/splits/tile_map/map_split.js\n ** module id = 734\n ** module chunks = 0\n **/","define(function (require) {\n return function ColumnLayoutFactory(d3, Private) {\n\n var mapSplit = Private(require('components/vislib/lib/layout/splits/tile_map/map_split'));\n\n /*\n * Specifies the visualization layout for tile maps.\n *\n * This is done using an array of objects. The first object has\n * a `parent` DOM element, a DOM `type` (e.g. div, svg, etc),\n * and a `class` (required). Each child can omit the parent object,\n * but must include a type and class.\n *\n * Optionally, you can specify `datum` to be bound to the DOM\n * element, a `splits` function that divides the selected element\n * into more DOM elements based on a callback function provided, or\n * a children array which nests other layout objects.\n *\n * Objects in children arrays are children of the current object and return\n * DOM elements which are children of their respective parent element.\n */\n\n return function (el, data) {\n if (!el || !data) {\n throw new Error('Both an el and data need to be specified');\n }\n\n return [\n {\n parent: el,\n type: 'div',\n class: 'vis-wrapper',\n datum: data,\n children: [\n {\n type: 'div',\n class: 'vis-col-wrapper',\n children: [\n {\n type: 'div',\n class: 'chart-wrapper',\n splits: mapSplit\n }\n ]\n }\n ]\n }\n ];\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/types/map_layout.js\n ** module id = 735\n ** module chunks = 0\n **/","define(function (require) {\n return function ColumnLayoutFactory(d3, Private) {\n var chartSplit = Private(require('components/vislib/lib/layout/splits/pie_chart/chart_split'));\n var chartTitleSplit = Private(require('components/vislib/lib/layout/splits/pie_chart/chart_title_split'));\n\n /**\n * Specifies the visualization layout for column charts.\n *\n * This is done using an array of objects. The first object has\n * a `parent` DOM element, a DOM `type` (e.g. div, svg, etc),\n * and a `class` (required). Each child can omit the parent object,\n * but must include a type and class.\n *\n * Optionally, you can specify `datum` to be bound to the DOM\n * element, a `splits` function that divides the selected element\n * into more DOM elements based on a callback function provided, or\n * a children array which nests other layout objects.\n *\n * Objects in children arrays are children of the current object and return\n * DOM elements which are children of their respective parent element.\n */\n\n return function (el, data) {\n if (!el || !data) {\n throw new Error('Both an el and data need to be specified');\n }\n\n return [\n {\n parent: el,\n type: 'div',\n class: 'vis-wrapper',\n datum: data,\n children: [\n {\n type: 'div',\n class: 'y-axis-chart-title',\n splits: chartTitleSplit\n },\n {\n type: 'div',\n class: 'vis-col-wrapper',\n children: [\n {\n type: 'div',\n class: 'chart-wrapper',\n splits: chartSplit\n },\n {\n type: 'div',\n class: 'x-axis-chart-title',\n splits: chartTitleSplit\n }\n ]\n },\n {\n type: 'div',\n class: 'legend-col-wrapper'\n }\n ]\n }\n ];\n };\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/layout/types/pie_layout.js\n ** module id = 736\n ** module chunks = 0\n **/","define(function (require) {\n return function ResizeCheckerFactory(Private, Notifier, $rootScope) {\n var $ = require('jquery');\n var _ = require('lodash');\n\n var EventEmitter = Private(require('components/events'));\n var reflowWatcher = Private(require('components/reflow_watcher'));\n var sequencer = require('utils/sequencer');\n\n var SCHEDULE = ResizeChecker.SCHEDULE = sequencer.createEaseIn(\n 100, // shortest delay\n 10000, // longest delay\n 50 // tick count\n );\n\n // maximum ms that we can delay emitting 'resize'. This is only used\n // to debounce resizes when the size of the element is constantly changing\n var MS_MAX_RESIZE_DELAY = ResizeChecker.MS_MAX_RESIZE_DELAY = 500;\n\n /**\n * Checks the size of an element on a regular basis. Provides\n * an event that is emited when the element has changed size.\n *\n * @class ResizeChecker\n * @param {HtmlElement} el - the element to track the size of\n */\n _.class(ResizeChecker).inherits(EventEmitter);\n function ResizeChecker(el) {\n ResizeChecker.Super.call(this);\n\n this.$el = $(el);\n this.notify = new Notifier({ location: 'Vislib ResizeChecker ' + _.uniqueId() });\n\n this.saveSize();\n\n this.check = _.bind(this.check, this);\n this.check();\n\n this.onReflow = _.bind(this.onReflow, this);\n reflowWatcher.on('reflow', this.onReflow);\n }\n\n ResizeChecker.prototype.onReflow = function () {\n this.startSchedule(SCHEDULE);\n };\n\n /**\n * Read the size of the element\n *\n * @method read\n * @return {object} - an object with keys `w` (width) and `h` (height)\n */\n ResizeChecker.prototype.read = function () {\n return {\n w: this.$el[0].clientWidth,\n h: this.$el[0].clientHeight\n };\n };\n\n\n /**\n * Save the element size, preventing it from being considered as an\n * update.\n *\n * @method save\n * @param {object} [size] - optional size to save, otherwise #read() is called\n * @return {boolean} - true if their was a change in the new\n */\n ResizeChecker.prototype.saveSize = function (size) {\n if (!size) size = this.read();\n\n if (this._equalsSavedSize(size)) {\n return false;\n }\n\n this._savedSize = size;\n return true;\n };\n\n\n /**\n * Determine if a given size matches the currently saved size.\n *\n * @private\n * @method _equalsSavedSize\n * @param {object} a - an object that matches the return value of #read()\n * @return {boolean} - true if the passed in value matches the saved size\n */\n ResizeChecker.prototype._equalsSavedSize = function (a) {\n var b = this._savedSize || {};\n return a.w === b.w && a.h === b.h;\n };\n\n /**\n * Read the time that the dirty state last changed.\n *\n * @method lastDirtyChange\n * @return {timestamp} - the unix timestamp (in ms) of the last update\n * to the dirty state\n */\n ResizeChecker.prototype.lastDirtyChange = function () {\n return this._dirtyChangeStamp;\n };\n\n /**\n * Record the dirty state\n *\n * @method saveDirty\n * @param {boolean} val\n * @return {boolean} - true if the dirty state changed by this save\n */\n ResizeChecker.prototype.saveDirty = function (val) {\n val = !!val;\n\n if (val === this._isDirty) return false;\n\n this._isDirty = val;\n this._dirtyChangeStamp = Date.now();\n return true;\n };\n\n /**\n * The check routine that executes regularly and will reschedule itself\n * to run again in the future. It determines the state of the elements\n * size and decides when to emit the \"update\" event.\n *\n * @method check\n * @return {void}\n */\n ResizeChecker.prototype.check = function () {\n if (window.DISABLE_RESIZE_CHECKER) return;\n\n var newSize = this.read();\n var dirty = this.saveSize(newSize);\n var dirtyChanged = this.saveDirty(dirty);\n\n var doneDirty = !dirty && dirtyChanged;\n var muchDirty = dirty && (this.lastDirtyChange() - Date.now() > MS_MAX_RESIZE_DELAY);\n if (doneDirty || muchDirty) {\n this.emit('resize', newSize);\n }\n\n // if the dirty state is unchanged, continue using the previous schedule\n if (!dirtyChanged) {\n return this.continueSchedule();\n }\n\n return this.startSchedule(SCHEDULE);\n };\n\n /**\n * Start running a new schedule, using one of the SCHEDULE_* constants.\n *\n * @method startSchedule\n * @param {integer[]} schedule - an array of millisecond times that should\n * be used to schedule calls to #check();\n * @return {integer} - the id of the next timer\n */\n ResizeChecker.prototype.startSchedule = function (schedule) {\n if (window.DISABLE_RESIZE_CHECKER) return;\n\n this._tick = -1;\n this._currentSchedule = schedule;\n return this.continueSchedule();\n };\n\n /**\n * Continue running the current schedule. MUST BE CALLED AFTER #startSchedule()\n *\n * @method continueSchedule\n * @return {integer} - the id of the next timer\n */\n ResizeChecker.prototype.continueSchedule = function () {\n if (window.DISABLE_RESIZE_CHECKER) return;\n\n clearTimeout(this._timerId);\n\n if (this._tick < this._currentSchedule.length - 1) {\n // at the end of the schedule, don't progress any further but repeat the last value\n this._tick += 1;\n }\n\n var check = this.check; // already bound\n var tick = this._tick;\n var notify = this.notify;\n var ms = this._currentSchedule[this._tick];\n return (this._timerId = setTimeout(function () {\n check();\n }, ms));\n };\n\n /**\n * Signal that the ResizeChecker should shutdown.\n *\n * Cleans up it's listeners and timers.\n *\n * @method destroy\n * @return {void}\n */\n ResizeChecker.prototype.destroy = function () {\n reflowWatcher.off('reflow', this.onReflow);\n clearTimeout(this._timerId);\n };\n\n return ResizeChecker;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/resize_checker.js\n ** module id = 737\n ** module chunks = 0\n **/","define(function (require) {\n return function XAxisFactory(d3, Private) {\n var $ = require('jquery');\n var _ = require('lodash');\n var moment = require('moment');\n\n var ErrorHandler = Private(require('components/vislib/lib/_error_handler'));\n\n /**\n * Adds an x axis to the visualization\n *\n * @class XAxis\n * @constructor\n * @param args {{el: (HTMLElement), xValues: (Array), ordered: (Object|*),\n * xAxisFormatter: (Function), _attr: (Object|*)}}\n */\n _.class(XAxis).inherits(ErrorHandler);\n function XAxis(args) {\n if (!(this instanceof XAxis)) {\n return new XAxis(args);\n }\n\n this.el = args.el;\n this.xValues = args.xValues;\n this.ordered = args.ordered;\n this.xAxisFormatter = args.xAxisFormatter;\n this.expandLastBucket = args.expandLastBucket == null ? true : args.expandLastBucket;\n this._attr = _.defaults(args._attr || {});\n }\n\n /**\n * Renders the x axis\n *\n * @method render\n * @returns {D3.UpdateSelection} Appends x axis to visualization\n */\n XAxis.prototype.render = function () {\n d3.select(this.el).selectAll('.x-axis-div').call(this.draw());\n };\n\n /**\n * Returns d3 x axis scale function.\n * If time, return time scale, else return d3 ordinal scale for nominal data\n *\n * @method getScale\n * @returns {*} D3 scale function\n */\n XAxis.prototype.getScale = function () {\n var ordered = this.ordered;\n\n if (ordered && ordered.date) {\n return d3.time.scale.utc();\n }\n return d3.scale.ordinal();\n };\n\n /**\n * Add domain to the x axis scale.\n * if time, return a time domain, and calculate the min date, max date, and time interval\n * else, return a nominal (d3.scale.ordinal) domain, i.e. array of x axis values\n *\n * @method getDomain\n * @param scale {Function} D3 scale\n * @returns {*} D3 scale function\n */\n XAxis.prototype.getDomain = function (scale) {\n var ordered = this.ordered;\n\n if (ordered && ordered.date) {\n return this.getTimeDomain(scale, this.xValues);\n }\n return this.getOrdinalDomain(scale, this.xValues);\n };\n\n /**\n * Returns D3 time domain\n *\n * @method getTimeDomain\n * @param scale {Function} D3 scale function\n * @param data {Array}\n * @returns {*} D3 scale function\n */\n XAxis.prototype.getTimeDomain = function (scale, data) {\n return scale.domain([this.minExtent(data), this.maxExtent(data)]);\n };\n\n XAxis.prototype.minExtent = function (data) {\n return this._calculateExtent(data || this.xValues, 'min');\n };\n\n XAxis.prototype.maxExtent = function (data) {\n return this._calculateExtent(data || this.xValues, 'max');\n };\n\n /**\n *\n * @param data\n * @param extent\n */\n XAxis.prototype._calculateExtent = function (data, extent) {\n var ordered = this.ordered;\n var opts = [ordered[extent]];\n\n var point = d3[extent](data);\n if (this.expandLastBucket && extent === 'max') {\n point = this.addInterval(point);\n }\n opts.push(point);\n\n return d3[extent](opts.reduce(function (opts, v) {\n if (!_.isNumber(v)) v = +v;\n if (!isNaN(v)) opts.push(v);\n return opts;\n }, []));\n };\n\n /**\n * Add the interval to a point on the x axis,\n * this properly adds dates if needed.\n *\n * @param {number} x - a value on the x-axis\n * @returns {number} - x + the ordered interval\n */\n XAxis.prototype.addInterval = function (x) {\n return this.modByInterval(x, +1);\n };\n\n /**\n * Subtract the interval to a point on the x axis,\n * this properly subtracts dates if needed.\n *\n * @param {number} x - a value on the x-axis\n * @returns {number} - x - the ordered interval\n */\n XAxis.prototype.subtractInterval = function (x) {\n return this.modByInterval(x, -1);\n };\n\n /**\n * Modify the x value by n intervals, properly\n * handling dates if needed.\n *\n * @param {number} x - a value on the x-axis\n * @param {number} n - the number of intervals\n * @returns {number} - x + n intervals\n */\n XAxis.prototype.modByInterval = function (x, n) {\n var ordered = this.ordered;\n if (!ordered) return x;\n var interval = ordered.interval;\n if (!interval) return x;\n\n if (!ordered.date) {\n return x += (ordered.interval * n);\n }\n\n var y = moment(x);\n var method = n > 0 ? 'add' : 'subtract';\n\n _.times(Math.abs(n), function () {\n y[method](interval);\n });\n\n return y.valueOf();\n };\n\n /**\n * Return a nominal(d3 ordinal) domain\n *\n * @method getOrdinalDomain\n * @param scale {Function} D3 scale function\n * @param xValues {Array} Array of x axis values\n * @returns {*} D3 scale function\n */\n XAxis.prototype.getOrdinalDomain = function (scale, xValues) {\n return scale.domain(xValues);\n };\n\n /**\n * Return the range for the x axis scale\n * if time, return a normal range, else if nominal, return rangeBands with a default (0.1) spacer specified\n *\n * @method getRange\n * @param scale {Function} D3 scale function\n * @param width {Number} HTML Element width\n * @returns {*} D3 scale function\n */\n XAxis.prototype.getRange = function (domain, width) {\n var ordered = this.ordered;\n\n if (ordered && ordered.date) {\n return domain.range([0, width]);\n }\n return domain.rangeBands([0, width], 0.1);\n };\n\n /**\n * Return the x axis scale\n *\n * @method getXScale\n * @param width {Number} HTML Element width\n * @returns {*} D3 x scale function\n */\n XAxis.prototype.getXScale = function (width) {\n var domain = this.getDomain(this.getScale());\n\n return this.getRange(domain, width);\n };\n\n /**\n * Creates d3 xAxis function\n *\n * @method getXAxis\n * @param width {Number} HTML Element width\n */\n XAxis.prototype.getXAxis = function (width) {\n this.xScale = this.getXScale(width);\n\n if (!this.xScale || _.isNaN(this.xScale)) {\n throw new Error('xScale is ' + this.xScale);\n }\n\n this.xAxis = d3.svg.axis()\n .scale(this.xScale)\n .ticks(10)\n .tickFormat(this.xAxisFormatter)\n .orient('bottom');\n };\n\n /**\n * Renders the x axis\n *\n * @method draw\n * @returns {Function} Renders the x axis to a D3 selection\n */\n XAxis.prototype.draw = function () {\n var self = this;\n var div;\n var width;\n var height;\n var svg;\n var parentWidth;\n var n;\n this._attr.isRotated = false;\n\n return function (selection) {\n n = selection[0].length;\n parentWidth = $(self.el)\n .find('.x-axis-div-wrapper')\n .width();\n\n selection.each(function () {\n\n div = d3.select(this);\n width = parentWidth / n;\n height = $(this.parentElement).height();\n\n self.validateWidthandHeight(width, height);\n\n self.getXAxis(width);\n\n svg = div.append('svg')\n .attr('width', width)\n .attr('height', height);\n\n svg.append('g')\n .attr('class', 'x axis')\n .attr('transform', 'translate(0,0)')\n .call(self.xAxis);\n });\n\n selection.call(self.filterOrRotate());\n };\n };\n\n /**\n * Returns a function that evaluates scale type and\n * applies filter to tick labels on time scales\n * rotates and truncates tick labels on nominal/ordinal scales\n *\n * @method filterOrRotate\n * @returns {Function} Filters or rotates x axis tick labels\n */\n XAxis.prototype.filterOrRotate = function () {\n var self = this;\n var ordered = self.ordered;\n var axis;\n var labels;\n\n return function (selection) {\n selection.each(function () {\n axis = d3.select(this);\n labels = axis.selectAll('.tick text');\n if (ordered && ordered.date) {\n axis.call(self.filterAxisLabels());\n } else {\n axis.call(self.rotateAxisLabels());\n }\n });\n\n self.updateXaxisHeight();\n\n selection.call(self.fitTitles());\n\n };\n };\n\n /**\n * Rotate the axis tick labels within selection\n *\n * @returns {Function} Rotates x axis tick labels of a D3 selection\n */\n XAxis.prototype.rotateAxisLabels = function () {\n var self = this;\n var text;\n var barWidth = self.xScale.rangeBand();\n var maxRotatedLength = 180;\n var xAxisPadding = 15;\n var svg;\n var lengths = [];\n var length;\n self._attr.isRotated = false;\n\n return function (selection) {\n text = selection.selectAll('.tick text');\n\n text.each(function textWidths() {\n lengths.push(d3.select(this).node().getBBox().width);\n });\n length = _.max(lengths);\n self._attr.xAxisLabelHt = length + xAxisPadding;\n\n // if longer than bar width, rotate\n if (length > barWidth) {\n self._attr.isRotated = true;\n }\n\n // if longer than maxRotatedLength, truncate\n if (length > maxRotatedLength) {\n self._attr.xAxisLabelHt = maxRotatedLength;\n }\n\n if (self._attr.isRotated) {\n text\n .text(function truncate() {\n return self.truncateLabel(this, self._attr.xAxisLabelHt);\n })\n .style('text-anchor', 'end')\n .attr('dx', '-.8em')\n .attr('dy', '-.60em')\n .attr('transform', function rotate() {\n return 'rotate(-90)';\n });\n selection.select('svg')\n .attr('height', self._attr.xAxisLabelHt);\n }\n };\n };\n\n /**\n * Returns a string that is truncated to fit size\n *\n * @method truncateLabel\n * @param text {HTMLElement}\n * @param size {Number}\n * @returns {*|jQuery}\n */\n XAxis.prototype.truncateLabel = function (text, size) {\n var node = d3.select(text).node();\n var str = $(node).text();\n var width = node.getBBox().width;\n var chars = str.length;\n var pxPerChar = width / chars;\n var endChar = 0;\n var ellipsesPad = 4;\n\n if (width > size) {\n endChar = Math.floor((size / pxPerChar) - ellipsesPad);\n while (str[endChar - 1] === ' ' || str[endChar - 1] === '-' || str[endChar - 1] === ',') {\n endChar = endChar - 1;\n }\n str = str.substr(0, endChar) + '...';\n }\n return str;\n };\n\n /**\n * Filter out text labels by width and position on axis\n * trims labels that would overlap each other\n * or extend past left or right edges\n * if prev label pos (or 0) + half of label width is < label pos\n * and label pos + half width is not > width of axis\n *\n * @method filterAxisLabels\n * @returns {Function}\n */\n XAxis.prototype.filterAxisLabels = function () {\n var self = this;\n var startX = 0;\n var maxW;\n var par;\n var myX;\n var myWidth;\n var halfWidth;\n var padding = 1.1;\n\n return function (selection) {\n selection.selectAll('.tick text')\n .text(function (d) {\n par = d3.select(this.parentNode).node();\n myX = self.xScale(d);\n myWidth = par.getBBox().width * padding;\n halfWidth = myWidth / 2;\n maxW = $(self.el).find('.x-axis-div').width();\n\n if ((startX + halfWidth) < myX && maxW > (myX + halfWidth)) {\n startX = myX + halfWidth;\n return self.xAxisFormatter(d);\n } else {\n d3.select(this.parentNode).remove();\n }\n });\n };\n };\n\n /**\n * Returns a function that adjusts axis titles and\n * chart title transforms to fit axis label divs.\n * Sets transform of x-axis-title to fit .x-axis-title div width\n * if x-axis-chart-titles, set transform of x-axis-chart-titles\n * to fit .chart-title div width\n *\n * @method fitTitles\n * @returns {Function}\n */\n XAxis.prototype.fitTitles = function () {\n var visEls = $('.vis-wrapper');\n var xAxisChartTitle;\n var yAxisChartTitle;\n var text;\n var titles;\n\n return function () {\n\n visEls.each(function () {\n var visEl = d3.select(this);\n var $visEl = $(this);\n var xAxisTitle = $visEl.find('.x-axis-title');\n var yAxisTitle = $visEl.find('.y-axis-title');\n var titleWidth = xAxisTitle.width();\n var titleHeight = yAxisTitle.height();\n\n text = visEl.select('.x-axis-title')\n .select('svg')\n .attr('width', titleWidth)\n .select('text')\n .attr('transform', 'translate(' + (titleWidth / 2) + ',11)');\n\n text = visEl.select('.y-axis-title')\n .select('svg')\n .attr('height', titleHeight)\n .select('text')\n .attr('transform', 'translate(11,' + (titleHeight / 2) + ')rotate(-90)');\n\n if ($visEl.find('.x-axis-chart-title').length) {\n xAxisChartTitle = $visEl.find('.x-axis-chart-title');\n titleWidth = xAxisChartTitle.find('.chart-title').width();\n\n titles = visEl.select('.x-axis-chart-title').selectAll('.chart-title');\n titles.each(function () {\n text = d3.select(this)\n .select('svg')\n .attr('width', titleWidth)\n .select('text')\n .attr('transform', 'translate(' + (titleWidth / 2) + ',11)');\n });\n }\n\n if ($visEl.find('.y-axis-chart-title').length) {\n yAxisChartTitle = $visEl.find('.y-axis-chart-title');\n titleHeight = yAxisChartTitle.find('.chart-title').height();\n\n titles = visEl.select('.y-axis-chart-title').selectAll('.chart-title');\n titles.each(function () {\n text = d3.select(this)\n .select('svg')\n .attr('height', titleHeight)\n .select('text')\n .attr('transform', 'translate(11,' + (titleHeight / 2) + ')rotate(-90)');\n });\n }\n\n });\n\n };\n };\n\n /**\n * Appends div to make .y-axis-spacer-block\n * match height of .x-axis-wrapper\n *\n * @method updateXaxisHeight\n */\n XAxis.prototype.updateXaxisHeight = function () {\n var selection = d3.select(this.el).selectAll('.vis-wrapper');\n\n selection.each(function () {\n var visEl = d3.select(this);\n\n if (visEl.select('.inner-spacer-block').node() === null) {\n visEl.select('.y-axis-spacer-block')\n .append('div')\n .attr('class', 'inner-spacer-block');\n }\n var xAxisHt = visEl.select('.x-axis-wrapper').style('height');\n\n visEl.select('.inner-spacer-block').style('height', xAxisHt);\n });\n\n };\n\n return XAxis;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/x_axis.js\n ** module id = 738\n ** module chunks = 0\n **/","define(function (require) {\n return function YAxisFactory(d3, Private) {\n var _ = require('lodash');\n var $ = require('jquery');\n var errors = require('errors');\n\n var ErrorHandler = Private(require('components/vislib/lib/_error_handler'));\n\n /**\n * Appends y axis to the visualization\n *\n * @class YAxis\n * @constructor\n * @param args {{el: (HTMLElement), yMax: (Number), _attr: (Object|*)}}\n */\n _.class(YAxis).inherits(ErrorHandler);\n function YAxis(args) {\n this.el = args.el;\n this.scale = null;\n this.domain = [args.yMin, args.yMax];\n this.yAxisFormatter = args.yAxisFormatter;\n this._attr = args._attr || {};\n }\n\n /**\n * Renders the y axis\n *\n * @method render\n * @return {D3.UpdateSelection} Renders y axis to visualization\n */\n YAxis.prototype.render = function () {\n d3.select(this.el).selectAll('.y-axis-div').call(this.draw());\n };\n\n YAxis.prototype._isPercentage = function () {\n return (this._attr.mode === 'percentage');\n };\n\n YAxis.prototype._isUserDefined = function () {\n return (this._attr.setYExtents);\n };\n\n YAxis.prototype._isYExtents = function () {\n return (this._attr.defaultYExtents);\n };\n\n YAxis.prototype._validateUserExtents = function (domain) {\n var self = this;\n\n return domain.map(function (val) {\n val = parseInt(val, 10);\n\n if (isNaN(val)) throw new Error(val + ' is not a valid number');\n if (self._isPercentage() && self._attr.setYExtents) return val / 100;\n return val;\n });\n };\n\n YAxis.prototype._getExtents = function (domain) {\n var min = domain[0];\n var max = domain[1];\n\n if (this._isUserDefined()) return this._validateUserExtents(domain);\n if (this._isYExtents()) return domain;\n if (this._attr.scale === 'log') return this._logDomain(min, max); // Negative values cannot be displayed with a log scale.\n if (!this._isYExtents() && !this._isUserDefined()) return [Math.min(0, min), Math.max(0, max)];\n return domain;\n };\n\n YAxis.prototype._throwCustomError = function (message) {\n throw new Error(message);\n };\n\n YAxis.prototype._throwLogScaleValuesError = function () {\n throw new errors.InvalidLogScaleValues();\n };\n\n /**\n * Returns the appropriate D3 scale\n *\n * @param fnName {String} D3 scale\n * @returns {*}\n */\n YAxis.prototype._getScaleType = function (fnName) {\n if (fnName === 'square root') fnName = 'sqrt'; // Rename 'square root' to 'sqrt'\n fnName = fnName || 'linear';\n\n if (typeof d3.scale[fnName] !== 'function') return this._throwCustomError('YAxis.getScaleType: ' + fnName + ' is not a function');\n\n return d3.scale[fnName]();\n };\n\n /**\n * Return the domain for log scale, i.e. the extent of the log scale.\n * Log scales must begin at 1 since the log(0) = -Infinity\n *\n * @param scale\n * @param yMin\n * @param yMax\n * @returns {*[]}\n */\n YAxis.prototype._logDomain = function (min, max) {\n if (min < 0 || max < 0) return this._throwLogScaleValuesError();\n return [1, max];\n };\n\n /**\n * Creates the d3 y scale function\n *\n * @method getYScale\n * @param height {Number} DOM Element height\n * @returns {D3.Scale.QuantitiveScale|*} D3 yScale function\n */\n YAxis.prototype.getYScale = function (height) {\n var scale = this._getScaleType(this._attr.scale);\n var domain = this._getExtents(this.domain);\n\n this.yScale = scale\n .domain(domain)\n .range([height, 0]);\n\n if (!this._isUserDefined()) this.yScale.nice(); // round extents when not user defined\n // Prevents bars from going off the chart when the y extents are within the domain range\n if (this._attr.type === 'histogram') this.yScale.clamp(true);\n return this.yScale;\n };\n\n YAxis.prototype.getScaleType = function () {\n return this._attr.scale;\n };\n\n YAxis.prototype.tickFormat = function () {\n var isPercentage = this._attr.mode === 'percentage';\n if (isPercentage) return d3.format('%');\n if (this.yAxisFormatter) return this.yAxisFormatter;\n return d3.format('n');\n };\n\n YAxis.prototype._validateYScale = function (yScale) {\n if (!yScale || _.isNaN(yScale)) throw new Error('yScale is ' + yScale);\n };\n\n /**\n * Creates the d3 y axis function\n *\n * @method getYAxis\n * @param height {Number} DOM Element height\n * @returns {D3.Svg.Axis|*} D3 yAxis function\n */\n YAxis.prototype.getYAxis = function (height) {\n var yScale = this.getYScale(height);\n this._validateYScale(yScale);\n\n // Create the d3 yAxis function\n this.yAxis = d3.svg.axis()\n .scale(yScale)\n .tickFormat(this.tickFormat(this.domain))\n .ticks(this.tickScale(height))\n .orient('left');\n\n return this.yAxis;\n };\n\n /**\n * Create a tick scale for the y axis that modifies the number of ticks\n * based on the height of the wrapping DOM element\n * Avoid using even numbers in the yTickScale.range\n * Causes the top most tickValue in the chart to be missing\n *\n * @method tickScale\n * @param height {Number} DOM element height\n * @returns {number} Number of y axis ticks\n */\n YAxis.prototype.tickScale = function (height) {\n var yTickScale = d3.scale.linear()\n .clamp(true)\n .domain([20, 40, 1000])\n .range([0, 3, 11]);\n\n return Math.ceil(yTickScale(height));\n };\n\n /**\n * Renders the y axis to the visualization\n *\n * @method draw\n * @returns {Function} Renders y axis to visualization\n */\n YAxis.prototype.draw = function () {\n var self = this;\n var margin = this._attr.margin;\n var mode = this._attr.mode;\n var isWiggleOrSilhouette = (mode === 'wiggle' || mode === 'silhouette');\n\n return function (selection) {\n selection.each(function () {\n var el = this;\n\n var div = d3.select(el);\n var width = $(el).parent().width();\n var height = $(el).height();\n var adjustedHeight = height - margin.top - margin.bottom;\n\n // Validate whether width and height are not 0 or `NaN`\n self.validateWidthandHeight(width, adjustedHeight);\n\n var yAxis = self.getYAxis(adjustedHeight);\n\n // The yAxis should not appear if mode is set to 'wiggle' or 'silhouette'\n if (!isWiggleOrSilhouette) {\n // Append svg and y axis\n var svg = div.append('svg')\n .attr('width', width)\n .attr('height', height);\n\n svg.append('g')\n .attr('class', 'y axis')\n .attr('transform', 'translate(' + (width - 2) + ',' + margin.top + ')')\n .call(yAxis);\n\n var container = svg.select('g.y.axis').node();\n if (container) {\n var cWidth = Math.max(width, container.getBBox().width);\n svg.attr('width', cWidth);\n svg.select('g')\n .attr('transform', 'translate(' + (cWidth - 2) + ',' + margin.top + ')');\n }\n }\n });\n };\n };\n\n return YAxis;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/lib/y_axis.js\n ** module id = 739\n ** module chunks = 0\n **/","define(function (require) {\n return function VisFactory(d3, Private) {\n var _ = require('lodash');\n\n var ResizeChecker = Private(require('components/vislib/lib/resize_checker'));\n var Events = Private(require('components/events'));\n var handlerTypes = Private(require('components/vislib/lib/handler/handler_types'));\n var chartTypes = Private(require('components/vislib/visualizations/vis_types'));\n var errors = require('errors');\n require('components/vislib/styles/main.less');\n\n /**\n * Creates the visualizations.\n *\n * @class Vis\n * @constructor\n * @param $el {HTMLElement} jQuery selected HTML element\n * @param config {Object} Parameters that define the chart type and chart options\n */\n _.class(Vis).inherits(Events);\n function Vis($el, config) {\n if (!(this instanceof Vis)) {\n return new Vis($el, config);\n }\n Vis.Super.apply(this, arguments);\n this.el = $el.get ? $el.get(0) : $el;\n this.ChartClass = chartTypes[config.type];\n this._attr = _.defaults({}, config || {}, {});\n\n // bind the resize function so it can be used as an event handler\n this.resize = _.bind(this.resize, this);\n this.resizeChecker = new ResizeChecker(this.el);\n this.resizeChecker.on('resize', this.resize);\n }\n\n /**\n * Renders the visualization\n *\n * @method render\n * @param data {Object} Elasticsearch query results\n */\n Vis.prototype.render = function (data) {\n var chartType = this._attr.type;\n\n if (!data) {\n throw new Error('No valid data!');\n }\n\n if (this.handler) {\n this.data = null;\n this._runOnHandler('destroy');\n }\n\n this.data = data;\n this.handler = handlerTypes[chartType](this) || handlerTypes.column(this);\n this._runOnHandler('render');\n };\n\n /**\n * Resizes the visualization\n *\n * @method resize\n */\n Vis.prototype.resize = function () {\n if (!this.data) {\n // TODO: need to come up with a solution for resizing when no data is available\n return;\n }\n\n if (this.handler && _.isFunction(this.handler.resize)) {\n this._runOnHandler('resize');\n } else {\n this.render(this.data);\n }\n };\n\n Vis.prototype._runOnHandler = function (method) {\n try {\n this.handler[method]();\n } catch (error) {\n // If involving height and width of the container, log error to screen.\n // Because we have to wait for the DOM element to initialize, we do not\n // want to throw an error when the DOM `el` is zero\n if (error instanceof errors.ContainerTooSmall ||\n error instanceof errors.InvalidWiggleSelection ||\n error instanceof errors.InvalidLogScaleValues ||\n error instanceof errors.PieContainsAllZeros ||\n error instanceof errors.NotEnoughData ||\n error instanceof errors.NoResults) {\n this.handler.error(error.message);\n } else {\n throw error;\n }\n }\n };\n\n /**\n * Destroys the visualization\n * Removes chart and all elements associated with it.\n * Removes chart and all elements associated with it.\n * Remove event listeners and pass destroy call down to owned objects.\n *\n * @method destroy\n */\n Vis.prototype.destroy = function () {\n var selection = d3.select(this.el).select('.vis-wrapper');\n\n this.resizeChecker.off('resize', this.resize);\n this.resizeChecker.destroy();\n if (this.handler) this._runOnHandler('destroy');\n\n selection.remove();\n selection = null;\n };\n\n /**\n * Sets attributes on the visualization\n *\n * @method set\n * @param name {String} An attribute name\n * @param val {*} Value to which the attribute name is set\n */\n Vis.prototype.set = function (name, val) {\n this._attr[name] = val;\n this.render(this.data);\n };\n\n /**\n * Gets attributes from the visualization\n *\n * @method get\n * @param name {String} An attribute name\n * @returns {*} The value of the attribute name\n */\n Vis.prototype.get = function (name) {\n return this._attr[name];\n };\n\n /**\n * Turns on event listeners.\n *\n * @param event {String}\n * @param listener{Function}\n * @returns {*}\n */\n Vis.prototype.on = function (event, listener) {\n var first = this.listenerCount(event) === 0;\n var ret = Events.prototype.on.call(this, event, listener);\n var added = this.listenerCount(event) > 0;\n\n // if this is the first listener added for the event\n // enable the event in the handler\n if (first && added && this.handler) this.handler.enable(event);\n\n return ret;\n };\n\n /**\n * Turns off event listeners.\n *\n * @param event {String}\n * @param listener{Function}\n * @returns {*}\n */\n Vis.prototype.off = function (event, listener) {\n var last = this.listenerCount(event) === 1;\n var ret = Events.prototype.off.call(this, event, listener);\n var removed = this.listenerCount(event) === 0;\n\n // Once all listeners are removed, disable the events in the handler\n if (last && removed && this.handler) this.handler.disable(event);\n return ret;\n };\n\n return Vis;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/vis.js\n ** module id = 740\n ** module chunks = 0\n **/","define(function (require) {\n return function AreaChartFactory(d3, Private) {\n var _ = require('lodash');\n var $ = require('jquery');\n\n var PointSeriesChart = Private(require('components/vislib/visualizations/_point_series_chart'));\n var TimeMarker = Private(require('components/vislib/visualizations/time_marker'));\n var errors = require('errors');\n require('components/vislib/styles/main.less');\n\n /**\n * Area chart visualization\n *\n * @class AreaChart\n * @constructor\n * @extends Chart\n * @param handler {Object} Reference to the Handler Class Constructor\n * @param el {HTMLElement} HTML element to which the chart will be appended\n * @param chartData {Object} Elasticsearch query results for this specific\n * chart\n */\n _.class(AreaChart).inherits(PointSeriesChart);\n function AreaChart(handler, chartEl, chartData) {\n if (!(this instanceof AreaChart)) {\n return new AreaChart(handler, chartEl, chartData);\n }\n\n AreaChart.Super.apply(this, arguments);\n\n this.isOverlapping = (handler._attr.mode === 'overlap');\n\n if (this.isOverlapping) {\n\n // Default opacity should return to 0.6 on mouseout\n handler._attr.defaultOpacity = 0.6;\n }\n\n this.checkIfEnoughData();\n\n this._attr = _.defaults(handler._attr || {}, {\n xValue: function (d) { return d.x; },\n yValue: function (d) { return d.y; }\n });\n }\n\n /**\n * Adds SVG path to area chart\n *\n * @method addPath\n * @param svg {HTMLElement} SVG to which rect are appended\n * @param layers {Array} Chart data array\n * @returns {D3.UpdateSelection} SVG with path added\n */\n AreaChart.prototype.addPath = function (svg, layers) {\n var self = this;\n var ordered = this.handler.data.get('ordered');\n var isTimeSeries = (ordered && ordered.date);\n var isOverlapping = this.isOverlapping;\n var color = this.handler.data.getColorFunc();\n var xScale = this.handler.xAxis.xScale;\n var yScale = this.handler.yAxis.yScale;\n var interpolate = (this._attr.smoothLines) ? 'cardinal' : this._attr.interpolate;\n var area = d3.svg.area()\n .x(function (d) {\n if (isTimeSeries) {\n return xScale(d.x);\n }\n return xScale(d.x) + xScale.rangeBand() / 2;\n })\n .y0(function (d) {\n if (isOverlapping) {\n return yScale(0);\n }\n\n return yScale(d.y0);\n })\n .y1(function (d) {\n if (isOverlapping) {\n return yScale(d.y);\n }\n\n return yScale(d.y0 + d.y);\n })\n .interpolate(interpolate);\n\n // Data layers\n var layer = svg.selectAll('.layer')\n .data(layers)\n .enter()\n .append('g')\n .attr('class', function (d, i) {\n return 'pathgroup ' + i;\n });\n\n // Append path\n var path = layer.append('path')\n .call(this._addIdentifier)\n .style('fill', function (d) {\n return color(d[0].label);\n })\n .classed('overlap_area', function () {\n return isOverlapping;\n });\n\n // update\n path.attr('d', function (d) {\n return area(d);\n });\n\n return path;\n };\n\n /**\n * Adds Events to SVG circles\n *\n * @method addCircleEvents\n * @param element {D3.UpdateSelection} SVG circles\n * @returns {D3.Selection} circles with event listeners attached\n */\n AreaChart.prototype.addCircleEvents = function (element, svg) {\n var events = this.events;\n var isBrushable = events.isBrushable();\n var brush = isBrushable ? events.addBrushEvent(svg) : undefined;\n var hover = events.addHoverEvent();\n var mouseout = events.addMouseoutEvent();\n var click = events.addClickEvent();\n var attachedEvents = element.call(hover).call(mouseout).call(click);\n\n if (isBrushable) {\n attachedEvents.call(brush);\n }\n\n return attachedEvents;\n };\n\n /**\n * Adds SVG circles to area chart\n *\n * @method addCircles\n * @param svg {HTMLElement} SVG to which circles are appended\n * @param data {Array} Chart data array\n * @returns {D3.UpdateSelection} SVG with circles added\n */\n AreaChart.prototype.addCircles = function (svg, data) {\n var self = this;\n var color = this.handler.data.getColorFunc();\n var xScale = this.handler.xAxis.xScale;\n var yScale = this.handler.yAxis.yScale;\n var ordered = this.handler.data.get('ordered');\n var circleRadius = 12;\n var circleStrokeWidth = 0;\n var tooltip = this.tooltip;\n var isTooltip = this._attr.addTooltip;\n var isOverlapping = this.isOverlapping;\n var layer;\n var circles;\n\n layer = svg.selectAll('.points')\n .data(data)\n .enter()\n .append('g')\n .attr('class', 'points area');\n\n // append the bars\n circles = layer\n .selectAll('rect')\n .data(function appendData(data) {\n return data.filter(function isNotZero(d) {\n return d.y !== 0;\n });\n });\n\n // exit\n circles.exit().remove();\n\n // enter\n circles\n .enter()\n .append('circle')\n .call(this._addIdentifier)\n .attr('stroke', function strokeColor(d) {\n return color(d.label);\n })\n .attr('fill', 'transparent')\n .attr('stroke-width', circleStrokeWidth);\n\n // update\n circles\n .attr('cx', function cx(d) {\n if (ordered && ordered.date) {\n return xScale(d.x);\n }\n return xScale(d.x) + xScale.rangeBand() / 2;\n })\n .attr('cy', function cy(d) {\n if (isOverlapping) {\n return yScale(d.y);\n }\n return yScale(d.y0 + d.y);\n })\n .attr('r', circleRadius);\n\n // Add tooltip\n if (isTooltip) {\n circles.call(tooltip.render());\n }\n\n return circles;\n };\n\n /**\n * Adds SVG clipPath\n *\n * @method addClipPath\n * @param svg {HTMLElement} SVG to which clipPath is appended\n * @param width {Number} SVG width\n * @param height {Number} SVG height\n * @returns {D3.UpdateSelection} SVG with clipPath added\n */\n AreaChart.prototype.addClipPath = function (svg, width, height) {\n // Prevents circles from being clipped at the top of the chart\n var startX = 0;\n var startY = 0;\n var id = 'chart-area' + _.uniqueId();\n\n // Creating clipPath\n return svg\n .attr('clip-path', 'url(#' + id + ')')\n .append('clipPath')\n .attr('id', id)\n .append('rect')\n .attr('x', startX)\n .attr('y', startY)\n .attr('width', width)\n .attr('height', height);\n };\n\n AreaChart.prototype.checkIfEnoughData = function () {\n var series = this.chartData.series;\n var message = 'Area charts require more than one data point. Try adding ' +\n 'an X-Axis Aggregation';\n\n var notEnoughData = series.some(function (obj) {\n return obj.values.length < 2;\n });\n\n if (notEnoughData) {\n throw new errors.NotEnoughData(message);\n }\n };\n\n AreaChart.prototype.validateWiggleSelection = function () {\n var isWiggle = this._attr.mode === 'wiggle';\n var ordered = this.handler.data.get('ordered');\n\n if (isWiggle && !ordered) throw new errors.InvalidWiggleSelection();\n };\n\n /**\n * Renders d3 visualization\n *\n * @method draw\n * @returns {Function} Creates the area chart\n */\n AreaChart.prototype.draw = function () {\n // Attributes\n var self = this;\n var xScale = this.handler.xAxis.xScale;\n var $elem = $(this.chartEl);\n var margin = this._attr.margin;\n var elWidth = this._attr.width = $elem.width();\n var elHeight = this._attr.height = $elem.height();\n var yMin = this.handler.yAxis.yMin;\n var yScale = this.handler.yAxis.yScale;\n var minWidth = 20;\n var minHeight = 20;\n var addTimeMarker = this._attr.addTimeMarker;\n var times = this._attr.times || [];\n var timeMarker;\n var div;\n var svg;\n var width;\n var height;\n var layers;\n var circles;\n var path;\n\n return function (selection) {\n selection.each(function (data) {\n // Stack data\n layers = self.stackData(data);\n\n // Get the width and height\n width = elWidth;\n height = elHeight - margin.top - margin.bottom;\n\n if (addTimeMarker) {\n timeMarker = new TimeMarker(times, xScale, height);\n }\n\n if (width < minWidth || height < minHeight) {\n throw new errors.ContainerTooSmall();\n }\n self.validateWiggleSelection();\n\n // Select the current DOM element\n div = d3.select(this);\n\n // Create the canvas for the visualization\n svg = div.append('svg')\n .attr('width', width)\n .attr('height', height + margin.top + margin.bottom)\n .append('g')\n .attr('transform', 'translate(0,' + margin.top + ')');\n\n // add clipPath to hide circles when they go out of bounds\n self.addClipPath(svg, width, height);\n self.createEndZones(svg);\n\n // add path\n path = self.addPath(svg, layers);\n\n if (yMin < 0 && self._attr.mode !== 'wiggle' && self._attr.mode !== 'silhouette') {\n\n // Draw line at yScale 0 value\n svg.append('line')\n .attr('class', 'zero-line')\n .attr('x1', 0)\n .attr('y1', yScale(0))\n .attr('x2', width)\n .attr('y2', yScale(0))\n .style('stroke', '#ddd')\n .style('stroke-width', 1);\n }\n\n // add circles\n circles = self.addCircles(svg, layers);\n\n // add click and hover events to circles\n self.addCircleEvents(circles, svg);\n\n // chart base line\n var line = svg.append('line')\n .attr('class', 'base-line')\n .attr('x1', 0)\n .attr('y1', yScale(0))\n .attr('x2', width)\n .attr('y2', yScale(0))\n .style('stroke', '#ddd')\n .style('stroke-width', 1);\n\n if (addTimeMarker) {\n timeMarker.render(svg);\n }\n\n return svg;\n });\n };\n };\n\n return AreaChart;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/visualizations/area_chart.js\n ** module id = 741\n ** module chunks = 0\n **/","define(function (require) {\n return function ColumnChartFactory(d3, Private) {\n var _ = require('lodash');\n var $ = require('jquery');\n var moment = require('moment');\n\n var DataClass = Private(require('components/vislib/lib/data'));\n\n var PointSeriesChart = Private(require('components/vislib/visualizations/_point_series_chart'));\n var TimeMarker = Private(require('components/vislib/visualizations/time_marker'));\n var errors = require('errors');\n require('components/vislib/styles/main.less');\n\n /**\n * Vertical Bar Chart Visualization: renders vertical and/or stacked bars\n *\n * @class ColumnChart\n * @constructor\n * @extends Chart\n * @param handler {Object} Reference to the Handler Class Constructor\n * @param el {HTMLElement} HTML element to which the chart will be appended\n * @param chartData {Object} Elasticsearch query results for this specific chart\n */\n _.class(ColumnChart).inherits(PointSeriesChart);\n function ColumnChart(handler, chartEl, chartData) {\n if (!(this instanceof ColumnChart)) {\n return new ColumnChart(handler, chartEl, chartData);\n }\n\n ColumnChart.Super.apply(this, arguments);\n\n // Column chart specific attributes\n this._attr = _.defaults(handler._attr || {}, {\n xValue: function (d) { return d.x; },\n yValue: function (d) { return d.y; }\n });\n }\n\n /**\n * Adds SVG rect to Vertical Bar Chart\n *\n * @method addBars\n * @param svg {HTMLElement} SVG to which rect are appended\n * @param layers {Array} Chart data array\n * @returns {D3.UpdateSelection} SVG with rect added\n */\n ColumnChart.prototype.addBars = function (svg, layers) {\n var self = this;\n var color = this.handler.data.getColorFunc();\n var tooltip = this.tooltip;\n var isTooltip = this._attr.addTooltip;\n var layer;\n var bars;\n\n layer = svg.selectAll('.layer')\n .data(layers)\n .enter().append('g')\n .attr('class', function (d, i) {\n return 'series ' + i;\n });\n\n bars = layer.selectAll('rect')\n .data(function (d) {\n return d;\n });\n\n bars\n .exit()\n .remove();\n\n bars\n .enter()\n .append('rect')\n .call(this._addIdentifier)\n .attr('fill', function (d) {\n return color(d.label);\n });\n\n self.updateBars(bars);\n\n // Add tooltip\n if (isTooltip) {\n bars.call(tooltip.render());\n }\n\n return bars;\n };\n\n /**\n * Determines whether bars are grouped or stacked and updates the D3\n * selection\n *\n * @method updateBars\n * @param bars {D3.UpdateSelection} SVG with rect added\n * @returns {D3.UpdateSelection}\n */\n ColumnChart.prototype.updateBars = function (bars) {\n var offset = this._attr.mode;\n\n if (offset === 'grouped') {\n return this.addGroupedBars(bars);\n }\n return this.addStackedBars(bars);\n };\n\n /**\n * Adds stacked bars to column chart visualization\n *\n * @method addStackedBars\n * @param bars {D3.UpdateSelection} SVG with rect added\n * @returns {D3.UpdateSelection}\n */\n ColumnChart.prototype.addStackedBars = function (bars) {\n var data = this.chartData;\n var xScale = this.handler.xAxis.xScale;\n var yScale = this.handler.yAxis.yScale;\n var height = yScale.range()[0];\n var yMin = this.handler.yAxis.yScale.domain()[0];\n var self = this;\n\n var barWidth;\n if (data.ordered && data.ordered.date) {\n var start = data.ordered.min;\n var end = moment(data.ordered.min).add(data.ordered.interval).valueOf();\n\n barWidth = xScale(end) - xScale(start);\n barWidth = barWidth - Math.min(barWidth * 0.25, 15);\n }\n\n // update\n bars\n .attr('x', function (d) {\n return xScale(d.x);\n })\n .attr('width', function () {\n return barWidth || xScale.rangeBand();\n })\n .attr('y', function (d) {\n if (d.y < 0) {\n return yScale(d.y0);\n }\n\n return yScale(d.y0 + d.y);\n })\n .attr('height', function (d) {\n if (d.y < 0) {\n return Math.abs(yScale(d.y0 + d.y) - yScale(d.y0));\n }\n\n // Due to an issue with D3 not returning zeros correctly when using\n // an offset='expand', need to add conditional statement to handle zeros\n // appropriately\n if (d._input.y === 0) {\n return 0;\n }\n\n // for split bars or for one series,\n // last series will have d.y0 = 0\n if (d.y0 === 0 && yMin > 0) {\n return yScale(yMin) - yScale(d.y);\n }\n\n return yScale(d.y0) - yScale(d.y0 + d.y);\n });\n\n return bars;\n };\n\n /**\n * Adds grouped bars to column chart visualization\n *\n * @method addGroupedBars\n * @param bars {D3.UpdateSelection} SVG with rect added\n * @returns {D3.UpdateSelection}\n */\n ColumnChart.prototype.addGroupedBars = function (bars) {\n var xScale = this.handler.xAxis.xScale;\n var yScale = this.handler.yAxis.yScale;\n var yMin = this.handler.yAxis.yMin;\n var data = this.chartData;\n var n = data.series.length;\n var height = yScale.range()[0];\n var groupSpacingPercentage = 0.15;\n var isTimeScale = (data.ordered && data.ordered.date);\n var minWidth = 1;\n var barWidth;\n\n // update\n bars\n .attr('x', function (d, i, j) {\n if (isTimeScale) {\n var groupWidth = xScale(data.ordered.min + data.ordered.interval) -\n xScale(data.ordered.min);\n var groupSpacing = groupWidth * groupSpacingPercentage;\n\n barWidth = (groupWidth - groupSpacing) / n;\n\n return xScale(d.x) + barWidth * j;\n }\n return xScale(d.x) + xScale.rangeBand() / n * j;\n })\n .attr('width', function () {\n if (barWidth < minWidth) {\n throw new errors.ContainerTooSmall();\n }\n\n if (isTimeScale) {\n return barWidth;\n }\n return xScale.rangeBand() / n;\n })\n .attr('y', function (d) {\n if (d.y < 0) {\n return yScale(0);\n }\n\n return yScale(d.y);\n })\n .attr('height', function (d) {\n return Math.abs(yScale(0) - yScale(d.y));\n });\n\n return bars;\n };\n\n /**\n * Adds Events to SVG rect\n * Visualization is only brushable when a brush event is added\n * If a brush event is added, then a function should be returned.\n *\n * @method addBarEvents\n * @param element {D3.UpdateSelection} target\n * @param svg {D3.UpdateSelection} chart SVG\n * @returns {D3.Selection} rect with event listeners attached\n */\n ColumnChart.prototype.addBarEvents = function (element, svg) {\n var events = this.events;\n var isBrushable = events.isBrushable();\n var brush = isBrushable ? events.addBrushEvent(svg) : undefined;\n var hover = events.addHoverEvent();\n var mouseout = events.addMouseoutEvent();\n var click = events.addClickEvent();\n var attachedEvents = element.call(hover).call(mouseout).call(click);\n\n if (isBrushable) {\n attachedEvents.call(brush);\n }\n\n return attachedEvents;\n };\n\n /**\n * Renders d3 visualization\n *\n * @method draw\n * @returns {Function} Creates the vertical bar chart\n */\n ColumnChart.prototype.draw = function () {\n var self = this;\n var $elem = $(this.chartEl);\n var margin = this._attr.margin;\n var elWidth = this._attr.width = $elem.width();\n var elHeight = this._attr.height = $elem.height();\n var yMin = this.handler.yAxis.yMin;\n var yScale = this.handler.yAxis.yScale;\n var xScale = this.handler.xAxis.xScale;\n var minWidth = 20;\n var minHeight = 20;\n var addTimeMarker = this._attr.addTimeMarker;\n var times = this._attr.times || [];\n var timeMarker;\n var div;\n var svg;\n var width;\n var height;\n var layers;\n var bars;\n\n return function (selection) {\n selection.each(function (data) {\n layers = self.stackData(data);\n\n width = elWidth;\n height = elHeight - margin.top - margin.bottom;\n\n if (addTimeMarker) {\n timeMarker = new TimeMarker(times, xScale, height);\n }\n\n if (width < minWidth || height < minHeight) {\n throw new errors.ContainerTooSmall();\n }\n\n div = d3.select(this);\n\n svg = div.append('svg')\n .attr('width', width)\n .attr('height', height + margin.top + margin.bottom)\n .append('g')\n .attr('transform', 'translate(0,' + margin.top + ')');\n\n bars = self.addBars(svg, layers);\n self.createEndZones(svg);\n\n // Adds event listeners\n self.addBarEvents(bars, svg);\n\n var line = svg.append('line')\n .attr('class', 'base-line')\n .attr('x1', 0)\n .attr('y1', yScale(0))\n .attr('x2', width)\n .attr('y2', yScale(0))\n .style('stroke', '#ddd')\n .style('stroke-width', 1);\n\n if (addTimeMarker) {\n timeMarker.render(svg);\n }\n\n return svg;\n });\n };\n };\n\n return ColumnChart;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/visualizations/column_chart.js\n ** module id = 742\n ** module chunks = 0\n **/","define(function (require) {\n return function LineChartFactory(d3, Private) {\n var _ = require('lodash');\n var $ = require('jquery');\n var errors = require('errors');\n\n var PointSeriesChart = Private(require('components/vislib/visualizations/_point_series_chart'));\n var TimeMarker = Private(require('components/vislib/visualizations/time_marker'));\n require('components/vislib/styles/main.less');\n\n /**\n * Line Chart Visualization\n *\n * @class LineChart\n * @constructor\n * @extends Chart\n * @param handler {Object} Reference to the Handler Class Constructor\n * @param el {HTMLElement} HTML element to which the chart will be appended\n * @param chartData {Object} Elasticsearch query results for this specific chart\n */\n _.class(LineChart).inherits(PointSeriesChart);\n function LineChart(handler, chartEl, chartData) {\n if (!(this instanceof LineChart)) {\n return new LineChart(handler, chartEl, chartData);\n }\n\n LineChart.Super.apply(this, arguments);\n\n // Line chart specific attributes\n this._attr = _.defaults(handler._attr || {}, {\n interpolate: 'linear',\n xValue: function (d) { return d.x; },\n yValue: function (d) { return d.y; }\n });\n }\n\n /**\n * Adds Events to SVG circle\n *\n * @method addCircleEvents\n * @param element{D3.UpdateSelection} Reference to SVG circle\n * @returns {D3.Selection} SVG circles with event listeners attached\n */\n LineChart.prototype.addCircleEvents = function (element, svg) {\n var events = this.events;\n var isBrushable = events.isBrushable();\n var brush = isBrushable ? events.addBrushEvent(svg) : undefined;\n var hover = events.addHoverEvent();\n var mouseout = events.addMouseoutEvent();\n var click = events.addClickEvent();\n var attachedEvents = element.call(hover).call(mouseout).call(click);\n\n if (isBrushable) {\n attachedEvents.call(brush);\n }\n\n return attachedEvents;\n };\n\n /**\n * Adds circles to SVG\n *\n * @method addCircles\n * @param svg {HTMLElement} SVG to which rect are appended\n * @param data {Array} Array of object data points\n * @returns {D3.UpdateSelection} SVG with circles added\n */\n LineChart.prototype.addCircles = function (svg, data) {\n var self = this;\n var showCircles = this._attr.showCircles;\n var color = this.handler.data.getColorFunc();\n var xScale = this.handler.xAxis.xScale;\n var yScale = this.handler.yAxis.yScale;\n var ordered = this.handler.data.get('ordered');\n var tooltip = this.tooltip;\n var isTooltip = this._attr.addTooltip;\n\n var radii = _(data)\n .map(function (series) {\n return _.pluck(series, '_input.z');\n })\n .flattenDeep()\n .reduce(function (result, val) {\n if (result.min > val) result.min = val;\n if (result.max < val) result.max = val;\n return result;\n }, {\n min: Infinity,\n max: -Infinity\n });\n\n var radiusStep = ((radii.max - radii.min) || (radii.max * 100)) / Math.pow(this._attr.radiusRatio, 2);\n\n var layer = svg.selectAll('.points')\n .data(data)\n .enter()\n .append('g')\n .attr('class', 'points line');\n\n var circles = layer\n .selectAll('circle')\n .data(function appendData(d) {\n return d;\n });\n\n circles\n .exit()\n .remove();\n\n function cx(d) {\n if (ordered && ordered.date) {\n return xScale(d.x);\n }\n return xScale(d.x) + xScale.rangeBand() / 2;\n }\n\n function cy(d) {\n return yScale(d.y);\n }\n\n function cColor(d) {\n return color(d.label);\n }\n\n function colorCircle(d) {\n var parent = d3.select(this).node().parentNode;\n var lengthOfParent = d3.select(parent).data()[0].length;\n var isVisible = (lengthOfParent === 1);\n\n // If only 1 point exists, show circle\n if (!showCircles && !isVisible) return 'none';\n return cColor(d);\n }\n function getCircleRadiusFn(modifier) {\n return function getCircleRadius(d) {\n var margin = self._attr.margin;\n var width = self._attr.width - margin.left - margin.right;\n var height = self._attr.height - margin.top - margin.bottom;\n var circleRadius = (d._input.z - radii.min) / radiusStep;\n\n return _.min([Math.sqrt((circleRadius || 2) + 2), width, height]) + (modifier || 0);\n };\n }\n\n\n circles\n .enter()\n .append('circle')\n .attr('r', getCircleRadiusFn())\n .attr('fill-opacity', (this._attr.drawLinesBetweenPoints ? 1 : 0.7))\n .attr('cx', cx)\n .attr('cy', cy)\n .attr('fill', colorCircle)\n .attr('class', 'circle-decoration')\n .call(this._addIdentifier);\n\n circles\n .enter()\n .append('circle')\n .attr('r', getCircleRadiusFn(10))\n .attr('cx', cx)\n .attr('cy', cy)\n .attr('fill', 'transparent')\n .attr('class', 'circle')\n .call(this._addIdentifier)\n .attr('stroke', cColor)\n .attr('stroke-width', 0);\n\n if (isTooltip) {\n circles.call(tooltip.render());\n }\n\n return circles;\n };\n\n /**\n * Adds path to SVG\n *\n * @method addLines\n * @param svg {HTMLElement} SVG to which path are appended\n * @param data {Array} Array of object data points\n * @returns {D3.UpdateSelection} SVG with paths added\n */\n LineChart.prototype.addLines = function (svg, data) {\n var self = this;\n var xScale = this.handler.xAxis.xScale;\n var yScale = this.handler.yAxis.yScale;\n var xAxisFormatter = this.handler.data.get('xAxisFormatter');\n var color = this.handler.data.getColorFunc();\n var ordered = this.handler.data.get('ordered');\n var interpolate = (this._attr.smoothLines) ? 'cardinal' : this._attr.interpolate;\n var line = d3.svg.line()\n .interpolate(interpolate)\n .x(function x(d) {\n if (ordered && ordered.date) {\n return xScale(d.x);\n }\n return xScale(d.x) + xScale.rangeBand() / 2;\n })\n .y(function y(d) {\n return yScale(d.y);\n });\n var lines;\n\n lines = svg\n .selectAll('.lines')\n .data(data)\n .enter()\n .append('g')\n .attr('class', 'pathgroup lines');\n\n lines.append('path')\n .call(this._addIdentifier)\n .attr('d', function lineD(d) {\n return line(d.values);\n })\n .attr('fill', 'none')\n .attr('stroke', function lineStroke(d) {\n return color(d.label);\n })\n .attr('stroke-width', 2);\n\n return lines;\n };\n\n /**\n * Adds SVG clipPath\n *\n * @method addClipPath\n * @param svg {HTMLElement} SVG to which clipPath is appended\n * @param width {Number} SVG width\n * @param height {Number} SVG height\n * @returns {D3.UpdateSelection} SVG with clipPath added\n */\n LineChart.prototype.addClipPath = function (svg, width, height) {\n var clipPathBuffer = 5;\n var startX = 0;\n var startY = 0 - clipPathBuffer;\n var id = 'chart-area' + _.uniqueId();\n\n return svg\n .attr('clip-path', 'url(#' + id + ')')\n .append('clipPath')\n .attr('id', id)\n .append('rect')\n .attr('x', startX)\n .attr('y', startY)\n .attr('width', width)\n // Adding clipPathBuffer to height so it doesn't\n // cutoff the lower part of the chart\n .attr('height', height + clipPathBuffer);\n };\n\n /**\n * Renders d3 visualization\n *\n * @method draw\n * @returns {Function} Creates the line chart\n */\n LineChart.prototype.draw = function () {\n var self = this;\n var $elem = $(this.chartEl);\n var margin = this._attr.margin;\n var elWidth = this._attr.width = $elem.width();\n var elHeight = this._attr.height = $elem.height();\n var scaleType = this.handler.yAxis.getScaleType();\n var yMin = this.handler.yAxis.yMin;\n var yScale = this.handler.yAxis.yScale;\n var xScale = this.handler.xAxis.xScale;\n var minWidth = 20;\n var minHeight = 20;\n var startLineX = 0;\n var lineStrokeWidth = 1;\n var addTimeMarker = this._attr.addTimeMarker;\n var times = this._attr.times || [];\n var timeMarker;\n var div;\n var svg;\n var width;\n var height;\n var lines;\n var circles;\n\n return function (selection) {\n selection.each(function (data) {\n var el = this;\n\n var layers = data.series.map(function mapSeries(d) {\n var label = d.label;\n return d.values.map(function mapValues(e, i) {\n return {\n _input: e,\n label: label,\n x: self._attr.xValue.call(d.values, e, i),\n y: self._attr.yValue.call(d.values, e, i)\n };\n });\n });\n\n width = elWidth - margin.left - margin.right;\n height = elHeight - margin.top - margin.bottom;\n\n if (addTimeMarker) {\n timeMarker = new TimeMarker(times, xScale, height);\n }\n\n if (self._attr.scale === 'log' && self._invalidLogScaleValues(data)) {\n throw new errors.InvalidLogScaleValues();\n }\n\n if (width < minWidth || height < minHeight) {\n throw new errors.ContainerTooSmall();\n }\n\n div = d3.select(el);\n\n svg = div.append('svg')\n .attr('width', width + margin.left + margin.right)\n .attr('height', height + margin.top + margin.bottom)\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n self.addClipPath(svg, width, height);\n if (self._attr.drawLinesBetweenPoints) {\n lines = self.addLines(svg, data.series);\n }\n circles = self.addCircles(svg, layers);\n self.addCircleEvents(circles, svg);\n self.createEndZones(svg);\n\n var scale = (scaleType === 'log') ? yScale(1) : yScale(0);\n if (scale) {\n svg.append('line')\n .attr('class', 'base-line')\n .attr('x1', startLineX)\n .attr('y1', scale)\n .attr('x2', width)\n .attr('y2', scale)\n .style('stroke', '#ddd')\n .style('stroke-width', lineStrokeWidth);\n }\n\n if (addTimeMarker) {\n timeMarker.render(svg);\n }\n\n return svg;\n });\n };\n };\n\n return LineChart;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/visualizations/line_chart.js\n ** module id = 743\n ** module chunks = 0\n **/","define(function (require) {\n return function PieChartFactory(d3, Private) {\n var _ = require('lodash');\n var $ = require('jquery');\n\n var Chart = Private(require('components/vislib/visualizations/_chart'));\n var errors = require('errors');\n require('components/vislib/styles/main.less');\n\n /**\n * Pie Chart Visualization\n *\n * @class PieChart\n * @constructor\n * @extends Chart\n * @param handler {Object} Reference to the Handler Class Constructor\n * @param el {HTMLElement} HTML element to which the chart will be appended\n * @param chartData {Object} Elasticsearch query results for this specific chart\n */\n _.class(PieChart).inherits(Chart);\n function PieChart(handler, chartEl, chartData) {\n if (!(this instanceof PieChart)) {\n return new PieChart(handler, chartEl, chartData);\n }\n PieChart.Super.apply(this, arguments);\n\n var charts = this.handler.data.getVisData();\n this._validatePieData(charts);\n\n this._attr = _.defaults(handler._attr || {}, {\n isDonut: handler._attr.isDonut || false\n });\n }\n\n /**\n * Checks whether pie slices have all zero values.\n * If so, an error is thrown.\n */\n PieChart.prototype._validatePieData = function (charts) {\n var isAllZeros = charts.every(function (chart) {\n return chart.slices.children.length === 0;\n });\n\n if (isAllZeros) { throw new errors.PieContainsAllZeros(); }\n };\n\n /**\n * Adds Events to SVG paths\n *\n * @method addPathEvents\n * @param element {D3.Selection} Reference to SVG path\n * @returns {D3.Selection} SVG path with event listeners attached\n */\n PieChart.prototype.addPathEvents = function (element) {\n var events = this.events;\n\n return element\n .call(events.addHoverEvent())\n .call(events.addMouseoutEvent())\n .call(events.addClickEvent());\n };\n\n PieChart.prototype.convertToPercentage = function (slices) {\n (function assignPercentages(slices) {\n if (slices.sumOfChildren != null) return;\n\n var parent = slices;\n var children = parent.children;\n var parentPercent = parent.percentOfParent;\n\n var sum = parent.sumOfChildren = Math.abs(children.reduce(function (sum, child) {\n return sum + Math.abs(child.size);\n }, 0));\n\n children.forEach(function (child) {\n child.percentOfGroup = Math.abs(child.size) / sum;\n child.percentOfParent = child.percentOfGroup;\n\n if (parentPercent != null) {\n child.percentOfParent *= parentPercent;\n }\n\n if (child.children) {\n assignPercentages(child);\n }\n });\n }(slices));\n };\n\n /**\n * Adds pie paths to SVG\n *\n * @method addPath\n * @param width {Number} Width of SVG\n * @param height {Number} Height of SVG\n * @param svg {HTMLElement} Chart SVG\n * @param slices {Object} Chart data\n * @returns {D3.Selection} SVG with paths attached\n */\n PieChart.prototype.addPath = function (width, height, svg, slices) {\n var self = this;\n var marginFactor = 0.95;\n var isDonut = self._attr.isDonut;\n var radius = (Math.min(width, height) / 2) * marginFactor;\n var color = self.handler.data.getPieColorFunc();\n var tooltip = self.tooltip;\n var isTooltip = self._attr.addTooltip;\n\n var partition = d3.layout.partition()\n .sort(null)\n .value(function (d) {\n return d.percentOfParent * 100;\n });\n var x = d3.scale.linear()\n .range([0, 2 * Math.PI]);\n var y = d3.scale.sqrt()\n .range([0, radius]);\n var arc = d3.svg.arc()\n .startAngle(function (d) {\n return Math.max(0, Math.min(2 * Math.PI, x(d.x)));\n })\n .endAngle(function (d) {\n return Math.max(0, Math.min(2 * Math.PI, x(d.x + d.dx)));\n })\n .innerRadius(function (d) {\n // option for a single layer, i.e pie chart\n if (d.depth === 1 && !isDonut) {\n // return no inner radius\n return 0;\n }\n\n return Math.max(0, y(d.y));\n })\n .outerRadius(function (d) {\n return Math.max(0, y(d.y + d.dy));\n });\n\n var path = svg\n .datum(slices)\n .selectAll('path')\n .data(partition.nodes)\n .enter()\n .append('path')\n .attr('d', arc)\n .attr('class', function (d) {\n if (d.depth === 0) { return; }\n return 'slice';\n })\n .call(self._addIdentifier, 'name')\n .style('stroke', '#fff')\n .style('fill', function (d) {\n if (d.depth === 0) { return 'none'; }\n return color(d.name);\n });\n\n if (isTooltip) {\n path.call(tooltip.render());\n }\n\n return path;\n };\n\n PieChart.prototype._validateContainerSize = function (width, height) {\n var minWidth = 20;\n var minHeight = 20;\n\n if (width <= minWidth || height <= minHeight) {\n throw new errors.ContainerTooSmall();\n }\n };\n\n /**\n * Renders d3 visualization\n *\n * @method draw\n * @returns {Function} Creates the pie chart\n */\n PieChart.prototype.draw = function () {\n var self = this;\n\n return function (selection) {\n selection.each(function (data) {\n var slices = data.slices;\n var div = d3.select(this);\n var width = $(this).width();\n var height = $(this).height();\n var path;\n\n if (!slices.children.length) return;\n\n self.convertToPercentage(slices);\n self._validateContainerSize(width, height);\n\n var svg = div.append('svg')\n .attr('width', width)\n .attr('height', height)\n .append('g')\n .attr('transform', 'translate(' + width / 2 + ',' + height / 2 + ')');\n\n path = self.addPath(width, height, svg, slices);\n self.addPathEvents(path);\n\n return svg;\n });\n };\n };\n\n return PieChart;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/visualizations/pie_chart.js\n ** module id = 744\n ** module chunks = 0\n **/","define(function (require) {\n return function TileMapFactory(d3, Private, config) {\n var _ = require('lodash');\n var $ = require('jquery');\n var L = require('leaflet');\n require('leaflet-heat');\n require('leaflet-draw');\n require('components/vislib/styles/main.less');\n\n var Chart = Private(require('components/vislib/visualizations/_chart'));\n var defaultMapZoom = 2;\n var defaultMapCenter = [15, 5];\n\n // Convenience function to turn around the LngLat recieved from ES\n function cloneAndReverse(arr) {\n var l = arr.length;\n return arr.map(function (curr, idx) { return arr[l - (idx + 1)]; });\n }\n\n /**\n * Tile Map Visualization: renders maps\n *\n * @class TileMap\n * @constructor\n * @extends Chart\n * @param handler {Object} Reference to the Handler Class Constructor\n * @param chartEl {HTMLElement} HTML element to which the map will be appended\n * @param chartData {Object} Elasticsearch query results for this map\n */\n _.class(TileMap).inherits(Chart);\n function TileMap(handler, chartEl, chartData) {\n if (!(this instanceof TileMap)) {\n return new TileMap(handler, chartEl, chartData);\n }\n\n TileMap.Super.apply(this, arguments);\n\n\n // track the map objects\n this.maps = [];\n this.originalConfig = chartData || {};\n _.assign(this, this.originalConfig);\n\n this._attr.mapZoom = _.get(this.geoJson, 'properties.zoom') || defaultMapZoom;\n this._attr.mapCenter = _.get(this.geoJson, 'properties.center') || defaultMapCenter;\n\n // add allmin and allmax to geoJson\n var allMinMax = this.getMinMax(handler.data.data);\n this.geoJson.properties.allmin = allMinMax.min;\n this.geoJson.properties.allmax = allMinMax.max;\n }\n\n /**\n * Renders tile map\n *\n * @method draw\n * @return {Function} - function to add a map to a selection\n */\n TileMap.prototype.draw = function () {\n var self = this;\n var mapData = this.geoJson;\n\n // clean up old maps\n self.destroy();\n\n // clear maps array\n self.maps = [];\n self.popups = [];\n\n var worldBounds = L.latLngBounds([-90, -220], [90, 220]);\n\n return function (selection) {\n selection.each(function () {\n // add leaflet latLngs to properties for tooltip\n self.addLatLng(self.geoJson);\n\n var div = $(this).addClass('tilemap');\n var tileLayer = L.tileLayer('https://otile{s}-s.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.jpeg', {\n attribution: 'Tiles by MapQuest — ' +\n 'Map data © OpenStreetMap contributors, ' +\n 'CC-BY-SA',\n subdomains: '1234'\n });\n\n var drawOptions = {draw: {}};\n _.each(['polyline', 'polygon', 'circle', 'marker', 'rectangle'], function (drawShape) {\n if (!self.events.listenerCount(drawShape)) {\n drawOptions.draw[drawShape] = false;\n } else {\n drawOptions.draw[drawShape] = {\n shapeOptions: {\n stroke: false,\n color: '#000'\n }\n };\n }\n });\n\n var mapOptions = {\n minZoom: 1,\n maxZoom: 18,\n layers: tileLayer,\n center: self._attr.mapCenter,\n zoom: self._attr.mapZoom,\n noWrap: true,\n maxBounds: worldBounds,\n scrollWheelZoom: false,\n fadeAnimation: false,\n };\n\n var map = L.map(div[0], mapOptions);\n var featureLayer = self.markerType(map).addTo(map);\n\n if (mapData.features.length) {\n map.addControl(new L.Control.Draw(drawOptions));\n }\n\n function saturateTiles() {\n self.saturateTiles();\n }\n\n tileLayer.on('tileload', saturateTiles);\n\n map.on('unload', function () {\n tileLayer.off('tileload', saturateTiles);\n });\n\n map.on('moveend', function setZoomCenter() {\n self._attr.mapZoom = map.getZoom();\n self._attr.mapCenter = map.getCenter();\n\n self.events.emit('mapMoveEnd', {\n chart: self.originalConfig,\n zoom: self._attr.mapZoom,\n center: self._attr.mapCenter\n });\n\n map.removeLayer(featureLayer);\n\n featureLayer = self.markerType(map).addTo(map);\n });\n\n map.on('draw:created', function (e) {\n var drawType = e.layerType;\n if (!self.events.listenerCount(drawType)) return;\n\n // TODO: Different drawTypes need differ info. Need a switch on the object creation\n var bounds = e.layer.getBounds();\n\n self.events.emit(drawType, {\n e: e,\n chart: self.originalConfig,\n bounds: {\n top_left: {\n lat: bounds.getNorthWest().lat,\n lon: bounds.getNorthWest().lng\n },\n bottom_right: {\n lat: bounds.getSouthEast().lat,\n lon: bounds.getSouthEast().lng\n }\n }\n });\n });\n\n map.on('zoomend', function () {\n self.events.emit('mapZoomEnd', {\n chart: self.originalConfig,\n zoom: map.getZoom()\n });\n });\n\n // add title for splits\n if (self.title) {\n self.addTitle(self.title, map);\n }\n\n if (mapData && mapData.features.length > 0) {\n var fitContainer = L.DomUtil.create('div', 'leaflet-control leaflet-bar leaflet-control-fit');\n\n // Add button to fit container to points\n var FitControl = L.Control.extend({\n options: {\n position: 'topleft'\n },\n onAdd: function (map) {\n $(fitContainer).html('')\n .on('click', function (e) {\n e.preventDefault();\n self.fitBounds(map, mapData.features);\n });\n\n return fitContainer;\n },\n onRemove: function (map) {\n $(fitContainer).off('click');\n }\n });\n map.fitControl = new FitControl();\n map.addControl(map.fitControl);\n } else {\n map.fitControl = undefined;\n }\n\n self.maps.push(map);\n });\n };\n };\n\n /**\n * return whether feature is within map bounds\n *\n * @method _filterToMapBounds\n * @param map {Leaflet Object}\n * @return {boolean}\n */\n TileMap.prototype._filterToMapBounds = function (map) {\n return function (feature) {\n var mapBounds = map.getBounds();\n var bucketRectBounds = feature.properties.rectangle.map(cloneAndReverse);\n\n return mapBounds.intersects(bucketRectBounds);\n };\n };\n\n /**\n * get min and max for all cols, rows of data\n *\n * @method getMaxMin\n * @param data {Object}\n * @return {Object}\n */\n TileMap.prototype.getMinMax = function (data) {\n var min = [];\n var max = [];\n var allData;\n\n if (data.rows) {\n allData = data.rows;\n } else if (data.columns) {\n allData = data.columns;\n } else {\n allData = [data];\n }\n\n allData.forEach(function (datum) {\n min.push(datum.geoJson.properties.min);\n max.push(datum.geoJson.properties.max);\n });\n\n var minMax = {\n min: _.min(min),\n max: _.max(max)\n };\n\n return minMax;\n };\n\n /**\n * Get the Rectangles representing the geohash grid\n *\n * @return {LatLngRectangles[]}\n */\n TileMap.prototype._getDataRectangles = function () {\n return _(this.geoJson.features)\n .pluck('properties.rectangle')\n .invoke('map', cloneAndReverse)\n .value();\n };\n\n /**\n * add Leaflet latLng to mapData properties\n *\n * @method addLatLng\n * @return undefined\n */\n TileMap.prototype.addLatLng = function () {\n this.geoJson.features.forEach(function (feature) {\n feature.properties.latLng = L.latLng(\n feature.geometry.coordinates[1],\n feature.geometry.coordinates[0]\n );\n });\n };\n\n /**\n * zoom map to fit all features in featureLayer\n *\n * @method fitBounds\n * @param map {Leaflet Object}\n * @return {boolean}\n */\n TileMap.prototype.fitBounds = function (map) {\n map.fitBounds(this._getDataRectangles());\n };\n\n /**\n * remove css class for desat filters on map tiles\n *\n * @method saturateTiles\n * @return undefined\n */\n TileMap.prototype.saturateTiles = function () {\n if (!this._attr.isDesaturated) {\n $('img.leaflet-tile-loaded').addClass('filters-off');\n }\n };\n\n /**\n * Finds nearest feature in mapData to event latlng\n *\n * @method nearestFeature\n * @param point {Leaflet Object}\n * @return nearestPoint {Leaflet Object}\n */\n TileMap.prototype.nearestFeature = function (point) {\n var mapData = this.geoJson;\n var distance = Infinity;\n var nearest;\n\n if (point.lng < -180 || point.lng > 180) {\n return;\n }\n\n for (var i = 0; i < mapData.features.length; i++) {\n var dist = point.distanceTo(mapData.features[i].properties.latLng);\n if (dist < distance) {\n distance = dist;\n nearest = mapData.features[i];\n }\n }\n nearest.properties.eventDistance = distance;\n\n return nearest;\n };\n\n /**\n * display tooltip if feature is close enough to event latlng\n *\n * @method tooltipProximity\n * @param latlng {Leaflet Object}\n * @param zoom {Number}\n * @param feature {geoJson Object}\n * @param map {Leaflet Object}\n * @return boolean\n */\n TileMap.prototype.tooltipProximity = function (latlng, zoom, feature, map) {\n if (!feature) return;\n\n var showTip = false;\n\n // zoomScale takes map zoom and returns proximity value for tooltip display\n // domain (input values) is map zoom (min 1 and max 18)\n // range (output values) is distance in meters\n // used to compare proximity of event latlng to feature latlng\n var zoomScale = d3.scale.linear()\n .domain([1, 4, 7, 10, 13, 16, 18])\n .range([1000000, 300000, 100000, 15000, 2000, 150, 50]);\n\n var proximity = zoomScale(zoom);\n var distance = latlng.distanceTo(feature.properties.latLng);\n\n // maxLngDif is max difference in longitudes\n // to prevent feature tooltip from appearing 360°\n // away from event latlng\n var maxLngDif = 40;\n var lngDif = Math.abs(latlng.lng - feature.properties.latLng.lng);\n\n if (distance < proximity && lngDif < maxLngDif) {\n showTip = true;\n }\n\n delete feature.properties.eventDistance;\n\n var testScale = d3.scale.pow().exponent(0.2)\n .domain([1, 18])\n .range([1500000, 50]);\n return showTip;\n };\n\n /**\n * Checks if event latlng is within bounds of mapData\n * features and shows tooltip for that feature\n *\n * @method showTooltip\n * @param map {LeafletMap}\n * @param feature {LeafletFeature}\n * @return undefined\n */\n TileMap.prototype.showTooltip = function (map, feature) {\n if (!this.tooltipFormatter) return;\n\n var content = this.tooltipFormatter(feature);\n if (!content) return;\n\n var lat = feature.geometry.coordinates[1];\n var lng = feature.geometry.coordinates[0];\n var latLng = L.latLng(lat, lng);\n\n L.popup({autoPan: false})\n .setLatLng(latLng)\n .setContent(content)\n .openOn(map);\n };\n\n /**\n * Switch type of data overlay for map:\n * creates featurelayer from mapData (geoJson)\n *\n * @method markerType\n * @param map {Leaflet Object}\n * @param mapData {geoJson Object}\n * @return {Leaflet object} featureLayer\n */\n TileMap.prototype.markerType = function (map) {\n if (this._attr.mapType === 'Scaled Circle Markers') {\n return this.scaledCircleMarkers(map);\n }\n\n if (this._attr.mapType === 'Heatmap') {\n return this.heatMap(map);\n }\n\n if (this._attr.mapType === 'Shaded Circle Markers') {\n return this.shadedCircleMarkers(map);\n }\n\n if (this._attr.mapType === 'Shaded Geohash Grid') {\n return this.shadedGeohashGrid(map);\n }\n\n return this.scaledCircleMarkers(map);\n };\n\n /**\n * Type of data overlay for map:\n * creates featurelayer from mapData (geoJson)\n * with circle markers that are scaled to illustrate values\n *\n * @method scaledCircleMarkers\n * @param map {Leaflet Object}\n * @param mapData {geoJson Object}\n * @return {Leaflet object} featureLayer\n */\n TileMap.prototype.scaledCircleMarkers = function (map) {\n var self = this;\n var mapData = self.geoJson;\n\n // super min and max from all chart data\n var min = mapData.properties.allmin;\n var max = mapData.properties.allmax;\n var zoom = map.getZoom();\n var precision = _.max(mapData.features.map(function (feature) {\n return String(feature.properties.geohash).length;\n }));\n\n // multiplier to reduce size of all circles\n var scaleFactor = 0.6;\n\n var radiusScaler = 2.5;\n\n var featureLayer = L.geoJson(mapData, {\n pointToLayer: function (feature, latlng) {\n var value = feature.properties.value;\n var scaledRadius = self.radiusScale(value, max, zoom, precision) * scaleFactor;\n return L.circleMarker(latlng).setRadius(scaledRadius);\n },\n onEachFeature: function (feature, layer) {\n self.bindPopup(feature, layer, map);\n },\n style: function (feature) {\n return self.applyShadingStyle(feature, min, max);\n },\n filter: self._filterToMapBounds(map)\n });\n\n self.addLegend(map);\n\n return featureLayer;\n };\n\n /**\n * Type of data overlay for map:\n * creates featurelayer from mapData (geoJson)\n * with circle markers that are shaded to illustrate values\n *\n * @method shadedCircleMarkers\n * @param map {Leaflet Object}\n * @param mapData {geoJson Object}\n * @return {Leaflet object} featureLayer\n */\n TileMap.prototype.shadedCircleMarkers = function (map) {\n var self = this;\n var mapData = self.geoJson;\n // super min and max from all chart data\n var min = mapData.properties.allmin;\n var max = mapData.properties.allmax;\n\n // multiplier to reduce size of all circles\n var scaleFactor = 0.8;\n\n var featureLayer = L.geoJson(mapData, {\n pointToLayer: function (feature, latlng) {\n var radius = self.geohashMinDistance(feature) * scaleFactor;\n return L.circle(latlng, radius);\n },\n onEachFeature: function (feature, layer) {\n self.bindPopup(feature, layer, map);\n },\n style: function (feature) {\n return self.applyShadingStyle(feature, min, max);\n },\n filter: self._filterToMapBounds(map)\n });\n\n self.addLegend(map);\n\n return featureLayer;\n };\n\n /**\n * Type of data overlay for map:\n * creates featurelayer from mapData (geoJson)\n * with rectangles that show the geohash grid bounds\n *\n * @method geohashGrid\n * @param map {Leaflet Object}\n * @param mapData {geoJson Object}\n * @return {undefined}\n */\n TileMap.prototype.shadedGeohashGrid = function (map) {\n var self = this;\n var mapData = self.geoJson;\n\n // super min and max from all chart data\n var min = mapData.properties.allmin;\n var max = mapData.properties.allmax;\n\n var bounds;\n\n var featureLayer = L.geoJson(mapData, {\n pointToLayer: function (feature, latlng) {\n var geohashRect = feature.properties.rectangle;\n // get bounds from northEast[3] and southWest[1]\n // corners in geohash rectangle\n var corners = [\n [geohashRect[3][1], geohashRect[3][0]],\n [geohashRect[1][1], geohashRect[1][0]]\n ];\n return L.rectangle(corners);\n },\n onEachFeature: function (feature, layer) {\n self.bindPopup(feature, layer, map);\n layer.on({\n mouseover: function (e) {\n var layer = e.target;\n // bring layer to front if not older browser\n if (!L.Browser.ie && !L.Browser.opera) {\n layer.bringToFront();\n }\n }\n });\n },\n style: function (feature) {\n return self.applyShadingStyle(feature, min, max);\n },\n filter: self._filterToMapBounds(map)\n });\n\n self.addLegend(map);\n\n return featureLayer;\n };\n\n /**\n * Type of data overlay for map:\n * creates canvas layer from mapData (geoJson)\n * with leaflet.heat plugin\n *\n * @method heatMap\n * @param map {Leaflet Object}\n * @param mapData {geoJson Object}\n * @return featureLayer {Leaflet object}\n */\n TileMap.prototype.heatMap = function (map) {\n var self = this;\n var mapData = this.geoJson;\n var points = this.dataToHeatArray(mapData.properties.allmax);\n\n var options = {\n radius: +this._attr.heatRadius,\n blur: +this._attr.heatBlur,\n maxZoom: +this._attr.heatMaxZoom,\n minOpacity: +this._attr.heatMinOpacity\n };\n\n var featureLayer = L.heatLayer(points, options);\n\n if (self._attr.addTooltip && self.tooltipFormatter && !self._attr.disableTooltips) {\n map.on('mousemove', _.debounce(mouseMoveLocation, 15, {\n 'leading': true,\n 'trailing': false\n }));\n map.on('mouseout', function (e) {\n map.closePopup();\n });\n map.on('mousedown', function () {\n self._attr.disableTooltips = true;\n map.closePopup();\n });\n map.on('mouseup', function () {\n self._attr.disableTooltips = false;\n });\n }\n\n function mouseMoveLocation(e) {\n map.closePopup();\n\n // unhighlight all svgs\n d3.selectAll('path.geohash', this.chartEl).classed('geohash-hover', false);\n\n if (!mapData.features.length || self._attr.disableTooltips) {\n return;\n }\n\n var latlng = e.latlng;\n\n // find nearest feature to event latlng\n var feature = self.nearestFeature(latlng);\n\n var zoom = map.getZoom();\n\n // show tooltip if close enough to event latlng\n if (self.tooltipProximity(latlng, zoom, feature, map)) {\n self.showTooltip(map, feature, latlng);\n }\n }\n\n return featureLayer;\n };\n\n /**\n * Adds label div to each map when data is split\n *\n * @method addTitle\n * @param mapLabel {String}\n * @param map {Leaflet Object}\n * @return {undefined}\n */\n TileMap.prototype.addTitle = function (mapLabel, map) {\n var label = L.control();\n label.onAdd = function () {\n this._div = L.DomUtil.create('div', 'tilemap-info tilemap-label');\n this.update();\n return this._div;\n };\n label.update = function () {\n this._div.innerHTML = '

' + _.escape(mapLabel) + '

';\n };\n label.addTo(map);\n };\n\n /**\n * Adds legend div to each map when data is split\n * uses d3 scale from TileMap.prototype.quantizeColorScale\n *\n * @method addLegend\n * @param map {Leaflet Object}\n * @return {undefined}\n */\n TileMap.prototype.addLegend = function (map) {\n // only draw the legend for maps with multiple items\n if (this.geoJson.features.length <= 1) return;\n\n var self = this;\n var isLegend = $('div.tilemap-legend', this.chartEl).length;\n\n if (isLegend) return; // Don't add Legend if already one\n\n var valueFormatter = this.valueFormatter || _.identity;\n var legend = L.control({position: 'bottomright'});\n\n legend.onAdd = function () {\n var $div = $('
').addClass('tilemap-legend');\n\n _.each(self._attr.colors, function (color, i) {\n var icon = $('').css({\n background: color,\n 'border-color': self.darkerColor(color)\n });\n\n var range = self._attr.cScale\n .invertExtent(color)\n .map(valueFormatter)\n .join(' – ');\n\n $div.append(i > 0 ? '
' : '').append(icon).append(range);\n });\n\n return $div.get(0);\n };\n legend.addTo(map);\n };\n\n /**\n * Apply style with shading to feature\n *\n * @method applyShadingStyle\n * @param feature {Object}\n * @param min {Number}\n * @param max {Number}\n * @return {Object}\n */\n TileMap.prototype.applyShadingStyle = function (feature, min, max) {\n var self = this;\n var value = feature.properties.value;\n var color = self.quantizeColorScale(value, min, max);\n\n return {\n fillColor: color,\n color: self.darkerColor(color),\n weight: 1.5,\n opacity: 1,\n fillOpacity: 0.75\n };\n };\n\n /**\n * Invalidate the size of the map, so that leaflet will resize to fit.\n * then moves to center\n *\n * @method resizeArea\n * @return {undefined}\n */\n TileMap.prototype.resizeArea = function () {\n this.maps.forEach(function (map) {\n map.invalidateSize({\n debounceMoveend: true\n });\n });\n };\n\n /**\n * Binds popup and events to each feature on map\n *\n * @method bindPopup\n * @param feature {Object}\n * @param layer {Object}\n * return {undefined}\n */\n TileMap.prototype.bindPopup = function (feature, layer, map) {\n var self = this;\n var popup = layer.on({\n mouseover: function (e) {\n var layer = e.target;\n // bring layer to front if not older browser\n if (!L.Browser.ie && !L.Browser.opera) {\n layer.bringToFront();\n }\n var latlng = L.latLng(feature.geometry.coordinates[0], feature.geometry.coordinates[1]);\n self.showTooltip(map, feature, latlng);\n },\n mouseout: function (e) {\n map.closePopup();\n }\n });\n\n this.popups.push(popup);\n };\n\n /**\n * retuns data for data for heat map intensity\n * if heatNormalizeData attribute is checked/true\n • normalizes data for heat map intensity\n *\n * @param mapData {geoJson Object}\n * @param nax {Number}\n * @method dataToHeatArray\n * @return {Array}\n */\n TileMap.prototype.dataToHeatArray = function (max) {\n var self = this;\n var mapData = this.geoJson;\n\n return mapData.features.map(function (feature) {\n var lat = feature.geometry.coordinates[1];\n var lng = feature.geometry.coordinates[0];\n var heatIntensity;\n\n if (!self._attr.heatNormalizeData) {\n // show bucket value on heatmap\n heatIntensity = feature.properties.value;\n } else {\n // show bucket value normalized to max value\n heatIntensity = parseInt(feature.properties.value / max * 100);\n }\n\n return [lat, lng, heatIntensity];\n });\n };\n\n /**\n * geohashMinDistance returns a min distance in meters for sizing\n * circle markers to fit within geohash grid rectangle\n *\n * @method geohashMinDistance\n * @param feature {Object}\n * @return {Number}\n */\n TileMap.prototype.geohashMinDistance = function (feature) {\n var centerPoint = feature.properties.center;\n var geohashRect = feature.properties.rectangle;\n\n // get lat[1] and lng[0] of geohash center point\n // apply lat to east[2] and lng to north[3] sides of rectangle\n // to get radius at center of geohash grid recttangle\n var center = L.latLng([centerPoint[1], centerPoint[0]]);\n var east = L.latLng([centerPoint[1], geohashRect[2][0]]);\n var north = L.latLng([geohashRect[3][1], centerPoint[0]]);\n\n var eastRadius = Math.floor(center.distanceTo(east));\n var northRadius = Math.floor(center.distanceTo(north));\n\n return _.min([eastRadius, northRadius]);\n };\n\n /**\n * radiusScale returns a number for scaled circle markers\n * square root of value / max\n * multiplied by a value based on map zoom\n * multiplied by a value based on data precision\n * for relative sizing of markers\n *\n * @method radiusScale\n * @param value {Number}\n * @param max {Number}\n * @param zoom {Number}\n * @param precision {Number}\n * @return {Number}\n */\n TileMap.prototype.radiusScale = function (value, max, zoom, precision) {\n // exp = 0.5 for square root ratio\n // exp = 1 for linear ratio\n var exp = 0.5;\n var precisionBiasNumerator = 200;\n var precisionBiasBase = 5;\n var pct = Math.abs(value) / Math.abs(max);\n var constantZoomRadius = 0.5 * Math.pow(2, zoom);\n var precisionScale = precisionBiasNumerator / Math.pow(precisionBiasBase, precision);\n\n return Math.pow(pct, exp) * constantZoomRadius * precisionScale;\n };\n\n /**\n * d3 quantize scale returns a hex color,\n * used for marker fill color\n *\n * @method quantizeColorScale\n * @param value {Number}\n * @param min {Number}\n * @param max {Number}\n * @return {String} hex color\n */\n TileMap.prototype.quantizeColorScale = function (value, min, max) {\n var reds5 = ['#fed976', '#feb24c', '#fd8d3c', '#f03b20', '#bd0026'];\n var reds3 = ['#fecc5c', '#fd8d3c', '#e31a1c'];\n var reds1 = ['#ff6128'];\n var colors = this._attr.colors = reds5;\n\n if (max - min < 3) {\n colors = this._attr.colors = reds1;\n } else if (max - min < 25) {\n colors = this._attr.colors = reds3;\n }\n\n var cScale = this._attr.cScale = d3.scale.quantize()\n .domain([min, max])\n .range(colors);\n\n if (max === min) {\n return colors[0];\n } else {\n return cScale(value);\n }\n };\n\n /**\n * d3 method returns a darker hex color,\n * used for marker stroke color\n *\n * @method darkerColor\n * @param color {String} hex color\n * @return {String} hex color\n */\n TileMap.prototype.darkerColor = function (color) {\n var darker = d3.hcl(color).darker(1.3).toString();\n return darker;\n };\n\n /**\n * clean up the maps\n *\n * @method destroy\n * @return {undefined}\n */\n TileMap.prototype.destroy = function () {\n if (this.popups) {\n this.popups.forEach(function (popup) {\n popup.off('mouseover').off('mouseout');\n });\n this.popups = [];\n }\n\n if (this.maps) {\n this.maps.forEach(function (map) {\n if (map.fitControl) {\n map.fitControl.removeFrom(map);\n }\n map.remove();\n });\n }\n };\n\n return TileMap;\n\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/visualizations/tile_map.js\n ** module id = 745\n ** module chunks = 0\n **/","define(function (require) {\n return function VisTypeFactory(Private) {\n\n /**\n * Provides the visualizations for the vislib\n *\n * @module vislib\n * @submodule VisTypeFactory\n * @param Private {Object} Loads any function as an angular module\n * @return {Function} Returns an Object of Visualization classes\n */\n return {\n histogram: Private(require('components/vislib/visualizations/column_chart')),\n pie: Private(require('components/vislib/visualizations/pie_chart')),\n line: Private(require('components/vislib/visualizations/line_chart')),\n area: Private(require('components/vislib/visualizations/area_chart')),\n tile_map: Private(require('components/vislib/visualizations/tile_map'))\n };\n };\n\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib/visualizations/vis_types.js\n ** module id = 746\n ** module chunks = 0\n **/","define(function (require) {\n return function VislibRenderbotFactory(Private, vislib) {\n var _ = require('lodash');\n var Renderbot = Private(require('components/vis/Renderbot'));\n var buildChartData = Private(require('components/vislib_vis_type/buildChartData'));\n\n _.class(VislibRenderbot).inherits(Renderbot);\n function VislibRenderbot(vis, $el) {\n VislibRenderbot.Super.call(this, vis, $el);\n this._createVis();\n }\n\n VislibRenderbot.prototype._createVis = function () {\n var self = this;\n\n if (self.vislibVis) self.destroy();\n\n self.vislibParams = self._getVislibParams();\n self.vislibVis = new vislib.Vis(self.$el[0], self.vislibParams);\n\n _.each(self.vis.listeners, function (listener, event) {\n self.vislibVis.on(event, listener);\n });\n\n if (this.chartData) self.vislibVis.render(this.chartData);\n };\n\n VislibRenderbot.prototype._getVislibParams = function () {\n var self = this;\n\n return _.assign(\n {},\n self.vis.type.params.defaults,\n { type: self.vis.type.name },\n self.vis.params\n );\n };\n\n VislibRenderbot.prototype.buildChartData = buildChartData;\n VislibRenderbot.prototype.render = function (esResponse) {\n this.chartData = this.buildChartData(esResponse);\n this.vislibVis.render(this.chartData);\n };\n\n VislibRenderbot.prototype.destroy = function () {\n var self = this;\n\n var vislibVis = self.vislibVis;\n\n _.forOwn(self.vis.listeners, function (listener, event) {\n vislibVis.off(event, listener);\n });\n\n vislibVis.destroy();\n };\n\n VislibRenderbot.prototype.updateParams = function () {\n var self = this;\n\n // get full vislib params object\n var newParams = self._getVislibParams();\n\n // if there's been a change, replace the vis\n if (!_.isEqual(newParams, self.vislibParams)) self._createVis();\n };\n\n return VislibRenderbot;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib_vis_type/VislibRenderbot.js\n ** module id = 747\n ** module chunks = 0\n **/","define(function (require) {\n return function VislibVisBuildChartData(Private) {\n var aggResponse = Private(require('components/agg_response/index'));\n var Table = Private(require('components/agg_response/tabify/_table'));\n\n return function (esResponse) {\n var vis = this.vis;\n\n if (vis.isHierarchical()) {\n // the hierarchical converter is very self-contained (woot!)\n return aggResponse.hierarchical(vis, esResponse);\n }\n\n var tableGroup = aggResponse.tabify(vis, esResponse, {\n canSplit: true,\n asAggConfigResults: true\n });\n\n var converted = convertTableGroup(vis, tableGroup);\n if (!converted) {\n // mimic a row of tables that doesn't have any tables\n // https://github.com/elastic/kibana/blob/7bfb68cd24ed42b1b257682f93c50cd8d73e2520/src/kibana/components/vislib/components/zero_injection/inject_zeros.js#L32\n converted = { rows: [] };\n }\n\n converted.hits = esResponse.hits.total;\n\n return converted;\n };\n\n function convertTableGroup(vis, tableGroup) {\n var tables = tableGroup.tables;\n var firstChild = tables[0];\n if (firstChild instanceof Table) {\n\n var chart = convertTable(vis, firstChild);\n // if chart is within a split, assign group title to its label\n if (tableGroup.$parent) {\n chart.label = tableGroup.title;\n }\n return chart;\n }\n\n if (!tables.length) return;\n var out = {};\n var outList;\n\n tables.forEach(function (table) {\n if (!outList) {\n var aggConfig = table.aggConfig;\n var direction = aggConfig.params.row ? 'rows' : 'columns';\n outList = out[direction] = [];\n }\n\n var output;\n if (output = convertTableGroup(vis, table)) {\n outList.push(output);\n }\n });\n\n return out;\n }\n\n function convertTable(vis, table) {\n return vis.type.responseConverter(vis, table);\n }\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/vislib_vis_type/buildChartData.js\n ** module id = 748\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n var reqRespStatsHTML = require('components/visualize/spy/_req_resp_stats.html');\n\n var linkReqRespStats = function ($scope, config) {\n $scope.$bind('req', 'searchSource.history[searchSource.history.length - 1]');\n $scope.$watchMulti([\n 'req',\n 'req.started',\n 'req.stopped',\n 'searchSource'\n ], function () {\n if (!$scope.searchSource || !$scope.req) return;\n\n var req = $scope.req;\n var resp = $scope.req.resp;\n var stats = $scope.stats = [];\n\n if (resp && resp.took != null) stats.push(['Query Duration', resp.took + 'ms']);\n if (req && req.ms != null) stats.push(['Request Duration', req.ms + 'ms']);\n if (resp && resp.hits) stats.push(['Hits', resp.hits.total]);\n\n if (req.fetchParams.index) stats.push(['Index', req.fetchParams.index]);\n if (req.fetchParams.type) stats.push(['Type', req.fetchParams.type]);\n if (req.fetchParams.id) stats.push(['Id', req.fetchParams.id]);\n });\n };\n\n require('registry/spy_modes')\n .register(function () {\n return {\n name: 'request',\n display: 'Request',\n order: 2,\n template: reqRespStatsHTML,\n link: linkReqRespStats\n };\n })\n .register(function () {\n return {\n name: 'response',\n display: 'Response',\n order: 3,\n template: reqRespStatsHTML,\n link: linkReqRespStats\n };\n })\n .register(function () {\n return {\n name: 'stats',\n display: 'Statistics',\n order: 4,\n template: reqRespStatsHTML,\n link: linkReqRespStats\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/visualize/spy/_req_resp_stats.js\n ** module id = 749\n ** module chunks = 0\n **/","define(function (require) {\n function VisSpyTableProvider(Notifier, $filter, $rootScope, config, Private) {\n var _ = require('lodash');\n var saveAs = require('file_saver');\n var tabifyAggResponse = Private(require('components/agg_response/tabify/tabify'));\n\n var PER_PAGE_DEFAULT = 10;\n\n require('components/agg_table/agg_table');\n\n return {\n name: 'table',\n display: 'Table',\n order: 1,\n template: require('components/visualize/spy/_table.html'),\n link: function tableLinkFn($scope, $el) {\n $rootScope.$watchMulti.call($scope, [\n 'vis',\n 'esResp'\n ], function () {\n if (!$scope.vis || !$scope.esResp) {\n $scope.table = null;\n } else {\n if (!$scope.editableVis.params.spyPerPage) {\n $scope.editableVis.params.spyPerPage = PER_PAGE_DEFAULT;\n }\n\n $scope.table = tabifyAggResponse($scope.vis, $scope.esResp, {\n canSplit: false,\n asAggConfigResults: true,\n partialRows: true\n });\n }\n });\n }\n };\n }\n\n require('registry/spy_modes').register(VisSpyTableProvider);\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/visualize/spy/_table.js\n ** module id = 750\n ** module chunks = 0\n **/","define(function (require) {\n require('modules')\n .get('app/visualize')\n .directive('visualizeSpy', function (Private, $compile) {\n var $ = require('jquery');\n var _ = require('lodash');\n\n require('components/visualize/spy/_table');\n require('components/visualize/spy/_req_resp_stats');\n\n var modes = Private(require('registry/spy_modes'));\n var defaultMode = modes.inOrder[0];\n\n return {\n restrict: 'E',\n template: require('components/visualize/spy/_spy.html'),\n link: function ($scope, $el) {\n var $container = $el.find('.visualize-spy-container');\n var fullPageSpy = false;\n $scope.modes = modes;\n\n $scope.toggleDisplay = function () {\n $scope.setSpyMode($scope.spy.mode ? null : defaultMode);\n };\n\n $scope.toggleFullPage = function () {\n fullPageSpy = $scope.spy.mode.fill = !fullPageSpy;\n };\n\n $scope.setSpyMode = function (newMode) {\n // allow passing in a mode name\n if (_.isString(newMode)) newMode = modes.byName[newMode];\n\n var current = $scope.spy.mode;\n var change = false;\n\n // no change\n if (current && newMode && newMode.name === current.name) return;\n\n // clear the current value\n if (current) {\n current.$container.remove();\n current.$scope.$destroy();\n delete $scope.spy.mode;\n }\n\n // no further changes\n if (!newMode) return;\n\n current = $scope.spy.mode = {\n // copy a couple values over\n name: newMode.name,\n display: newMode.display,\n fill: fullPageSpy,\n $scope: $scope.$new(),\n $container: $('
').appendTo($container)\n };\n\n current.$container.append($compile(newMode.template)(current.$scope));\n newMode.link && newMode.link(current.$scope, current.$container);\n };\n }\n };\n });\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/visualize/spy/spy.js\n ** module id = 751\n ** module chunks = 0\n **/","define(function () {\n return function addWordBreaks(text, minLineLength) {\n text = text || '';\n var lineSize = 0;\n var newText = '';\n var inHtmlTag = false;\n var inHtmlChar = false;\n\n for (var i = 0, len = text.length; i < len; i++) {\n var chr = text.charAt(i);\n newText += chr;\n\n switch (chr) {\n case ' ':\n case ':':\n case ',':\n // natural line break, reset line size\n lineSize = 0;\n break;\n case '<':\n inHtmlTag = true;\n break;\n case '>':\n inHtmlTag = false;\n lineSize = 0;\n break;\n case '&':\n inHtmlChar = true;\n break;\n case ';':\n inHtmlChar = false;\n lineSize = 0;\n break;\n default:\n if (!inHtmlTag && !inHtmlChar) lineSize++;\n break;\n }\n\n if (lineSize > minLineLength) {\n // continuous text is longer then we want,\n // so break it up with a \n lineSize = 0;\n newText += '';\n }\n }\n\n return newText;\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/utils/add_word_breaks.js\n ** module id = 752\n ** module chunks = 0\n **/","define(function (require) {\n\n /*\n * Decodes geohash to object containing\n * top-left and bottom-right corners of\n * rectangle and center point.\n *\n * geohash.js\n * Geohash library for Javascript\n * (c) 2008 David Troy\n * Distributed under the MIT License\n *\n * @method refine_interval\n * @param interval {Array} [long, lat]\n * @param cd {Number}\n * @param mask {Number}\n * @return {Object} interval\n */\n function decodeGeoHash(geohash) {\n var BITS = [16, 8, 4, 2, 1];\n var BASE32 = '0123456789bcdefghjkmnpqrstuvwxyz';\n var is_even = 1;\n var lat = [];\n var lon = [];\n lat[0] = -90.0;\n lat[1] = 90.0;\n lon[0] = -180.0;\n lon[1] = 180.0;\n var lat_err = 90.0;\n var lon_err = 180.0;\n for (var i = 0; i < geohash.length; i++) {\n var c = geohash[i];\n var cd = BASE32.indexOf(c);\n for (var j = 0; j < 5; j++) {\n var mask = BITS[j];\n if (is_even) {\n lon_err /= 2;\n refine_interval(lon, cd, mask);\n } else {\n lat_err /= 2;\n refine_interval(lat, cd, mask);\n }\n is_even = !is_even;\n }\n }\n lat[2] = (lat[0] + lat[1]) / 2;\n lon[2] = (lon[0] + lon[1]) / 2;\n return { latitude: lat, longitude: lon};\n }\n\n function refine_interval(interval, cd, mask) {\n if (cd & mask) {\n interval[0] = (interval[0] + interval[1]) / 2;\n } else {\n interval[1] = (interval[0] + interval[1]) / 2;\n }\n }\n\n return decodeGeoHash;\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/utils/decode_geo_hash.js\n ** module id = 753\n ** module chunks = 0\n **/","define(function (require) {\n return {\n 8: 'backspace',\n 9: 'tab',\n 13: 'enter',\n 16: 'shift',\n 17: 'ctrl',\n 18: 'alt',\n 19: 'pause',\n 20: 'capsLock',\n 27: 'escape',\n 32: 'space',\n 33: 'pageUp',\n 34: 'pageDown',\n 35: 'end',\n 36: 'home',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 45: 'insert',\n 46: 'delete',\n 48: '0',\n 49: '1',\n 50: '2',\n 51: '3',\n 52: '4',\n 53: '5',\n 54: '6',\n 55: '7',\n 56: '8',\n 57: '9',\n 65: 'a',\n 66: 'b',\n 67: 'c',\n 68: 'd',\n 69: 'e',\n 70: 'f',\n 71: 'g',\n 72: 'h',\n 73: 'i',\n 74: 'j',\n 75: 'k',\n 76: 'l',\n 77: 'm',\n 78: 'n',\n 79: 'o',\n 80: 'p',\n 81: 'q',\n 82: 'r',\n 83: 's',\n 84: 't',\n 85: 'u',\n 86: 'v',\n 87: 'w',\n 88: 'x',\n 89: 'y',\n 90: 'z',\n 91: 'leftWindowKey',\n 92: 'rightWindowKey',\n 93: 'selectKey',\n 96: '0',\n 97: '1',\n 98: '2',\n 99: '3',\n 100: '4',\n 101: '5',\n 102: '6',\n 103: '7',\n 104: '8',\n 105: '9',\n 106: 'multiply',\n 107: 'add',\n 109: 'subtract',\n 110: 'period',\n 111: 'divide',\n 112: 'f1',\n 113: 'f2',\n 114: 'f3',\n 115: 'f4',\n 116: 'f5',\n 117: 'f6',\n 118: 'f7',\n 119: 'f8',\n 120: 'f9',\n 121: 'f10',\n 122: 'f11',\n 123: 'f12',\n 144: 'numLock',\n 145: 'scrollLock',\n 186: 'semiColon',\n 187: 'equalSign',\n 188: 'comma',\n 189: 'dash',\n 190: 'period',\n 191: 'forwardSlash',\n 192: 'graveAccent',\n 219: 'openBracket',\n 220: 'backSlash',\n 221: 'closeBraket',\n 222: 'singleQuote',\n 224: 'meta'\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/utils/key_map.js\n ** module id = 754\n ** module chunks = 0\n **/","define(function (require) {\n // adopted from http://stackoverflow.com/questions/3109978/php-display-number-with-ordinal-suffix\n var _ = require('lodash');\n return function addOrdinalSuffix(num) {\n return num + '' + suffix(num);\n };\n\n function suffix(num) {\n var int = Math.floor(parseFloat(num));\n\n var hunth = int % 100;\n if (hunth >= 11 && hunth <= 13) return 'th';\n\n var tenth = int % 10;\n if (tenth === 1) return 'st';\n if (tenth === 2) return 'nd';\n if (tenth === 3) return 'rd';\n return 'th';\n }\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/utils/ordinal_suffix.js\n ** module id = 755\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n /**\n * Regexp portion that matches our number\n *\n * supports:\n * -100\n * -100.0\n * 0\n * 0.10\n * Infinity\n * -Infinity\n *\n * @type {String}\n */\n var _RE_NUMBER = '(\\\\-?(?:\\\\d+(?:\\\\.\\\\d+)?|Infinity))';\n\n /**\n * Regexp for the interval notation\n *\n * supports:\n * [num, num]\n * ( num , num ]\n * [Infinity,num)\n *\n * @type {RegExp}\n */\n var RANGE_RE = new RegExp('^\\\\s*([\\\\[|\\\\(])\\\\s*' + _RE_NUMBER + '\\\\s*,\\\\s*' + _RE_NUMBER + '\\\\s*([\\\\]|\\\\)])\\\\s*$');\n\n function parse(input) {\n\n var match = String(input).match(RANGE_RE);\n if (!match) {\n throw new TypeError('expected input to be in interval notation eg. (100, 200]');\n }\n\n return new Range(\n match[1] === '[',\n parseFloat(match[2]),\n parseFloat(match[3]),\n match[4] === ']'\n );\n }\n\n function Range(/* minIncl, min, max, maxIncl */) {\n var args = _.toArray(arguments);\n if (args[1] > args[2]) args.reverse();\n\n this.minInclusive = args[0];\n this.min = args[1];\n this.max = args[2];\n this.maxInclusive = args[3];\n }\n\n Range.prototype.within = function (n) {\n if (this.min === n && !this.minInclusive) return false;\n if (this.min > n) return false;\n\n if (this.max === n && !this.maxInclusive) return false;\n if (this.max < n) return false;\n\n return true;\n };\n\n return parse;\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/utils/range.js\n ** module id = 756\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n function create(min, max, length, mod) {\n var seq = new Array(length);\n\n var valueDist = max - min;\n\n // range of values that the mod creates\n var modRange = [mod(0, length), mod(length - 1, length)];\n\n // distance between\n var modRangeDist = modRange[1] - modRange[0];\n\n _.times(length, function (i) {\n var modIPercent = (mod(i, length) - modRange[0]) / modRangeDist;\n\n // percent applied to distance and added to min to\n // produce value\n seq[i] = min + (valueDist * modIPercent);\n });\n\n seq.min = min;\n seq.max = max;\n\n return seq;\n }\n\n return {\n /**\n * Create an exponential sequence of numbers.\n *\n * Creates a curve resembling:\n *\n * ;\n * /\n * /\n * .-'\n * _.-\"\n * _.-'\"\n * _,.-'\"\n * _,..-'\"\n * _,..-'\"\"\n * _,..-'\"\"\n * ____,..--'\"\"\n *\n * @param {number} min - the min value to produce\n * @param {number} max - the max value to produce\n * @param {number} length - the number of values to produce\n * @return {number[]} - an array containing the sequence\n */\n createEaseIn: _.partialRight(create, function (i, length) {\n // generates numbers from 1 to +Infinity\n return i * Math.pow(i, 1.1111);\n }),\n\n /**\n * Create an sequence of numbers using sine.\n *\n * Create a curve resembling:\n *\n * ____,..--'\"\"\n * _,..-'\"\"\n * _,..-'\"\"\n * _,..-'\"\n * _,.-'\"\n * _.-'\"\n * _.-\"\n * .-'\n * /\n * /\n * ;\n *\n *\n * @param {number} min - the min value to produce\n * @param {number} max - the max value to produce\n * @param {number} length - the number of values to produce\n * @return {number[]} - an array containing the sequence\n */\n createEaseOut: _.partialRight(create, function (i, length) {\n // adapted from output of http://www.timotheegroleau.com/Flash/experiments/easing_function_generator.htm\n // generates numbers from 0 to 100\n\n var ts = (i /= length) * i;\n var tc = ts * i;\n return 100 * (\n 0.5 * tc * ts +\n -3 * ts * ts +\n 6.5 * tc +\n -7 * ts +\n 4 * i\n );\n })\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/utils/sequencer.js\n ** module id = 757\n ** module chunks = 0\n **/","define(function (require) {\n var _ = require('lodash');\n\n /**\n * just a place to put feature detection checks\n */\n return {\n cssFilters: (function () {\n var e = document.createElement('img');\n var rules = ['webkitFilter', 'mozFilter', 'msFilter', 'filter'];\n var test = 'grayscale(1)';\n rules.forEach(function (rule) { e.style[rule] = test; });\n\n document.body.appendChild(e);\n var styles = window.getComputedStyle(e);\n var can = _(styles).pick(rules).includes(test);\n document.body.removeChild(e);\n\n return can;\n }())\n };\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/utils/supports.js\n ** module id = 758\n ** module chunks = 0\n **/","// style-loader: Adds some reference to a css file to the DOM by adding a tag\nvar update = require(\"!/Users/spencer/dev/es/kibana/node_modules/style-loader/addStyleUrl.js\")(\n\trequire(\"!!./../../../../../../node_modules/file-loader/index.js?name=[path][name].less!./../../../../../../node_modules/less-loader/index.js!./main.less\")\n);\n// Hot Module Replacement\nif(module.hot) {\n\tmodule.hot.accept(\"!!./../../../../../../node_modules/file-loader/index.js?name=[path][name].less!./../../../../../../node_modules/less-loader/index.js!./main.less\", function() {\n\t\tupdate(require(\"!!./../../../../../../node_modules/file-loader/index.js?name=[path][name].less!./../../../../../../node_modules/less-loader/index.js!./main.less\"));\n\t});\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/kibana/public/discover/styles/main.less\n ** module id = 557\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 018ea244f06b6..a16242f68e5ec 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ ], "scripts": { "test": "grunt test", - "start": "node ./src/devServer/run.js", + "start": "node ./src/server/cli/index.js --dev", "postinstall": "bower install && grunt licenses --check-validity", "precommit": "grunt lintStagedFiles" }, diff --git a/sense.js.map b/sense.js.map deleted file mode 100644 index cb6f725680372..0000000000000 --- a/sense.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap d26167e4f671993c83a6?cbaa","./bundles/sense.entry.js","webpack:///./src/ui/utils/lodash-mixins/index.js?878c","webpack:///./bower_components/moment/moment.js?0cb0","webpack:///./src/ui/components/modules.js?aad4","webpack:///./bower_components/angular/angular.js?fe0a","webpack:///./bower_components/jquery/dist/jquery.js?e33a","webpack:///./~/style-loader/addStyleUrl.js?796a","webpack:///./src/ui/components/errors.js?c234","webpack:///./src/ui/components/courier/fetch/_req_status.js?75b5","webpack:///./src/ui/registry/field_formats.js?805f","webpack:///./src/ui/components/courier/_request_queue.js?f7ac","webpack:///./src/ui/components/index_patterns/_field_format/FieldFormat.js?14d4","webpack:///./src/ui/components/indexed_array/index.js?8105","webpack:///./src/ui/utils/datemath.js?adf8","webpack:///./src/ui/components/events.js?abc6","webpack:///./src/ui/utils/rison.js?5fc9","webpack:///./src/ui/components/routes/index.js?0e5c","webpack:///./src/ui/components/courier/fetch/fetch.js?3396","webpack:///./src/ui/components/bound_to_config_obj.js?6fc7","webpack:///./src/ui/components/courier/data_source/doc_source.js?16b7","webpack:///./src/ui/components/courier/fetch/strategy/search.js?aff3","webpack:///./src/ui/components/notify/notify.js?203b","webpack:///./src/ui/filters/short_dots.js?4701","webpack:///./src/ui/components/courier/_error_handlers.js?63cd","webpack:///./src/ui/components/courier/data_source/search_source.js?8c2d","webpack:///./src/ui/components/courier/fetch/request/request.js?f55a","webpack:///./src/ui/components/courier/fetch/strategy/doc.js?048e","webpack:///./src/ui/components/field_format_editor/pattern/pattern.js?f723","webpack:///./src/ui/components/filter_bar/lib/compareFilters.js?50af","webpack:///./src/ui/components/filter_bar/lib/mapAndFlattenFilters.js?ebd8","webpack:///./src/ui/components/filter_bar/query_filter.js?f455","webpack:///./src/ui/components/index_patterns/_intervals.js?1d10","webpack:///./src/ui/components/notify/directives.js?c641","webpack:///./src/ui/components/promises.js?e054","webpack:///./src/ui/components/stringify/types/_Numeral.js?6344","webpack:///./src/ui/utils/config_template.js?ff03","webpack:///./src/ui/utils/diff_time_picker_vals.js?e009","webpack:///./src/ui/utils/query_string.js?568f","webpack:///./src/ui/chrome/chrome.js?b0f9","webpack:///./src/ui/components/courier/data_source/_root_search_source.js?0e27","webpack:///./src/ui/components/index_patterns/index_patterns.js?4cbb","webpack:///./src/ui/components/courier/data_source/_decorate_query.js?76bb","webpack:///./src/ui/components/private.js?71d9","webpack:///./src/ui/components/timefilter/timefilter.js?2658","webpack:///./src/ui/components/vis/AggConfigResult.js?193e","webpack:///./src/ui/directives/inequality.js?9d66","webpack:///./bower_components/moment/locale/af.js?95e7","webpack:///./bower_components/moment/locale/ar-ma.js?4f39","webpack:///./bower_components/moment/locale/ar-sa.js?038f","webpack:///./bower_components/moment/locale/ar-tn.js?c690","webpack:///./bower_components/moment/locale/ar.js?6762","webpack:///./bower_components/moment/locale/az.js?bd67","webpack:///./bower_components/moment/locale/be.js?80ee","webpack:///./bower_components/moment/locale/bg.js?54fd","webpack:///./bower_components/moment/locale/bn.js?2930","webpack:///./bower_components/moment/locale/bo.js?7783","webpack:///./bower_components/moment/locale/br.js?38f2","webpack:///./bower_components/moment/locale/bs.js?3930","webpack:///./bower_components/moment/locale/ca.js?9e88","webpack:///./bower_components/moment/locale/cs.js?ba9e","webpack:///./bower_components/moment/locale/cv.js?7552","webpack:///./bower_components/moment/locale/cy.js?c5e8","webpack:///./bower_components/moment/locale/da.js?0a9c","webpack:///./bower_components/moment/locale/de-at.js?c10e","webpack:///./bower_components/moment/locale/de.js?d89f","webpack:///./bower_components/moment/locale/el.js?cfeb","webpack:///./bower_components/moment/locale/en-au.js?69ce","webpack:///./bower_components/moment/locale/en-ca.js?0106","webpack:///./bower_components/moment/locale/en-gb.js?7128","webpack:///./bower_components/moment/locale/eo.js?b8c6","webpack:///./bower_components/moment/locale/es.js?eee9","webpack:///./bower_components/moment/locale/et.js?0569","webpack:///./bower_components/moment/locale/eu.js?1322","webpack:///./bower_components/moment/locale/fa.js?f4ea","webpack:///./bower_components/moment/locale/fi.js?89c8","webpack:///./bower_components/moment/locale/fo.js?efb9","webpack:///./bower_components/moment/locale/fr-ca.js?faff","webpack:///./bower_components/moment/locale/fr.js?e9d4","webpack:///./bower_components/moment/locale/fy.js?95c6","webpack:///./bower_components/moment/locale/gl.js?6123","webpack:///./bower_components/moment/locale/he.js?d157","webpack:///./bower_components/moment/locale/hi.js?5830","webpack:///./bower_components/moment/locale/hr.js?95a6","webpack:///./bower_components/moment/locale/hu.js?dff4","webpack:///./bower_components/moment/locale/hy-am.js?e91c","webpack:///./bower_components/moment/locale/id.js?a133","webpack:///./bower_components/moment/locale/is.js?0068","webpack:///./bower_components/moment/locale/it.js?df66","webpack:///./bower_components/moment/locale/ja.js?75c4","webpack:///./bower_components/moment/locale/jv.js?ed49","webpack:///./bower_components/moment/locale/ka.js?989d","webpack:///./bower_components/moment/locale/km.js?1dc9","webpack:///./bower_components/moment/locale/ko.js?9df0","webpack:///./bower_components/moment/locale/lb.js?28ca","webpack:///./bower_components/moment/locale/lt.js?acfb","webpack:///./bower_components/moment/locale/lv.js?9760","webpack:///./bower_components/moment/locale/me.js?9ecb","webpack:///./bower_components/moment/locale/mk.js?08dc","webpack:///./bower_components/moment/locale/ml.js?af10","webpack:///./bower_components/moment/locale/mr.js?7b71","webpack:///./bower_components/moment/locale/ms-my.js?a415","webpack:///./bower_components/moment/locale/my.js?5861","webpack:///./bower_components/moment/locale/nb.js?24e6","webpack:///./bower_components/moment/locale/ne.js?9aee","webpack:///./bower_components/moment/locale/nl.js?1782","webpack:///./bower_components/moment/locale/nn.js?b05a","webpack:///./bower_components/moment/locale/pl.js?fd48","webpack:///./bower_components/moment/locale/pt-br.js?c45b","webpack:///./bower_components/moment/locale/pt.js?d0fb","webpack:///./bower_components/moment/locale/ro.js?da9d","webpack:///./bower_components/moment/locale/ru.js?090a","webpack:///./bower_components/moment/locale/si.js?c346","webpack:///./bower_components/moment/locale/sk.js?3768","webpack:///./bower_components/moment/locale/sl.js?ea22","webpack:///./bower_components/moment/locale/sq.js?0dd2","webpack:///./bower_components/moment/locale/sr-cyrl.js?b729","webpack:///./bower_components/moment/locale/sr.js?9ae5","webpack:///./bower_components/moment/locale/sv.js?4228","webpack:///./bower_components/moment/locale/ta.js?d315","webpack:///./bower_components/moment/locale/th.js?86f1","webpack:///./bower_components/moment/locale/tl-ph.js?3658","webpack:///./bower_components/moment/locale/tr.js?2e36","webpack:///./bower_components/moment/locale/tzm-latn.js?0f4e","webpack:///./bower_components/moment/locale/tzm.js?bdda","webpack:///./bower_components/moment/locale/uk.js?2a1d","webpack:///./bower_components/moment/locale/uz.js?8291","webpack:///./bower_components/moment/locale/vi.js?1f7c","webpack:///./bower_components/moment/locale/zh-cn.js?1e9d","webpack:///./bower_components/moment/locale/zh-tw.js?9ce0","webpack:///./src/ui/components/field_format_editor/numeral/numeral.html?e52a","webpack:///(webpack)/buildin/module.js?c3c2","webpack:///./src/ui/components/config/_vals.js?645c","webpack:///./src/ui/components/courier/courier.js?4a83","webpack:///./src/ui/components/courier/data_source/_abstract.js?81bc","webpack:///./src/ui/components/courier/fetch/_call_response_handlers.js?b09b","webpack:///./src/ui/components/courier/fetch/_is_request.js?c489","webpack:///./src/ui/components/courier/fetch/_notifier.js?82e3","webpack:///./src/ui/components/courier/fetch/request/search.js?4657","webpack:///./src/ui/components/courier/looper/_looper.js?cbbb","webpack:///./src/ui/components/debounce.js?3186","webpack:///./src/ui/components/doc_title/doc_title.js?3da1","webpack:///./src/ui/components/es.js?3b2b","webpack:///./src/ui/components/field_format_editor/samples/samples.js?80a1","webpack:///./src/ui/components/filter_bar/lib/dedupFilters.js?80a5","webpack:///./src/ui/components/filter_bar/lib/uniqFilters.js?c2e6","webpack:///./src/ui/components/index_patterns/_get_ids.js?ff77","webpack:///./src/ui/components/index_patterns/_mapper.js?f2d4","webpack:///./src/ui/components/index_patterns/_pattern_to_wildcard.js?1eed","webpack:///./src/ui/components/state_management/global_state.js?84fb","webpack:///./src/ui/components/state_management/state.js?c63d","webpack:///./src/ui/components/timepicker/quick_ranges.js?65d6","webpack:///./src/ui/components/timepicker/time_units.js?69e9","webpack:///./src/ui/components/ui-bootstrap/index.js?577a","webpack:///./src/ui/directives/input_datetime.js?8004","webpack:///./src/ui/directives/input_focus.js?97c5","webpack:///./src/ui/filters/rison.js?28d9","webpack:///./src/ui/filters/uriescape.js?298c","webpack:///./src/ui/meta-modules/elasticsearch.js?2711","webpack:///./src/ui/utils/ipv4_address.js?7944","webpack:///./src/ui/utils/mapping_setup.js?51b8","webpack:///./src/ui/components/config/defaults.js?7254","webpack:///./src/ui/components/filter_bar/filter_bar_click_handler.js?41c1","webpack:///./src/ui/components/filter_manager/filter_manager.js?25a0","webpack:///./src/ui/components/highlight/highlight_tags.js?0fc9","webpack:///./src/ui/components/index_patterns/_field.js?d483","webpack:///./src/ui/components/url/url.js?269c","webpack:///./src/ui/components/validateDateInterval.js?5bcd","webpack:///./src/ui/directives/css_truncate.js?98a6","webpack:///./src/ui/directives/field_name.js?b0f3","webpack:///./src/ui/registry/_registry.js?e512","webpack:///./bower_components/numeral/numeral.js?fe7c","webpack:///./src/ui/components/config/config.js?a594","webpack:///./src/ui/components/elastic_textarea.js?efa5","webpack:///./src/ui/components/highlight/highlight.js?ab54","webpack:///./src/ui/components/index_patterns/_cast_mapping_type.js?c50b","webpack:///./src/ui/components/index_patterns/_field_list.js?0470","webpack:///./src/ui/components/notify/_notifier.js?03e2","webpack:///./src/ui/components/state_management/app_state.js?4b32","webpack:///./src/ui/components/timepicker/timepicker.js?4946","webpack:///./src/ui/components/typeahead/typeahead.js?f654","webpack:///./src/ui/components/validate_query/validate_query.js?ee95","webpack:///./src/ui/directives/auto_select_if_only_one.js?4bc0","webpack:///./src/ui/directives/config.js?e359","webpack:///./src/ui/directives/confirm_click.js?1972","webpack:///./src/ui/directives/file_upload.js?1fe3","webpack:///./src/ui/directives/infinite_scroll.js?b8bb","webpack:///./src/ui/directives/input_whole_number.js?7f37","webpack:///./src/ui/directives/saved_object_finder.js?5501","webpack:///./src/ui/directives/truncated.js?e171","webpack:///./src/ui/directives/validate_cidr_mask.js?1c76","webpack:///./src/ui/directives/validate_date_math.js?f68c","webpack:///./src/ui/directives/validate_index_name.js?18c7","webpack:///./src/ui/directives/validate_ip.js?c8d4","webpack:///./src/ui/directives/validate_json.js?a38a","webpack:///./src/ui/filters/_prop_filter.js?f43a","webpack:///./src/ui/filters/field_type.js?936f","webpack:///./src/ui/filters/label.js?ee53","webpack:///./src/ui/filters/match_any.js?17ff","webpack:///./src/ui/filters/moment.js?094c","webpack:///./src/ui/filters/start_from.js?ff3b","webpack:///./src/ui/filters/trust_as_html.js?1c00","webpack:///./src/ui/filters/unique.js?d0a3","webpack:///./src/ui/utils/SimpleEmitter.js?b3fe","webpack:///./src/ui/utils/cidr_mask.js?7c3e","webpack:///./src/ui/utils/no_white_space.js?d8a0","webpack:///./src/ui/utils/parse_interval.js?fadd","webpack:///./bower_components/elasticsearch/elasticsearch.angular.min.js?0403","webpack:///./bower_components/lodash/lodash.js?02ed","webpack:///./bower_components/moment/locale ^\\.\\/.*$?e8a6","webpack:///./src/ui/components/typeahead/typeahead.less?1231","webpack:///./src/ui/ui-styles/base.less?560c","webpack:///./src/ui/ui-styles/callout.less?4cf2","webpack:///./src/ui/ui-styles/config.less?7d3f","webpack:///./src/ui/ui-styles/control_group.less?2754","webpack:///./src/ui/ui-styles/hintbox.less?e33d","webpack:///./src/ui/ui-styles/input.less?ca3c","webpack:///./src/ui/ui-styles/list-group-menu.less?be64","webpack:///./src/ui/ui-styles/navbar.less?a095","webpack:///./src/ui/ui-styles/notify.less?772b","webpack:///./src/ui/ui-styles/pagination.less?ff39","webpack:///./src/ui/ui-styles/sidebar.less?8476","webpack:///./src/ui/ui-styles/spinner.less?93fd","webpack:///./src/ui/ui-styles/table.less?10cd","webpack:///./src/ui/ui-styles/truncate.less?1156","webpack:///./bower_components/angular-bindonce/bindonce.js?8f51","webpack:///./bower_components/angular-bootstrap/ui-bootstrap-tpls.js?0889","webpack:///./src/ui/chrome/chrome.html?8802","webpack:///./src/ui/chrome/config/filter.html?48bb","webpack:///./src/ui/chrome/config/interval.html?861c","webpack:///./src/ui/components/field_format_editor/pattern/pattern.html?eb67","webpack:///./src/ui/components/field_format_editor/samples/samples.html?d1e2","webpack:///./src/ui/components/filter_bar/filter_bar.html?c650","webpack:///./src/ui/components/notify/partials/fatal.html?68b7","webpack:///./src/ui/components/notify/partials/fatal_splash_screen.html?87d8","webpack:///./src/ui/components/notify/partials/toaster.html?6088","webpack:///./src/ui/components/stringify/editors/date.html?08a0","webpack:///./src/ui/components/stringify/editors/string.html?6af5","webpack:///./src/ui/components/stringify/editors/url.html?2dac","webpack:///./src/ui/components/stringify/types/_source.html?aa43","webpack:///./src/ui/components/style_compile/style_compile.css.tmpl?acbc","webpack:///./src/ui/components/timepicker/timepicker.html?3877","webpack:///./src/ui/components/tooltip/tooltip.html?44aa","webpack:///./src/ui/components/typeahead/partials/typeahead-items.html?c17e","webpack:///./src/ui/partials/info.html?d768","webpack:///./src/ui/partials/paginate_controls.html?ebb6","webpack:///./src/ui/partials/saved_object_finder.html?587f","webpack:///./src/ui/components/typeahead/typeahead.less?c45e*","webpack:///./src/ui/ui-styles/base.less?bd2f*","webpack:///./src/ui/ui-styles/callout.less?ebaa*","webpack:///./src/ui/ui-styles/config.less?7fcd*","webpack:///./src/ui/ui-styles/control_group.less?3adf*","webpack:///./src/ui/ui-styles/hintbox.less?b6b7*","webpack:///./src/ui/ui-styles/input.less?f983*","webpack:///./src/ui/ui-styles/list-group-menu.less?d498*","webpack:///./src/ui/ui-styles/navbar.less?553d*","webpack:///./src/ui/ui-styles/notify.less?0e95*","webpack:///./src/ui/ui-styles/pagination.less?ef00*","webpack:///./src/ui/ui-styles/sidebar.less?5ad3*","webpack:///./src/ui/ui-styles/spinner.less?668a*","webpack:///./src/ui/ui-styles/table.less?cf42*","webpack:///./src/ui/ui-styles/truncate.less?2e83*","webpack:///./src/ui/chrome/Tab.js?a7a5","webpack:///./src/ui/chrome/TabCollection.js?50a2","webpack:///./src/ui/chrome/context.js?4511","webpack:///./src/ui/components/bind.js?e7ed","webpack:///./src/ui/components/config/_delayed_updater.js?6441","webpack:///./src/ui/components/courier/_redirect_when_missing.js?7168","webpack:///./src/ui/components/courier/data_source/_doc_send_to_es.js?9ed6","webpack:///./src/ui/components/courier/data_source/_normalize_sort_request.js?2182","webpack:///./src/ui/components/courier/fetch/_call_client.js?b4ea","webpack:///./src/ui/components/courier/fetch/_continue_incomplete.js?b973","webpack:///./src/ui/components/courier/fetch/_fetch_these.js?917b","webpack:///./src/ui/components/courier/fetch/_for_each_strategy.js?0286","webpack:///./src/ui/components/courier/fetch/_merge_duplicate_requests.js?79fb","webpack:///./src/ui/components/courier/fetch/request/_error_handler.js?b9a2","webpack:///./src/ui/components/courier/fetch/request/_segmented_handle.js?492a","webpack:///./src/ui/components/courier/fetch/request/doc.js?d856","webpack:///./src/ui/components/courier/fetch/request/segmented.js?0a2c","webpack:///./src/ui/components/courier/looper/doc.js?428a","webpack:///./src/ui/components/courier/looper/search.js?3e06","webpack:///./src/ui/components/courier/saved_object/saved_object.js?62fb","webpack:///./src/ui/components/fancy_forms/fancy_forms.js?bebc","webpack:///./src/ui/components/fancy_forms/kbn_form.js?028c","webpack:///./src/ui/components/fancy_forms/kbn_model.js?6cd9","webpack:///./src/ui/components/field_format_editor/numeral/numeral.js?5018","webpack:///./src/ui/components/filter_bar/filter_bar.js?d043","webpack:///./src/ui/components/filter_bar/lib/changeTimeFilter.js?ea79","webpack:///./src/ui/components/filter_bar/lib/extractTimeFilter.js?0c0e","webpack:///./src/ui/components/filter_bar/lib/filterAppliedAndUnwrap.js?25e5","webpack:///./src/ui/components/filter_bar/lib/filterOutTimeBasedFilter.js?8f4b","webpack:///./src/ui/components/filter_bar/lib/generateMappingChain.js?5541","webpack:///./src/ui/components/filter_bar/lib/mapDefault.js?fec9","webpack:///./src/ui/components/filter_bar/lib/mapExists.js?5d93","webpack:///./src/ui/components/filter_bar/lib/mapFilter.js?23be","webpack:///./src/ui/components/filter_bar/lib/mapFlattenAndWrapFilters.js?1adb","webpack:///./src/ui/components/filter_bar/lib/mapGeoBoundingBox.js?9154","webpack:///./src/ui/components/filter_bar/lib/mapMissing.js?25dd","webpack:///./src/ui/components/filter_bar/lib/mapQueryString.js?96b5","webpack:///./src/ui/components/filter_bar/lib/mapRange.js?ca95","webpack:///./src/ui/components/filter_bar/lib/mapScript.js?55e4","webpack:///./src/ui/components/filter_bar/lib/mapTerms.js?9e8e","webpack:///./src/ui/components/filter_bar/lib/onlyDisabled.js?eb4b","webpack:///./src/ui/components/filter_bar/lib/onlyStateChanged.js?0ed4","webpack:///./src/ui/components/index_patterns/_field_format/contentTypes.js?52aa","webpack:///./src/ui/components/index_patterns/_field_types.js?41f6","webpack:///./src/ui/components/index_patterns/_flatten_hit.js?af05","webpack:///./src/ui/components/index_patterns/_format_hit.js?6d28","webpack:///./src/ui/components/index_patterns/_get_computed_fields.js?cb8c","webpack:///./src/ui/components/index_patterns/_index_pattern.js?b8dc","webpack:///./src/ui/components/index_patterns/_local_cache.js?26b6","webpack:///./src/ui/components/index_patterns/_map_field.js?013a","webpack:///./src/ui/components/index_patterns/_pattern_cache.js?09bb","webpack:///./src/ui/components/index_patterns/_transform_mapping_into_fields.js?2542","webpack:///./src/ui/components/indexed_array/_inflector.js?37e3","webpack:///./src/ui/components/indexed_array/_path_getter.js?631e","webpack:///./src/ui/components/listen.js?a32c","webpack:///./src/ui/components/notify/_errors.js?5baa","webpack:///./src/ui/components/persisted_log/persisted_log.js?951e","webpack:///./src/ui/components/storage/storage.js?9c4d","webpack:///./src/ui/components/stringify/register.js?6b48","webpack:///./src/ui/components/stringify/types/Bytes.js?5c5c","webpack:///./src/ui/components/stringify/types/Date.js?887c","webpack:///./src/ui/components/stringify/types/Ip.js?03df","webpack:///./src/ui/components/stringify/types/Number.js?c54f","webpack:///./src/ui/components/stringify/types/Percent.js?5392","webpack:///./src/ui/components/stringify/types/Source.js?a2a7","webpack:///./src/ui/components/stringify/types/String.js?2ddc","webpack:///./src/ui/components/stringify/types/Url.js?9708","webpack:///./src/ui/components/style_compile/style_compile.js?cbc4","webpack:///./src/ui/components/timefilter/lib/diff_interval.js?2ea5","webpack:///./src/ui/components/timefilter/lib/diff_time.js?4f27","webpack:///./src/ui/components/timepicker/refresh_intervals.js?7a81","webpack:///./src/ui/components/tooltip/tooltip.js?f33f","webpack:///./src/ui/components/typeahead/_input.js?f1ad","webpack:///./src/ui/components/typeahead/_items.js?eac3","webpack:///./src/ui/components/validate_query/lib/from_user.js?5751","webpack:///./src/ui/components/validate_query/lib/to_user.js?1b3a","webpack:///./src/ui/components/watch_multi.js?395e","webpack:///./src/ui/directives/click_focus.js?3b77","webpack:///./src/ui/directives/info.js?6520","webpack:///./src/ui/directives/paginate.js?5931","webpack:///./src/ui/directives/pretty_duration.js?f194","webpack:///./src/ui/directives/rows.js?76c7","webpack:///./src/ui/directives/spinner.js?7fe9","webpack:///./src/ui/filters/commaList.js?93a2","webpack:///./src/ui/utils/BaseObject.js?e71a","webpack:///./src/ui/utils/diff_object.js?7faa","webpack:///./src/ui/utils/lodash-mixins/collection.js?c677","webpack:///./src/ui/utils/lodash-mixins/function.js?bd6e","webpack:///./src/ui/utils/lodash-mixins/lang.js?367f","webpack:///./src/ui/utils/lodash-mixins/object.js?d6f6","webpack:///./src/ui/utils/lodash-mixins/oop.js?fb00","webpack:///./src/ui/utils/lodash-mixins/string.js?c4a4","webpack:///./src/ui/utils/obj_define.js?c8d0","webpack:///./src/ui/utils/slugify_id.js?004d","webpack:///./bower_components/angular-route/angular-route.js?a1fb","webpack:///./src/ui/components/routes/_setup.js?0cc4","webpack:///./src/ui/components/routes/_work_queue.js?5d7d","webpack:///./src/ui/components/routes/_wrap_route_with_prep.js?2207","./src/plugins/sense/public/sense.js"],"names":[],"mappings":";AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;mCCjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;ACnBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,oBAAoB;;AAErB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,YAAY;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,2KAA0K,IAAI;;AAE9K,sEAAqE,IAAI;;AAEzE;;AAEA;;AAEA;AACA;AACA;AACA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,2CAA0C,YAAY;AACtD;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,wBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,+BAA8B;AAC9B,iCAAgC;AAChC,8BAA6B,EAAE,EAAE;AACjC,8BAA6B,EAAE,EAAE;AACjC,mCAAkC,EAAE,EAAE;AACtC,kCAAiC;AACjC,8BAA6B,IAAI,EAAE;AACnC,8BAA6B,IAAI,EAAE;AACnC,mCAAkC,IAAI,EAAE;;AAExC,gCAA+B;AAC/B,qCAAoC;;AAEpC,+CAA8C;;AAE9C,yCAAwC,IAAI,IAAI;;AAEhD;AACA,iIAAgI,IAAI;;AAEpI;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS,+BAA+B;AACxC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,kBAAkB;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,gDAA+C,EAAE,IAAI,EAAE;;AAEvD;AACA,kCAAiC,EAAE,IAAI,EAAE,IAAI,EAAE;AAC/C,4BAA2B,EAAE,IAAI,EAAE,IAAI,EAAE;AACzC,8BAA6B,EAAE,KAAK,EAAE;AACtC,4BAA2B,EAAE,KAAK,EAAE;AACpC,0BAAyB,EAAE,IAAI,EAAE;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,+BAA+B;AAClD;AACA;;AAEA;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,oBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,sBAAsB;AACzC;AACA,uCAAsC;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,0CAAyC,gBAAgB;AACzD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sEAAqE,EAAE;;AAEvE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,6BAA6B;AACtC;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAmB;;AAEnB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,cAAc;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAuC,qBAAqB;AAC5D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAuC,qBAAqB;AAC5D;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;;AAEA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,mCAAkC,IAAI;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,uFAAsF,IAAI;AAC1F;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB,WAAW;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;;AAEL;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,EAAC,G;;;;;;;mCCtiGD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;AC7DD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yCAAwC;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,EAAE,KAAK,EAAE;AAC9C;AACA;AACA;AACA,kCAAiC,EAAE,6BAA6B,EAAE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,+DAA+D;AAC5E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C;AAC5C,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;AAEA,4CAA2C,KAAK;AAChD;;AAEA;AACA;AACA;AACA,8CAA6C;AAC7C,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,gBAAe,sBAAsB;AACrC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA,kCAAiC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA,kCAAiC;;;AAGjC;AACA;AACA;AACA,2CAA0C,mDAAmD;AAC7F;AACA;AACA;AACA;AACA;AACA,2CAA0C,oDAAoD;AAC9F;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+DAA8D;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;;;AAGA;AACA;AACA,YAAW,EAAE;AACb,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA,YAAW,aAAa;AACxB,YAAW,SAAS;AACpB,YAAW,QAAQ;AACnB,cAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,oBAAmB,kBAAkB;AACrC;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAW,oBAAoB;AAC/B,cAAa;AACb;AACA;AACA,gCAA+B,wBAAwB;AACvD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,UAAU;AACrB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA,0CAAyC,GAAG,iBAAiB;AAC7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;;;AAGA,0BAAyB,mBAAmB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA,6BAA4B;;;AAG5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA,2BAA0B;;;AAG1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA,0BAAyB;;;AAGzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA,0BAAyB;;;AAGzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA,0BAAyB;;;AAGzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA,4BAA2B;;;AAG3B;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,gDAA+C;AAC/C;;AAEA;AACA;AACA,cAAa,OAAO,iBAAiB;AACrC;AACA;AACA,eAAc;AACd,eAAc,kBAAkB;AAChC;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,qBAAqB;AACzB;AACA,YAAW,oBAAoB;AAC/B,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb;AACA,YAAW,gBAAgB;AAC3B;AACA,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,kBAAiB,eAAe;AAChC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP,sCAAqC;AACrC;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAsB,mBAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAoB,gBAAgB;AACpC;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,WAAW;AACtB,YAAW,KAAK;AAChB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,gCAAgC;AAC3C,YAAW,SAAS;AACpB,cAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D,kCAAkC,EAAE;AAChG,IAAG;AACH;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA,cAAa;AACb;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA,IAAG;AACH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,eAAe;AAC1B,OAAM,4BAA4B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,wBAAwB;AAC5B;AACA;AACA,oCAAmC,qBAAqB;AACxD;AACA,2BAA0B,qBAAqB;AAC/C;AACA;AACA,6FAA4F,OAAO;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,GAAG,KAAK,GAAG,MAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAAyD;;AAEzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,mBAAkB,+BAA+B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C,SAAS;AACtD;AACA;AACA,0CAAyC,MAAM;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,YAAW,WAAW;AACtB,YAAW,8BAA8B;AACzC;AACA;AACA,cAAa;AACb,cAAa,eAAe;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yDAAwD,EAAE;AAC1D,gCAA+B,oBAAoB;AACnD;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wCAAuC,EAAE,MAAM,EAAE;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAY,OAAO;AACnB,aAAY,OAAO;AACnB;AACA;AACA;AACA,+DAA8D,EAAE;AAChE;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,MAAM;AACjB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,6BAA6B;AACnE;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,gBAAe,gCAAgC;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD,+BAA+B;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,+BAA+B;AACvC,SAAQ,wBAAwB;AAChC;AACA,gBAAe,QAAQ;AACvB,gBAAe,iBAAiB;AAChC;AACA,gBAAe,UAAU;AACzB,gBAAe,4CAA4C;AAC3D,kBAAiB,OAAO,sBAAsB,qBAAqB;AACnE;AACA;AACA;AACA;AACA,qEAAoE,EAAE;AACtE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD,EAAE;AACrD;AACA;AACA;;AAEA,oBAAmB,mBAAmB;AACtC;;AAEA,oBAAmB,kBAAkB;AACrC;;AAEA;;AAEA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,SAAS;AAC9B;AACA;AACA,mBAAkB,iDAAiD;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,SAAS;AAC9B;AACA,mBAAkB,+CAA+C;AACjE;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,SAAS;AAC9B;AACA,mBAAkB,+CAA+C;AACjE;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,EAAE;AACvB;AACA,mBAAkB,2CAA2C;AAC7D;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,EAAE;AACvB;AACA;AACA,mBAAkB,iDAAiD;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,kCAAkC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA,mBAAkB,sEAAsE;AACxF,eAAc,iCAAiC;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,SAAS;AAC9B;AACA,mBAAkB,6DAA6D;AAC/E;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,cAAc;AACnC;AACA,sBAAqB,SAAS;AAC9B;AACA,mBAAkB,qEAAqE;AACvF;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,cAAc;AACnC;AACA,sBAAqB,SAAS;AAC9B;AACA;AACA,mBAAkB,iEAAiE;AACnF;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA,eAAc,0DAA0D;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B,oBAAmB,QAAQ;AAC3B,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB,kBAAiB,OAAO;AACxB,gBAAe,OAAO;AACtB,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,WAAW;AAC7B;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,gCAAgC;AAChE;AACA,+CAA8C,gCAAgC;AAC9E;AACA;AACA;AACA;AACA;AACA,YAAW,kBAAkB;AAC7B,cAAa,OAAO;AACpB;;AAEA;;AAEA,gCAA+B;AAC/B;AACA;AACA,sCAAqC;AACrC,sCAAqC,sCAAsC;AAC3E;AACA,sCAAqC,6CAA6C;AAClF,sCAAqC,qCAAqC,EAAE;;AAE5E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAqB,eAAe;;;AAGpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAiD,sBAAsB;AACvE;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA4B;AAC5B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wCAAuC,MAAM;;AAE7C;AACA;AACA;;AAEA;AACA;AACA,2BAA0B;AAC1B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wDAAuD,qBAAqB;AAC5E;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,uBAAsB;;AAEtB;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,6DAA4D;AAC5D;AACA;AACA;AACA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,kDAAiD;AACjD;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAsC,QAAQ;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAkD,uBAAuB;AACzE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL,4CAA2C;AAC3C;AACA;AACA,0CAAyC;AACzC;AACA;AACA,IAAG;AACH;AACA;AACA,+BAA8B,qBAAqB;AACnD;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;AACD;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,gDAA+C;AAC/C,gDAA+C;AAC/C,MAAK;AACL;AACA,kDAAiD;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,qDAAoD,uBAAuB;AAC3E;AACA;AACA;AACA,IAAG;;AAEH;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,wBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,kBAAiB,eAAe;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,mCAAkC;AAClC;AACA;;AAEA;AACA;AACA,mCAAkC;AAClC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA,mEAAkE;AAClE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,2BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;;AAEA;;AAEA;AACA;AACA,gEAA+D;;AAE/D;;AAEA;AACA;AACA,qCAAoC,8BAA8B,EAAE;AACpE,yCAAwC,uCAAuC,EAAE;AACjF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,oCAAoC;AAClE;;AAEA,YAAW,wBAAwB;AACnC,YAAW,qBAAqB;AAChC,cAAa,SAAS,uBAAuB,+BAA+B;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA,oCAAmC,sBAAsB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C,eAAe;AAC9D;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,4DAA2D,+BAA+B;AAC1F;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,6BAA6B;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY,EAAE;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,UAAU;AACrB,OAAM,kCAAkC;AACxC,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB;AACA,cAAa,EAAE;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,QAAQ;AACnB;AACA,cAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA,iFAAgF;AAChF;AACA;AACA;AACA,YAAW,iCAAiC;AAC5C;AACA;AACA,cAAa,eAAe;AAC5B;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,6BAA6B;AACrC,cAAa,+BAA+B;AAC5C,KAAI,qBAAqB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,+BAA+B;AACnE;AACA;AACA;AACA;AACA;AACA,qBAAoB,6BAA6B;AACjD;AACA;AACA,OAAM,gDAAgD;AACtD,SAAQ;AACR,OAAM,2CAA2C;AACjD;AACA,OAAM,qCAAqC;AAC3C;AACA,OAAM,wCAAwC;AAC9C;AACA;AACA,OAAM,2CAA2C;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+CAA8C,+BAA+B;AAC7E;AACA;AACA;AACA;AACA,sBAAqB,mBAAmB;AACxC,KAAI,mCAAmC;AACvC;AACA;AACA;AACA,4DAA2D,mCAAmC;AAC9F,YAAW;AACX,wCAAuC,mBAAmB;AAC1D;AACA;AACA,YAAW,OAAO;AAClB;AACA,YAAW,oBAAoB;AAC/B;AACA;AACA,SAAQ,+CAA+C;AACvD;AACA,SAAQ,yDAAyD;AACjE;AACA,cAAa,OAAO;;AAEpB;AACA;AACA;AACA,KAAI,iDAAiD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAwD,aAAa;AACrE,QAAO;AACP,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,oDAAoD;AACvE;AACA;AACA,YAAW,OAAO;AAClB,YAAW,WAAW;AACtB,6DAA4D,aAAa;AACzE,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,oDAAoD;AACvE;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA,KAAI,oDAAoD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,2CAA0C,+BAA+B;AACzE;AACA;AACA;AACA;AACA;AACA,wCAAuC,4BAA4B;AACnE;AACA,KAAI,wCAAwC;AAC5C;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC,iCAAiC;AACpE;AACA;AACA;AACA,OAAM;AACN;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,+BAA+B,UAAU,gCAAgC;AACtF,wDAAuD,4BAA4B;AACnF,iCAAgC,wCAAwC;AACxE;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,+CAA8C,+BAA+B;AAC7E;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,WAAW;AACtB;AACA,YAAW,4CAA4C;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,mBAAmB;AAC5C,cAAa,gCAAgC;AAC7C;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;;AAGA;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,+DAA8D,EAAE;AAChE,YAAW;AACX,yBAAwB;AACxB;AACA;AACA;AACA;AACA,YAAW;;;AAGX,qDAAoD,qCAAqC,EAAE;;AAE3F;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAgD,EAAE;AAClD;AACA;AACA;;AAEA,sCAAqC,wBAAwB,kBAAkB,EAAE;;AAEjF;AACA;AACA;AACA,MAAK;AACL;;AAEA,8BAA6B,oCAAoC;;AAEjE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sDAAqD,wBAAwB;AAC7E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mFAAkF,QAAQ;AAC1F;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAAyE,EAAE,WAAW,EAAE;AACxF;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,sEAAqE,EAAE;AACvE;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,0CAAyC,YAAY;AACrD;AACA;AACA;AACA,qFAAoF,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sCAAqC;AACrC;;AAEA;AACA,oFAAmF;AACnF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAkB,uCAAuC;AACzD,OAAM,yCAAyC;AAC/C;AACA;AACA;AACA,OAAM,uCAAuC;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,qDAAoD,yBAAyB;AAC7E;AACA;AACA,UAAS;AACT;;AAEA;AACA,IAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA,2DAA0D,EAAE;AAC5D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAgF;AAChF,8BAA6B,iBAAiB;AAC9C,aAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,WAAW;AAC5B,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,WAAW;AAC5B,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,OAAO;AACxB,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,OAAO;AACxB,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,WAAW;AAC5B;AACA,kBAAiB,OAAO;AACxB,kBAAiB,OAAO;AACxB,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;;AAEP;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA,uBAAsB,kBAAkB;AACxC;AACA;AACA;AACA,IAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,0CAA0C;AACnE;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,WAAW;AACtB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,mDAAkD,2BAA2B;;AAE7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA,uCAAsC,UAAU,EAAE;;AAElD;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA,gBAAe,WAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAa,OAAO;AACpB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAwC,UAAU,EAAE;AACpD;AACA,MAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,qCAAqC;AAC3C;AACA,cAAa,OAAO;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,qCAAqC;AAC3C;AACA,cAAa,iBAAiB;AAC9B,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,gDAA+C;AAC/C,mCAAkC;AAClC,QAAO;AACP;AACA;AACA,mCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,gDAA+C;AAC/C;;AAEA,oBAAmB,wBAAwB;AAC3C;AACA;AACA,2BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,cAAa,WAAW;AACxB,cAAa,QAAQ;AACrB,gBAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA4B,gCAAgC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,uBAAuB;AACzD;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB;AACA,UAAS,QAAQ;AACjB;AACA,cAAa,OAAO;AACpB;AACA,QAAO,OAAO;AACd,SAAQ,GAAG,QAAQ,OAAO,OAAO,EAAE;AACnC;AACA,SAAQ,GAAG,QAAQ,OAAO;AAC1B,QAAO,KAAK,WAAW,OAAO;AAC9B,QAAO,KAAK;AACZ,QAAO,KAAK;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,yDAAwD,EAAE;AAC1D;;AAEA;AACA,4BAA2B,YAAY,YAAY;AACnD,oBAAmB;AACnB;AACA,uBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,kBAAkB,UAAU,iCAAiC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,gCAAgC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B,oBAAmB,EAAE;AACrB;AACA,sBAAqB,EAAE;AACvB;AACA;AACA;AACA,6DAA4D,SAAS;;AAErE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C,gCAAgC;AAC/E;AACA,oBAAmB,OAAO;AAC1B,sBAAqB,EAAE;AACvB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,UAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,gCAAgC;AACtE;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,gCAAgC;AACzD,kCAAiC,kCAAkC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,yDAAwD,gCAAgC;AACxF;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,UAAU,WAAW;AAC/C;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,kDAAiD;AACjD,kDAAiD;AACjD;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAqD,mCAAmC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,qCAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,kCAAkC;AAC/D;AACA;AACA,KAAI,+CAA+C;AACnD;AACA;AACA;AACA;AACA,aAAY,sCAAsC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAuE,MAAM;AAC7E;AACA,iFAAgF,MAAM;AACtF;AACA;AACA;AACA,yFAAwF,MAAM;AAC9F;AACA;AACA;AACA;AACA,0EAAyE,MAAM;AAC/E,4EAA2E;AAC3E;AACA;AACA,gDAA+C;AAC/C,WAAU;AACV;AACA;AACA,0EAAyE,MAAM;AAC/E,4EAA2E;AAC3E;AACA;AACA,6CAA4C;AAC5C;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA2D;AAC3D;AACA;AACA;AACA,8DAA6D;AAC7D,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,kEAAiE;AACjE,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,MAAM;AAC3C,kBAAiB,sBAAsB;AACvC,yCAAwC,MAAM;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,uBAAuB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,oBAAoB;AAClC;AACA;AACA;AACA;AACA,4CAA2C,WAAW;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAgD,YAAY;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8FAA6F;AAC7F,iEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,qBAAoB;AACpB;AACA;AACA;AACA,yBAAwB;AACxB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C,oCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,sDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAuE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,gCAAgC;AAClD,mCAAkC,yCAAyC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,kDAAkD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C,KAAK;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,gCAA+B,MAAM;AACrC,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B,MAAM;AAClC;AACA,OAAM;AACN;AACA;;AAEA;AACA;AACA,YAAW,kBAAkB;AAC7B,YAAW,wCAAwC;AACnD,YAAW,OAAO;AAClB;AACA,cAAa,gCAAgC;AAC7C;AACA;AACA,oBAAmB,gCAAgC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,2CAA2C;AAC/C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA,uDAAsD,MAAM;;AAE5D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,cAAc;AAC3B;AACA;AACA,cAAa,eAAe;AAC5B,UAAS,sBAAsB;AAC/B,gBAAe,oBAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,cAAa;AACb;AACA,YAAW;AACX;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,gBAAe,2BAA2B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,gBAAe,2BAA2B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAAyD;AACzD;AACA,kBAAiB,OAAO;AACxB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,kBAAiB,eAAe;AAChC,kBAAiB,SAAS;AAC1B;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT,QAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,kBAAiB,4BAA4B;AAC7C;AACA,0BAAyB,4CAA4C;AACrE,oBAAmB,WAAW;AAC9B;AACA;AACA;AACA,wEAAuE;AACvE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,kDAAiD,sBAAsB;AACvE;AACA;AACA,0CAAyC,EAAE,4BAA4B;AACvE,UAAS;AACT;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA,8CAA6C,MAAM;AACnD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,wCAAwC;AACvD;AACA,gBAAe,YAAY;AAC3B;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA,sBAAqB,qBAAqB;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAmB,oBAAoB;AACvC;AACA;;AAEA,+CAA8C,QAAQ;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;;AAEA,cAAa;AACb;;AAEA,cAAa;AACb;;AAEA,cAAa;AACb;AACA;;AAEA;;AAEA,YAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA2C,6BAA6B,EAAE;AAC1E;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wDAAuD,QAAQ;AAC/D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD,EAAE,oBAAoB,EAAE;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB;AACA,gBAAe,KAAK;AACpB,gBAAe,OAAO;AACtB,gBAAe,wCAAwC;AACvD;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA,gBAAe,QAAQ;AACvB;AACA,gBAAe,iBAAiB;AAChC,gBAAe,iBAAiB;AAChC,gBAAe,OAAO;AACtB;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA4C,QAAQ;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAgB;AAChB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC;AACzC,YAAW;AACX;AACA,kCAAiC;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,6CAA4C,EAAE,uCAAuC,EAAE;AACvF;AACA;;AAEA;;AAEA,qCAAoC;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,mBAAmB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C,mBAAmB;AAChE;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA8B,EAAE,2BAA2B,EAAE;AAC7D;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;;AAGA;AACA,8FAA6F;;AAE7F;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,4CAA2C,wCAAwC;AACnF;AACA;AACA;AACA;AACA;AACA,qCAAoC,EAAE,wBAAwB,EAAE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uEAAsE,EAAE;AACxE,oCAAmC,KAAK,EAAE,IAAI,EAAE,MAAM;AACtD;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA,2CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,8CAA6C,QAAQ;AACrD,iDAAgD,qBAAqB;AACrE;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,MAAM;AAChD;AACA;AACA;AACA;AACA;AACA,iDAAgD,2CAA2C;AAC3F;AACA;AACA;AACA;AACA,YAAW,WAAW,sBAAsB;AAC5C;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,6DAA4D;AAC5D,2DAA0D;AAC1D;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA,YAAW;AACX;AACA;AACA;;AAEA;;AAEA,2DAA0D,sBAAsB;AAChF;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,6CAA4C,EAAE,uCAAuC,EAAE;AACvF;AACA;;AAEA,kCAAiC;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,qEAAoE,EAAE;AACtE,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,iEAAgE,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE;AAC/F;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,YAAW;AACX;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,8EAA6E,EAAE;AAC/E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8EAA6E;;AAE7E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA,QAAO;AACP;;;AAGA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB;AACA,gBAAe,OAAO;AACtB;AACA,gBAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD,QAAQ;AAC3D;AACA,kCAAiC;AACjC;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA,iCAAgC,kCAAkC,EAAE;AACpE;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAmE,GAAG;AACtE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,2CAA0C;AAC1C;AACA,YAAW,OAAO;AAClB;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAgB,oBAAoB;AACpC;AACA,mBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAQ,yCAAyC;AACjD;AACA;AACA;AACA,KAAI,+CAA+C;AACnD;AACA;AACA,uBAAsB;AACtB;;;AAGA;AACA;AACA;AACA,cAAa,cAAc;AAC3B;AACA,cAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA,oCAAmC,+BAA+B;AAClE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,2CAA0C,EAAE,OAAO,EAAE;AACrD;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,uCAAuC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,sDAAsD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA,kBAAiB;;AAEjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,gBAAgB;AAC3B,cAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,kBAAkB;AAC7B,YAAW,4BAA4B;AACvC,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,+DAA8D,qBAAqB;AACnF;AACA;AACA,+BAA8B,IAAI;AAClC,sBAAqB;AACrB,mCAAkC;AAClC,wCAAuC,kCAAkC;;AAEzE;AACA;AACA;AACA;AACA;AACA,gDAA+C,qBAAqB;AACpE;AACA,yCAAwC,OAAO;AAC/C;AACA;AACA,yCAAwC,OAAO;AAC/C;AACA;AACA,kCAAiC,OAAO;AACxC,gBAAe,0CAA0C;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8EAA6E;AAC7E;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,4CAA4C;AACpD;AACA,iEAAgE;AAChE,kBAAiB;AACjB;AACA,uCAAsC,kCAAkC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA,iEAAgE;AAChE;AACA;AACA;AACA,iBAAgB,+BAA+B;AAC/C;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC,oBAAoB;AACrD,SAAQ,qDAAqD;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV,WAAU;AACV,WAAU;AACV,WAAU;AACV,WAAU;AACV,WAAU;AACV,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C,wBAAwB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,gBAAe,eAAe;AAC9B;AACA;AACA,sCAAqC,IAAI,mBAAmB,IAAI;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD,uCAAuC;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,uCAAuC;AAC/C,SAAQ,0DAA0D;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,yCAAyC;AACjD;AACA;AACA;AACA;AACA;AACA,iEAAgE;AAChE,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA,SAAQ,yCAAyC;AACjD;AACA;AACA;AACA;AACA,0EAAyE;AACzE,qBAAoB;AACpB;AACA;AACA;AACA;AACA,iBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAwF;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGAAgG;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA,4BAA2B,OAAO;AAClC,yBAAwB,OAAO;AAC/B,4BAA2B,uBAAuB;AAClD;AACA;AACA,0BAAyB,cAAc;AACvC,6BAA4B,OAAO;AACnC;AACA;AACA,oCAAmC,OAAO;AAC1C,oCAAmC,OAAO;AAC1C;AACA,eAAc,oEAAoE;AAClF;AACA;AACA;AACA,eAAc,oEAAoE;AAClF;AACA;AACA,2BAA0B,cAAc;AACxC;AACA,cAAa,qCAAqC;AAClD;AACA,6BAA4B,eAAe,iCAAiC;AAC5E;AACA,qCAAoC,QAAQ;AAC5C;AACA;AACA,kCAAiC,OAAO;AACxC;AACA;AACA,kBAAiB,YAAY,YAAY,oBAAoB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,cAAc;AACtC;AACA,2BAA0B,OAAO;AACjC,4BAA2B,uBAAuB;AAClD,2BAA0B,OAAO;AACjC,+BAA8B,OAAO;AACrC;AACA,mBAAkB,eAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,QAAQ;AACrC,gCAA+B,MAAM;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAiB,8DAA8D;AAC/E;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA,6BAA4B;AAC5B;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAkC;AAClC;;AAEA,+BAA8B;;AAE9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,kBAAiB,YAAY;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;;AAGA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;;;AAGA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,cAAa;AACb,iDAAgD;AAChD;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,uBAAuB;AACpD;AACA;AACA;AACA,KAAI,qBAAqB,KAAK,qCAAqC;AACnE;AACA,wDAAuD;AACvD,iBAAgB;AAChB;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAiE,SAAS;AAC1E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;;AAGH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,wBAAuB;AACvB,sBAAqB;;AAErB;AACA;AACA;AACA;AACA,sFAAqF;AACrF;AACA,cAAa,QAAQ;AACrB,gBAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wFAAuF;AACvF;AACA,cAAa,QAAQ;AACrB,gBAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,2BAA2B;AACxC,SAAQ,mDAAmD;AAC3D;AACA;AACA;AACA;AACA,iCAAgC;AAChC,0CAAyC,kBAAkB;AAC3D,sBAAqB,eAAe;AACpC;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB;AACA;AACA,gBAAe,QAAQ;AACvB,2BAA0B;AAC1B,2BAA0B,qCAAqC,mBAAmB;AAClF;AACA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,EAAE;AAC7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA6C,MAAM;AACnD;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,oCAAmC;AACnC;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA2E,EAAE,GAAG,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,4FAA2F;AAC3F;AACA,aAAY,6EAA6E;AACzF;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,0FAAyF;AACzF;AACA,aAAY,yEAAyE;AACrF;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,uDAAuD;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,WAAW;AAC3B,iBAAgB,OAAO;AACvB,iBAAgB,QAAQ;AACxB;AACA,iBAAgB,SAAS;AACzB,wCAAuC,wCAAwC;AAC/E,mBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C,SAAS;AACrD,6CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,QAAO;;AAEP;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,QAAQ;AACxB,mBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAqB;AACrB;;;AAGA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,wDAAuD,EAAE,yBAAyB,EAAE;AACpF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0DAAyD;AACzD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wDAAuD,EAAE,yBAAyB,EAAE;AACpF;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,iBAAiB;AAC9B,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,+CAA+C;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,uCAAuC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,YAAW;;AAEX;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,iBAAiB;AAC9B,eAAc,OAAO;AACrB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,gBAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,gBAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAgD,8BAA8B;AAC9E;AACA,OAAM,wEAAwE;AAC9E;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA,EAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,mDAAmD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,gBAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAAyC;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,EAAE;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oFAAmF,EAAE;AACrF;AACA,MAAK;AACL;AACA;AACA,sFAAqF,EAAE;AACvF;AACA,MAAK;AACL;AACA;AACA,qFAAoF,EAAE;AACtF;AACA,MAAK;AACL;AACA;AACA,kFAAiF,EAAE;AACnF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kFAAiF,EAAE;AACnF;AACA,MAAK;AACL;AACA,6FAA4F,EAAE;AAC9F;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAsB,aAAa;AACnC,uBAAsB,aAAa;AACnC,wBAAuB,cAAc;AACrC;AACA;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC;AACvC;AACA,6BAA4B;AAC5B;AACA,UAAS;AACT,qCAAoC,wCAAwC;AAC5E,qCAAoC,wCAAwC;AAC5E,qCAAoC,wCAAwC;AAC5E,qCAAoC,wCAAwC;AAC5E;AACA,wCAAuC,0CAA0C;AACjF,wCAAuC,0CAA0C;AACjF,sCAAqC,yCAAyC;AAC9E,sCAAqC,yCAAyC;AAC9E,qCAAoC,wCAAwC;AAC5E,qCAAoC,wCAAwC;AAC5E,sCAAqC,yCAAyC;AAC9E,sCAAqC,yCAAyC;AAC9E,sCAAqC,yCAAyC;AAC9E,sCAAqC,yCAAyC;AAC9E,qCAAoC,wCAAwC;AAC5E,uCAAsC,YAAY;AAClD,qCAAoC,uDAAuD;AAC3F,mCAAkC;AAClC;AACA;AACA,eAAc;;;AAGd;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uBAAsB;;AAEtB;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO,uBAAuB,KAAK;AACnC;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B,sCAAsC;AAClE;AACA,UAAS;AACT,6BAA4B,sCAAsC;AAClE;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,iDAAgD,EAAE,WAAW,EAAE,iBAAiB,EAAE;AAClF;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,eAAe;AACrC,MAAK;AACL,IAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,EAAE;AACpC;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,eAAe;AACzC,UAAS;AACT;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;AACD;AACA,EAAC;;AAED;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK,wBAAwB;AAC7B;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,iCAAgC,EAAE,IAAI,EAAE,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAE;AAC/F;AACA,IAAG;;AAEH;AACA;AACA,kEAAiE,EAAE;AACnE;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA,kDAAiD,UAAU;AAC3D;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,uBAAuB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,0BAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA,4CAA2C;AAC3C;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,aAAa,EAAE;AAC/C;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,wCAAuC;AACvC;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,sBAAqB,mBAAmB;AACxC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA,sBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA,qCAAoC;AACpC;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA,QAAO;AACP;AACA,oBAAmB;;AAEnB;AACA;AACA,sBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,mBAAmB,EAAE,EAAE;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,yBAAyB,EAAE;AACrE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,yBAAyB,EAAE;AACrE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,yBAAyB,EAAE;AACrE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,yBAAyB,EAAE;AACrE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,yBAAyB,EAAE;AACrE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA,8BAA6B;AAC7B;AACA,UAAS;AACT;AACA;AACA;AACA,IAAG;AACH,uBAAsB;AACtB;AACA,+BAA8B,iBAAiB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C;AAC9C,mCAAkC;AAClC;AACA,oCAAmC;AACnC,yEAAwE;AACxE,yCAAwC;AACxC,2BAA0B;AAC1B,yCAAwC;AACxC,2CAA0C,8CAA8C,EAAE;AAC1F,uBAAsB;AACtB;AACA,mBAAkB;;AAElB;AACA,MAAK;AACL,uBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,kCAAkC;AACvD;AACA;AACA;AACA;AACA,qBAAoB,MAAM;AAC1B,oBAAmB,MAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,0BAA0B;AACvC;AACA,uBAAsB,OAAO;AAC7B;AACA,sBAAqB,QAAQ;AAC7B;AACA;AACA;AACA,yBAAwB,QAAQ;AAChC;AACA,0BAAyB,QAAQ;AACjC;AACA,wBAAuB,0BAA0B;AACjD;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA6E;AAC7E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,gBAAe,aAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,gBAAe,aAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA,OAAM;AACN;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,0BAA0B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,uBAAuB,EAAE;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;;;AAGA;AACA;AACA;AACA,YAAW,mBAAmB;AAC9B,YAAW,eAAe;AAC1B;AACA,cAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qDAAoD,QAAQ;AAC5D;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,QAAO;;;AAGP;AACA;AACA,QAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;AACA,qDAAoD,QAAQ;AAC5D;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,QAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,gBAAe;AACf,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,cAAa,EAAE;AACf,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,iCAAiC;AAC9C,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAAyB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD;AACjD;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB;;;AAGA;AACA;AACA;AACA;AACA;AACA,yCAAwC,gCAAgC;AACxE;AACA;AACA;AACA,KAAI,4CAA4C;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAgD,+BAA+B;AAC/E,SAAQ,+BAA+B;AACvC,SAAQ,sCAAsC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,6BAA6B;AAC5C,2FAA0F,SAAS;AACnG,gBAAe,oBAAoB;AACnC;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,gCAAgC;AAC9D;AACA,+CAA8C,4CAA4C;AAC1F,mEAAkE,8CAA8C;AAChH;AACA,WAAU,8CAA8C;AACxD;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA6D;AAC7D,sBAAqB;AACrB,aAAY,4CAA4C;AACxD;AACA,aAAY,4CAA4C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,qBAAqB;AAClD,mCAAkC,mBAAmB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C,0CAA0C;AACxF;AACA,0CAAyC,0CAA0C;AACnF;AACA;AACA;AACA,gBAAe,gDAAgD;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAY;AACZ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,aAAa,EAAE;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,oBAAoB;AACrC,cAAa,0CAA0C;AACvD;AACA;AACA,uCAAsC;AACtC;AACA,kBAAiB,qBAAqB;AACtC;AACA;AACA,uCAAsC;AACtC;AACA;AACA;AACA,kBAAiB,SAAS,mDAAmD,qBAAqB;AAClG;AACA,oBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,yDAAwD;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB,uBAAuB,mBAAmB,kCAAkC;AAC7F;AACA,cAAa,0CAA0C;AACvD;AACA;AACA,kBAAiB,8CAA8C;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qCAAoC;AACpC;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,eAAe;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,8BAA6B,qBAAqB;AAClD;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,0CAA0C;AACzE,mCAAkC,yCAAyC;AAC3E,wDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA,WAAU,4CAA4C;AACtD,WAAU,+CAA+C;AACzD,oCAAmC,0CAA0C;AAC7E,aAAY,+CAA+C;AAC3D;AACA;AACA;AACA,WAAU,0CAA0C;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAY;AACZ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,aAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,+BAA+B;AACnE;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX,wCAAuC;;AAEvC;AACA;AACA;AACA,mBAAkB,EAAE;AACpB,4DAA2D,EAAE;AAC7D;AACA;;AAEA,UAAS;;AAET;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,QAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,4CAA4C;AACpE;AACA;AACA;AACA;AACA,WAAU,qCAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,8CAA6C,aAAa;AAC1D,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+CAA8C,0BAA0B,EAAE;AAC1E;AACA;AACA,kBAAiB,qBAAqB;AACtC;AACA,iEAAgE,kCAAkC;AAClG;AACA;AACA,kBAAiB,UAAU;AAC3B,oBAAmB,EAAE;AACrB;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,gDAAgD;AAC3E;AACA;AACA;AACA,WAAU,6CAA6C;AACvD;AACA;AACA;AACA;AACA;AACA,kBAAiB,qBAAqB;AACtC;AACA,gEAA+D,kCAAkC;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA,iCAAgC,8BAA8B;AAC9D,QAAO;;AAEP;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,8CAA8C;AACjE,WAAU,oDAAoD;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,kCAAkC;AACnD,cAAa,wCAAwC;AACrD;AACA,cAAa,6CAA6C;AAC1D,kBAAiB,uCAAuC;AACxD,gDAA+C,4CAA4C;AAC3F;AACA;AACA,kBAAiB,qBAAqB;AACtC;AACA,gEAA+D,kCAAkC;AACjG;AACA;AACA,oBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD,sCAAsC;AACvF;AACA;AACA;AACA;AACA;AACA,gCAA+B,MAAM;AACrC;AACA,iCAAgC,MAAM;AACtC,yBAAwB,OAAO;AAC/B,oCAAmC,UAAU;AAC7C;AACA,mCAAkC,SAAS;AAC3C;AACA,qCAAoC,QAAQ;AAC5C;AACA,kBAAiB,OAAO;AACxB,kBAAiB,yBAAyB;AAC1C,oBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,8BAA8B;AACnD;AACA;AACA,WAAU,wCAAwC;AAClD;AACA;AACA;AACA;AACA,0CAAyC,wCAAwC;AACjF,oBAAmB,6CAA6C;AAChE;AACA,kBAAiB,OAAO;AACxB,kBAAiB,KAAK;AACtB,mBAAkB,OAAO,oBAAoB,8BAA8B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,wBAAwB;AACnE;AACA;AACA,gBAAe;AACf;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,kDAAiD,UAAU;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,QAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,8BAA8B;AACnD;AACA;AACA,WAAU,wCAAwC;AAClD;AACA;AACA;AACA,0CAAyC,wCAAwC;AACjF,oBAAmB,6CAA6C;AAChE;AACA,kBAAiB,OAAO;AACxB,kBAAiB,KAAK;AACtB,mBAAkB,OAAO,oBAAoB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA,+CAA8C,UAAU;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;;AAGA;AACA;AACA,4CAA2C,EAAE;AAC7C;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,gBAAe,2BAA2B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,gBAAe,2BAA2B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;;;AAGA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,8DAA6D,EAAE;AAC/D;AACA;AACA;AACA,2CAA0C;AAC1C;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA8E;AAC9E,8BAA6B;AAC7B;AACA,oDAAmD,mCAAmC;AACtF;AACA;AACA;AACA;AACA;AACA,WAAU,mDAAmD;AAC7D;AACA;AACA;AACA,6BAA4B,mDAAmD;AAC/E;AACA,uBAAsB;AACtB,8CAA6C,MAAM;AACnD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4EAA2E;AAC3E,iBAAgB;AAChB,wEAAuE;AACvE,2FAA0F;AAC1F,KAAI;AACJ;AACA,mFAAkF;AAClF,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA,kBAAiB,+CAA+C;AAChE;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA,kBAAiB,+CAA+C;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAoD,OAAO;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY,mBAAmB;AAC/B;AACA,gBAAe,OAAO;AACtB;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,uEAAsE,GAAG,SAAS,EAAE;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+FAA8F,EAAE;AAChG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sEAAqE;AACrE,+BAA8B,6CAA6C;AAC3E,uDAAsD;AACtD;AACA,0EAAyE;AACzE,uDAAsD;AACtD;AACA,gBAAe,EAAE,8BAA8B;AAC/C;AACA,kBAAiB,EAAE,8CAA8C;AACjE,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+BAA8B,qDAAqD;AACnF;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE,qCAAqC;AACtD,mCAAkC;AAClC,kBAAiB,EAAE,2CAA2C;AAC9D,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,6FAA4F,EAAE;AAC9F;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA,aAAY;AACZ;AACA;AACA,IAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;AACA,kEAAiE,mBAAmB;AACpF;AACA;AACA;AACA,qBAAoB,+CAA+C;AACnE;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAoD;AACpD,oCAAmC,2CAA2C;AAC9E;AACA;AACA;AACA;AACA;AACA,4EAA2E;AAC3E,oCAAmC,qDAAqD;AACxF,+BAA8B;AAC9B,KAAI,yCAAyC;AAC7C;AACA,oBAAmB,yCAAyC,OAAO;AACnE,6DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,8BAA6B,0CAA0C;AACvE,kCAAiC,iCAAiC;AAClE;AACA;AACA,wCAAuC;AACvC,+BAA8B;AAC9B,sCAAqC;AACrC,SAAQ,KAAK,yCAAyC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY,yCAAyC;AACrD;AACA,kBAAiB,mCAAmC;AACpD;AACA;AACA,uEAAsE;AACtE,4DAA2D,MAAM;AACjE,4DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAsF,yCAAyC,sFAAsF,2BAA2B;AAChP;AACA;AACA;AACA;AACA;AACA,2BAA0B,wEAAwE,EAAE,6DAA6D;AACjK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,mDAAmD;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,sBAAsB;AAC1D;AACA,SAAQ;AACR;AACA,uDAAsD;AACtD,gCAA+B;AAC/B,OAAM;AACN;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,OAAM;AACN,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,yDAAwD;AACxD,kCAAiC;AACjC,SAAQ;AACR,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB,QAAQ;AACxB,gDAA+C,mCAAmC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6DAA4D,cAAc;AAC1E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAAyB,kCAAkC,iCAAiC;AAC5F,yBAAwB;AACxB,2CAA0C;AAC1C;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,0BAA0B;AAC3C;AACA,2BAA0B,OAAO;AACjC;AACA,0BAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAqB,qDAAqD;AAC1E;AACA;AACA;AACA,8CAA6C,mBAAmB;AAChE;AACA;AACA,gBAAe,OAAO;AACtB;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE,kCAAkC;AACrD,uCAAsC;AACtC;AACA,6BAA4B,mCAAmC;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE,kCAAkC;AACrD,sCAAqC;AACrC;AACA,6BAA4B,mCAAmC;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE,kCAAkC;AACrD,8CAA6C;AAC7C;AACA,sBAAqB,mCAAmC;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE,kCAAkC;AACrD,qCAAoC;AACpC;AACA,6BAA4B,mCAAmC;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAqB,2DAA2D;AAChF,+BAA8B,qCAAqC;AACnE;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE,qCAAqC;AACtD;AACA,kBAAiB,EAAE;AACnB,sBAAqB,qCAAqC;AAC1D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,OAAO;AACtB,kBAAiB,0BAA0B;AAC3C;AACA,2BAA0B,OAAO;AACjC;AACA,0BAAyB,QAAQ;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,OAAO;AACtB,kBAAiB,0BAA0B;AAC3C;AACA,2BAA0B,OAAO;AACjC;AACA,0BAAyB,QAAQ;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,OAAO;AACtB,kBAAiB,0BAA0B;AAC3C;AACA,2BAA0B,OAAO;AACjC;AACA,0BAAyB,QAAQ;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,OAAO;AACtB,kBAAiB,0BAA0B;AAC3C;AACA,2BAA0B,OAAO;AACjC;AACA,0BAAyB,QAAQ;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,gBAAe,OAAO;AACtB,kBAAiB,0BAA0B;AAC3C;AACA,2BAA0B,OAAO;AACjC;AACA,0BAAyB,QAAQ;AACjC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA,uEAAsE;AACtE,uDAAsD;AACtD,sCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,6CAA6C;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,yCAAyC;AACvE;AACA;AACA,iBAAgB,WAAW;AAC3B,iBAAgB,QAAQ;AACxB,iBAAgB,SAAS;AACzB,wCAAuC,wCAAwC;AAC/E,mBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,SAAS;AACzB,mBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,cAAc;AACzB;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV,SAAQ;AACR;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,KAAI,2BAA2B;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW,OAAO;AAClB,aAAY,SAAS;AACrB;AACA;AACA;AACA;AACA,eAAc,gBAAgB;AAC9B,eAAc,gBAAgB;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,cAAc;AAC3B;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC,oBAAoB;AACrD;AACA,+CAA8C,SAAS;AACvD;AACA;AACA,sBAAqB,WAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,0CAA0C;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D,yCAAyC;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC,8BAA8B;AAC/D,kCAAiC,kCAAkC;AACnE,kCAAiC,8BAA8B;AAC/D,kCAAiC,8BAA8B;AAC/D,kCAAiC,+BAA+B;AAChE,kCAAiC,kCAAkC;;AAEnE;AACA;AACA;AACA;AACA,kBAAiB,aAAa;AAC9B,kBAAiB,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,gBAAgB;AACjC,kBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ,WAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,gBAAgB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA,qEAAoE,mBAAmB;AACvF,qDAAoD,0BAA0B;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,cAAc;AACzB,YAAW,iBAAiB;AAC5B;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA,0DAAyD,cAAc;AACvE,gCAA+B,gBAAgB;AAC/C,mCAAkC,iBAAiB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,qCAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,qBAAqB;AAChC;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,gCAA+B,+BAA+B;AAC9D,oBAAmB,+BAA+B;AAClD,gCAA+B,8CAA8C;AAC7E,mBAAkB,8CAA8C;AAChE,gCAA+B,2CAA2C;AAC1E,mBAAkB,6CAA6C;AAC/D,gCAA+B,8CAA8C;AAC7E,mBAAkB,gDAAgD;AAClE;AACA;AACA;AACA;AACA,uCAAsC,IAAI,IAAI,EAAE,IAAI,EAAE;AACtD;AACA,uCAAsC,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE;AAClE;AACA,yCAAwC,IAAI,IAAI,EAAE;AAClD;AACA,0CAAyC,IAAI,IAAI,EAAE;AACnD,SAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA,6BAA4B,EAAE;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAA+E,OAAO;AACtF;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,eAAc,EAAE,eAAe,UAAU;AACzC;AACA;AACA;AACA,sCAAqC,eAAe,0BAA0B,uBAAuB;AACrG,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,YAAW,cAAc;AACzB;AACA;AACA;AACA,cAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA,kBAAiB,SAAS;AAC1B,+BAA8B,8BAA8B;AAC5D,kBAAiB,SAAS;AAC1B,+BAA8B,iCAAiC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA,WAAU,KAAK;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,iDAAiD;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,sCAAsC;AACzD,oBAAmB,sCAAsC;AACzD,oBAAmB,sCAAsC;AACzD,oBAAmB,sCAAsC;AACzD,oBAAmB,uCAAuC;AAC1D;AACA,aAAY;AACZ;AACA;AACA,qCAAoC,YAAY,aAAa,SAAS;AACtE;AACA;AACA;AACA;AACA,0DAAyD;AACzD,4DAA2D;AAC3D,2DAA0D;AAC1D,yDAAwD;AACxD;AACA;AACA,oBAAmB,aAAa;AAChC,oBAAmB,cAAc;AACjC,oBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD;AACnD;AACA,uDAAsD;AACtD,uDAAsD;AACtD;AACA;AACA,mBAAkB,aAAa;AAC/B,mBAAkB,cAAc;AAChC,mBAAkB,YAAY;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,iDAAiD;AAC9D,cAAa,iDAAiD;AAC9D,cAAa,iDAAiD;AAC9D,cAAa,iDAAiD;AAC9D,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,uBAAuB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;;AAEA;AACA,uBAAsB,0BAA0B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,MAAM;AACtC;AACA,2CAA0C,MAAM;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C,MAAM;AACnD;AACA;AACA;AACA;AACA,iDAAgD,MAAM;AACtD;AACA;AACA;AACA,YAAW,SAAS,0CAA0C;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC,OAAO;AAC1C;AACA;AACA,mCAAkC,OAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,MAAM;AACtC;AACA,YAAW,MAAM;AACjB,OAAM,MAAM;AACZ;AACA;AACA;AACA,+CAA8C,MAAM;AACpD;AACA;AACA;AACA;AACA,kDAAiD,MAAM;AACvD;AACA;AACA;AACA,YAAW,SAAS,yCAAyC;AAC7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,MAAM;AACtC;AACA,YAAW,MAAM;AACjB,OAAM,MAAM;AACZ;AACA;AACA;AACA,kDAAiD,MAAM;AACvD;AACA;AACA;AACA;AACA,qDAAoD,MAAM;AAC1D;AACA;AACA;AACA,YAAW,SAAS,4CAA4C;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,oBAAoB;AAC9C,yBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW,WAAW,oBAAoB,kCAAkC;AAC5E;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW,WAAW,mBAAmB,kCAAkC;AAC3E;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW,WAAW,oBAAoB,kCAAkC;AAC5E;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW,WAAW,oBAAoB,kCAAkC;AAC5E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA,YAAW,WAAW,gBAAgB,kCAAkC;AACxE;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,6BAA6B;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,+BAA+B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,yCAAyC;AAC7C;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,0BAAyB,mCAAmC;AAC5D;AACA;AACA,KAAI,uCAAuC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,qCAAqC;AAC3C,OAAM,mCAAmC;AACzC;AACA;AACA,qEAAoE;AACpE,QAAO,mCAAmC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,UAAU;AACpC,sCAAqC,qBAAqB;AAC1D,sCAAqC,qBAAqB;AAC1D,gCAA+B,eAAe;AAC9C,yCAAwC,0BAA0B;AAClE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,gBAAe;AACf;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD;AACjD,gBAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,+CAA8C,IAAI;AAClD,6CAA4C,EAAE;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAwB,MAAM;AAC9B,wCAAuC,qBAAqB;AAC5D,wCAAuC,qBAAqB;AAC5D,kCAAiC,eAAe;AAChD,2CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,OAAO;AAChC,wCAAuC,qBAAqB;AAC5D,wCAAuC,qBAAqB;AAC5D,kCAAiC,eAAe;AAChD,2CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B,wCAAuC,qBAAqB;AAC5D,wCAAuC,qBAAqB;AAC5D,kCAAiC,eAAe;AAChD,2CAA0C,0BAA0B;AACpE,sCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA,cAAa,QAAQ;AACrB;AACA;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,MAAM;AAChC,0CAAyC,qBAAqB;AAC9D,0CAAyC,qBAAqB;AAC9D,oCAAmC,eAAe;AAClD,6CAA4C,0BAA0B;AACtE,0CAAyC,uBAAuB;AAChE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,0BAAyB,cAAc;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,2BAA0B,QAAQ;AAClC,2BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA,wBAAuB,EAAE,yBAAyB,EAAE,YAAY,EAAE;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,uCAAuC;AAC3C;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB;AACA;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,QAAQ;AACnB;AACA;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,SAAS;AACpB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB,YAAW,SAAS;AACpB,YAAW,QAAQ;AACnB;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,QAAQ;AACnB;AACA;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,MAAM;AAC5B,yCAAwC,wBAAwB;AAChE,yCAAwC,wBAAwB;AAChE,yCAAwC,wBAAwB;AAChE,yCAAwC,wBAAwB;AAChE,gCAA+B,eAAe;AAC9C,yCAAwC,0BAA0B;AAClE,0CAAyC,2BAA2B;AACpE,0CAAyC,2BAA2B;AACpE;AACA;AACA;AACA,0CAAyC,MAAM;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA6C,gCAAgC;AAC7E;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA,8CAA6C,iBAAiB;AAC9D;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA,8CAA6C,yBAAyB;AACtE;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA,8CAA6C,eAAe;AAC5D;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA,8CAA6C,eAAe;AAC5D;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,EAAE;AAChB,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA,SAAQ,4DAA4D;AACpE;;AAEA;AACA,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,2BAA2B,+BAA+B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC;;AAElC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf,sBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wDAAuD,EAAE,+BAA+B,EAAE;AAC1F;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAgC;;;AAGhC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA,8CAA6C,qCAAqC;AAClF,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,+BAA+B;AACjD,OAAM,iCAAiC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,kDAAkD;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C,6BAA6B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,UAAS;AACT,UAAS;AACT,UAAS;AACT,UAAS;AACT,UAAS;AACT,UAAS;AACT,QAAO;AACP,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,WAAW,kCAAkC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA,wBAAuB,WAAW;AAClC,0BAAyB,SAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA,4BAA2B;;AAE3B;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,2CAA0C,0BAA0B;AACpE,2CAA0C,0BAA0B;AACpE,gCAA+B,eAAe;AAC9C,yCAAwC,0BAA0B;AAClE;AACA;AACA;AACA;AACA,2CAA0C,OAAO;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA,iEAAgE,SAAS;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B,cAAa;AACb;AACA;AACA;AACA,qDAAoD,MAAM;AAC1D,iBAAgB;AAChB;AACA;AACA;AACA,4BAA2B,MAAM;AACjC;AACA;AACA,4BAA2B,aAAa;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,cAAc;AACpB;AACA,mDAAkD,cAAc;AAChE;AACA;AACA;AACA;AACA,KAAI,mCAAmC;AACvC;AACA;AACA;AACA,YAAW,WAAW,SAAS,kCAAkC;AACjE;AACA;AACA,8CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAiE,KAAK;AACtE;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,gCAAgC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA,kCAAiC,YAAY,GAAG,MAAM;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA,gGAA+F;AAC/F,mCAAkC;AAClC,6CAA4C,iBAAiB;AAC7D,oCAAmC,iBAAiB;AACpD;AACA;AACA;AACA,qCAAoC,2CAA2C;AAC/E,WAAU,uDAAuD;AACjE;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,aAAa,kCAAkC;AACrE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;;AAEA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAoB,oBAAoB;AACxC;AACA,uBAAsB,oBAAoB;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,UAAU,kCAAkC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,6CAA6C;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,SAAQ;AACR;AACA;;;AAGA;AACA;AACA;AACA;AACA,yCAAwC,oDAAoD;AAC5F,KAAI,0DAA0D;AAC9D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,mCAAmC;AACvC;AACA;AACA;AACA,KAAI,qCAAqC;AACzC;AACA;AACA,YAAW,WAAW,aAAa,kCAAkC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,mCAAmC;AACvC;AACA;AACA;AACA,KAAI,qCAAqC;AACzC;AACA;AACA,YAAW,WAAW,cAAc,kCAAkC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM,OAAO,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE,+BAA+B;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC,WAAW;AAClD,yDAAwD,eAAe;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD;AAClD;AACA;AACA,6EAA4E;AAC5E;AACA;AACA;AACA,aAAY,4BAA4B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW;AACtB,SAAQ,kCAAkC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,qCAAqC;AAChD,YAAW,+CAA+C;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B,6CAA6C;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,mCAAmC;AAC7C,WAAU,6CAA6C;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,2CAA2C;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,mCAAmC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,UAAU,kCAAkC;AAClE,aAAY,qEAAqE;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,aAAa;AACxC;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,aAAa,kCAAkC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,cAAc,kCAAkC;AACtE,iBAAgB,qEAAqE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,YAAY,kCAAkC;AACpE,eAAc,qEAAqE;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,cAAc,kCAAkC;AACtE,iBAAgB,qEAAqE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,eAAe,kCAAkC;AACvE,kBAAiB,qEAAqE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,eAAe,kCAAkC;AACvE,kBAAiB,qEAAqE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,cAAc,kCAAkC;AACtE,iBAAgB,qEAAqE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,YAAY,kCAAkC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,UAAU,kCAAkC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,+EAA8E;;AAE9E;AACA;AACA,4BAA2B,iBAAiB;AAC5C,2BAA0B,gBAAgB;AAC1C;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,aAAa,kCAAkC;AACrE,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,WAAW,kCAAkC;AACnE,MAAK,qEAAqE;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,qBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,UAAU,kCAAkC;AAClE,aAAY,qEAAqE;AACjF;AACA;AACA,SAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,SAAS,kCAAkC;AACjE,YAAW,qEAAqE;AAChF;AACA;AACA,SAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,SAAS,kCAAkC;AACjE,YAAW,qEAAqE;AAChF;AACA;AACA;AACA;AACA,0DAAyD;AACzD,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,QAAQ,kCAAkC;AAChE,WAAU,qEAAqE;AAC/E;AACA;AACA;AACA;AACA,mDAAkD;AAClD,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,UAAU,kCAAkC;AAClE,aAAY,qEAAqE;AACjF;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,WAAW;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,cAAc,kCAAkC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD;AAClD,+BAA8B;AAC9B,oBAAmB,kEAAkE;AACrF,mFAAkF;AAClF,uCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,QAAQ,6CAA6C;AAChE,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,cAAc;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,+CAA+C;AAC9D,gBAAe,+CAA+C;AAC9D;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA4B,sBAAsB;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;;AAEf;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,uCAAuC;AAC3C,gBAAe,mCAAmC;AAClD;AACA;AACA;AACA,6DAA4D,2BAA2B;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,SAAS,kCAAkC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,8CAA6C,YAAY,MAAM,YAAY,OAAO,QAAQ;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAoE;AACpE,qEAAoE;AACpE,qEAAoE;AACpE,qEAAoE;AACpE,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAsF;AACtF;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,yCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,2CAA0C,iCAAiC;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,8BAA8B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAoE;AACpE,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA,qCAAoC,sBAAsB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C;AAC1C,8EAA6E;AAC7E,6BAA4B,aAAa,+BAA+B;AACxE,gCAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB,iCAAgC,SAAS;AACzC,iCAAgC,SAAS,OAAO,SAAS;AACzD,mCAAkC,SAAS,IAAI,SAAS;AACxD,qCAAoC,SAAS,IAAI,SAAS,OAAO,4BAA4B;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,kBAAkB;AAC7B,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA,4CAA2C,sBAAsB;AACjE;;AAEA;AACA;AACA;AACA,gCAA+B;AAC/B,wCAAuC,SAAS;AAChD,wCAAuC,SAAS,OAAO,SAAS;AAChE,0CAAyC,SAAS,IAAI,SAAS;AAC/D,4CAA2C,SAAS,IAAI,SAAS,OAAO,4BAA4B;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,sFAAqF;AACrF;AACA,6CAA4C;AAC5C,2BAA0B;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,aAAa;AAC/B,mBAAkB,cAAc;AAChC,mBAAkB,cAAc;AAChC,mBAAkB,cAAc;AAChC,mBAAkB,cAAc;AAChC,mBAAkB,cAAc;AAChC;AACA,4DAA2D,mCAAmC;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA,eAAc;AACd;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,0BAAyB,gBAAgB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,kBAAkB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,uBAAuB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,kCAAkC;AAC3C,UAAS,qCAAqC;AAC9C,UAAS,sCAAsC;AAC/C,UAAS,kCAAkC;AAC3C,UAAS,mCAAmC;AAC5C,UAAS,mCAAmC;AAC5C,UAAS,uCAAuC;AAChD,UAAS,oCAAoC;AAC7C,UAAS,qCAAqC;AAC9C,UAAS;AACT;AACA,kBAAiB,gBAAgB;AACjC;AACA;AACA;AACA,gBAAe,YAAY,IAAI,aAAa,UAAU,YAAY;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B;;AAE1B;AACA,2HAA0H,EAAE;AAC5H;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oJAAmJ,EAAE;AACrJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD;AACvD;AACA;;;AAGA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,yBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA,eAAc;AACd;AACA;AACA,2HAA0H,EAAE,kBAAkB,EAAE,oBAAoB,EAAE;AACtK;AACA,aAAY;AACZ;AACA,uCAAsC;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA2D,4BAA4B,EAAE;AACzF;AACA;AACA;;AAEA;AACA,0DAAyD,gBAAgB;AACzE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;;AAEf;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE,+BAA+B;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B;AAC5B,gDAA+C;AAC/C,gCAA+B;AAC/B,sDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,gBAAgB,kCAAkC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE,+BAA+B;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B;AAC5B,gDAA+C;AAC/C,gCAA+B;AAC/B,sDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW,gBAAgB,kCAAkC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW;AACtB;AACA,KAAI,kCAAkC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAkE,YAAY;AAC9E,wEAAuE,0BAA0B;AACjG,gEAA+D;AAC/D;AACA;AACA,wBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C,yBAAyB;AACxE;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,WAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kDAAiD,QAAQ;AACzD;AACA;AACA;;AAEA,gDAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C,4CAA4C;AAC3F;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,4CAA4C;AACtE;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,YAAY;AACnC,+DAA8D;AAC9D,mEAAkE,OAAO;AACzE;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA,yBAAwB,OAAO,IAAI,MAAM;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,EAAE;AACpB;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD,yCAAyC;AAC3F,6BAA4B,yCAAyC;AACrE,KAAI,wCAAwC,MAAM,iCAAiC;AACnF;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO,qCAAqC;AAC5C;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB;AACA;AACA,YAAW,0BAA0B;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,2BAA2B;AAC1C,gBAAe,4BAA4B;AAC3C,gBAAe,yBAAyB;AACxC,gBAAe,0BAA0B;AACzC,gBAAe;AACf;AACA,+CAA8C;AAC9C,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,+CAA8C,qCAAqC;AACnF;AACA,iCAAgC,EAAE,uBAAuB;AACzD,8CAA6C;AAC7C,2BAA0B,gCAAgC;AAC1D;AACA;AACA;AACA;AACA;AACA,wCAAuC,uBAAuB;AAC9D;AACA;AACA,wCAAuC,uBAAuB;AAC9D;AACA;AACA,wCAAuC,uBAAuB;AAC9D,WAAU;AACV;AACA;AACA;;AAEA,mCAAkC,iBAAiB;AACnD;AACA;AACA;AACA;AACA,wBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;;;AAGA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0EAAyE,QAAQ;AACjF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA,sEAAqE;AACrE,YAAW;AACX;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW;AACX,UAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAwB,EAAE,aAAa,EAAE;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC,iCAAiC;;AAEpE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4DAA2D,gBAAgB;AAC3E;AACA;AACA;AACA;AACA,2CAA0C,gCAAgC;AAC1E;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,gBAAe;AACf;AACA,gBAAe;AACf;AACA,uCAAsC,gCAAgC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;;AAEA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA,gDAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,8CAA6C,yBAAyB,EAAE;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,gCAAgC;AACtE;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,+BAA8B,MAAM;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;;;AAGA;AACA,0BAAyB,sCAAsC;;AAE/D;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,qDAAoD;AACpD;AACA,8CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,yCAAwC,uCAAuC;AAC/E,cAAa;AACb;AACA,yCAAwC,gCAAgC;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,mDAAkD;;AAElD;AACA;AACA;AACA;AACA;;AAEA,gCAA+B;AAC/B,wDAAuD,gBAAgB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oDAAmD;;AAEnD;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAG;;AAEH,EAAC;;AAED,2HAA0H,oFAAoF,yBAAyB,UAAU,eAAe,8BAA8B,4BAA4B,qCAAqC,oCAAoC,yBAAyB;;AAE5Z;AACA,gC;;;;;;AC/orBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;;;AAIA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAQ,YAAY;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF,qBAAoB;;AAEpB;AACA;AACA,GAAE;;AAEF;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4CAA2C;AAC3C;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF,iCAAgC;AAChC;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,YAAY;AACvB;;AAEA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA,YAAW,YAAY;AACvB;;AAEA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA,UAAS,SAAS;AAClB;AACA;;AAEA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS,YAAY;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU,YAAY;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAE;;AAEF;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,SAAS;AAClB;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA,iBAAgB,IAAI;;AAEpB;AACA;;AAEA;AACA;;AAEA;AACA,yCAAwC,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD,UAAS;;AAET;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;;AAEA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAa,yBAAyB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;AACA,GAAE;AACF;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF;;AAEA;AACA;AACA,YAAW,gBAAgB;AAC3B,cAAa,uBAAuB;AACpC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW,eAAe;AAC1B,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW,eAAe;AAC1B,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,YAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,iCAAgC,MAAM;AACtC;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,gBAAe;;AAEf,UAAS;;AAET;AACA,SAAQ,iCAAiC;AACzC,SAAQ,oBAAoB;AAC5B,SAAQ,sCAAsC;AAC9C,SAAQ;AACR,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;;AAEA;AACA;AACA;AACA,iBAAgB,aAAa,EAAE;AAC/B;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,iEAAgE;AAChE;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO,yEAAyE;AAChF;;AAEA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,oDAAmD;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA,kEAAiE,UAAU;AAC3E,uCAAsC,2BAA2B;AACjE;AACA,iCAAgC,MAAM;AACtC;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA,WAAU,YAAY;AACtB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,WAAU,YAAY;AACtB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,WAAU,UAAU;AACpB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,WAAU,cAAc;AACxB;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;AAEA;AACA,aAAY,uEAAuE;AACnF;AACA;AACA,aAAY,4BAA4B;AACxC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA,4DAA2D;AAC3D;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA,oCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,SAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAQ,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,GAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,SAAQ,SAAS;AACjB;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC,iDAAiD;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAiD;AACjD,WAAU,wCAAwC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,gBAAgB;AAC3B;AACA,YAAW,QAAQ;AACnB,YAAW,MAAM;AACjB,YAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA,GAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA,GAAE;AACF;;AAEA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;;AAEA;;AAEA,EAAC;;;;AAID;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA,eAAc,SAAS;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;;AAEA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA,UAAS,GAAG;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU,OAAO;AACjB;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAS,OAAO;AAChB,wBAAuB,wBAAwB;AAC/C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA,iDAAgD;AAChD,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA;AACA,EAAC;AACD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;AACD;;;;AAIA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAmB;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,oCAAoC;AAC9C;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,QAAO;AACP,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,SAAQ;AACR,QAAO;AACP;AACA,OAAM;AACN,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,+CAA8C;AAC9C,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA,KAAI;;AAEJ;;AAEA,6CAA4C;AAC5C;AACA;AACA;AACA;AACA,WAAU,YAAY;AACtB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;AAGD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;AACF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU,SAAS;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,wCAAuC;AACvC;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAqB;AACrB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mCAAkC;AAClC;;AAEA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAuB,aAAa;AACpC,IAAG;AACH;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;;AAEA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAoB,SAAS;AAC7B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;;AAGD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ,GAAE;AACF;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;AACD;;;;AAIA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE,gBAAgB;AAClB;;AAEA;AACA;AACA;AACA;AACA;;AAEA,YAAW;;AAEX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,uCAAsC;AACtC;AACA;AACA;;AAEA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+CAA8C;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA2C;AAC3C;;AAEA;AACA;AACA;AACA;AACA,WAAU,KAAK;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mDAAkD;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA,sDAAqD;AACrD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,0BAAyB;AACzB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,+DAA8D;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAU,cAAc;;AAExB;AACA;AACA;AACA,kBAAiB,mBAAmB;AACpC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,+BAA+B;AACxD;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAsB,wDAAwD;AAC9E;;AAEA;AACA,GAAE;;AAEF;AACA;;AAEA,cAAa;;AAEb;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uCAAsC,cAAc;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAqC;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,eAAc,qCAAqC;;AAEnD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAK;AACL;AACA;AACA;AACA;AACA,GAAE;AACF;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAQ,OAAO;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wCAAuC,OAAO;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yCAAwC,OAAO;AAC/C;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAS,OAAO;AAChB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;;AAEA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA,UAAS,mCAAmC;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;;AAEA,UAAS,2BAA2B;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA,UAAS,0BAA0B;AACnC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA,8BAA6B;AAC7B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,aAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAiB,gBAAgB;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAS,WAAW;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;AAGD;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAkB;AAClB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,sCAAqC,QAAQ,SAAS,MAAM,aAAa,eAAe;AACxF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,2BAA2B;AAC7D,2BAA0B,cAAc,cAAc,OAAO;AAC7D,gBAAe,YAAY,UAAU;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA6B,SAAS,QAAQ,QAAQ;AACtD;AACA;AACA;AACA,sCAAqC,4BAA4B;AACjE,8BAA6B,cAAc,SAAS,SAAS;AAC7D;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA,EAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAY,+DAA+D;AAC3E;AACA;AACA;AACA,GAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,SAAQ,OAAO;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAQ,gBAAgB;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,+BAA8B,4BAA4B;AAC1D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA,kBAAiB;;AAEjB;AACA;;AAEA,WAAU,OAAO;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,aAAY;AACZ;;AAEA;AACA;AACA;;AAEA,YAAW,SAAS;AACpB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA,IAAG;AACH;AACA,EAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA,SAAQ,QAAQ;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAQ,gBAAgB;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,mDAAkD;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAU,iBAAiB;AAC3B;AACA;;AAEA;;AAEA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,4BAA2B;AAC3B,gCAA+B,kBAAkB,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,iBAAiB;AAC5B;AACA;;AAEA,8CAA6C;AAC7C;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;AAEA,SAAQ,iBAAiB;AACzB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,UAAS,iBAAiB;AAC1B;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,EAAC;;AAED;AACA,kEAAiE;AACjE;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAmB,cAAc;AACjC,GAAE;AACF;AACA;AACA;AACA;AACA;AACA,kDAAiD;;AAEjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAA+B,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gCAA+B,SAAS;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,WAAU,kBAAkB;AAC5B,YAAW,kBAAkB;AAC7B,eAAc;AACd,EAAC;AACD;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA,SAAQ,mBAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,KAAI;AACJ;;AAEA,KAAI;AACJ;AACA;AACA;;AAEA,IAAG;AACH;;AAEA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;AAKD;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,IAAG;AACH;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;AAKD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;;AAEA,WAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA,WAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;;AAEA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA,UAAS,OAAO;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;AAKD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAI;AACJ;AACA;;AAEA,kCAAiC;AACjC;AACA;;AAEA,KAAI;AACJ;;AAEA,KAAI;AACJ;AACA;AACA,MAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,SAAS;AACpB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;AAKD;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA,EAAC;;;AAGD;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA,iBAAgB;;AAEhB,iDAAgD;AAChD;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,oBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wDAAuD;AACvD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,KAAI;;AAEJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,QAAO;AACP,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAS;AACT;;AAEA;;AAEA;AACA;;AAEA;AACA,kBAAiB;AACjB,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC;AAClC;AACA,uBAAsB;AACtB,4BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oFAAmF;AACnF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAc,oCAAoC;AAClD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAK;AACL;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAI;AACJ;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,KAAI;AACJ;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;;AAEA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAI;AACJ;AACA;AACA;AACA,IAAG;;AAEH,GAAE;AACF;AACA;AACA;AACA;;AAEA,GAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd,OAAM;AACN,OAAM;AACN,IAAG;AACH;AACA,EAAC;;;AAGD;AACA;AACA;AACA,GAAE;AACF;;AAEA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;AACA,mDAAkD;AAClD;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;AAKD;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;AAKD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA,EAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,IAAG;AACH;AACA,IAAG;AACH;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;AAKD;AACA;AACA;AACA,GAAE;AACF;;;;;AAKA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,WAAU,kBAAkB;AAC5B;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB;;AAEnB,6DAA4D,eAAe;AAC3E;AACA;AACA;;AAEA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA,eAAc,sDAAsD;AACpE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAI;AACJ;AACA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA,eAAc,mCAAmC;AACjD,gBAAe,6DAA6D;AAC5E;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAI;AACJ;AACA,GAAE;AACF,EAAC;;;AAGD;AACA;AACA;AACA;;AAEA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;;;;;AAKA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;;AAEA,EAAC;;;;;;;ACz/RD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,E;;;;;;mCCvBA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;;mCC3QD;AACA;AACA;AACA,iBAAgB,uCAAuC;AACvD,mBAAkB,yCAAyC;AAC3D,oBAAmB;AACnB;AACA;AACA,EAAC,uJ;;;;;;mCCRD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB;AAClB;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,QAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCxFD;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCClCD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,0BAAyB;AACzB;;AAEA;AACA;;AAEA;AACA;AACA,iBAAgB,IAAI;AACpB,iBAAgB,OAAO;AACvB;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,SAAS;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA,uCAAsC;AACtC;;AAEA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO,IAAI;;AAEX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCClGD;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,SAAS;AACtB,cAAa,SAAS;AACtB,cAAa,SAAS;AACtB,cAAa,SAAS;AACtB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC;;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc,SAAS;AACvB,eAAc,SAAS;AACvB;AACA,eAAc,SAAS;AACvB;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;;AAEP;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCCnJD;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,yBAAwB;AACxB,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,oBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCC1GD;AACA;;AAEA;AACA;AACA,gCAA+B,2BAA2B;;AAE1D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,IAAI;AACnB,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCvGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iEAAgE;AAChE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAsB,SAAS;AAC/B,2BAA0B,SAAS;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,yCAAwC,WAAW;AACnD;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAgB;AAChB;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,8BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAkC,gBAAgB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAmB;AACnB;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAG;;;;;AAKH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,0CAA0C;AACzE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,qBAAoB;AACpB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,QAAQ;AAC7B;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCnfD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;;mCC1DD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAe,UAAU;AACzB;AACA;AACA;;AAEA;AACA;AACA,gBAAe,aAAa;AAC5B;AACA;AACA;;AAEA;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,eAAe;AAC9B,gBAAe,WAAW;AAC1B;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCC1ED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAO;AACP;;AAEA;;AAEA;AACA,EAAC;;;;;;;mCC1CD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA,oDAAmD,cAAc;AACjE;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,EAAE;AAClB,iBAAgB,EAAE;AAClB,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,YAAY;AAC5B,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC7JD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAkB,MAAM;AACxB,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,kDAAiD;AACjD,UAAS;AACT,QAAO;;AAEP;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB,MAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCC5CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;;AAEA;;AAEA,EAAC;;;;;;;AC5CD;AACA;AACA,kDAAiD,iBAAiB;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCC7BD;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCTD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,Q,6CAAO;AACP,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,aAAa;AAC7B,iBAAgB,KAAK;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,EAAE;AAClB,iBAAgB,EAAE;AAClB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCxMD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCClHD;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAkB,MAAM;AACxB,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB,MAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCC1BD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCzBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,gBAAe,KAAK;AACpB;AACA;AACA;AACA,qDAAoD;AACpD;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCChCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCbD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6BAA4B;AAC5B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,KAAK;AACpB,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;;AAGA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,uDAAsD,GAAG,iBAAiB;;AAE1E;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA,qCAAoC,iBAAiB;AACrD,kCAAiC,iBAAiB;AAClD;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;;;;;;mCC9UD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,QAAO;AACP;AACA,QAAO;;AAEP;AACA,uCAAsC,iBAAiB;AACvD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCjFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCdD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA,cAAa,6BAA6B;AAC1C,oBAAmB,0BAA0B;AAC7C,QAAO;AACP,cAAa,4BAA4B;AACzC,oBAAmB,0BAA0B;AAC7C;;AAEA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,iBAAgB,SAAS;AACzB;AACA,iBAAgB,SAAS;AACzB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;;AAEA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCzJD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCvDD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,EAAC,uJ;;;;;;mCCnCD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCC1BD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA,eAAc,OAAO;AACrB,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCCjID;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,UAAU;AACvB;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,OAAO;AACpB,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA,cAAa,eAAe;AAC5B;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,SAAS;AACtB,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,EAAE;AACf,eAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA,EAAC;;;;;;;mCCnPD;AACA;AACA;;AAEA,gCAA+B,iCAAiC;;AAEhE;AACA,kCAAiC;AACjC;AACA;AACA;AACA,MAAK;;AAEL,mBAAkB;AAClB;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,aAAa;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCC9ED;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gCAA+B,mCAAmC;;AAElE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;;;;mCC/CD;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;;;;;;;mCClBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB,eAAc;AACd;AACA;AACA,eAAc;AACd;AACA;AACA,eAAc;AACd,aAAY;AACZ;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,cAAa,OAAO;AACpB;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,MAAK;AACL,IAAG;AACH,EAAC;;;;;;;AC9LD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oDAAmD;AACnD,0EAAyE;;AAEzE;AACA,mCAAkC;AAClC,oCAAmC;AACnC,+CAA8C;;AAE9C;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kFAAiF,iCAAiC;;AAElH;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH,EAAC;;;;;;;mCCvGD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCC9CD;;AAEA;AACA;AACA;AACA;AACA;AACA,uCAAsC,4BAA4B;AAClE;AACA;AACA;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL,EAAC;;;;;;;;ACvCD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA,6FAA4F;AAC5F,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzDD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACrGD;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvDD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACtID;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACtGD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACjJD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC/GD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC5GD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC3ID;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7ED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,4BAA2B,IAAI;AAC/B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC3JD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC;AACnC,kBAAiB;AACjB;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7ED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1DD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1ED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA,yEAAwE;AACxE;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,kCAAiC;AACjC,iCAAgC;AAChC,iCAAgC;AAChC,gCAA+B;AAC/B;AACA;AACA;AACA,0DAAyD;AACzD;AACA,2DAA0D;AAC1D;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC;AACrC,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC5FD;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AChED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACjED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,4BAA2B,IAAI;AAC/B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7ED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC9ED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC9DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxDD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC5DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACrED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,4BAA2B,IAAI;AAC/B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AChFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzHD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1ID;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC3GD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,2BAA0B,IAAI,IAAI,IAAI;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7GD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACjFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7HD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,4BAA2B,IAAI;AAC/B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACpED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC/DD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACjFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,qCAAoC,IAAI,IAAI,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACrGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxDD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,4BAA2B,IAAI;AAC/B;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AClED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACpID;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACjHD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC9FD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC3GD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACrED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvHD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AChFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC3FD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC3DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACzHD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACrED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C;AAC5C,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C;AAC5C,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC9DD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AClKD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC/DD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC5JD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC9JD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACnED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1GD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC1GD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACjED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,iCAAgC;AAChC,cAAa;AACb,gCAA+B;AAC/B,cAAa;AACb,mCAAkC;AAClC,cAAa;AACb,mCAAkC;AAClC,cAAa;AACb,gCAA+B;AAC/B,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7FD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC/DD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC5DD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxFD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxDD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxDD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACvJD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACxDD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AChED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;AC7HD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,2BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA,EAAC,G;;;;;;ACnGD,4SAA2S,kDAAkD,0P;;;;;;;ACA7V;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;mCCTA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCJD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;;AAGA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH,EAAC;;;;;;;mCC1ID;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB,iBAAgB,IAAI;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB,iBAAgB,IAAI;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,cAAc;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,eAAe;AAC3C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB,mBAAkB,YAAY;AAC9B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,sBAAqB,QAAQ;AAC7B;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAqB,OAAO;AAC5B,wBAAuB;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC;;;;;;;mCChVD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCCxDD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCRD;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC,uJ;;;;;;mCCND;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCClBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC,uJ;;;;;;ACxLD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAwC;AACxC;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCChDD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCnDD;AACA;AACA;;AAEA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA2C,gBAAgB;AAC3D;;AAEA;AACA,cAAa;AACb;;AAEA;;AAEA,UAAS;AACT,QAAO;;AAEP;AACA,MAAK;AACL,EAAC;;;;;;;mCCvCD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC5CD;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA,EAAC;;;;;;;mCCrBD;AACA;AACA;;AAEA;AACA;AACA,cAAa,MAAM;AACnB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;;;;;;;mCChBD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAkB,cAAc,EAAE;AAClC;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCzCD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAiB,WAAW;AAC5B,kBAAiB,QAAQ;AACzB,oBAAmB;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,8FAA6F;AAC7F,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA,kBAAiB,WAAW;AAC5B,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC/HD;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCtCD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;AACH,EAAC;;;;;;;mCCzBD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;AACjB,gCAA+B;AAC/B;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA,EAAC;;;;;;;mCCtJD;AACA;;AAEA;AACA,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;;AAEtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;;AAEtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;;AAEtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;AACtF,MAAK,iFAAiF;;AAEtF;;AAEA,EAAC;;;;;;;mCCtCD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,EAAC,uJ;;;;;;mCCbD;AACA;;AAEA;AACA;AACA;AACA,mCAAkC,mCAAmC;AACrE,IAAG;;AAEH,EAAC;;;;;;;mCCTD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCjCD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCdD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCfD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,EAAC,uJ;;;;;;mCCRD;AACA;AACA;AACA,EAAC;;;;;;;mCCHD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,sBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCCjDD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP,MAAK;;AAEL;AACA,kCAAiC;AACjC;AACA;AACA,6CAA4C;;AAE5C;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA,EAAC;;;;;;;mCC3GD;AACA;AACA;;AAEA;AACA;AACA,kBAAiB,2BAA2B;AAC5C;AACA;AACA,QAAO;AACP;AACA,kBAAiB,6BAA6B;AAC9C;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,aAAY;AACZ,qBAAoB,yBAAyB,EAAE;AAC/C,uBAAsB,2BAA2B,EAAE;AACnD,yBAAwB,6BAA6B,EAAE;AACvD,0BAAyB,8BAA8B,EAAE;AACzD,4BAA2B,6BAA6B,EAAE;AAC1D,aAAY;AACZ;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;;;;;;mCC7ID;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,8DAA6D,iBAAiB;AAC9E;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;ACtCD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,iDAAiD;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,uBAAsB,QAAQ,+BAA+B,UAAU,UAAU,EAAE;AACnF,8CAA6C;AAC7C;;AAEA;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC9ED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCVD;AACA;AACA,gCAA+B,iCAAiC;AAChE;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kCAAiC,iBAAiB,SAAS,MAAM;AACjE;;AAEA;AACA;AACA,EAAC;;;;;;;mCC9ED;AACA;;AAEA;AACA;;AAEA;AACA,0CAAyC,gCAAgC,EAAE;;AAE3E;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB,MAAM;AACtB;AACA;AACA;;AAEA,kCAAiC,EAAE,KAAK,KAAK,EAAE;AAC/C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCC7LD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,EAAC;;;;;;;mCCtBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,0BAAyB,qBAAqB,EAAE;AAChD;AACA;AACA,4BAA2B,oBAAoB;AAC/C;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAuB,wBAAwB;AAC/C,YAAW;AACX,wBAAuB,wBAAwB;AAC/C;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCC/CD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC7DD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB;AACA;AACA;AACA,cAAa,cAAc;AAC3B,cAAa,cAAc;AAC3B,cAAa,cAAc;AAC3B,cAAa,cAAc;AAC3B,cAAa,cAAc;AAC3B;AACA,eAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA,oEAAmE,kBAAkB;AACrF;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,aAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,EAAC,uJ;;;;;;AC1FD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6CAA4C,oBAAoB;AAChE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wCAAuC;AACvC;AACA,UAAS,qCAAqC;AAC9C;AACA,UAAS,qCAAqC;AAC9C;AACA,UAAS,OAAO;AAChB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAA+B,0BAA0B;AACzD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA,gCAA+B,0BAA0B;AACzD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sDAAqD,EAAE;AACvD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4BAA2B,gBAAgB;AAC3C;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,M;;;AAGA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,qF;AACA,oC;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,wF;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,8D;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,EAAC;;;;;;;;;;mCCtqBD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,QAAQ;AACxB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,MAAM;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA,iBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,IAAG;AACH,EAAC;;;;;;;mCCzJD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA,IAAG;AACH,EAAC;;;;;;;mCCzBD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC/BD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS,4DAA4D;AACrE,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCzCD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA,EAAC;;;;;;;;AClBD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;;AAEA,8CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,SAAS;AACtB;AACA,eAAc,SAAS;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kBAAiB;AACjB,gBAAe;AACf,eAAc;;AAEd,sCAAqC,oBAAoB,YAAY;AACrE,qCAAoC,qBAAqB,WAAW;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCClWD;AACA;AACA;AACA;;;AAGA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA,EAAC;;;;;;;mCCrDD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,YAAW,gCAAgC;AAC3C,YAAW,gCAAgC;AAC3C,YAAW,8BAA8B;AACzC,YAAW,6BAA6B;AACxC,YAAW,8BAA8B;AACzC,YAAW,+BAA+B;AAC1C,YAAW,8BAA8B;AACzC;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,8BAA6B,kBAAkB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH,EAAC;;;;;;;mCC3JD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCChPD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;AACf;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC,cAAc;AACjD;AACA,gBAAe;AACf;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA,MAAK;AACL,EAAC;;;;;;;;mCC7HD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCClBD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCjFD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA,MAAK;AACL,EAAC,uJ;;;;;;mCCvBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAgC,8BAA8B;AAC9D,cAAa;AACb;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC/BD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCC9CD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCClBD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA,iEAAgE,UAAU;AAC1E;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCC/ND;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,iCAAgC,MAAM;AACtC,mFAAkF,QAAQ;AAC1F;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCxCD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCChCD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;AC5BD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA,MAAK;AACL,EAAC;;;;;;;mCCxCD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL,EAAC,uJ;;;;;;mCCrCD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAgC;AAChC;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC/CD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,MAAM;AACtB,iBAAgB,aAAa;AAC7B;AACA;AACA,iBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO,IAAI;;AAEX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,QAAO;AACP;AACA;;AAEA;AACA,EAAC;;;;;;;ACvDD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCZD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;ACfD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCzBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCdD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA,MAAK;AACL,EAAC,uJ;;;;;;mCCVD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;ACTD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,EAAC,uJ;;;;;;mCCZD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,SAAS;AACvB,eAAc,cAAc;AAC5B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,SAAS;AACvB;AACA,eAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,EAAE;AAChB,eAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;;;AAGA;AACA,EAAC;;;;;;;mCCxHD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCC/BD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCnBD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA,MAAK;AACL;AACA;AACA;AACA,EAAC;;;;;;;ACnCD;AACA;AACA,wCAAuC;;AAEvC,EAAC;AACD,oE;AACA,oBAAmB,gBAAgB,UAAU,UAAU,0CAA0C,wBAAwB,oBAAoB,8CAA8C,YAAY,YAAY,mCAAmC,iBAAiB,gBAAgB,sBAAsB,oBAAoB,kDAAkD,WAAW,YAAY,SAAS,EAAE,oBAAoB,GAAG,qBAAqB,cAAc,mCAAmC,gBAAgB,MAAM,eAAe,gBAAgB,KAAK,wFAAwF,mBAAmB,oCAAoC,qFAAqF,cAAc,yDAAyD,cAAc,kEAAkE,SAAS,sCAAsC,SAAS,cAAc,iFAAiF,WAAW,oEAAoE,gBAAgB,OAAO,YAAY,kEAAkE,mFAAmF,iCAAiC,YAAY,WAAW,yBAAyB,SAAS,wBAAwB,+BAA+B,iBAAiB,WAAW,8BAA8B,SAAS,2BAA2B,mCAAmC,YAAY,WAAW,uBAAuB,qBAAqB,yBAAyB,kCAAkC,WAAW,qBAAqB,SAAS,0BAA0B,iCAAiC,WAAW,+BAA+B,uBAAuB,IAAI,2DAA2D,SAAS,gDAAgD,yCAAyC,iBAAiB,qBAAqB,oBAAoB,kDAAkD,mBAAmB,wDAAwD,mCAAmC,gBAAgB,kBAAkB,8DAA8D,2DAA2D,gIAAgI,8CAA8C,oBAAoB,8DAA8D,qDAAqD,MAAM,mBAAmB,iBAAiB,mCAAmC,kBAAkB,sCAAsC,0DAA0D,iCAAiC,IAAI,iEAAiE,SAAS,yCAAyC,IAAI,4CAA4C,SAAS,gBAAgB,kCAAkC,GAAG,qBAAqB,gBAAgB,+HAA+H,gBAAgB,iDAAiD,cAAc,gGAAgG,sBAAsB,4BAA4B,8DAA8D,EAAE,gBAAgB,uBAAuB,gBAAgB,kBAAkB,iCAAiC,+BAA+B,YAAY,WAAW,4BAA4B,SAAS,4PAA4P,cAAc,8DAA8D,gBAAgB,2DAA2D,sCAAsC,wDAAwD,IAAI,gCAAgC,SAAS,SAAS,+BAA+B,mCAAmC,KAAK,2BAA2B,iBAAiB,KAAK,qCAAqC,SAAS,gBAAgB,sGAAsG,kBAAkB,oBAAoB,MAAM,4BAA4B,IAAI,IAAI,SAAS,IAAI,+KAA+K,oEAAoE,6BAA6B,kIAAkI,4EAA4E,4BAA4B,4BAA4B,+BAA+B,6BAA6B,yCAAyC,gCAAgC,+CAA+C,+BAA+B,oCAAoC,kCAAkC,uCAAuC,6BAA6B,6CAA6C,8BAA8B,6CAA6C,uBAAuB,cAAc,EAAE,gBAAgB,qBAAqB,aAAa,6BAA6B,+CAA+C,gBAAgB,0JAA0J,sEAAsE,iCAAiC,8BAA8B,gBAAgB,iCAAiC,6LAA6L,+CAA+C,4CAA4C,oBAAoB,MAAM,iCAAiC,MAAM,8CAA8C,MAAM,oDAAoD,IAAI,wBAAwB,gBAAgB,uBAAuB,4CAA4C,IAAI,wBAAwB,+BAA+B,IAAI,uBAAuB,SAAS,uCAAuC,MAAM,mEAAmE,iCAAiC,6QAA6Q,MAAM,oUAAoU,YAAY,uEAAuE,aAAa,iDAAiD,mEAAmE,sCAAsC,0CAA0C,YAAY,mEAAmE,+CAA+C,yKAAyK,uBAAuB,QAAQ,MAAM,gDAAgD,IAAI,MAAM,mBAAmB,4HAA4H,YAAY,4CAA4C,QAAQ,6BAA6B,2EAA2E,8CAA8C,yBAAyB,uEAAuE,gEAAgE,MAAM,8DAA8D,UAAU,SAAS,sCAAsC,mCAAmC,mCAAmC,MAAM,kHAAkH,+BAA+B,MAAM,qFAAqF,EAAE,OAAO,qBAAqB,gBAAgB,yBAAyB,KAAK,KAAK,WAAW,0EAA0E,UAAU,IAAI,kBAAkB,SAAS,qFAAqF,IAAI,iDAAiD,2BAA2B,qBAAqB,uCAAuC,UAAU,KAAK,gCAAgC,mFAAmF,mCAAmC,6CAA6C,UAAU,kCAAkC,yBAAyB,6CAA6C,6CAA6C,UAAU,0DAA0D,0BAA0B,wBAAwB,mBAAmB,8CAA8C,4CAA4C,gFAAgF,SAAS,aAAa,0BAA0B,cAAc,YAAY,sBAAsB,KAAK,qBAAqB,gBAAgB,KAAK,+BAA+B,kDAAkD,kFAAkF,IAAI,oBAAoB,IAAI,MAAM,iBAAiB,WAAW,iBAAiB,0CAA0C,iDAAiD,yBAAyB,oDAAoD,0BAA0B,cAAc,yEAAyE,uBAAuB,gBAAgB,EAAE,wCAAwC,qBAAqB,gBAAgB,iDAAiD,cAAc,uBAAuB,uDAAuD,+BAA+B,iDAAiD,YAAY,KAAK,sBAAsB,UAAU,qBAAqB,6BAA6B,MAAM,0BAA0B,iBAAiB,MAAM,2DAA2D,2CAA2C,KAAK,4BAA4B,gCAAgC,MAAM,cAAc,MAAM,uDAAuD,2CAA2C,KAAK,4BAA4B,gCAAgC,MAAM,cAAc,eAAe,sBAAsB,0BAA0B,wCAAwC,sBAAsB,8BAA8B,kBAAkB,wFAAwF,uCAAuC,2FAA2F,uBAAuB,8CAA8C,wBAAwB,8BAA8B,+CAA+C,oCAAoC,kBAAkB,SAAS,yCAAyC,YAAY,aAAa,UAAU,wCAAwC,eAAe,gBAAgB,YAAY,IAAI,KAAK,mDAAmD,kDAAkD,IAAI,gDAAgD,SAAS,sCAAsC,yDAAyD,UAAU,EAAE,0BAA0B,qBAAqB,aAAa,sMAAsM,kBAAkB,6CAA6C,YAAY,wBAAwB,cAAc,oFAAoF,gBAAgB,6BAA6B,gBAAgB,uCAAuC,OAAO,mBAAmB,UAAU,2BAA2B,2DAA2D,kFAAkF,IAAI,iEAAiE,yDAAyD,KAAK,sBAAsB,KAAK,WAAW,+BAA+B,IAAI,+BAA+B,IAAI,mGAAmG,oBAAoB,kCAAkC,yFAAyF,QAAQ,YAAY,gBAAgB,MAAM,OAAO,sBAAsB,qCAAqC,0CAA0C,2BAA2B,6CAA6C,yBAAyB,iBAAiB,WAAW,KAAK,sBAAsB,6BAA6B,QAAQ,8HAA8H,YAAY,WAAW,KAAK,sBAAsB,6BAA6B,0GAA0G,0EAA0E,yDAAyD,IAAI,KAAK,WAAW,mBAAmB,4BAA4B,IAAI,oCAAoC,gBAAgB,+CAA+C,4FAA4F,QAAQ,2EAA2E,4CAA4C,WAAW,KAAK,WAAW,uDAAuD,0BAA0B,qDAAqD,2HAA2H,gCAAgC,IAAI,KAAK,mCAAmC,0CAA0C,qBAAqB,+CAA+C,qBAAqB,gJAAgJ,4GAA4G,0CAA0C,cAAc,oCAAoC,+BAA+B,oBAAoB,4DAA4D,sEAAsE,4OAA4O,gCAAgC,qOAAqO,6BAA6B,mCAAmC,iCAAiC,+CAA+C,uCAAuC,kBAAkB,YAAY,qBAAqB,YAAY,sCAAsC,aAAa,4DAA4D,iEAAiE,4BAA4B,sFAAsF,wCAAwC,yDAAyD,UAAU,sBAAsB,qEAAqE,KAAK,sCAAsC,8BAA8B,EAAE,0HAA0H,uIAAuI,oCAAoC,WAAW,0DAA0D,0OAA0O,gXAAgX,mFAAmF,wCAAwC,MAAM,4BAA4B,yDAAyD,kDAAkD,kKAAkK,0FAA0F,wFAAwF,KAAK,oFAAoF,eAAe,IAAI,kBAAkB,uGAAuG,4CAA4C,MAAM,6CAA6C,yDAAyD,kDAAkD,8RAA8R,kCAAkC,4BAA4B,mGAAmG,EAAE,8BAA8B,qBAAqB,gBAAgB,OAAO,mBAAmB,4SAA4S,gBAAgB,kBAAkB,6DAA6D,gBAAgB,SAAS,cAAc,SAAS,iCAAiC,QAAQ,IAAI,kBAAkB,2GAA2G,mBAAmB,4BAA4B,aAAa,cAAc,uBAAuB,4DAA4D,SAAS,4BAA4B,8CAA8C,qEAAqE,iEAAiE,oBAAoB,mBAAmB,IAAI,GAAG,kCAAkC,4BAA4B,qBAAqB,0KAA0K,yGAAyG,eAAe,MAAM,0CAA0C,sBAAsB,wBAAwB,gBAAgB,kDAAkD,SAAS,6FAA6F,6BAA6B,yGAAyG,cAAc,+CAA+C,sBAAsB,4BAA4B,IAAI,sDAAsD,+BAA+B,0CAA0C,IAAI,wBAAwB,UAAU,uCAAuC,WAAW,yRAAyR,aAAa,0DAA0D,cAAc,0DAA0D,gCAAgC,8MAA8M,gBAAgB,kBAAkB,mCAAmC,8EAA8E,IAAI,mGAAmG,cAAc,oBAAoB,cAAc,0BAA0B,cAAc,gBAAgB,cAAc,eAAe,cAAc,yBAAyB,cAAc,yBAAyB,cAAc,yBAAyB,cAAc,kBAAkB,cAAc,sCAAsC,cAAc,4BAA4B,cAAc,oCAAoC,cAAc,qCAAqC,cAAc,2BAA2B,cAAc,wHAAwH,cAAc,qHAAqH,cAAc,yCAAyC,cAAc,8CAA8C,aAAa,iFAAiF,gDAAgD,gBAAgB,iDAAiD,+BAA+B,qBAAqB,UAAU,iBAAiB,mBAAmB,4BAA4B,mBAAmB,qEAAqE,sBAAsB,iBAAiB,UAAU,+BAA+B,+BAA+B,aAAa,8BAA8B,SAAS,mBAAmB,kBAAkB,SAAS,IAAI,uCAAuC,SAAS,uBAAuB,sLAAsL,WAAW,4HAA4H,gNAAgN,gFAAgF,iBAAiB,uDAAuD,0BAA0B,6CAA6C,aAAa,mDAAmD,EAAE,yBAAyB,sBAAsB,+BAA+B,IAAI,iBAAiB,UAAU,EAAE,SAAS,qBAAqB,kCAAkC,qEAAqE,mCAAmC,IAAI,0BAA0B,8BAA8B,IAAI,0BAA0B,eAAe,KAAK,qCAAqC,sBAAsB,iCAAiC,sCAAsC,4HAA4H,mRAAmR,KAAK,+BAA+B,kBAAkB,IAAI,+BAA+B,iBAAiB,GAAG,sBAAsB,cAAc,kDAAkD,kBAAkB,+DAA+D,6EAA6E,cAAc,QAAQ,MAAM,uBAAuB,iBAAiB,YAAY,cAAc,uBAAuB,KAAK,mBAAmB,8BAA8B,MAAM,2CAA2C,MAAM,qCAAqC,MAAM,qFAAqF,oBAAoB,cAAc,6DAA6D,kDAAkD,iCAAiC,cAAc,eAAe,kBAAkB,iEAAiE,cAAc,iCAAiC,cAAc,kCAAkC,0BAA0B,mBAAmB,KAAK,cAAc,6EAA6E,cAAc,8CAA8C,cAAc,iBAAiB,WAAW,oDAAoD,wEAAwE,WAAW,8BAA8B,SAAS,cAAc,iBAAiB,WAAW,gCAAgC,SAAS,cAAc,qCAAqC,oBAAoB,YAAY,mCAAmC,iBAAiB,SAAS,cAAc,IAAI,6BAA6B,SAAS,mCAAmC,oBAAoB,QAAQ,uQAAuQ,oBAAoB,QAAQ,uYAAuY,oBAAoB,QAAQ,iNAAiN,oBAAoB,QAAQ,2NAA2N,oBAAoB,yKAAyK,oBAAoB,yKAAyK,gBAAgB,2PAA2P,sBAAsB,uNAAuN,YAAY,yBAAyB,8CAA8C,sBAAsB,4NAA4N,YAAY,yBAAyB,+BAA+B,kBAAkB,uOAAuO,kBAAkB,4KAA4K,sBAAsB,qQAAqQ,sBAAsB;;AAE3/9B,EAAC,sBAAsB,+SAA+S,sBAAsB,iTAAiT,MAAM,6FAA6F,8CAA8C,eAAe,+BAA+B,8CAA8C,iBAAiB,4BAA4B,kBAAkB,4BAA4B,0CAA0C,yCAAyC,gCAAgC,6CAA6C,uCAAuC,wCAAwC,wCAAwC,wCAAwC,wFAAwF,wCAAwC,uCAAuC,kDAAkD,uCAAuC,kCAAkC,oEAAoE,WAAW,iFAAiF,cAAc,mCAAmC,+DAA+D,WAAW,iCAAiC,SAAS,+EAA+E,+BAA+B,IAAI,+CAA+C,aAAa,MAAM,iCAAiC,oCAAoC,kBAAkB,uCAAuC,iBAAiB,IAAI,kBAAkB,SAAS,sCAAsC,mGAAmG,UAAU,oCAAoC,kDAAkD,wCAAwC,0CAA0C,0CAA0C,kDAAkD,6CAA6C,sCAAsC,QAAQ,oBAAoB,wBAAwB,eAAe,6CAA6C,eAAe,YAAY,IAAI,KAAK,mCAAmC,kDAAkD,YAAY,6BAA6B,qCAAqC,2CAA2C,KAAK,QAAQ,YAAY,QAAQ,oBAAoB,kEAAkE,sCAAsC,oDAAoD,0CAA0C,4CAA4C,4CAA4C,oDAAoD,6CAA6C,iCAAiC,kBAAkB,gDAAgD,oCAAoC,WAAW,4GAA4G,kBAAkB,qCAAqC,iEAAiE,iEAAiE,8DAA8D,gEAAgE,iBAAiB,IAAI,wFAAwF,YAAY,aAAa,gBAAgB,kCAAkC,sJAAsJ,sCAAsC,kBAAkB,2BAA2B,8DAA8D,2DAA2D,YAAY,IAAI,cAAc,wBAAwB,sBAAsB,wBAAwB,uGAAuG,gCAAgC,4BAA4B,uBAAuB,IAAI,YAAY,WAAW,KAAK,WAAW,aAAa,2BAA2B,WAAW,KAAK,WAAW,wBAAwB,SAAS,0BAA0B,6BAA6B,8IAA8I,kBAAkB,qCAAqC,WAAW,uIAAuI,wCAAwC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,sBAAsB,oCAAoC,aAAa,sKAAsK,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,WAAW,kLAAkL,2CAA2C,iBAAiB,2CAA2C,iBAAiB,2CAA2C,iBAAiB,2CAA2C,iBAAiB,uCAAuC,WAAW,qNAAqN,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,2CAA2C,iBAAiB,2CAA2C,kBAAkB,EAAE,6CAA6C,sBAAsB,yEAAyE,aAAa,aAAa,cAAc,sBAAsB,+FAA+F,cAAc,cAAc,SAAS,gBAAgB,kFAAkF,eAAe,kGAAkG,QAAQ,YAAY,IAAI,sIAAsI,6JAA6J,cAAc,cAAc,mBAAmB,cAAc,kDAAkD,4BAA4B,qBAAqB,IAAI,6CAA6C,UAAU,wDAAwD,MAAM,yFAAyF,SAAS,kMAAkM,kCAAkC,uCAAuC,IAAI,GAAG,sBAAsB,oBAAoB,gBAAgB,UAAU,UAAU,8BAA8B,wBAAwB,oBAAoB,8CAA8C,YAAY,YAAY,mCAAmC,iBAAiB,gBAAgB,sBAAsB,oBAAoB,sCAAsC,WAAW,YAAY,SAAS,EAAE,mBAAmB,kCAAkC,qEAAqE,mCAAmC,IAAI,0BAA0B,8BAA8B,IAAI,0BAA0B,eAAe,KAAK,qCAAqC,sBAAsB,iCAAiC,sCAAsC,4HAA4H,mRAAmR,KAAK,+BAA+B,kBAAkB,IAAI,+BAA+B,iBAAiB,GAAG,0BAA0B,cAAc,kDAAkD,kBAAkB,+DAA+D,6EAA6E,cAAc,QAAQ,MAAM,uBAAuB,iBAAiB,YAAY,cAAc,uBAAuB,KAAK,mBAAmB,8BAA8B,MAAM,2CAA2C,MAAM,qCAAqC,MAAM,iFAAiF,oBAAoB,cAAc,+CAA+C,kDAAkD,iCAAiC,cAAc,eAAe,kBAAkB,iEAAiE,cAAc,iCAAiC,cAAc,kCAAkC,0BAA0B,mBAAmB,KAAK,cAAc,6EAA6E,cAAc,8CAA8C,cAAc,iBAAiB,WAAW,oDAAoD,wEAAwE,WAAW,8BAA8B,SAAS,cAAc,iBAAiB,WAAW,gCAAgC,SAAS,cAAc,qCAAqC,oBAAoB,YAAY,mCAAmC,iBAAiB,SAAS,cAAc,IAAI,6BAA6B,SAAS,mCAAmC,oBAAoB,QAAQ,uQAAuQ,oBAAoB,QAAQ,uYAAuY,oBAAoB,QAAQ,iNAAiN,oBAAoB,QAAQ,2NAA2N,oBAAoB,yKAAyK,oBAAoB,yKAAyK,gBAAgB,2PAA2P,sBAAsB,uNAAuN,YAAY,yBAAyB,8CAA8C,sBAAsB,4NAA4N,YAAY,yBAAyB,+BAA+B,kBAAkB,uOAAuO,kBAAkB,4KAA4K,sBAAsB,qQAAqQ,sBAAsB,oRAAoR,sBAAsB,+SAA+S,sBAAsB,iTAAiT,MAAM,6FAA6F,8CAA8C,eAAe,+BAA+B,8CAA8C,iBAAiB,4BAA4B,kBAAkB,4BAA4B,0CAA0C,yCAAyC,gCAAgC,6CAA6C,uCAAuC,wCAAwC,wCAAwC,wCAAwC,wFAAwF,wCAAwC,uCAAuC,kDAAkD,uCAAuC,kCAAkC,oEAAoE,WAAW,iFAAiF,cAAc,mCAAmC,+DAA+D,WAAW,iCAAiC,SAAS,+EAA+E,+BAA+B,IAAI,+CAA+C,aAAa,MAAM,iCAAiC,oCAAoC,kBAAkB,uCAAuC,iBAAiB,IAAI,kBAAkB,SAAS,sCAAsC,mGAAmG,UAAU,oCAAoC,kDAAkD,wCAAwC,0CAA0C,0CAA0C,kDAAkD,6CAA6C,sCAAsC,QAAQ,oBAAoB,wBAAwB,eAAe,6CAA6C,eAAe,YAAY,IAAI,KAAK,mCAAmC,kDAAkD,YAAY,6BAA6B,qCAAqC,2CAA2C,KAAK,QAAQ,YAAY,QAAQ,oBAAoB,kEAAkE,sCAAsC,oDAAoD,0CAA0C,4CAA4C,4CAA4C,oDAAoD,6CAA6C,iCAAiC,kBAAkB,gDAAgD,oCAAoC,WAAW,4GAA4G,kBAAkB,qCAAqC,iEAAiE,iEAAiE,8DAA8D,gEAAgE,iBAAiB,IAAI,wFAAwF,YAAY,aAAa,gBAAgB,kCAAkC,sJAAsJ,sCAAsC,kBAAkB,2BAA2B,8DAA8D,2DAA2D,YAAY,IAAI,cAAc,wBAAwB,sCAAsC,wBAAwB,uGAAuG,gCAAgC,4BAA4B,uBAAuB,IAAI,YAAY,WAAW,KAAK,WAAW,aAAa,2BAA2B,WAAW,KAAK,WAAW,wBAAwB,SAAS,0BAA0B,6BAA6B,8IAA8I,kBAAkB,qCAAqC,WAAW,uIAAuI,wCAAwC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,sBAAsB,oCAAoC,aAAa,sKAAsK,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,uCAAuC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,sBAAsB,wCAAwC,WAAW,kLAAkL,2CAA2C,iBAAiB,2CAA2C,iBAAiB,2CAA2C,iBAAiB,2CAA2C,iBAAiB,uCAAuC,WAAW,qNAAqN,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,0CAA0C,iBAAiB,2CAA2C,iBAAiB,2CAA2C,kBAAkB,EAAE,4CAA4C,uCAAuC,sBAAsB,GAAG,qBAAqB,aAAa,aAAa,cAAc,gBAAgB,sEAAsE,+EAA+E,IAAI,yJAAyJ,iLAAiL,cAAc,cAAc,kDAAkD,4BAA4B,qBAAqB,IAAI,6CAA6C,UAAU,wDAAwD,MAAM,yFAAyF,SAAS,yEAAyE,kDAAkD,GAAG,GAAG,qBAAqB,cAAc,mCAAmC,gBAAgB,MAAM,eAAe,gBAAgB,KAAK,wFAAwF,mBAAmB,oCAAoC,qFAAqF,cAAc,yDAAyD,cAAc,kEAAkE,SAAS,sCAAsC,SAAS,cAAc,iFAAiF,WAAW,oEAAoE,gBAAgB,OAAO,YAAY,kEAAkE,mFAAmF,iCAAiC,YAAY,WAAW,yBAAyB,SAAS,wBAAwB,+BAA+B,iBAAiB,WAAW,8BAA8B,SAAS,2BAA2B,mCAAmC,YAAY,WAAW,uBAAuB,qBAAqB,yBAAyB,kCAAkC,WAAW,qBAAqB,SAAS,0BAA0B,iCAAiC,WAAW,+BAA+B,uBAAuB,IAAI,2DAA2D,SAAS,gDAAgD,yCAAyC,iBAAiB,qBAAqB,oBAAoB,kDAAkD,mBAAmB,wDAAwD,mCAAmC,gBAAgB,kBAAkB,8DAA8D,2DAA2D,gIAAgI,8CAA8C,oBAAoB,8DAA8D,qDAAqD,MAAM,mBAAmB,iBAAiB,mCAAmC,kBAAkB,sCAAsC,0DAA0D,iCAAiC,IAAI,iEAAiE,SAAS,yCAAyC,IAAI,4CAA4C,SAAS,gBAAgB,kCAAkC,GAAG,qBAAqB,gBAAgB,+HAA+H,gBAAgB,iDAAiD,cAAc,gGAAgG,sBAAsB,4BAA4B,8DAA8D,EAAE,gBAAgB,uBAAuB,gBAAgB,kBAAkB,iCAAiC,+BAA+B,YAAY,WAAW,4BAA4B,SAAS,4PAA4P,cAAc,8DAA8D,gBAAgB,2DAA2D,sCAAsC,wDAAwD,IAAI,gCAAgC,SAAS,SAAS,+BAA+B,mCAAmC,KAAK,2BAA2B,iBAAiB,KAAK,qCAAqC,SAAS,gBAAgB,sGAAsG,kBAAkB,oBAAoB,MAAM,4BAA4B,IAAI,IAAI,SAAS,IAAI,+KAA+K,oEAAoE,6BAA6B,kIAAkI,4EAA4E,4BAA4B,4BAA4B,+BAA+B,6BAA6B,yCAAyC,gCAAgC,+CAA+C,+BAA+B,oCAAoC,kCAAkC,uCAAuC,6BAA6B,6CAA6C,8BAA8B,6CAA6C,uBAAuB,cAAc,EAAE,gBAAgB,qBAAqB,gBAAgB,OAAO,mBAAmB,4SAA4S,gBAAgB,kBAAkB,6DAA6D,gBAAgB,SAAS,cAAc,SAAS,iCAAiC,QAAQ,IAAI,kBAAkB,2GAA2G,mBAAmB,4BAA4B,aAAa,cAAc,uBAAuB,4DAA4D,SAAS,4BAA4B,8CAA8C,qEAAqE,iEAAiE,oBAAoB,mBAAmB,IAAI,GAAG,kCAAkC,4BAA4B,qBAAqB,0KAA0K,yGAAyG,eAAe,MAAM,0CAA0C,sBAAsB,wBAAwB,gBAAgB,kDAAkD,SAAS,6FAA6F,6BAA6B,yGAAyG,cAAc,+CAA+C,sBAAsB,4BAA4B,IAAI,sDAAsD,+BAA+B,0CAA0C,IAAI;AAChv+B,WAAU,uCAAuC,WAAW,yRAAyR,aAAa,0DAA0D,cAAc,0DAA0D,gCAAgC,8MAA8M,gBAAgB,kBAAkB,mCAAmC,8EAA8E,IAAI,mGAAmG,cAAc,oBAAoB,cAAc,0BAA0B,cAAc,gBAAgB,cAAc,eAAe,cAAc,yBAAyB,cAAc,yBAAyB,cAAc,yBAAyB,cAAc,kBAAkB,cAAc,sCAAsC,cAAc,4BAA4B,cAAc,oCAAoC,cAAc,qCAAqC,cAAc,2BAA2B,cAAc,wHAAwH,cAAc,2BAA2B,cAAc,yCAAyC,cAAc,8CAA8C,aAAa,iFAAiF,gDAAgD,gBAAgB,iDAAiD,+BAA+B,qBAAqB,UAAU,iBAAiB,mBAAmB,4BAA4B,mBAAmB,qEAAqE,sBAAsB,iBAAiB,UAAU,+BAA+B,+BAA+B,aAAa,8BAA8B,SAAS,mBAAmB,kBAAkB,SAAS,IAAI,uCAAuC,SAAS,uBAAuB,sLAAsL,WAAW,4HAA4H,gNAAgN,gFAAgF,iBAAiB,uDAAuD,0BAA0B,6CAA6C,aAAa,mDAAmD,EAAE,yBAAyB,sBAAsB,+BAA+B,IAAI,iBAAiB,UAAU,EAAE,SAAS,EAAE,GAAG,sCAAsC,GAAG,sBAAsB,mBAAmB,sBAAsB,gIAAgI,wBAAwB,+BAA+B,MAAM,SAAS,qDAAqD,eAAe,sFAAsF,gBAAgB,KAAK,iBAAiB,kDAAkD,mBAAmB,iBAAiB,0CAA0C,iCAAiC,oDAAoD,kBAAkB,UAAU,qBAAqB,mDAAmD,GAAG,sBAAsB,yEAAyE,YAAY,gBAAgB,UAAU,0DAA0D,wCAAwC,wCAAwC,SAAS,kBAAkB,4BAA4B,YAAY,yBAAyB,SAAS,kBAAkB,uBAAuB,yBAAyB,MAAM,sBAAsB,SAAS,cAAc,+BAA+B,cAAc,2CAA2C,gBAAgB,wBAAwB,iCAAiC,EAAE,SAAS,gBAAgB,mBAAmB,+BAA+B,EAAE,SAAS,gBAAgB,iDAAiD,kBAAkB,6DAA6D,MAAM,EAAE,mBAAmB,iCAAiC,uBAAuB,cAAc,aAAa,cAAc,aAAa,cAAc,iBAAiB,kBAAkB,gCAAgC,YAAY,EAAE,WAAW,kBAAkB,SAAS,cAAc,8BAA8B,cAAc,wIAAwI,gBAAgB,kCAAkC,MAAM,6BAA6B,SAAS,gBAAgB,oCAAoC,MAAM,EAAE,0BAA0B,yBAAyB,SAAS,cAAc,wBAAwB,0BAA0B,EAAE,SAAS,cAAc,mBAAmB,wBAAwB,EAAE,SAAS,cAAc,aAAa,cAAc,cAAc,oCAAoC,2BAA2B,iEAAiE,gBAAgB,cAAc,kBAAkB,6DAA6D,cAAc,oKAAoK,cAAc,uFAAuF,qLAAqL,cAAc,sBAAsB,kBAAkB,+BAA+B,kCAAkC,SAAS,cAAc,+BAA+B,wCAAwC,mKAAmK,OAAO,SAAS,EAAE,KAAK,oBAAoB,MAAM,EAAE,iCAAiC,SAAS,6EAA6E,cAAc,iDAAiD,KAAK,WAAW,YAAY,YAAY,mBAAmB,UAAU,SAAS,SAAS,cAAc,iBAAiB,eAAe,4CAA4C,eAAe,wCAAwC,eAAe,+CAA+C,iBAAiB,gDAAgD,eAAe,mBAAmB,eAAe,0BAA0B,IAAI,iBAAiB,iBAAiB,gEAAgE,cAAc,eAAe,gBAAgB,oDAAoD,iBAAiB,oBAAoB,iBAAiB,MAAM,WAAW,SAAS,iBAAiB,wBAAwB,wBAAwB,EAAE,SAAS,iBAAiB,mBAAmB,sBAAsB,EAAE,SAAS,iBAAiB,wBAAwB,MAAM,0BAA0B,SAAS,qBAAqB,gCAAgC,MAAM,EAAE,mBAAmB,kBAAkB,SAAS,iBAAiB,kCAAkC,MAAM,EAAE,WAAW,qBAAqB,SAAS,iBAAiB,gCAAgC,MAAM,kBAAkB,SAAS,qBAAqB,oBAAoB,qBAAqB,MAAM,iBAAiB,SAAS,qBAAqB,eAAe,qBAAqB,IAAI,iBAAiB,SAAS,iBAAiB,wBAAwB,MAAM,yBAAyB,SAAS,eAAe,uBAAuB,IAAI,aAAa,SAAS,iBAAiB,iBAAiB,qBAAqB,+BAA+B,mBAAmB,gCAAgC,MAAM,EAAE,oCAAoC,+CAA+C,SAAS,iBAAiB,+BAA+B,iBAAiB,qEAAqE,MAAM,EAAE,WAAW,+BAA+B,SAAS,mBAAmB,QAAQ,EAAE,wBAAwB,MAAM,EAAE,WAAW,UAAU,SAAS,mBAAmB,eAAe,uFAAuF,2BAA2B,MAAM,yCAAyC,mBAAmB,YAAY,MAAM,6BAA6B,KAAK,wBAAwB,qDAAqD,uBAAuB,YAAY,sBAAsB,oBAAoB,mBAAmB,IAAI,wBAAwB,qDAAqD,uBAAuB,IAAI,mBAAmB,wCAAwC,qBAAqB,aAAa,IAAI,iBAAiB,wBAAwB,eAAe,gEAAgE,mBAAmB,OAAO,MAAM,EAAE,WAAW,aAAa,YAAY,IAAI,wBAAwB,UAAU,2BAA2B,SAAS,iBAAiB,SAAS,4BAA4B,oBAAoB,IAAI,qBAAqB,YAAY,4BAA4B,gBAAgB,kCAAkC,IAAI,qBAAqB,eAAe,gGAAgG,IAAI,UAAU,SAAS,iBAAiB,SAAS,4BAA4B,oBAAoB,IAAI,qBAAqB,MAAM,2BAA2B,oCAAoC,IAAI,mBAAmB,kCAAkC,MAAM,EAAE,WAAW,mCAAmC,iBAAiB,wBAAwB,MAAM,aAAa,mBAAmB,SAAS,iBAAiB,kBAAkB,iBAAiB,kBAAkB,iBAAiB,kBAAkB,iBAAiB,kCAAkC,MAAM,EAAE,WAAW,qBAAqB,SAAS,mBAAmB,YAAY,+BAA+B,uBAAuB,aAAa,iBAAiB,oBAAoB,yBAAyB,gFAAgF,2BAA2B,4BAA4B,sFAAsF,yCAAyC,8BAA8B,OAAO,gEAAgE,sDAAsD,eAAe,oBAAoB,mBAAmB,IAAI,2BAA2B,oBAAoB,+BAA+B,yBAAyB,mBAAmB,wBAAwB,oBAAoB,YAAY,IAAI,EAAE,WAAW,+CAA+C,KAAK,MAAM,EAAE,OAAO,yBAAyB,YAAY,6BAA6B,KAAK,mBAAmB,qCAAqC,SAAS,iBAAiB,iCAAiC,4BAA4B,gBAAgB,IAAI,eAAe,YAAY,yBAAyB,wBAAwB,mBAAmB,uDAAuD,mBAAmB,gBAAgB,iBAAiB,kCAAkC,2BAA2B,oBAAoB,QAAQ,6BAA6B,qDAAqD,gBAAgB,+CAA+C,uBAAuB,mBAAmB,2CAA2C,6BAA6B,+DAA+D,KAAK,sCAAsC,iEAAiE,IAAI,2BAA2B,0BAA0B,IAAI,mCAAmC,sCAAsC,4FAA4F,6EAA6E,eAAe,mBAAmB,2BAA2B,eAAe,WAAW,2BAA2B,kBAAkB,iBAAiB,uBAAuB,IAAI,EAAE,WAAW,gBAAgB,QAAQ,gBAAgB,SAAS,iBAAiB,0BAA0B,uBAAuB,2BAA2B,wBAAwB,IAAI,mBAAmB,oBAAoB,8FAA8F,gBAAgB,MAAM,aAAa,SAAS,iBAAiB,MAAM,4BAA4B,qBAAqB,MAAM,iBAAiB,eAAe,cAAc,IAAI,iBAAiB,SAAS,mBAAmB,gBAAgB,mBAAmB,YAAY,EAAE,uBAAuB,uBAAuB,YAAY,EAAE,OAAO,8BAA8B,EAAE,0BAA0B,gBAAgB,EAAE,iBAAiB,QAAQ,4BAA4B,gBAAgB,IAAI,iBAAiB,iEAAiE,8BAA8B,OAAO,MAAM,EAAE,0BAA0B,aAAa,mBAAmB,IAAI,wBAAwB,uBAAuB,+CAA+C,SAAS,iBAAiB,gCAAgC,MAAM,cAAc,SAAS,qBAAqB,4BAA4B,2BAA2B,EAAE,iDAAiD,iBAAiB,QAAQ,8BAA8B,wBAAwB,MAAM,EAAE,iBAAiB,+CAA+C,SAAS,mBAAmB,uBAAuB,qCAAqC,KAAK,IAAI,EAAE,qBAAqB,iCAAiC,SAAS,oBAAoB,qBAAqB,OAAO,sDAAsD,IAAI,EAAE,4CAA4C,gBAAgB,8DAA8D,YAAY,gBAAgB,mBAAmB,kCAAkC,kBAAkB,UAAU,0BAA0B,oBAAoB,8BAA8B,wBAAwB,gCAAgC,0BAA0B,kCAAkC,4BAA4B,kBAAkB,6BAA6B,eAAe,oBAAoB,mBAAmB,qEAAqE,MAAM,WAAW,KAAK,MAAM,cAAc,KAAK,IAAI,eAAe,SAAS,mBAAmB,0EAA0E,MAAM,WAAW,YAAY,MAAM,aAAa,KAAK,MAAM,kBAAkB,SAAS,iBAAiB,uBAAuB,eAAe,6CAA6C,MAAM,EAAE,WAAW,kBAAkB,0BAA0B,kBAAkB,EAAE,UAAU,eAAe,wBAAwB,yEAAyE,sHAAsH,MAAM,EAAE,WAAW,YAAY,SAAS,EAAE,iBAAiB,qBAAqB,gBAAgB,wBAAwB,yBAAyB,gCAAgC,EAAE,UAAU,eAAe,uBAAuB,2CAA2C,YAAY,EAAE,WAAW,0BAA0B,UAAU,iBAAiB,aAAa,6CAA6C,4BAA4B,YAAY,SAAS,eAAe,mBAAmB,yCAAyC,MAAM,eAAe,UAAU,eAAe,kBAAkB,gBAAgB,iBAAiB,oBAAoB,0BAA0B,+BAA+B,oCAAoC,yCAAyC,8CAA8C,qCAAqC,kBAAkB,eAAe,kBAAkB,uBAAuB,yCAAyC,qCAAqC,SAAS,iBAAiB,uBAAuB,mDAAmD,QAAQ,kBAAkB,6BAA6B,oBAAoB,iBAAiB,uBAAuB,sBAAsB,eAAe,mBAAmB,kBAAkB,eAAe,uBAAuB,8CAA8C,eAAe,uBAAuB,iCAAiC,eAAe,kBAAkB,kDAAkD,YAAY,EAAE,0BAA0B,wCAAwC,sDAAsD,aAAa,MAAM,EAAE,OAAO,sCAAsC,oHAAoH,kBAAkB,gBAAgB,yDAAyD,wCAAwC,MAAM,qBAAqB,WAAW,iBAAiB,uBAAuB,gEAAgE,eAAe,uBAAuB,8DAA8D,eAAe,uBAAuB,2DAA2D,eAAe,uBAAuB,SAAS,wCAAwC,eAAe,uBAAuB,KAAK,eAAe,uBAAuB,2CAA2C,eAAe,uBAAuB,yBAAyB,wBAAwB,EAAE,SAAS,iBAAiB,yBAAyB,yBAAyB,2EAA2E,iCAAiC,aAAa,uCAAuC,IAAI,mBAAmB,2CAA2C,6BAA6B,oBAAoB,2EAA2E,oCAAoC,4CAA4C,yCAAyC,0BAA0B,gHAAgH,uDAAuD,SAAS,mBAAmB,eAAe,8BAA8B,UAAU,0DAA0D,qBAAqB,aAAa,0DAA0D,MAAM,WAAW,KAAK,IAAI,uBAAuB,6CAA6C,2BAA2B,kBAAkB,SAAS,eAAe,yBAAyB,YAAY,qDAAqD,6BAA6B,UAAU,4CAA4C,mBAAmB,gDAAgD,YAAY,SAAS,2CAA2C,8FAA8F,+DAA+D,cAAc,cAAc,2BAA2B,+BAA+B,4BAA4B,KAAK,MAAM,EAAE,yCAAyC,UAAU,cAAc,SAAS,MAAM,qBAAqB,6BAA6B,WAAW,wCAAwC,SAAS,mBAAmB,UAAU,2BAA2B,mDAAmD,gCAAgC,8BAA8B,SAAS,2BAA2B,0CAA0C,qBAAqB,YAAY,IAAI,EAAE,WAAW,qCAAqC,YAAY,MAAM,EAAE,OAAO,yCAAyC,sCAAsC,wBAAwB,OAAO,oCAAoC,sIAAsI,SAAS,mBAAmB,qBAAqB,kCAAkC,eAAe,wCAAwC,IAAI,EAAE,oBAAoB,+BAA+B,SAAS,mBAAmB,oBAAoB,iCAAiC,eAAe,2BAA2B,IAAI,qBAAqB,SAAS,iBAAiB,qBAAqB,iBAAiB,mBAAmB,4BAA4B,MAAM,EAAE,oBAAoB,eAAe,gBAAgB,MAAM,qBAAqB,MAAM,uBAAuB,MAAM,6BAA6B,OAAO,eAAe,eAAe,sCAAsC,yFAAyF,eAAe,oBAAoB,yDAAyD,mBAAmB,oBAAoB,UAAU,qBAAqB,+BAA+B,kGAAkG,eAAe,8CAA8C,+BAA+B,wCAAwC,wBAAwB,SAAS,mBAAmB,qEAAqE,qBAAqB,8BAA8B,eAAe,0BAA0B,iBAAiB,+EAA+E,mBAAmB,mBAAmB,eAAe,0DAA0D,WAAW,yBAAyB,SAAS,iBAAiB,eAAe,iDAAiD,kBAAkB,kBAAkB,8BAA8B,eAAe,YAAY,gCAAgC,WAAW,kBAAkB,YAAY,oBAAoB,eAAe,8CAA8C,eAAe,qBAAqB,iBAAiB,0FAA0F,mBAAmB,4BAA4B,WAAW,MAAM,WAAW,oDAAoD,0LAA0L,iBAAiB,QAAQ,6BAA6B,MAAM,EAAE,WAAW,oBAAoB,SAAS,iBAAiB,SAAS,4BAA4B,mBAAmB,IAAI,iBAAiB,4CAA4C,IAAI,EAAE,WAAW,oBAAoB,SAAS,eAAe,kBAAkB,iJAAiJ,MAAM,uCAAuC,yBAAyB,8BAA8B,IAAI,uBAAuB,eAAe,uFAAuF,MAAM,EAAE,WAAW,sCAAsC,SAAS,eAAe,wFAAwF,eAAe,oCAAoC,gCAAgC,MAAM,kBAAkB,SAAS,qBAAqB,eAAe,kBAAkB,SAAS,yCAAyC,kCAAkC,IAAI,eAAe,mFAAmF,mBAAmB,sCAAsC,8CAA8C,IAAI,qBAAqB,SAAS,eAAe,sCAAsC,MAAM,EAAE,WAAW,cAAc,SAAS,mBAAmB,mBAAmB,yDAAyD,mBAAmB,mBAAmB,uEAAuE,mBAAmB,4CAA4C,mBAAmB,yCAAyC,qBAAqB,mBAAmB,sEAAsE,eAAe,gBAAgB,mBAAmB,mBAAmB,yCAAyC,eAAe,mBAAmB,qBAAqB,mBAAmB,mBAAmB,eAAe,wCAAwC,WAAW,qBAAqB,+BAA+B,mBAAmB,eAAe,eAAe,eAAe,mBAAmB,kBAAkB,mBAAmB,mBAAmB,eAAe,QAAQ,uDAAuD,WAAW,eAAe,WAAW,+BAA+B,0BAA0B,KAAK,IAAI,sBAAsB,SAAS,cAAc,uBAAuB,0BAA0B,8BAA8B,MAAM,oBAAoB,gBAAgB,gBAAgB,SAAS,mBAAmB,SAAS,0BAA0B,yBAAyB,gBAAgB,MAAM,EAAE,WAAW,gCAAgC,iBAAiB,eAAe,eAAe,mBAAmB,mBAAmB,oEAAoE,mBAAmB,mBAAmB,2DAA2D,mBAAmB,mBAAmB,qEAAqE,mBAAmB,4CAA4C,mBAAmB,sCAAsC,qBAAqB,mBAAmB,eAAe,4DAA4D,WAAW,gEAAgE,eAAe,0BAA0B,aAAa,mBAAmB,0CAA0C,EAAE,gBAAgB,MAAM,kBAAkB,SAAS,mBAAmB,mBAAmB,eAAe,YAAY,+CAA+C,oBAAoB,GAAG,cAAc,gCAAgC,MAAM,EAAE,mBAAmB,2CAA2C,kBAAkB,iBAAiB,6BAA6B,4BAA4B,MAAM,EAAE,WAAW,8BAA8B,SAAS,eAAe,WAAW,wBAAwB,mBAAmB,qBAAqB,mBAAmB,mBAAmB,cAAc,gBAAgB,cAAc,0CAA0C,eAAe,iBAAiB,eAAe,EAAE,YAAY,sBAAsB,QAAQ,gBAAgB,yBAAyB,cAAc,uBAAuB,yHAAyH,mBAAmB,EAAE,cAAc,uBAAuB,cAAc,6CAA6C,mBAAmB,kBAAkB,kFAAkF,mBAAmB,kBAAkB,0BAA0B,iBAAiB,mBAAmB,qBAAqB,gBAAgB,wKAAwK,mBAAmB,kBAAkB,0BAA0B,iBAAiB,mBAAmB,mBAAmB,kBAAkB,uCAAuC,gBAAgB,EAAE,mBAAmB,wBAAwB,QAAQ,eAAe,0BAA0B,kCAAkC,wBAAwB,MAAM,EAAE,qBAAqB,iBAAiB,oBAAoB,eAAe,gBAAgB,eAAe,gBAAgB,4BAA4B,mBAAmB,kBAAkB,kFAAkF,mBAAmB,oBAAoB,uBAAuB,SAAS,YAAY,2BAA2B,OAAO,qCAAqC,EAAE,eAAe,qBAAqB,yGAAyG,iBAAiB,mBAAmB,iBAAiB,yBAAyB,wCAAwC,QAAQ,QAAQ,iCAAiC,4CAA4C,mBAAmB,8FAA8F,iBAAiB,MAAM,yBAAyB,wCAAwC,QAAQ,QAAQ,kBAAkB,2DAA2D,mBAAmB,aAAa,0BAA0B,aAAa,iBAAiB,cAAc,SAAS,QAAQ,oDAAoD,eAAe,aAAa,sEAAsE,aAAa,6DAA6D,KAAK,YAAY,0BAA0B,mDAAmD,0FAA0F,gCAAgC,wCAAwC,yBAAyB,SAAS,KAAK,6FAA6F,oBAAoB,iBAAiB,iEAAiE,iBAAiB,mDAAmD,4BAA4B,sBAAsB,6BAA6B,8BAA8B,eAAe,wCAAwC,kBAAkB,gCAAgC,eAAe,eAAe,iBAAiB,wCAAwC,iDAAiD,oDAAoD,MAAM;;AAE3y+B,WAAU,6BAA6B,kCAAkC,uCAAuC,cAAc,SAAS,MAAM,WAAW,+BAA+B,eAAe,wCAAwC,mBAAmB,wBAAwB,mBAAmB,cAAc,wCAAwC,8IAA8I,iBAAiB,0CAA0C,qBAAqB,kIAAkI,mBAAmB,uDAAuD,iBAAiB,WAAW,iBAAiB,YAAY,eAAe,kCAAkC,eAAe,2CAA2C,eAAe,2BAA2B,eAAe,4FAA4F,eAAe,2FAA2F,qBAAqB,mCAAmC,iBAAiB,2BAA2B,eAAe,uDAAuD,eAAe,eAAe,wCAAwC,qBAAqB,wDAAwD,eAAe,oBAAoB,eAAe,gFAAgF,eAAe,gBAAgB,eAAe,8CAA8C,eAAe,4BAA4B,eAAe,+CAA+C,eAAe,4CAA4C,eAAe,aAAa,iBAAiB,WAAW,iBAAiB,YAAY,eAAe,gBAAgB,0EAA0E,eAAe,mBAAmB,mBAAmB,YAAY,0CAA0C,eAAe,mBAAmB,mBAAmB,iCAAiC,iBAAiB,iBAAiB,oBAAoB,mBAAmB,eAAe,6DAA6D,uBAAuB,8DAA8D,mBAAmB,uBAAuB,qCAAqC,MAAM,EAAE,kBAAkB,4CAA4C,SAAS,eAAe,oBAAoB,iBAAiB,2BAA2B,wCAAwC,oJAAoJ,MAAM,WAAW,4HAA4H,6BAA6B,mDAAmD,6BAA6B,IAAI,EAAE,QAAQ,WAAW,gDAAgD,SAAS,eAAe,QAAQ,wCAAwC,MAAM,EAAE,WAAW,cAAc,SAAS,mBAAmB,yBAAyB,oIAAoI,mBAAmB,oBAAoB,WAAW,gCAAgC,kCAAkC,eAAe,EAAE,WAAW,sDAAsD,UAAU,SAAS,qBAAqB,mBAAmB,oCAAoC,oBAAoB,8CAA8C,UAAU,kCAAkC,kBAAkB,IAAI,eAAe,mBAAmB,eAAe,mBAAmB,mBAAmB,6EAA6E,mBAAmB,yBAAyB,wBAAwB,yIAAyI,WAAW,mDAAmD,eAAe,eAAe,sDAAsD,eAAe,gDAAgD,mBAAmB,aAAa,eAAe,uEAAuE,eAAe,8CAA8C,eAAe,mDAAmD,mBAAmB,YAAY,eAAe,yBAAyB,8BAA8B,qCAAqC,mBAAmB,mCAAmC,iBAAiB,SAAS,wCAAwC,8BAA8B,SAAS,SAAS,mBAAmB,yEAAyE,mBAAmB,yBAAyB,0CAA0C,aAAa,kBAAkB,mRAAmR,kCAAkC,iGAAiG,QAAQ,qFAAqF,QAAQ,IAAI,iBAAiB,mBAAmB,UAAU,8DAA8D,gCAAgC,2BAA2B,EAAE,oFAAoF,oBAAoB,iCAAiC,MAAM,qBAAqB,EAAE,oBAAoB,sCAAsC,EAAE,4BAA4B,SAAS,mBAAmB,QAAQ,6FAA6F,mBAAmB,QAAQ,gEAAgE,mBAAmB,QAAQ,iFAAiF,mBAAmB,uBAAuB,YAAY,qBAAqB,oCAAoC,+DAA+D,aAAa,+BAA+B,iBAAiB,gBAAgB,mBAAmB,sBAAsB,UAAU,yBAAyB,uBAAuB,kEAAkE,YAAY,WAAW,0BAA0B,2BAA2B,uBAAuB,uBAAuB,WAAW,eAAe,8CAA8C,mBAAmB,wDAAwD,mBAAmB,iDAAiD,eAAe,kBAAkB,UAAU,eAAe,SAAS,eAAe,oBAAoB,iBAAiB,sBAAsB,mBAAmB,YAAY,sDAAsD,sCAAsC,mBAAmB,iCAAiC,4CAA4C,KAAK,MAAM,EAAE,kBAAkB,sCAAsC,kBAAkB,qBAAqB,SAAS,+DAA+D,eAAe,gCAAgC,kBAAkB,qBAAqB,2CAA2C,KAAK,SAAS,cAAc,mBAAmB,eAAe,eAAe,yBAAyB,eAAe,mBAAmB,yBAAyB,mBAAmB,6EAA6E,8CAA8C,MAAM,aAAa,SAAS,mBAAmB,gCAAgC,wBAAwB,gBAAgB,MAAM,qBAAqB,SAAS,eAAe,WAAW,cAAc,iBAAiB,sBAAsB,mBAAmB,uBAAuB,qBAAqB,gEAAgE,iDAAiD,gqBAAgqB,IAAI,sDAAsD,UAAU,eAAe,iTAAiT,OAAO,gMAAgM,UAAU,mBAAmB,wDAAwD,eAAe,sCAAsC,oBAAoB,2BAA2B,QAAQ,eAAe,mBAAmB,kCAAkC,YAAY,mBAAmB,EAAE,oBAAoB,aAAa,iBAAiB,SAAS,IAAI,aAAa,MAAM,aAAa,eAAe,6BAA6B,4SAA4S,IAAI,iDAAiD,SAAS,WAAW,0BAA0B,0DAA0D,MAAM,kBAAkB,cAAc,mBAAmB,UAAU,cAAc,YAAY,iBAAiB,cAAc,gEAAgE,qBAAqB,IAAI,2BAA2B,sDAAsD,MAAM,oBAAoB,qBAAqB,kDAAkD,WAAW,0BAA0B,iBAAiB,4BAA4B,iBAAiB,kCAAkC,YAAY,qBAAqB,qBAAqB,YAAY,mBAAmB,SAAS,gBAAgB,uBAAuB,kCAAkC,sCAAsC,kDAAkD,IAAI,EAAE,2BAA2B,oCAAoC,sCAAsC,OAAO,MAAM,mCAAmC,YAAY,IAAI,EAAE,WAAW,wCAAwC,uBAAuB,SAAS,sBAAsB,QAAQ,cAAc,yBAAyB,sCAAsC,uBAAuB,sBAAsB,wBAAwB,8BAA8B,6CAA6C,uGAAuG,sBAAsB,oCAAoC,wBAAwB,2BAA2B,yEAAyE,mCAAmC,wBAAwB,OAAO,wBAAwB,gEAAgE,wBAAwB,+BAA+B,gCAAgC,IAAI,wBAAwB,iBAAiB,YAAY,cAAc,gDAAgD,oBAAoB,WAAW,uDAAuD,oBAAoB,yBAAyB,uBAAuB,QAAQ,aAAa,0BAA0B,KAAK,qBAAqB,sBAAsB,uBAAuB,wBAAwB,MAAM,EAAE,WAAW,kBAAkB,SAAS,wBAAwB,UAAU,aAAa,0BAA0B,KAAK,qBAAqB,wCAAwC,iBAAiB,wBAAwB,iBAAiB,0DAA0D,oCAAoC,EAAE,4BAA4B,8DAA8D,EAAE,uBAAuB,0CAA0C,wBAAwB,wCAAwC,EAAE,uBAAuB,gCAAgC,mCAAmC,qBAAqB,qBAAqB,yDAAyD,4CAA4C,8BAA8B,0BAA0B,2BAA2B,oBAAoB,WAAW,4CAA4C,gFAAgF,iCAAiC,wHAAwH,oDAAoD,oBAAoB,4BAA4B,mBAAmB,yBAAyB,sBAAsB,4BAA4B,gBAAgB,EAAE,sBAAsB,iBAAiB,2DAA2D,wBAAwB,sEAAsE,wBAAwB,oCAAoC,oBAAoB,oCAAoC,8EAA8E,EAAE,0BAA0B,oCAAoC,wBAAwB,2DAA2D,sBAAsB,IAAI,oBAAoB,SAAS,0BAA0B,sBAAsB,mBAAmB,kBAAkB,sBAAsB,mBAAmB,kBAAkB,4BAA4B,48FAA48F,SAAS,0BAA0B,yBAAyB,IAAI,kDAAkD,qDAAqD,eAAe,mBAAmB,6FAA6F,mBAAmB,4DAA4D,kBAAkB,6BAA6B,gGAAgG,eAAe,2DAA2D,yBAAyB,mCAAmC,gBAAgB,2BAA2B,8DAA8D,oGAAoG,KAAK,oCAAoC,QAAQ,uCAAuC,EAAE,SAAS,oCAAoC,sCAAsC,2CAA2C,yCAAyC,oCAAoC,4BAA4B,0BAA0B,8BAA8B,sCAAsC,4BAA4B,0BAA0B,mBAAmB,qCAAqC,iCAAiC,2BAA2B,sBAAsB,iCAAiC,uBAAuB,kCAAkC,2CAA2C,YAAY,EAAE,iCAAiC,kBAAkB,WAAW,yGAAyG,gCAAgC,oBAAoB,8BAA8B,WAAW,MAAM,2EAA2E,0BAA0B,mHAAmH,kDAAkD,YAAY,mDAAmD,kBAAkB,UAAU,mCAAmC,MAAM,qCAAqC,2BAA2B,wCAAwC,QAAQ,2BAA2B,EAAE,kBAAkB,sBAAsB,oGAAoG,8MAA8M,8BAA8B,yCAAyC,GAAG,0BAA0B,gBAAgB,sEAAsE,oBAAoB,GAAG,+BAA+B,WAAW,MAAM,iCAAiC,QAAQ,cAAc,GAAG,wBAAwB,yBAAyB,+YAA+Y,8qBAA8qB,2DAA2D,mCAAmC,wRAAwR,4FAA4F,MAAM,aAAa,OAAO,sKAAsK,qEAAqE,8DAA8D,sgBAAsgB,6JAA6J,UAAU,6JAA6J,QAAQ,iCAAiC,KAAK,qfAAqf,KAAK,UAAU,WAAW,WAAW,aAAa,YAAY,YAAY,EAAE,KAAK,MAAM,WAAW,WAAW,aAAa,YAAY,YAAY,MAAM,KAAK,wBAAwB,KAAK,sEAAsE,4SAA4S,IAAI,QAAQ,WAAW,KAAK,SAAS,kBAAkB,UAAU,mBAAmB,6DAA6D,UAAU,8FAA8F,UAAU,kDAAkD,aAAa,GAAG,sBAAsB,oFAAoF,0GAA0G,kBAAkB,cAAc,sDAAsD,iBAAiB,gDAAgD,iHAAiH,GAAG,EAAE,0IAA0I,sBAAsB,4FAA4F,uEAAuE,QAAQ,aAAa,2CAA2C,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,OAAO,eAAe,QAAQ,uCAAuC,OAAO,cAAc,OAAO,gBAAgB,EAAE,6BAA6B,OAAO,gBAAgB,EAAE,aAAa,wCAAwC,uCAAuC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,mCAAmC,MAAM,cAAc,EAAE,oBAAoB,EAAE,gCAAgC,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,wCAAwC,QAAQ,cAAc,EAAE,uBAAuB,EAAE,2BAA2B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,kCAAkC,OAAO,cAAc,EAAE,kBAAkB,EAAE,+BAA+B,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,4BAA4B,SAAS,aAAa,QAAQ,uCAAuC,QAAQ,cAAc,EAAE,sBAAsB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,KAAK,4BAA4B,IAAI,6BAA6B,MAAM,oBAAoB,0BAA0B,QAAQ,MAAM,6BAA6B,MAAM,aAAa,6BAA6B,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,MAAM,4BAA4B,IAAI,6BAA6B,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,oBAAoB,2BAA2B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,mBAAmB,kCAAkC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,2BAA2B,6BAA6B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,qBAAqB,8BAA8B,QAAQ,OAAO,sCAAsC,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,EAAE,8BAA8B,QAAQ,GAAG,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,mCAAmC,OAAO,cAAc,EAAE,mBAAmB,EAAE,gCAAgC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,4BAA4B,SAAS,4CAA4C,MAAM,yBAAyB,mBAAmB,OAAO,yCAAyC,UAAU,cAAc,EAAE,sBAAsB,kBAAkB,mDAAmD,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,0BAA0B,gCAAgC,QAAQ,OAAO,uEAAuE,QAAQ,eAAe,gBAAgB,kCAAkC,UAAU,YAAY,sBAAsB,4CAA4C,eAAe,oCAAoC,0BAA0B,gDAAgD,gBAAgB,oFAAoF,QAAQ,uCAAuC,OAAO,gBAAgB,EAAE,uBAAuB,EAAE,sCAAsC,QAAQ,OAAO,eAAe,gBAAgB,mCAAmC,MAAM,+BAA+B,qCAAqC,QAAQ,cAAc,qCAAqC,MAAM,yBAAyB,cAAc,iCAAiC,QAAQ,QAAQ;AACpv+B,gBAAe,UAAU,eAAe,SAAS,iGAAiG,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,wBAAwB,eAAe,+BAA+B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,eAAe,qCAAqC,QAAQ,kDAAkD,QAAQ,iGAAiG,QAAQ,cAAc,EAAE,uCAAuC,QAAQ,mGAAmG,EAAE,sBAAsB,EAAE,+BAA+B,QAAQ,cAAc,oCAAoC,QAAQ,6BAA6B,QAAQ,6CAA6C,QAAQ,cAAc,EAAE,sBAAsB,EAAE,aAAa,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,WAAW,+BAA+B,aAAa,cAAc,UAAU,cAAc,SAAS,eAAe,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,gBAAgB,sBAAsB,QAAQ,QAAQ,cAAc,UAAU,YAAY,aAAa,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,iBAAiB,qCAAqC,gBAAgB,oCAAoC,UAAU,cAAc,cAAc,wFAAwF,QAAQ,0DAA0D,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,kDAAkD,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,iBAAiB,QAAQ,aAAa,2CAA2C,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,UAAU,cAAc,cAAc,wFAAwF,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,iBAAiB,qBAAqB,QAAQ,UAAU,cAAc,cAAc,2CAA2C,kBAAkB,wEAAwE,KAAK,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,cAAc,sDAAsD,IAAI,cAAc,UAAU,cAAc,SAAS,cAAc,UAAU,aAAa,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,8BAA8B,OAAO,cAAc,kBAAkB,oBAAoB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,gBAAgB,iBAAiB,sBAAsB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,gBAAgB,iBAAiB,cAAc,QAAQ,QAAQ,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,eAAe,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,eAAe,QAAQ,iBAAiB,uCAAuC,WAAW,cAAc,kBAAkB,wEAAwE,KAAK,cAAc,SAAS,YAAY,UAAU,eAAe,yBAAyB,+CAA+C,SAAS,cAAc,aAAa,cAAc,IAAI,cAAc,UAAU,cAAc,SAAS,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,oCAAoC,MAAM,kDAAkD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,WAAW,QAAQ,QAAQ,YAAY,SAAS,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,UAAU,cAAc,cAAc,wFAAwF,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,iBAAiB,iBAAiB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,iBAAiB,iBAAiB,QAAQ,QAAQ,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,UAAU,cAAc,cAAc,wFAAwF,MAAM,iDAAiD,OAAO,cAAc,OAAO,cAAc,KAAK,iBAAiB,mBAAmB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,iBAAiB,aAAa,QAAQ,aAAa,2CAA2C,SAAS,wEAAwE,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,YAAY,YAAY,MAAM,gBAAgB,UAAU,cAAc,cAAc,wFAAwF,QAAQ,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,iCAAiC,OAAO,cAAc,OAAO,gBAAgB,4BAA4B,+CAA+C,QAAQ,QAAQ,cAAc,WAAW,cAAc,cAAc,gCAAgC,QAAQ,cAAc,UAAU,YAAY,QAAQ,cAAc,cAAc,mCAAmC,OAAO,cAAc,YAAY,cAAc,SAAS,8DAA8D,QAAQ,gCAAgC,OAAO,gBAAgB,EAAE,gBAAgB,gBAAgB,oCAAoC,QAAQ,WAAW,iCAAiC,YAAY,eAAe,SAAS,YAAY,SAAS,eAAe,cAAc,mCAAmC,aAAa,kCAAkC,KAAK,eAAe,UAAU,+BAA+B,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,YAAY,WAAW,eAAe,aAAa,mCAAmC,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,gBAAgB,+BAA+B,QAAQ,SAAS,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,MAAM,8BAA8B,OAAO,gBAAgB,eAAe,gCAAgC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,uBAAuB,OAAO,gBAAgB,eAAe,mCAAmC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,uBAAuB,OAAO,cAAc,iBAAiB,qCAAqC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,wCAAwC,OAAO,YAAY,OAAO,cAAc,iBAAiB,uCAAuC,QAAQ,eAAe,mCAAmC,MAAM,0CAA0C,OAAO,YAAY,OAAO,cAAc,iBAAiB,wCAAwC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,gCAAgC,MAAM,gBAAgB,iBAAiB,sCAAsC,QAAQ,eAAe,kCAAkC,OAAO,aAAa,MAAM,yCAAyC,OAAO,YAAY,OAAO,cAAc,iBAAiB,gCAAgC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,MAAM,uBAAuB,OAAO,cAAc,eAAe,qCAAqC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,uGAAuG,QAAQ,gBAAgB,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,6BAA6B,MAAM,cAAc,EAAE,8BAA8B,OAAO,cAAc,gBAAgB,wCAAwC,QAAQ,OAAO,gBAAgB,MAAM,gCAAgC,MAAM,gBAAgB,eAAe,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,MAAM,iCAAiC,OAAO,YAAY,OAAO,cAAc,eAAe,+BAA+B,QAAQ,OAAO,eAAe,OAAO,eAAe,gBAAgB,sCAAsC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,8BAA8B,OAAO,cAAc,EAAE,cAAc,gBAAgB,6BAA6B,QAAQ,OAAO,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,oCAAoC,OAAO,YAAY,UAAU,cAAc,EAAE,uBAAuB,OAAO,cAAc,EAAE,kCAAkC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,6BAA6B,MAAM,cAAc,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,EAAE,oCAAoC,QAAQ,SAAS,YAAY,QAAQ,gBAAgB,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,+BAA+B,MAAM,cAAc,EAAE,gBAAgB,EAAE,yCAAyC,QAAQ,iBAAiB,uCAAuC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,2DAA2D,OAAO,YAAY,OAAO,YAAY,QAAQ,cAAc,EAAE,iDAAiD,OAAO,YAAY,QAAQ,cAAc,EAAE,gDAAgD,MAAM,YAAY,QAAQ,cAAc,EAAE,sCAAsC,OAAO,cAAc,EAAE,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,+BAA+B,MAAM,cAAc,EAAE,gBAAgB,EAAE,qCAAqC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,uGAAuG,eAAe,oCAAoC,QAAQ,gBAAgB,QAAQ,2CAA2C,OAAO,YAAY,OAAO,cAAc,EAAE,iCAAiC,OAAO,cAAc,EAAE,gCAAgC,MAAM,cAAc,EAAE,iBAAiB,EAAE,qCAAqC,QAAQ,cAAc,oCAAoC,QAAQ,gBAAgB,QAAQ,gCAAgC,MAAM,gBAAgB,EAAE,iBAAiB,EAAE,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,6BAA6B,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,EAAE,mCAAmC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,mDAAmD,OAAO,YAAY,OAAO,YAAY,OAAO,cAAc,EAAE,yCAAyC,OAAO,YAAY,OAAO,cAAc,EAAE,+BAA+B,OAAO,cAAc,EAAE,8BAA8B,MAAM,cAAc,EAAE,eAAe,EAAE,8BAA8B,QAAQ,SAAS,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,+FAA+F,MAAM,6BAA6B,OAAO,gBAAgB,eAAe,kCAAkC,QAAQ,OAAO,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,iBAAiB,sCAAsC,qBAAqB,2CAA2C,qBAAqB,2BAA2B,eAAe,qCAAqC,QAAQ,gBAAgB,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,gBAAgB,kCAAkC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,QAAQ,wCAAwC,OAAO,YAAY,OAAO,gBAAgB,EAAE,6BAA6B,MAAM,gBAAgB,eAAe,oCAAoC,QAAQ,iBAAiB,uCAAuC,UAAU,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,0CAA0C,OAAO,YAAY,OAAO,gBAAgB,EAAE,+BAA+B,MAAM,gBAAgB,2BAA2B,qCAAqC,QAAQ,eAAe,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,eAAe,qCAAqC,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,2BAA2B,qCAAqC,QAAQ,OAAO,cAAc,SAAS,4BAA4B,UAAU,YAAY,gBAAgB,kCAAkC,eAAe,qCAAqC,MAAM,gCAAgC,MAAM,gBAAgB,0BAA0B,mCAAmC,QAAQ,eAAe,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,mDAAmD,OAAO,YAAY,OAAO,YAAY,OAAO,gBAAgB,EAAE,yCAAyC,OAAO,YAAY,OAAO,gBAAgB,EAAE,8BAA8B,MAAM,gBAAgB,2BAA2B,kCAAkC,QAAQ,UAAU,4BAA4B,aAAa,+CAA+C,QAAQ,6BAA6B,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,EAAE,iCAAiC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,4BAA4B,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,gBAAgB,kCAAkC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,4BAA4B,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,EAAE,+BAA+B,QAAQ,kBAAkB,qCAAqC,kBAAkB,oCAAoC,SAAS,YAAY,SAAS,YAAY,QAAQ,4BAA4B,QAAQ,uEAAuE,QAAQ,aAAa,QAAQ,0CAA0C,OAAO,YAAY,SAAS,6MAA6M,EAAE,+BAA+B,QAAQ,6MAA6M,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,EAAE,gCAAgC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,2BAA2B,WAAW,eAAe,WAAW,gBAAgB,QAAQ,+BAA+B,OAAO,cAAc,EAAE,eAAe,EAAE,uCAAuC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,gBAAgB,2BAA2B,iCAAiC,QAAQ,gBAAgB,uCAAuC,kBAAkB,4FAA4F,oBAAoB,yCAAyC,oBAAoB,2CAA2C,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,gBAAgB,uCAAuC,QAAQ,SAAS,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,qBAAqB,2BAA2B,SAAS,cAAc,IAAI,eAAe,QAAQ,iDAAiD,OAAO,YAAY,OAAO,cAAc,EAAE,uCAAuC,OAAO,cAAc,EAAE,uBAAuB,gBAAgB,YAAY,KAAK,SAAS,YAAY,QAAQ,QAAQ,cAAc,SAAS,YAAY,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,oCAAoC,QAAQ,uCAAuC,OAAO,cAAc,OAAO,gBAAgB,EAAE,6BAA6B,OAAO,gBAAgB,EAAE,aAAa,4BAA4B,WAAW,QAAQ,QAAQ,cAAc,aAAa,iCAAiC,aAAa,kCAAkC,gBAAgB,qCAAqC,gBAAgB,qCAAqC,aAAa,kCAAkC,cAAc,mCAAmC,gBAAgB,qCAAqC,YAAY,8BAA8B,sBAAsB,4CAA4C,UAAU,cAAc,aAAa,iCAAiC,gBAAgB,kCAAkC,eAAe,mCAAmC,aAAa,iCAAiC,eAAe,mCAAmC,aAAa,iCAAiC,cAAc,gCAAgC,YAAY,+BAA+B,MAAM,8CAA8C,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,kBAAkB,QAAQ,QAAQ,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,6CAA6C,OAAO,cAAc,OAAO,gBAAgB,EAAE,mCAAmC,OAAO,gBAAgB,EAAE,mBAAmB,wCAAwC,eAAe,QAAQ,QAAQ,cAAc,aAAa,2IAA2I,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,wCAAwC,oBAAoB,QAAQ,QAAQ,cAAc,MAAM,wBAAwB,iBAAiB,+DAA+D,kBAAkB,gEAAgE,SAAS,wBAAwB,UAAU,wCAAwC,YAAY,wCAAwC,WAAW,wCAAwC,aAAa,0BAA0B,UAAU,0BAA0B,SAAS,2BAA2B,QAAQ,+CAA+C,OAAO,cAAc,OAAO,gBAAgB,EAAE,qCAAqC,OAAO,gBAAgB,EAAE,qBAAqB,gBAAgB,8CAA8C,QAAQ,UAAU,YAAY,YAAY,cAAc,UAAU,cAAc,OAAO,4CAA4C,QAAQ,0CAA0C,QAAQ,cAAc,EAAE,yBAAyB,EAAE,4BAA4B,QAAQ,cAAc,oCAAoC,QAAQ,6BAA6B,QAAQ,2CAA2C,QAAQ,YAAY,SAAS,6GAA6G,EAAE,+BAA+B,QAAQ,cAAc,EAAE,+BAA+B,QAAQ,6GAA6G,EAAE,cAAc,EAAE,gCAAgC,QAAQ,OAAO,YAAY,OAAO,gBAAgB,QAAQ,iDAAiD,QAAQ,cAAc,EAAE,iBAAiB,gBAAgB,6BAA6B,QAAQ,kBAAkB,qCAAqC,kBAAkB,oCAAoC,SAAS,YAAY,SAAS,eAAe,QAAQ,4BAA4B,QAAQ,iEAAiE,QAAQ,aAAa,QAAQ,kEAAkE,QAAQ,YAAY,SAAS,sHAAsH,cAAc,6MAA6M,EAAE,iDAAiD,QAAQ,YAAY,SAAS,wHAAwH,EAAE,sDAAsD,QAAQ,sHAAsH,cAAc,6MAA6M,EAAE,qCAAqC,QAAQ,cAAc,EAAE,qCAAqC,QAAQ,wHAAwH,EAAE,oBAAoB,EAAE,iBAAiB,QAAQ,QAAQ,cAAc,UAAU,YAAY,aAAa,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,kBAAkB,oDAAoD,iBAAiB,qCAAqC,gBAAgB,oCAAoC,mBAAmB,uCAAuC,sBAAsB,0CAA0C,UAAU,cAAc,cAAc,wFAAwF,QAAQ,oDAAoD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,4CAA4C,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,YAAY,KAAK,QAAQ,kCAAkC,iBAAiB,QAAQ,QAAQ,wEAAwE,UAAU,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,gBAAgB,0BAA0B,mBAAmB,QAAQ,QAAQ,wEAAwE,UAAU,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,gBAAgB,0BAA0B,cAAc,QAAQ,QAAQ,cAAc,SAAS,gBAAgB,WAAW,gCAAgC,QAAQ,yCAAyC,UAAU,gBAAgB,EAAE,sBAAsB,uCAAuC,cAAc,QAAQ,UAAU,cAAc,kBAAkB,uCAAuC,kBAAkB,wEAAwE,KAAK,cAAc,UAAU,eAAe,SAAS,YAAY,kBAAkB,oCAAoC,OAAO,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,eAAe,iCAAiC,UAAU,eAAe,yBAAyB,+CAA+C,aAAa,cAAc,IAAI,cAAc,UAAU,YAAY,SAAS,gBAAgB,aAAa,0IAA0I,OAAO,cAAc,OAAO,YAAY,SAAS,cAAc,UAAU;AAC3v+B,EAAC,iBAAiB,mCAAmC,iBAAiB,mCAAmC,iBAAiB,qCAAqC,QAAQ,YAAY,eAAe,mCAAmC,cAAc,2FAA2F,cAAc,kCAAkC,cAAc,gCAAgC,UAAU,YAAY,cAAc,mCAAmC,UAAU,eAAe,aAAa,mCAAmC,QAAQ,yCAAyC,OAAO,YAAY,OAAO,cAAc,EAAE,+BAA+B,OAAO,cAAc,EAAE,eAAe,gBAAgB,oBAAoB,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,WAAW,+BAA+B,aAAa,cAAc,UAAU,cAAc,SAAS,eAAe,QAAQ,gDAAgD,OAAO,YAAY,OAAO,cAAc,EAAE,sCAAsC,OAAO,cAAc,EAAE,sBAAsB,gBAAgB,oBAAoB,QAAQ,YAAY,cAAc,UAAU,cAAc,QAAQ,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,gDAAgD,OAAO,cAAc,OAAO,gBAAgB,EAAE,sCAAsC,OAAO,gBAAgB,EAAE,sBAAsB,gBAAgB,sBAAsB,QAAQ,QAAQ,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,aAAa,cAAc,UAAU,YAAY,SAAS,gBAAgB,aAAa,2IAA2I,QAAQ,kDAAkD,OAAO,YAAY,OAAO,cAAc,EAAE,wCAAwC,OAAO,cAAc,EAAE,wBAAwB,gBAAgB,gDAAgD,QAAQ,eAAe,kCAAkC,oBAAoB,wDAAwD,MAAM,4DAA4D,YAAY,cAAc,WAAW,gBAAgB,eAAe,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,YAAY,SAAS,gBAAgB,MAAM,sCAAsC,YAAY,gBAAgB,2BAA2B,oCAAoC,QAAQ,eAAe,mCAAmC,MAAM,oDAAoD,YAAY,cAAc,WAAW,gBAAgB,iBAAiB,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,aAAa,MAAM,sCAAsC,YAAY,cAAc,iBAAiB,8BAA8B,QAAQ,eAAe,mCAAmC,MAAM,oDAAoD,YAAY,cAAc,WAAW,eAAe,wCAAwC,QAAQ,eAAe,kCAAkC,QAAQ,gBAAgB,QAAQ,sCAAsC,YAAY,cAAc,EAAE,iBAAiB,EAAE,kCAAkC,QAAQ,eAAe,kCAAkC,oBAAoB,wDAAwD,MAAM,6DAA6D,YAAY,cAAc,WAAW,gBAAgB,eAAe,iCAAiC,QAAQ,eAAe,mCAAmC,QAAQ,4DAA4D,YAAY,cAAc,WAAW,cAAc,EAAE,8CAA8C,YAAY,gBAAgB,EAAE,yBAAyB,EAAE,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,aAAa,MAAM,8CAA8C,YAAY,gBAAgB,eAAe,eAAe,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,aAAa,cAAc,UAAU,cAAc,SAAS,eAAe,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,4BAA4B,kBAAkB,QAAQ,QAAQ,cAAc,iBAAiB,+DAA+D,kBAAkB,gEAAgE,SAAS,wBAAwB,UAAU,wCAAwC,YAAY,wCAAwC,WAAW,wCAAwC,aAAa,0BAA0B,UAAU,0BAA0B,SAAS,2BAA2B,QAAQ,qDAAqD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,6CAA6C,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,cAAc,QAAQ,aAAa,2CAA2C,SAAS,YAAY,OAAO,cAAc,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,kBAAkB,uCAAuC,UAAU,cAAc,UAAU,WAAW,iBAAiB,iBAAiB,sCAAsC,UAAU,YAAY,YAAY,YAAY,MAAM,gBAAgB,UAAU,cAAc,cAAc,8DAA8D,MAAM,iDAAiD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,4BAA4B,sBAAsB,oBAAoB,EAAE,EAAE,sBAAsB,sBAAsB,4FAA4F,uEAAuE,QAAQ,aAAa,2CAA2C,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,OAAO,eAAe,QAAQ,uCAAuC,OAAO,cAAc,OAAO,gBAAgB,EAAE,6BAA6B,OAAO,gBAAgB,EAAE,aAAa,wCAAwC,uCAAuC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,mCAAmC,MAAM,cAAc,EAAE,oBAAoB,EAAE,gCAAgC,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,wCAAwC,QAAQ,cAAc,EAAE,uBAAuB,EAAE,2BAA2B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,kCAAkC,OAAO,cAAc,EAAE,kBAAkB,EAAE,+BAA+B,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,4BAA4B,SAAS,aAAa,QAAQ,uCAAuC,QAAQ,cAAc,EAAE,sBAAsB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,KAAK,4BAA4B,IAAI,6BAA6B,MAAM,oBAAoB,0BAA0B,QAAQ,MAAM,6BAA6B,MAAM,aAAa,6BAA6B,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,MAAM,4BAA4B,IAAI,6BAA6B,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,oBAAoB,2BAA2B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,mBAAmB,kCAAkC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,2BAA2B,6BAA6B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,qBAAqB,8BAA8B,QAAQ,OAAO,sCAAsC,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,EAAE,8BAA8B,QAAQ,GAAG,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,mCAAmC,OAAO,cAAc,EAAE,mBAAmB,EAAE,gCAAgC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,4BAA4B,SAAS,4CAA4C,MAAM,yBAAyB,mBAAmB,OAAO,yCAAyC,UAAU,cAAc,EAAE,sBAAsB,kBAAkB,mDAAmD,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,0BAA0B,gCAAgC,QAAQ,OAAO,uEAAuE,QAAQ,eAAe,gBAAgB,kCAAkC,UAAU,YAAY,sBAAsB,4CAA4C,eAAe,oCAAoC,0BAA0B,gDAAgD,gBAAgB,oFAAoF,QAAQ,uCAAuC,OAAO,gBAAgB,EAAE,uBAAuB,EAAE,sCAAsC,QAAQ,OAAO,eAAe,gBAAgB,mCAAmC,MAAM,+BAA+B,qCAAqC,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,yBAAyB,cAAc,iCAAiC,QAAQ,QAAQ,8BAA8B,UAAU,eAAe,SAAS,iGAAiG,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,wBAAwB,eAAe,+BAA+B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,eAAe,oCAAoC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,kDAAkD,QAAQ,iGAAiG,QAAQ,cAAc,EAAE,uCAAuC,QAAQ,mGAAmG,EAAE,sBAAsB,EAAE,+BAA+B,QAAQ,cAAc,oCAAoC,QAAQ,6BAA6B,QAAQ,6CAA6C,QAAQ,cAAc,EAAE,sBAAsB,EAAE,aAAa,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,WAAW,+BAA+B,aAAa,cAAc,UAAU,cAAc,SAAS,eAAe,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,gBAAgB,sBAAsB,QAAQ,QAAQ,cAAc,UAAU,YAAY,aAAa,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,iBAAiB,qCAAqC,gBAAgB,oCAAoC,UAAU,cAAc,cAAc,wFAAwF,QAAQ,0DAA0D,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,kDAAkD,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,iBAAiB,QAAQ,aAAa,2CAA2C,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,UAAU,cAAc,cAAc,wFAAwF,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,iBAAiB,qBAAqB,QAAQ,UAAU,cAAc,cAAc,2CAA2C,kBAAkB,wEAAwE,KAAK,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,cAAc,sDAAsD,IAAI,cAAc,UAAU,cAAc,SAAS,cAAc,UAAU,aAAa,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,8BAA8B,OAAO,cAAc,kBAAkB,oBAAoB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,gBAAgB,iBAAiB,sBAAsB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,gBAAgB,iBAAiB,cAAc,QAAQ,QAAQ,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,eAAe,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,eAAe,QAAQ,iBAAiB,uCAAuC,WAAW,cAAc,kBAAkB,wEAAwE,KAAK,cAAc,SAAS,YAAY,UAAU,eAAe,yBAAyB,+CAA+C,SAAS,cAAc,aAAa,cAAc,IAAI,cAAc,UAAU,cAAc,SAAS,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,oCAAoC,MAAM,kDAAkD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,WAAW,QAAQ,QAAQ,YAAY,SAAS,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,UAAU,cAAc,cAAc,wFAAwF,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,iBAAiB,iBAAiB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,iBAAiB,iBAAiB,QAAQ,QAAQ,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,UAAU,cAAc,cAAc,wFAAwF,MAAM,iDAAiD,OAAO,cAAc,OAAO,cAAc,KAAK,iBAAiB,mBAAmB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,iBAAiB,aAAa,QAAQ,aAAa,2CAA2C,SAAS,wEAAwE,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,YAAY,YAAY,MAAM,gBAAgB,UAAU,cAAc,cAAc,wFAAwF,QAAQ,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,iCAAiC,OAAO,cAAc,OAAO,gBAAgB,4BAA4B,+CAA+C,QAAQ,QAAQ,cAAc,WAAW,cAAc,cAAc,gCAAgC,QAAQ,cAAc,UAAU,YAAY,QAAQ,cAAc,cAAc,mCAAmC,OAAO,cAAc,YAAY,cAAc,SAAS,8DAA8D,QAAQ,gCAAgC,OAAO,gBAAgB,EAAE,gBAAgB,gBAAgB,oCAAoC,QAAQ,WAAW,iCAAiC,YAAY,eAAe,SAAS,YAAY,SAAS,eAAe,cAAc,mCAAmC,aAAa,kCAAkC,KAAK,eAAe,UAAU,+BAA+B,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,YAAY,WAAW,eAAe,aAAa,mCAAmC,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,gBAAgB,+BAA+B,QAAQ,SAAS,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,MAAM,8BAA8B,OAAO,gBAAgB,eAAe,gCAAgC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,uBAAuB,OAAO,gBAAgB,eAAe,mCAAmC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,uBAAuB,OAAO,cAAc,iBAAiB,qCAAqC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,wCAAwC,OAAO,YAAY,OAAO,cAAc,iBAAiB,uCAAuC,QAAQ,eAAe,mCAAmC,MAAM,0CAA0C,OAAO,YAAY,OAAO,cAAc,iBAAiB,wCAAwC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,gCAAgC,MAAM,gBAAgB,iBAAiB,sCAAsC,QAAQ,eAAe,kCAAkC,OAAO,aAAa,MAAM,yCAAyC,OAAO,YAAY,OAAO,cAAc,iBAAiB,gCAAgC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,MAAM,uBAAuB,OAAO,cAAc,eAAe,qCAAqC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,uGAAuG,QAAQ,gBAAgB,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,6BAA6B,MAAM,cAAc,EAAE,8BAA8B,OAAO,cAAc,gBAAgB,wCAAwC,QAAQ,eAAe,kCAAkC,QAAQ,gBAAgB,MAAM,gCAAgC,MAAM,gBAAgB,eAAe,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,MAAM,iCAAiC,OAAO,YAAY,OAAO,cAAc,eAAe,+BAA+B,QAAQ,OAAO,eAAe,gBAAgB,sCAAsC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,8BAA8B,OAAO,cAAc,EAAE,cAAc,gBAAgB,6BAA6B,QAAQ,OAAO,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,oCAAoC,OAAO,YAAY,UAAU,cAAc,EAAE,uBAAuB,OAAO,cAAc,EAAE,kCAAkC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,6BAA6B,MAAM,cAAc,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,EAAE,oCAAoC,QAAQ,SAAS,YAAY,QAAQ,gBAAgB,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,+BAA+B,MAAM,cAAc,EAAE,gBAAgB,EAAE,yCAAyC,QAAQ,iBAAiB,uCAAuC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,2DAA2D,OAAO,YAAY,OAAO,YAAY,QAAQ,cAAc,EAAE,iDAAiD,OAAO,YAAY,QAAQ,cAAc,EAAE,gDAAgD,MAAM,YAAY,QAAQ,cAAc,EAAE,sCAAsC,OAAO,cAAc,EAAE,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,+BAA+B,MAAM,cAAc,EAAE,gBAAgB,EAAE,qCAAqC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,uGAAuG,eAAe,oCAAoC,QAAQ,gBAAgB,QAAQ,2CAA2C,OAAO,YAAY,OAAO,cAAc,EAAE,iCAAiC,OAAO,cAAc,EAAE,gCAAgC,MAAM,cAAc,EAAE,iBAAiB,EAAE,qCAAqC,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,QAAQ,gBAAgB,QAAQ,gCAAgC,MAAM,gBAAgB,EAAE,iBAAiB,EAAE,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,6BAA6B,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,EAAE,mCAAmC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,mDAAmD,OAAO,YAAY,OAAO,YAAY,OAAO,cAAc,EAAE,yCAAyC,OAAO,YAAY,OAAO,cAAc,EAAE,+BAA+B,OAAO,cAAc,EAAE,8BAA8B,MAAM,cAAc,EAAE,eAAe,EAAE,8BAA8B,QAAQ,SAAS,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,+FAA+F,MAAM,6BAA6B,OAAO,gBAAgB,eAAe,kCAAkC,QAAQ,OAAO,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,iBAAiB,sCAAsC,qBAAqB,2CAA2C,qBAAqB,2BAA2B,eAAe,qCAAqC,QAAQ,gBAAgB,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,gBAAgB,kCAAkC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,wCAAwC,OAAO,YAAY,OAAO,gBAAgB,cAAc,oCAAoC,QAAQ,iBAAiB,uCAAuC,UAAU,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,0CAA0C,OAAO,YAAY,OAAO,gBAAgB,EAAE,+BAA+B,MAAM,gBAAgB,2BAA2B,qCAAqC,QAAQ,eAAe,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,eAAe,qCAAqC,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,2BAA2B,qCAAqC,QAAQ,OAAO,cAAc,SAAS,4BAA4B,UAAU,YAAY,gBAAgB,kCAAkC,eAAe,qCAAqC,MAAM,gCAAgC,MAAM,gBAAgB,0BAA0B,mCAAmC,QAAQ,eAAe,kCAAkC,oBAAoB;AAClu+B,EAAC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,mDAAmD,OAAO,YAAY,OAAO,YAAY,OAAO,gBAAgB,EAAE,yCAAyC,OAAO,YAAY,OAAO,gBAAgB,EAAE,8BAA8B,MAAM,gBAAgB,2BAA2B,kCAAkC,QAAQ,UAAU,4BAA4B,aAAa,+CAA+C,QAAQ,6BAA6B,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,EAAE,iCAAiC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,4BAA4B,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,gBAAgB,kCAAkC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,4BAA4B,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,EAAE,+BAA+B,QAAQ,kBAAkB,qCAAqC,kBAAkB,oCAAoC,SAAS,YAAY,SAAS,YAAY,QAAQ,4BAA4B,QAAQ,uEAAuE,QAAQ,aAAa,QAAQ,0CAA0C,OAAO,YAAY,SAAS,6MAA6M,EAAE,+BAA+B,QAAQ,6MAA6M,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,EAAE,gCAAgC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,2BAA2B,WAAW,eAAe,WAAW,gBAAgB,QAAQ,+BAA+B,OAAO,cAAc,EAAE,eAAe,EAAE,uCAAuC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,gBAAgB,2BAA2B,iCAAiC,QAAQ,gBAAgB,uCAAuC,kBAAkB,4FAA4F,oBAAoB,yCAAyC,oBAAoB,2CAA2C,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,gBAAgB,uCAAuC,QAAQ,SAAS,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,qBAAqB,2BAA2B,SAAS,cAAc,IAAI,eAAe,QAAQ,iDAAiD,OAAO,YAAY,OAAO,cAAc,EAAE,uCAAuC,OAAO,cAAc,EAAE,uBAAuB,gBAAgB,YAAY,KAAK,SAAS,YAAY,QAAQ,QAAQ,cAAc,SAAS,YAAY,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,oCAAoC,QAAQ,uCAAuC,OAAO,cAAc,OAAO,gBAAgB,EAAE,6BAA6B,OAAO,gBAAgB,EAAE,aAAa,4BAA4B,WAAW,QAAQ,QAAQ,cAAc,aAAa,iCAAiC,aAAa,kCAAkC,gBAAgB,qCAAqC,gBAAgB,qCAAqC,aAAa,kCAAkC,cAAc,mCAAmC,gBAAgB,qCAAqC,YAAY,8BAA8B,sBAAsB,4CAA4C,UAAU,cAAc,aAAa,iCAAiC,gBAAgB,kCAAkC,eAAe,mCAAmC,aAAa,iCAAiC,eAAe,mCAAmC,aAAa,iCAAiC,cAAc,gCAAgC,YAAY,+BAA+B,MAAM,8CAA8C,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,kBAAkB,QAAQ,QAAQ,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,6CAA6C,OAAO,cAAc,OAAO,gBAAgB,EAAE,mCAAmC,OAAO,gBAAgB,EAAE,mBAAmB,wCAAwC,eAAe,QAAQ,QAAQ,cAAc,aAAa,2IAA2I,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,wCAAwC,oBAAoB,QAAQ,QAAQ,cAAc,MAAM,wBAAwB,iBAAiB,+DAA+D,kBAAkB,gEAAgE,SAAS,wBAAwB,UAAU,wCAAwC,YAAY,wCAAwC,WAAW,wCAAwC,aAAa,0BAA0B,UAAU,0BAA0B,SAAS,0BAA0B,WAAW,4BAA4B,QAAQ,+CAA+C,OAAO,cAAc,OAAO,gBAAgB,EAAE,qCAAqC,OAAO,gBAAgB,EAAE,qBAAqB,gBAAgB,8CAA8C,QAAQ,UAAU,YAAY,YAAY,cAAc,UAAU,cAAc,oBAAoB,0CAA0C,OAAO,4CAA4C,QAAQ,0CAA0C,QAAQ,cAAc,EAAE,yBAAyB,EAAE,4BAA4B,QAAQ,cAAc,oCAAoC,QAAQ,6BAA6B,QAAQ,2CAA2C,QAAQ,YAAY,SAAS,6GAA6G,EAAE,+BAA+B,QAAQ,cAAc,EAAE,+BAA+B,QAAQ,6GAA6G,EAAE,cAAc,EAAE,gCAAgC,QAAQ,OAAO,YAAY,OAAO,gBAAgB,QAAQ,iDAAiD,QAAQ,cAAc,EAAE,iBAAiB,gBAAgB,6BAA6B,QAAQ,kBAAkB,qCAAqC,kBAAkB,oCAAoC,SAAS,YAAY,SAAS,eAAe,QAAQ,4BAA4B,QAAQ,iEAAiE,QAAQ,aAAa,QAAQ,kEAAkE,QAAQ,YAAY,SAAS,sHAAsH,cAAc,6MAA6M,EAAE,iDAAiD,QAAQ,YAAY,SAAS,wHAAwH,EAAE,sDAAsD,QAAQ,sHAAsH,cAAc,6MAA6M,EAAE,qCAAqC,QAAQ,cAAc,EAAE,qCAAqC,QAAQ,wHAAwH,EAAE,oBAAoB,EAAE,iBAAiB,QAAQ,QAAQ,cAAc,UAAU,YAAY,aAAa,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,kBAAkB,oDAAoD,iBAAiB,qCAAqC,gBAAgB,oCAAoC,mBAAmB,uCAAuC,sBAAsB,0CAA0C,UAAU,cAAc,cAAc,wFAAwF,QAAQ,oDAAoD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,4CAA4C,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,YAAY,KAAK,QAAQ,kCAAkC,iBAAiB,QAAQ,QAAQ,wEAAwE,UAAU,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,gBAAgB,0BAA0B,mBAAmB,QAAQ,QAAQ,wEAAwE,UAAU,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,gBAAgB,0BAA0B,cAAc,QAAQ,QAAQ,cAAc,SAAS,gBAAgB,WAAW,gCAAgC,QAAQ,yCAAyC,UAAU,gBAAgB,EAAE,sBAAsB,uCAAuC,cAAc,QAAQ,UAAU,cAAc,kBAAkB,uCAAuC,kBAAkB,wEAAwE,KAAK,cAAc,UAAU,eAAe,SAAS,YAAY,kBAAkB,oCAAoC,OAAO,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,eAAe,iCAAiC,UAAU,eAAe,yBAAyB,+CAA+C,aAAa,cAAc,IAAI,cAAc,UAAU,YAAY,SAAS,gBAAgB,aAAa,0IAA0I,OAAO,cAAc,OAAO,YAAY,SAAS,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,QAAQ,YAAY,eAAe,mCAAmC,cAAc,2FAA2F,cAAc,kCAAkC,cAAc,gCAAgC,UAAU,YAAY,cAAc,mCAAmC,UAAU,eAAe,aAAa,mCAAmC,QAAQ,yCAAyC,OAAO,YAAY,OAAO,cAAc,EAAE,+BAA+B,OAAO,cAAc,EAAE,eAAe,gBAAgB,oBAAoB,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,WAAW,+BAA+B,aAAa,cAAc,UAAU,cAAc,SAAS,eAAe,QAAQ,gDAAgD,OAAO,YAAY,OAAO,cAAc,EAAE,sCAAsC,OAAO,cAAc,EAAE,sBAAsB,gBAAgB,oBAAoB,QAAQ,YAAY,cAAc,UAAU,cAAc,QAAQ,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,gDAAgD,OAAO,cAAc,OAAO,gBAAgB,EAAE,sCAAsC,OAAO,gBAAgB,EAAE,sBAAsB,gBAAgB,sBAAsB,QAAQ,QAAQ,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,aAAa,cAAc,UAAU,YAAY,SAAS,gBAAgB,aAAa,2IAA2I,QAAQ,kDAAkD,OAAO,YAAY,OAAO,cAAc,EAAE,wCAAwC,OAAO,cAAc,EAAE,wBAAwB,gBAAgB,gDAAgD,QAAQ,eAAe,kCAAkC,oBAAoB,wDAAwD,MAAM,4DAA4D,YAAY,cAAc,WAAW,gBAAgB,eAAe,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,YAAY,SAAS,gBAAgB,MAAM,sCAAsC,YAAY,gBAAgB,2BAA2B,oCAAoC,QAAQ,eAAe,mCAAmC,MAAM,oDAAoD,YAAY,cAAc,WAAW,gBAAgB,iBAAiB,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,aAAa,MAAM,sCAAsC,YAAY,cAAc,iBAAiB,8BAA8B,QAAQ,eAAe,mCAAmC,MAAM,oDAAoD,YAAY,cAAc,WAAW,eAAe,wCAAwC,QAAQ,eAAe,kCAAkC,QAAQ,gBAAgB,QAAQ,sCAAsC,YAAY,cAAc,EAAE,iBAAiB,EAAE,kCAAkC,QAAQ,eAAe,kCAAkC,oBAAoB,wDAAwD,MAAM,6DAA6D,YAAY,cAAc,WAAW,gBAAgB,eAAe,iCAAiC,QAAQ,eAAe,mCAAmC,QAAQ,4DAA4D,YAAY,cAAc,WAAW,cAAc,EAAE,8CAA8C,YAAY,gBAAgB,EAAE,yBAAyB,EAAE,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,aAAa,MAAM,8CAA8C,YAAY,gBAAgB,eAAe,eAAe,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,aAAa,cAAc,UAAU,cAAc,SAAS,eAAe,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,4BAA4B,kBAAkB,QAAQ,QAAQ,cAAc,iBAAiB,+DAA+D,kBAAkB,gEAAgE,SAAS,wBAAwB,UAAU,wCAAwC,YAAY,wCAAwC,WAAW,wCAAwC,aAAa,0BAA0B,UAAU,0BAA0B,SAAS,0BAA0B,WAAW,4BAA4B,QAAQ,qDAAqD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,6CAA6C,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,cAAc,QAAQ,aAAa,2CAA2C,SAAS,YAAY,OAAO,cAAc,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,kBAAkB,uCAAuC,UAAU,cAAc,UAAU,WAAW,iBAAiB,iBAAiB,sCAAsC,UAAU,YAAY,YAAY,YAAY,MAAM,gBAAgB,UAAU,cAAc,cAAc,8DAA8D,MAAM,iDAAiD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,4BAA4B,sBAAsB,oBAAoB,EAAE,EAAE,sBAAsB,sBAAsB,gEAAgE,8BAA8B,QAAQ,YAAY,iCAAiC,EAAE,0DAA0D,uEAAuE,QAAQ,aAAa,2CAA2C,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,OAAO,eAAe,QAAQ,uCAAuC,OAAO,cAAc,OAAO,gBAAgB,EAAE,6BAA6B,OAAO,gBAAgB,EAAE,aAAa,wCAAwC,uCAAuC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,mCAAmC,MAAM,cAAc,EAAE,oBAAoB,EAAE,gCAAgC,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,wCAAwC,QAAQ,cAAc,EAAE,uBAAuB,EAAE,2BAA2B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,kCAAkC,OAAO,cAAc,EAAE,kBAAkB,EAAE,+BAA+B,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,4BAA4B,SAAS,aAAa,QAAQ,uCAAuC,QAAQ,cAAc,EAAE,sBAAsB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,KAAK,4BAA4B,IAAI,6BAA6B,MAAM,oBAAoB,0BAA0B,QAAQ,MAAM,6BAA6B,MAAM,aAAa,6BAA6B,QAAQ,OAAO,sCAAsC,QAAQ,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,MAAM,4BAA4B,IAAI,6BAA6B,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,oBAAoB,2BAA2B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,mBAAmB,kCAAkC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,2BAA2B,6BAA6B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,MAAM,qBAAqB,8BAA8B,QAAQ,OAAO,sCAAsC,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,EAAE,8BAA8B,QAAQ,GAAG,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,EAAE,4BAA4B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,6BAA6B,QAAQ,mCAAmC,OAAO,cAAc,EAAE,mBAAmB,EAAE,gCAAgC,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,IAAI,YAAY,OAAO,4BAA4B,IAAI,4BAA4B,SAAS,4CAA4C,MAAM,yBAAyB,mBAAmB,OAAO,yCAAyC,UAAU,cAAc,EAAE,sBAAsB,kBAAkB,mDAAmD,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,0BAA0B,gCAAgC,QAAQ,OAAO,uEAAuE,QAAQ,eAAe,gBAAgB,kCAAkC,UAAU,YAAY,sBAAsB,4CAA4C,eAAe,oCAAoC,0BAA0B,gDAAgD,gBAAgB,oFAAoF,QAAQ,uCAAuC,OAAO,gBAAgB,EAAE,uBAAuB,EAAE,sCAAsC,QAAQ,OAAO,eAAe,gBAAgB,mCAAmC,MAAM,+BAA+B,qCAAqC,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,yBAAyB,cAAc,iCAAiC,QAAQ,QAAQ,8BAA8B,UAAU,eAAe,SAAS,iGAAiG,gBAAgB,kCAAkC,UAAU,aAAa,MAAM,wBAAwB,eAAe,+BAA+B,QAAQ,OAAO,eAAe,gBAAgB,kCAAkC,eAAe,oCAAoC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,kDAAkD,QAAQ,iHAAiH,QAAQ,cAAc,EAAE,uCAAuC,QAAQ,mHAAmH,EAAE,sBAAsB,EAAE,+BAA+B,QAAQ,cAAc,oCAAoC,QAAQ,6BAA6B,QAAQ,6CAA6C,QAAQ,cAAc,EAAE,sBAAsB,EAAE,aAAa,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,WAAW,+BAA+B,aAAa,cAAc,UAAU,cAAc,IAAI,cAAc,WAAW,cAAc,kBAAkB,uCAAuC,kBAAkB,wEAAwE,KAAK,cAAc,UAAU,eAAe,yBAAyB,gDAAgD,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,gBAAgB,sBAAsB,QAAQ,SAAS,YAAY,aAAa,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,iBAAiB,qCAAqC,gBAAgB,oCAAoC,UAAU,cAAc,cAAc,wFAAwF,QAAQ,0DAA0D,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,kDAAkD,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,iBAAiB,QAAQ,aAAa,2CAA2C,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,UAAU,cAAc,cAAc,wFAAwF,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,iBAAiB,qBAAqB,QAAQ,UAAU,cAAc,cAAc,2CAA2C,kBAAkB,wEAAwE,KAAK,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,cAAc,sDAAsD,IAAI,cAAc,UAAU,cAAc,UAAU,aAAa,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,8BAA8B,OAAO,cAAc,kBAAkB,oBAAoB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,gBAAgB,iBAAiB,sBAAsB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,gBAAgB,iBAAiB,cAAc,QAAQ,QAAQ,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,eAAe,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,eAAe,QAAQ,iBAAiB,uCAAuC,WAAW,cAAc,kBAAkB,wEAAwE,KAAK,cAAc,SAAS,YAAY,UAAU,eAAe,yBAAyB,+CAA+C,SAAS,cAAc,aAAa,cAAc,IAAI,cAAc,UAAU,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,oCAAoC,MAAM,kDAAkD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,kBAAkB,QAAQ,QAAQ,YAAY,QAAQ,8DAA8D,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,gBAAgB,WAAW,QAAQ,QAAQ,YAAY,SAAS,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,cAAc,UAAU;AAC1v+B,EAAC,iBAAiB,mCAAmC,iBAAiB,mCAAmC,UAAU,cAAc,cAAc,wFAAwF,MAAM,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,iBAAiB,iBAAiB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,iBAAiB,iBAAiB,QAAQ,QAAQ,cAAc,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,cAAc,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,UAAU,cAAc,cAAc,wFAAwF,MAAM,iDAAiD,OAAO,cAAc,OAAO,cAAc,KAAK,iBAAiB,mBAAmB,QAAQ,SAAS,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,iBAAiB,aAAa,QAAQ,aAAa,2CAA2C,SAAS,wEAAwE,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,UAAU,cAAc,UAAU,YAAY,YAAY,YAAY,MAAM,gBAAgB,UAAU,cAAc,cAAc,wFAAwF,QAAQ,yCAAyC,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,iCAAiC,OAAO,cAAc,OAAO,gBAAgB,4BAA4B,+CAA+C,QAAQ,UAAU,cAAc,cAAc,gCAAgC,QAAQ,cAAc,UAAU,YAAY,QAAQ,cAAc,cAAc,mCAAmC,OAAO,cAAc,YAAY,cAAc,SAAS,8DAA8D,QAAQ,gCAAgC,OAAO,gBAAgB,EAAE,gBAAgB,gBAAgB,oCAAoC,QAAQ,WAAW,iCAAiC,YAAY,eAAe,SAAS,YAAY,SAAS,eAAe,cAAc,mCAAmC,aAAa,kCAAkC,KAAK,eAAe,UAAU,+BAA+B,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,YAAY,WAAW,eAAe,aAAa,mCAAmC,QAAQ,oCAAoC,OAAO,cAAc,EAAE,oBAAoB,gBAAgB,+BAA+B,QAAQ,SAAS,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,MAAM,8BAA8B,OAAO,gBAAgB,eAAe,gCAAgC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,uBAAuB,OAAO,gBAAgB,eAAe,mCAAmC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,uBAAuB,OAAO,cAAc,iBAAiB,qCAAqC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,wCAAwC,OAAO,YAAY,OAAO,cAAc,iBAAiB,uCAAuC,QAAQ,eAAe,mCAAmC,MAAM,0CAA0C,OAAO,YAAY,OAAO,cAAc,iBAAiB,wCAAwC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,gCAAgC,MAAM,gBAAgB,iBAAiB,sCAAsC,QAAQ,eAAe,kCAAkC,OAAO,aAAa,MAAM,yCAAyC,OAAO,YAAY,OAAO,cAAc,iBAAiB,gCAAgC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,MAAM,uBAAuB,OAAO,cAAc,eAAe,qCAAqC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,uGAAuG,QAAQ,gBAAgB,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,6BAA6B,MAAM,cAAc,EAAE,8BAA8B,OAAO,cAAc,gBAAgB,wCAAwC,QAAQ,eAAe,kCAAkC,QAAQ,gBAAgB,MAAM,gCAAgC,MAAM,gBAAgB,eAAe,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,MAAM,iCAAiC,OAAO,YAAY,OAAO,cAAc,eAAe,+BAA+B,QAAQ,OAAO,eAAe,gBAAgB,sCAAsC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,8BAA8B,OAAO,cAAc,EAAE,cAAc,gBAAgB,qCAAqC,OAAO,qCAAqC,OAAO,cAAc,EAAE,qBAAqB,gBAAgB,6BAA6B,QAAQ,OAAO,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,oCAAoC,OAAO,YAAY,UAAU,cAAc,EAAE,uBAAuB,OAAO,cAAc,EAAE,kCAAkC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,wCAAwC,OAAO,YAAY,OAAO,cAAc,EAAE,6BAA6B,MAAM,cAAc,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,EAAE,oCAAoC,QAAQ,SAAS,YAAY,QAAQ,gBAAgB,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,+BAA+B,MAAM,cAAc,EAAE,gBAAgB,EAAE,yCAAyC,QAAQ,iBAAiB,uCAAuC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,2DAA2D,OAAO,YAAY,OAAO,YAAY,QAAQ,cAAc,EAAE,iDAAiD,OAAO,YAAY,QAAQ,cAAc,EAAE,gDAAgD,MAAM,YAAY,QAAQ,cAAc,EAAE,sCAAsC,OAAO,cAAc,EAAE,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,+BAA+B,MAAM,cAAc,EAAE,gBAAgB,EAAE,qCAAqC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,uGAAuG,eAAe,oCAAoC,QAAQ,gBAAgB,QAAQ,2CAA2C,OAAO,YAAY,OAAO,cAAc,EAAE,iCAAiC,OAAO,cAAc,EAAE,gCAAgC,MAAM,cAAc,EAAE,iBAAiB,EAAE,qCAAqC,QAAQ,cAAc,oCAAoC,gBAAgB,kCAAkC,QAAQ,gBAAgB,QAAQ,gCAAgC,MAAM,gBAAgB,EAAE,iBAAiB,EAAE,oCAAoC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,6BAA6B,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,EAAE,mCAAmC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,gBAAgB,QAAQ,mDAAmD,OAAO,YAAY,OAAO,YAAY,OAAO,cAAc,EAAE,yCAAyC,OAAO,YAAY,OAAO,cAAc,EAAE,+BAA+B,OAAO,cAAc,EAAE,8BAA8B,MAAM,cAAc,EAAE,eAAe,EAAE,8BAA8B,QAAQ,SAAS,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,+FAA+F,MAAM,6BAA6B,OAAO,gBAAgB,eAAe,kCAAkC,QAAQ,OAAO,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,iBAAiB,sCAAsC,qBAAqB,2CAA2C,qBAAqB,2BAA2B,eAAe,qCAAqC,QAAQ,gBAAgB,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,gBAAgB,kCAAkC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,wCAAwC,OAAO,YAAY,OAAO,gBAAgB,cAAc,oCAAoC,QAAQ,iBAAiB,uCAAuC,UAAU,YAAY,gBAAgB,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,0CAA0C,OAAO,YAAY,OAAO,gBAAgB,EAAE,+BAA+B,MAAM,gBAAgB,2BAA2B,qCAAqC,QAAQ,eAAe,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,eAAe,qCAAqC,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,2BAA2B,qCAAqC,QAAQ,OAAO,cAAc,SAAS,4BAA4B,UAAU,YAAY,gBAAgB,kCAAkC,eAAe,qCAAqC,MAAM,gCAAgC,MAAM,gBAAgB,0BAA0B,mCAAmC,QAAQ,eAAe,kCAAkC,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,mDAAmD,OAAO,YAAY,OAAO,YAAY,OAAO,gBAAgB,EAAE,yCAAyC,OAAO,YAAY,OAAO,gBAAgB,EAAE,8BAA8B,MAAM,gBAAgB,2BAA2B,kCAAkC,QAAQ,UAAU,4BAA4B,aAAa,+CAA+C,QAAQ,6BAA6B,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,EAAE,iCAAiC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,4BAA4B,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,gBAAgB,kCAAkC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,4BAA4B,QAAQ,iCAAiC,OAAO,cAAc,EAAE,iBAAiB,EAAE,+BAA+B,QAAQ,kBAAkB,qCAAqC,kBAAkB,oCAAoC,SAAS,YAAY,SAAS,YAAY,QAAQ,4BAA4B,QAAQ,uEAAuE,QAAQ,aAAa,QAAQ,0CAA0C,OAAO,YAAY,SAAS,6MAA6M,EAAE,+BAA+B,QAAQ,6MAA6M,EAAE,8BAA8B,OAAO,cAAc,EAAE,cAAc,EAAE,gCAAgC,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,QAAQ,4BAA4B,qBAAqB,2BAA2B,WAAW,eAAe,WAAW,gBAAgB,QAAQ,+BAA+B,OAAO,cAAc,EAAE,eAAe,EAAE,uCAAuC,QAAQ,SAAS,YAAY,gBAAgB,mCAAmC,MAAM,gBAAgB,2BAA2B,iCAAiC,QAAQ,gBAAgB,uCAAuC,kBAAkB,4FAA4F,oBAAoB,yCAAyC,oBAAoB,0CAA0C,sBAAsB,6CAA6C,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,gBAAgB,uCAAuC,QAAQ,SAAS,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,qBAAqB,2BAA2B,IAAI,cAAc,WAAW,cAAc,kBAAkB,uCAAuC,kBAAkB,wEAAwE,KAAK,cAAc,UAAU,eAAe,yBAAyB,gDAAgD,QAAQ,iDAAiD,OAAO,YAAY,OAAO,cAAc,EAAE,uCAAuC,OAAO,cAAc,EAAE,uBAAuB,gBAAgB,YAAY,KAAK,SAAS,YAAY,QAAQ,QAAQ,YAAY,aAAa,cAAc,WAAW,eAAe,UAAU,eAAe,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,oCAAoC,QAAQ,uCAAuC,OAAO,cAAc,OAAO,gBAAgB,EAAE,6BAA6B,OAAO,gBAAgB,EAAE,aAAa,4BAA4B,WAAW,QAAQ,YAAY,iCAAiC,aAAa,kCAAkC,gBAAgB,qCAAqC,gBAAgB,qCAAqC,aAAa,kCAAkC,cAAc,mCAAmC,gBAAgB,qCAAqC,YAAY,8BAA8B,sBAAsB,4CAA4C,UAAU,cAAc,aAAa,iCAAiC,gBAAgB,kCAAkC,eAAe,mCAAmC,aAAa,iCAAiC,eAAe,mCAAmC,aAAa,iCAAiC,cAAc,gCAAgC,YAAY,+BAA+B,MAAM,8CAA8C,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,kBAAkB,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,6CAA6C,OAAO,cAAc,OAAO,gBAAgB,EAAE,mCAAmC,OAAO,gBAAgB,EAAE,mBAAmB,wCAAwC,eAAe,QAAQ,YAAY,2IAA2I,QAAQ,0CAA0C,OAAO,YAAY,OAAO,cAAc,EAAE,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,wCAAwC,oBAAoB,QAAQ,KAAK,wBAAwB,iBAAiB,+DAA+D,kBAAkB,gEAAgE,SAAS,wBAAwB,UAAU,wCAAwC,YAAY,wCAAwC,WAAW,wCAAwC,aAAa,0BAA0B,UAAU,0BAA0B,SAAS,0BAA0B,WAAW,4BAA4B,QAAQ,+CAA+C,OAAO,cAAc,OAAO,gBAAgB,EAAE,qCAAqC,OAAO,gBAAgB,EAAE,qBAAqB,gBAAgB,8CAA8C,QAAQ,UAAU,YAAY,YAAY,cAAc,UAAU,cAAc,oBAAoB,0CAA0C,OAAO,4CAA4C,QAAQ,0CAA0C,QAAQ,cAAc,EAAE,yBAAyB,EAAE,4BAA4B,QAAQ,cAAc,oCAAoC,QAAQ,6BAA6B,QAAQ,2CAA2C,QAAQ,YAAY,SAAS,6GAA6G,EAAE,+BAA+B,QAAQ,cAAc,EAAE,+BAA+B,QAAQ,6GAA6G,EAAE,cAAc,EAAE,gCAAgC,QAAQ,OAAO,YAAY,OAAO,gBAAgB,QAAQ,iDAAiD,QAAQ,cAAc,EAAE,iBAAiB,gBAAgB,6BAA6B,QAAQ,kBAAkB,qCAAqC,kBAAkB,oCAAoC,SAAS,YAAY,SAAS,eAAe,QAAQ,4BAA4B,QAAQ,iEAAiE,QAAQ,aAAa,QAAQ,kEAAkE,QAAQ,YAAY,SAAS,sHAAsH,cAAc,6MAA6M,EAAE,iDAAiD,QAAQ,YAAY,SAAS,wHAAwH,EAAE,sDAAsD,QAAQ,sHAAsH,cAAc,6MAA6M,EAAE,qCAAqC,QAAQ,cAAc,EAAE,qCAAqC,QAAQ,wHAAwH,EAAE,oBAAoB,EAAE,iBAAiB,QAAQ,SAAS,YAAY,aAAa,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,kBAAkB,oDAAoD,iBAAiB,qCAAqC,gBAAgB,oCAAoC,mBAAmB,uCAAuC,sBAAsB,0CAA0C,UAAU,cAAc,cAAc,wFAAwF,QAAQ,oDAAoD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,4CAA4C,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,YAAY,KAAK,QAAQ,kCAAkC,iBAAiB,QAAQ,QAAQ,wEAAwE,UAAU,cAAc,cAAc,wFAAwF,MAAM,uCAAuC,MAAM,cAAc,KAAK,gBAAgB,0BAA0B,mBAAmB,QAAQ,QAAQ,wEAAwE,UAAU,cAAc,cAAc,wFAAwF,MAAM,qCAAqC,IAAI,gBAAgB,0BAA0B,cAAc,QAAQ,QAAQ,gBAAgB,WAAW,gCAAgC,QAAQ,yCAAyC,UAAU,gBAAgB,EAAE,sBAAsB,uCAAuC,cAAc,QAAQ,UAAU,cAAc,kBAAkB,uCAAuC,kBAAkB,wEAAwE,KAAK,cAAc,UAAU,eAAe,SAAS,YAAY,kBAAkB,oCAAoC,OAAO,cAAc,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,UAAU,eAAe,yBAAyB,+CAA+C,aAAa,cAAc,IAAI,cAAc,UAAU,YAAY,SAAS,gBAAgB,aAAa,0IAA0I,OAAO,cAAc,OAAO,YAAY,UAAU,YAAY,iBAAiB,mCAAmC,iBAAiB,mCAAmC,QAAQ,YAAY,eAAe,mCAAmC,cAAc,2FAA2F,cAAc,kCAAkC,cAAc,gCAAgC,UAAU,YAAY,cAAc,mCAAmC,UAAU,eAAe,aAAa,mCAAmC,QAAQ,yCAAyC,OAAO,YAAY,OAAO,cAAc,EAAE,+BAA+B,OAAO,cAAc,EAAE,eAAe,gBAAgB,oBAAoB,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,WAAW,+BAA+B,aAAa,cAAc,UAAU,cAAc,IAAI,cAAc,WAAW,cAAc,kBAAkB,uCAAuC,kBAAkB,wEAAwE,KAAK,cAAc,UAAU,eAAe,yBAAyB,gDAAgD,QAAQ,gDAAgD,OAAO,YAAY,OAAO,cAAc,EAAE,sCAAsC,OAAO,cAAc,EAAE,sBAAsB,gBAAgB,oBAAoB,QAAQ,YAAY,cAAc,UAAU,cAAc,QAAQ,eAAe,oBAAoB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,6FAA6F,QAAQ,gDAAgD,OAAO,cAAc,OAAO,gBAAgB,EAAE,sCAAsC,OAAO,gBAAgB,EAAE,sBAAsB,gBAAgB,sBAAsB,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,aAAa,cAAc,UAAU,YAAY,SAAS,gBAAgB,aAAa,2IAA2I,QAAQ,kDAAkD,OAAO,YAAY,OAAO,cAAc,EAAE,wCAAwC,OAAO,cAAc,EAAE,wBAAwB,gBAAgB,gDAAgD,QAAQ,eAAe,kCAAkC,oBAAoB,wDAAwD,MAAM,4DAA4D,YAAY,cAAc,WAAW,gBAAgB,eAAe,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,YAAY,SAAS,gBAAgB,MAAM,sCAAsC,YAAY,gBAAgB,2BAA2B,oCAAoC,QAAQ,eAAe,mCAAmC,MAAM,oDAAoD,YAAY,cAAc,WAAW,gBAAgB,iBAAiB,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,aAAa,MAAM,sCAAsC,YAAY,cAAc,iBAAiB,8BAA8B,QAAQ,eAAe,mCAAmC,MAAM,oDAAoD,YAAY,cAAc,WAAW,eAAe,wCAAwC,QAAQ,eAAe,kCAAkC,QAAQ,gBAAgB,QAAQ,sCAAsC,YAAY,cAAc,EAAE,iBAAiB,EAAE,kCAAkC,QAAQ,eAAe,kCAAkC,oBAAoB,wDAAwD,MAAM,6DAA6D,YAAY,cAAc,WAAW,gBAAgB,eAAe,iCAAiC,QAAQ,eAAe,mCAAmC,QAAQ,4DAA4D,YAAY,cAAc,WAAW,cAAc,EAAE,8CAA8C,YAAY,gBAAgB,EAAE,yBAAyB,EAAE,2CAA2C,QAAQ,eAAe,kCAAkC,UAAU,aAAa,MAAM;AAC3v+B,MAAK,YAAY,gBAAgB,eAAe,eAAe,QAAQ,mBAAmB,yCAAyC,iBAAiB,uCAAuC,kBAAkB,4FAA4F,aAAa,cAAc,UAAU,eAAe,QAAQ,gCAAgC,OAAO,cAAc,EAAE,gBAAgB,4BAA4B,kBAAkB,QAAQ,gBAAgB,+DAA+D,kBAAkB,gEAAgE,SAAS,wBAAwB,UAAU,wCAAwC,YAAY,wCAAwC,WAAW,wCAAwC,aAAa,0BAA0B,UAAU,0BAA0B,SAAS,0BAA0B,WAAW,4BAA4B,QAAQ,qDAAqD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,EAAE,6CAA6C,OAAO,cAAc,OAAO,gBAAgB,gBAAgB,cAAc,QAAQ,aAAa,2CAA2C,SAAS,YAAY,OAAO,cAAc,SAAS,cAAc,UAAU,eAAe,cAAc,sDAAsD,kBAAkB,uCAAuC,UAAU,cAAc,UAAU,WAAW,iBAAiB,iBAAiB,sCAAsC,UAAU,YAAY,YAAY,YAAY,MAAM,gBAAgB,UAAU,cAAc,cAAc,8DAA8D,MAAM,iDAAiD,OAAO,cAAc,OAAO,cAAc,KAAK,gBAAgB,eAAe,4BAA4B,sBAAsB,oBAAoB,EAAE,EAAE,oCAAoC,sBAAsB,WAAW,8CAA8C,EAAE,iCAAiC,sBAAsB,cAAc,aAAa,mHAAmH,uBAAuB,0DAA0D,uEAAuE,+BAA+B,UAAU,6JAA6J,qJAAqJ,QAAQ,qFAAqF,SAAS,+XAA+X,KAAK,SAAS,YAAY,6DAA6D,mBAAmB,EAAE,mQAAmQ,sBAAsB,cAAc,gBAAgB,kBAAkB,gBAAgB,8BAA8B,UAAU,gCAAgC,IAAI,wCAAwC,SAAS,yBAAyB,6BAA6B,6BAA6B,iBAAiB,qDAAqD,yCAAyC,6BAA6B,qBAAqB,oCAAoC,UAAU,8EAA8E,GAAG,gBAAgB,aAAa,gEAAgE,wBAAwB,KAAK,iEAAiE,6DAA6D,gEAAgE,wBAAwB,0HAA0H,2FAA2F,uCAAuC,GAAG,GAAG,oBAAoB,SAAS,gBAAgB,MAAM,2MAA2M,4FAA4F,aAAa,0CAA0C,KAAK,YAAY,qCAAqC,2GAA2G,mGAAmG,sBAAsB,MAAM,4DAA4D,2DAA2D,MAAM,kDAAkD,MAAM,4CAA4C,MAAM,0BAA0B,mJAAmJ,QAAQ,4BAA4B,yHAAyH,gCAAgC,cAAc,oCAAoC,gBAAgB,EAAE,mBAAmB,oHAAoH,+BAA+B,cAAc,iBAAiB,yCAAyC,OAAO,yBAAyB,oFAAoF,gBAAgB,YAAY,YAAY,mBAAmB,2CAA2C,gHAAgH,0BAA0B,4CAA4C,6GAA6G,sBAAsB,iBAAiB,sCAAsC,oBAAoB,gDAAgD,4GAA4G,yBAAyB,oEAAoE,wBAAwB,6BAA6B,yDAAyD,wBAAwB,iBAAiB,qCAAqC,kEAAkE,sBAAsB,+BAA+B,6BAA6B,0CAA0C,oEAAoE,EAAE,aAAa,sBAAsB,gBAAgB,UAAU,+GAA+G,yDAAyD,qCAAqC,YAAY,yFAAyF,+CAA+C,2EAA2E,gCAAgC,gEAAgE,6BAA6B,2FAA2F,EAAE,uBAAuB,cAAc,6BAA6B,8BAA8B,qEAAqE,KAAK,mCAAmC,kBAAkB,wFAAwF,EAAE,2DAA2D,sBAAsB,cAAc,OAAO,yfAAyf,cAAc,iBAAiB,mBAAmB,gCAAgC,YAAY,gCAAgC,sNAAsN,mBAAmB,SAAS,2BAA2B,6DAA6D,gCAAgC,yFAAyF,SAAS,sDAAsD,SAAS,KAAK,8EAA8E,mDAAmD,8FAA8F,sMAAsM,+CAA+C,cAAc,wBAAwB,mCAAmC,wEAAwE,OAAO,6CAA6C,MAAM,MAAM,YAAY,wBAAwB,mCAAmC,oBAAoB,OAAO,QAAQ,oCAAoC,+BAA+B,4DAA4D,GAAG,wBAAwB,yBAAyB,uDAAuD,8CAA8C,+CAA+C,kDAAkD,wBAAwB,gBAAgB,iEAAiE,wFAAwF,4CAA4C,EAAE,0CAA0C,MAAM,0HAA0H,uCAAuC,gLAAgL,0CAA0C,uJAAuJ,kCAAkC,kCAAkC,QAAQ,WAAW,yHAAyH,gBAAgB,QAAQ,WAAW,4CAA4C,8BAA8B,kBAAkB,qCAAqC,EAAE,mFAAmF,sBAAsB,gBAAgB,iBAAiB,WAAW,+CAA+C,iBAAiB,GAAG,YAAY,0EAA0E,kDAAkD,sBAAsB,mBAAmB,iKAAiK,mBAAmB,oCAAoC,aAAa,iEAAiE,aAAa,cAAc,EAAE,gDAAgD,sBAAsB,OAAO,2DAA2D,iBAAiB,uBAAuB,kCAAkC,kEAAkE,EAAE,oDAAoD,sBAAsB,gBAAgB,iHAAiH,kGAAkG,gEAAgE,uDAAuD,6DAA6D,wDAAwD,qDAAqD,0CAA0C,sDAAsD,mDAAmD,4DAA4D,iEAAiE,8DAA8D,qFAAqF,kCAAkC,OAAO,+PAA+P,uBAAuB,cAAc,2DAA2D,qDAAqD,kDAAkD,sBAAsB,8BAA8B,EAAE,EAAE,aAAa,sBAAsB,gBAAgB,kBAAkB,SAAS,+KAA+K,UAAU,UAAU,wBAAwB,mEAAmE,6EAA6E,yBAAyB,yGAAyG,mCAAmC,eAAe,6EAA6E,MAAM,iCAAiC,oFAAoF,8BAA8B,sCAAsC,iUAAiU,gBAAgB,mBAAmB,sBAAsB,cAAc,8BAA8B,+BAA+B,sCAAsC,YAAY,iFAAiF,wFAAwF,2CAA2C,oFAAoF,4GAA4G,gBAAgB,kBAAkB,iCAAiC,QAAQ,SAAS,6DAA6D,sCAAsC,6BAA6B,0CAA0C,+EAA+E,gDAAgD,+CAA+C,EAAE,iCAAiC,IAAI,6CAA6C,sCAAsC,kCAAkC,uBAAuB,EAAE,wDAAwD,sBAAsB,cAAc,QAAQ,QAAQ,UAAU,iCAAiC,aAAa,kCAAkC,gDAAgD,QAAQ,QAAQ,2KAA2K,QAAQ,WAAW,0BAA0B,qFAAqF,sEAAsE,+JAA+J,uCAAuC,wEAAwE,+EAA+E,iBAAiB,yCAAyC,qCAAqC,8BAA8B,iCAAiC,gCAAgC,0HAA0H,oBAAoB,2BAA2B,yDAAyD,YAAY,mCAAmC,OAAO,qEAAqE,iEAAiE,qBAAqB,+BAA+B,+FAA+F,gCAAgC,mFAAmF,6BAA6B,6EAA6E,8BAA8B,+EAA+E,uCAAuC,6FAA6F,0CAA0C,oLAAoL,qDAAqD,aAAa,EAAE,mEAAmE,sBAAsB,gBAAgB,+IAA+I,cAAc,8CAA8C,gBAAgB,yBAAyB,6CAA6C,WAAW,aAAa,mBAAmB,iCAAiC,eAAe,sJAAsJ,kCAAkC,gDAAgD,8BAA8B,4DAA4D,wCAAwC,qEAAqE,wBAAwB,wEAAwE,0DAA0D,OAAO,mDAAmD,wCAAwC,yDAAyD,OAAO,4CAA4C,oDAAoD,8CAA8C,wBAAwB,2CAA2C,qBAAqB,4CAA4C,sBAAsB,4CAA4C,gDAAgD,8CAA8C,gHAAgH,qCAAqC,IAAI,gGAAgG,SAAS,+BAA+B,aAAa,EAAE,aAAa,sBAAsB,WAAW,wBAAwB,EAAE,eAAe,sBAAsB,gBAAgB,0DAA0D,YAAY,qCAAqC,uDAAuD,wCAAwC,mCAAmC,yCAAyC,2CAA2C,kCAAkC,iEAAiE,8CAA8C,kDAAkD,2CAA2C,+CAA+C,4CAA4C,kDAAkD,4CAA4C,sDAAsD,EAAE,EAAE,6BAA6B,sBAAsB,cAAc,mBAAmB,qCAAqC,SAAS,mBAAmB,qHAAqH,QAAQ,wCAAwC,wDAAwD,GAAG,MAAM,4CAA4C,oEAAoE,EAAE,aAAa,sBAAsB,WAAW,oDAAoD,EAAE,iCAAiC,sBAAsB,sBAAsB,8CAA8C,GAAG,sBAAsB,sBAAsB,WAAW,4BAA4B,GAAG,sBAAsB,cAAc,+CAA+C,+CAA+C,iBAAiB,sBAAsB,2CAA2C,gBAAgB,aAAa,EAAE,uCAAuC,sBAAsB,WAAW,yCAAyC,EAAE,2BAA2B,sBAAsB,cAAc,YAAY,oBAAoB,sCAAsC,iBAAiB,sBAAsB,+CAA+C,gBAAgB,qCAAqC,0BAA0B,qBAAqB,WAAW,kCAAkC,WAAW,wBAAwB,WAAW,iCAAiC,KAAK,iHAAiH,mCAAmC,UAAU,EAAE,cAAc,sBAAsB,cAAc,WAAW,kBAAkB,gDAAgD,qBAAqB,8DAA8D,0BAA0B,sDAAsD,sXAAsX,+DAA+D,qCAAqC,wCAAwC,kEAAkE,EAAE,+IAA+I,0BAA0B,2CAA2C,EAAE,iDAAiD,mEAAmE,wCAAwC,iDAAiD,YAAY,8GAA8G,mBAAmB,4BAA4B,0DAA0D,0BAA0B,8BAA8B,iBAAiB,mCAAmC,gBAAgB,yGAAyG,oBAAoB,2aAA2a,oBAAoB,OAAO,cAAc,8EAA8E,yYAAyY,aAAa,sDAAsD,kEAAkE,wUAAwU,2DAA2D,yCAAyC,6DAA6D,6BAA6B,QAAQ,oFAAoF,oCAAoC,8BAA8B,MAAM,0FAA0F,MAAM,gBAAgB,8BAA8B,kCAAkC,+BAA+B,+EAA+E,8CAA8C,qCAAqC,iBAAiB,mBAAmB,MAAM,IAAI,aAAa,SAAS,4JAA4J,+BAA+B,kBAAkB,GAAG,SAAS,EAAE,8BAA8B,gFAAgF,EAAE,uKAAuK,sBAAsB,oBAAoB,sBAAsB,8DAA8D,0CAA0C,eAAe,cAAc,kBAAkB,aAAa,kCAAkC,oBAAoB,kBAAkB,+BAA+B,0IAA0I,wCAAwC,wBAAwB,EAAE,cAAc,sBAAsB,kBAAkB,mBAAmB,8BAA8B,WAAW,4MAA4M,mFAAmF,qHAAqH,MAAM,gDAAgD,8BAA8B,oBAAoB,0BAA0B,MAAM,2IAA2I,IAAI,2FAA2F,gBAAgB,iCAAiC,+CAA+C,wBAAwB,uDAAuD,uGAAuG,mEAAmE,6BAA6B,mEAAmE,yBAAyB,8CAA8C,qCAAqC,yBAAyB,+BAA+B,wBAAwB,8BAA8B,+BAA+B,0BAA0B,wBAAwB,+BAA+B,sCAAsC,6CAA6C,oDAAoD,2DAA2D,2DAA2D,wBAAwB,wDAAwD,uBAAuB,4BAA4B,sDAAsD,WAAW,6FAA6F,oBAAoB,8BAA8B,WAAW,iBAAiB,4BAA4B,wBAAwB,gDAAgD,2DAA2D,kBAAkB,aAAa,8BAA8B,MAAM;;AAE9t+B,EAAC,wBAAwB,6BAA6B,oCAAoC,aAAa,8BAA8B,WAAW,KAAK,iCAAiC,UAAU,SAAS,sCAAsC,gCAAgC,MAAM,SAAS,sCAAsC,yBAAyB,KAAK,oEAAoE,YAAY,QAAQ,oCAAoC,wBAAwB,uBAAuB,2DAA2D,sCAAsC,gCAAgC,sBAAsB,kBAAkB,kEAAkE,aAAa,EAAE,uEAAuE,EAAE,GAAG;AACn1B,EAAC,I;;;;;;mCCnBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA2C;AAC3C;AACA,4DAA2D;;AAE3D;AACA,oDAAmD;AACnD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA0B,MAAM,aAAa,OAAO;;AAEpD;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;AACf,eAAc;AACd,eAAc;AACd,iBAAgB;AAChB,gBAAe;AACf,gBAAe;AACf;;AAEA;AACA;AACA,WAAU;AACV,UAAS;AACT,UAAS;AACT,YAAW;AACX,WAAU;AACV,WAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,cAAa,EAAE;AACf,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,SAAS;AACtB,cAAa,QAAQ;AACrB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,EAAE;AACf,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,UAAU;AACvB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,EAAE;AACf,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,SAAS;AACtB,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,SAAS;AACxB;AACA;AACA,eAAc,2BAA2B;AACzC;AACA;AACA,oBAAmB,gCAAgC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,OAAM;AACN;AACA;AACA,kCAAiC,6BAA6B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA6B,YAAY,EAAE;AAC3C,qBAAoB,sBAAsB;AAC1C;;AAEA,yBAAwB;AACxB,kCAAiC,iBAAiB;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;;AAEA,oBAAmB;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB;AACA,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB;AACA,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,kBAAkB;AACjC,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,OAAO,WAAW;AACjC,kBAAiB,OAAO;AACxB;AACA;AACA,6BAA4B;;AAE5B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA,+CAA8C;AAC9C;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,qCAAoC,6BAA6B,EAAE;AACnE;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,oBAAoB;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,oBAAoB;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB;AACA,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,QAAQ;AACvB,gBAAe,QAAQ;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB;AACA,gBAAe,SAAS;AACxB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,6BAA6B;AAC5C,gBAAe,UAAU;AACzB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA,2DAA0D,2BAA2B,EAAE;;AAEvF;AACA,gEAA+D,wBAAwB,EAAE;AACzF,iBAAgB;AAChB,QAAO;;AAEP;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,gBAAe,QAAQ;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,MAAM;AACrB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8CAA6C;AAC7C;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,YAAY;AAC3B,kBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,EAAE;AACjB,gBAAe,MAAM;AACrB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,QAAQ;AACvB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,EAAE;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C;AAC1C,yCAAwC;AACxC,gEAA+D;AAC/D,kEAAiE;AACjE;AACA;AACA,eAAc;AACd;;AAEA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,MAAM;AACrB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,oCAAoC;AAC9C,WAAU,qCAAqC;AAC/C,WAAU;AACV;AACA;AACA;AACA,yCAAwC,qCAAqC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,qCAAqC;AAC/C,WAAU,qCAAqC;AAC/C,WAAU;AACV;AACA;AACA;AACA,oCAAmC,oCAAoC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,WAAU,qCAAqC;AAC/C,WAAU,qCAAqC;AAC/C,WAAU;AACV;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,4BAA2B,kCAAkC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,WAAU,oCAAoC;AAC9C,WAAU,qCAAqC;AAC/C,WAAU;AACV;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,gCAA+B,mCAAmC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,QAAQ;AACvB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,eAAe;AAC9B;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,eAAe;AAC9B;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,KAAK;AACpB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,qBAAqB;AACpC;AACA,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,UAAU,yCAAyC;AACtE;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,wBAAuB,UAAU,GAAG,UAAU,IAAI,UAAU;AAC5D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,EAAE;AACjB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,oCAAoC;AAC9C,WAAU,qCAAqC;AAC/C,WAAU;AACV;AACA;AACA;AACA,yCAAwC,qCAAqC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,qCAAqC;AAC/C,WAAU,oCAAoC;AAC9C,WAAU;AACV;AACA;AACA;AACA,oCAAmC,oCAAoC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,QAAQ;AACvB,gBAAe,uBAAuB;AACtC,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,iBAAgB,SAAS,GAAG,SAAS,GAAG,SAAS;AACjD,gBAAe,SAAS,GAAG,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,KAAK;AACpB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,eAAc;AACd;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,WAAU,+BAA+B;AACzC,WAAU,+BAA+B;AACzC,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,qCAAqC;AACpD;AACA,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,oCAAoC;AAC9C,WAAU;AACV;AACA;AACA;AACA,wBAAuB,oCAAoC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,8CAA8C;AACxD,WAAU;AACV;AACA;AACA;AACA,iCAAgC,4BAA4B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA,WAAU,+CAA+C;AACzD,WAAU,gDAAgD;AAC1D,WAAU;AACV;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,gCAA+B,2BAA2B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,OAAO;AACtB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA,WAAU,8CAA8C;AACxD,WAAU;AACV;AACA;AACA,qCAAoC,4BAA4B;AAChE;AACA;AACA,qCAAoC,6BAA6B;AACjE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,mBAAkB,iBAAiB;AACnC;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,EAAE;AACjB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,4BAA4B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,WAAU,4BAA4B;AACtC,WAAU;AACV;AACA;AACA;AACA,eAAc,UAAU,4BAA4B,YAAY,8BAA8B;AAC9F;AACA;AACA;AACA,SAAQ;AACR,eAAc,OAAO,4BAA4B,QAAQ,8BAA8B;AACvF;AACA;AACA;AACA,SAAQ;AACR,eAAc,OAAO,4BAA4B,QAAQ,8BAA8B;AACvF;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,sBAAsB;AACrC;AACA,gBAAe,KAAK;AACpB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA,WAAU,mBAAmB;AAC7B,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,gDAAgD;AAC1D,WAAU,+CAA+C;AACzD,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC,4BAA4B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK,cAAc,iBAAiB,EAAE;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,aAAa;AAC5B,kBAAiB,MAAM;AACvB;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,kBAAiB,iBAAiB;AAClC;AACA;AACA,SAAQ,IAAI;AACZ,eAAc,iBAAiB;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,+CAA+C;AACzD,WAAU;AACV;AACA;AACA;AACA,iCAAgC,4BAA4B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,gBAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,mCAAmC;AAC7C,WAAU;AACV;AACA;AACA;AACA,uBAAsB,oCAAoC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU,iBAAiB;AAC3B,WAAU,oBAAoB;AAC9B,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAgB;AAChB,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,yDAAyD;AACxE;AACA,kBAAiB,MAAM;AACvB;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU,8BAA8B;AACxC,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,6BAA6B;AAC5C,gBAAe,UAAU;AACzB,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU,8BAA8B;AACxC,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA,WAAU,kEAAkE;AAC5E,WAAU;AACV;AACA;AACA,gCAA+B,6BAA6B;AAC5D;AACA;AACA,gCAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,qBAAoB,iCAAiC;AACrD,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,KAAK;AACpB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,qBAAqB;AACpC;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,KAAK;AACpB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,gBAAe,OAAO;AACtB;AACA,gBAAe,QAAQ;AACvB;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,kCAAkC;AAChE;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,KAAK;AACpB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,KAAK;AACpB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,YAAY;AAC3B,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,YAAY;AAC3B,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB,qBAAoB;AACpB;AACA;AACA;AACA,eAAc;AACd;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,KAAK;AACpB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,KAAK;AACpB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,qBAAqB;AACpC;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,gBAAe,QAAQ;AACvB;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,QAAQ;AACvB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA,WAAU,mBAAmB;AAC7B,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA,WAAU,mBAAmB;AAC7B,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA,kCAAiC,kBAAkB,EAAE;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA,8BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA,sBAAqB;AACrB,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA,sBAAqB;AACrB;AACA,2BAA0B,YAAY;AACtC;AACA;AACA,2BAA0B,YAAY;AACtC;AACA;AACA;AACA,sBAAqB;AACrB,sBAAqB;AACrB;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B,eAAc;AACd;AACA,kBAAiB,SAAS;AAC1B,eAAc;AACd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,UAAU;AACzB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA,kBAAiB,mBAAmB,GAAG,YAAY,GAAG,iBAAiB;AACvE,eAAc;AACd;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,kBAAiB,mBAAmB,GAAG,YAAY,GAAG,iBAAiB;AACvE,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,UAAU;AACzB,kBAAiB,OAAO;AACxB;AACA;AACA,oBAAmB,mBAAmB,GAAG,YAAY,GAAG,iBAAiB;AACzE,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,sBAAqB,4BAA4B;AACjD,sBAAqB,6BAA6B;AAClD,sBAAqB;AACrB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,0BAAyB,2BAA2B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,sBAAqB,4BAA4B;AACjD,sBAAqB,6BAA6B;AAClD,sBAAqB;AACrB;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,8BAA6B,4BAA4B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA,sBAAqB,QAAQ,OAAO,SAAS,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,kBAAiB,QAAQ;AACzB;AACA;AACA,sBAAqB,OAAO,OAAO,SAAS,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA,sBAAqB;AACrB;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA,mBAAkB,iBAAiB;AACnC;AACA,SAAQ;AACR,eAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,uBAAuB;AACtC;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA,sBAAqB,+BAA+B;AACpD,sBAAqB;AACrB;AACA;AACA;AACA;AACA,eAAc,2BAA2B;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,UAAU;AACzB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,oBAAmB,mBAAmB,GAAG,iBAAiB;AAC1D;AACA;AACA;AACA,oBAAmB,YAAY,GAAG,YAAY;AAC9C;AACA;AACA;AACA,eAAc,WAAW,8BAA8B,GAAG,4BAA4B;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;;AAEA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,8BAA8B;AAC7C;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA,sBAAqB;AACrB;AACA;AACA,eAAc;AACd;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA,iBAAgB,2BAA2B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,8BAA8B;AAC7C;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA,sBAAqB;AACrB;AACA;AACA,eAAc;AACd;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA,sBAAqB,QAAQ,OAAO,+BAA+B,EAAE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA,sBAAqB,QAAQ,OAAO,SAAS,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,kBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA,kBAAiB,sBAAsB;AACvC,sBAAqB,UAAU;AAC/B;AACA;AACA,uEAAsE,2BAA2B,EAAE;AACnG,kBAAiB,8BAA8B;AAC/C;AACA;AACA;AACA,6DAA4D;AAC5D,kBAAiB,mBAAmB;AACpC;AACA;AACA;AACA,2CAA0C,OAAO;AACjD,kBAAiB,oBAAoB;AACrC;AACA;AACA;AACA,4CAA2C,YAAY;AACvD,2CAA0C,QAAQ;AAClD,kBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA,kBAAiB,qBAAqB;AACtC;AACA;AACA;AACA,sDAAqD,2BAA2B,EAAE;AAClF,yCAAwC,aAAa,eAAe,EAAE;AACtE,kBAAiB,8BAA8B;AAC/C;AACA;AACA;AACA,yDAAwD,qCAAqC;AAC7F;AACA;AACA;AACA;AACA,2DAA0D,qBAAqB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAwC;;AAExC,6CAA4C;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP,oBAAmB;;AAEnB;AACA;AACA;AACA;AACA,+BAA8B,mBAAmB;AACjD;AACA;AACA;AACA;AACA,6CAA4C;;AAE5C;AACA,wDAAuD;AACvD;AACA;AACA,8BAA6B,EAAE;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C;AAC1C,gCAA+B,iCAAiC;AAChE,eAAc;AACd;AACA;AACA,uBAAsB;;AAEtB;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,cAAc;AAC7B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,cAAc;AAC7B,iBAAgB,OAAO;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAiC;AACjC,cAAa,QAAQ,QAAQ,UAAU,SAAS,aAAa;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA,uCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,cAAc;AAC7B,iBAAgB,OAAO;AACvB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,gBAAe,EAAE;AACjB,iBAAgB,OAAO;AACvB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,gBAAe,4BAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,WAAU,8CAA8C;AACxD,WAAU;AACV;AACA;AACA,mCAAkC,6BAA6B;AAC/D,gBAAe,6CAA6C;AAC5D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,EAAE;AACjB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,WAAU,mBAAmB;AAC7B,WAAU;AACV;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,KAAK;AACpB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,WAAU,OAAO,OAAO,qBAAqB,EAAE,EAAE;AACjD,WAAU,OAAO,OAAO,qBAAqB,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,KAAK;AACpB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,kBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA,iBAAgB,mBAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,mBAAmB,GAAG,iBAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA8B,qDAAqD;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,WAAU,OAAO,OAAO,SAAS,EAAE,EAAE;AACrC,WAAU,OAAO,OAAO,SAAS,EAAE;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,EAAE;AACjB,kBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC,gBAAe,EAAE;AACjB,kBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,8BAA8B;AACxC,WAAU;AACV;AACA;AACA;AACA;AACA,SAAQ;AACR,eAAc;AACd;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC,gBAAe,uBAAuB;AACtC,gBAAe,EAAE;AACjB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA,WAAU,SAAS;AACnB,WAAU;AACV;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA,uBAAsB,sEAAsE;AAC5F;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA0B,yDAAyD;AACnF;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAoB,yCAAyC;AAC7D;AACA,MAAK;;AAEL,kEAAiE,kCAAkC;;AAEnG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;AC18XD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC,uDAAuD;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnLA,sF;;;;;;ACAA,sE;;;;;;ACAA,yE;;;;;;ACAA,wE;;;;;;ACAA,+E;;;;;;ACAA,yE;;;;;;ACAA,uE;;;;;;ACAA,iF;;;;;;ACAA,wE;;;;;;ACAA,wE;;;;;;ACAA,4E;;;;;;ACAA,yE;;;;;;ACAA,yE;;;;;;ACAA,uE;;;;;;ACAA,0E;;;;;;ACAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAiC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,OAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,4DAA2D,yDAAyD;AACpH;AACA;AACA;AACA;AACA,gCAA+B,yDAAyD;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA,IAAG,6CAA6C;AAChD,IAAG,6CAA6C;AAChD,IAAG,+CAA+C;AAClD,IAAG,6CAA6C;AAChD,IAAG,6CAA6C;AAChD,IAAG,6CAA6C;AAChD,IAAG,+DAA+D;AAClE,IAAG,2CAA2C;AAC9C,IAAG,iEAAiE;AACpE,IAAG,6CAA6C;AAChD,IAAG,2CAA2C;AAC9C,IAAG,+CAA+C;AAClD,IAAG,yCAAyC;AAC5C,IAAG,+CAA+C;AAClD,IAAG,qDAAqD;AACxD,IAAG,+CAA+C;AAClD,IAAG,6CAA6C;;AAEhD,IAAG,+EAA+E;AAClF,IAAG,0EAA0E,iBAAiB,EAAE,EAAE;AAClG,IAAG,4FAA4F;AAC/F,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA,IAAG;AACH,GAAE;AACF,EAAC;;;;;;;ACxUD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAY,WAAW;AACvB,aAAY,uBAAuB;AACnC;AACA;AACA;AACA,aAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,2BAA0B,yCAAyC;AACnE;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,eAAe;AACtC;;AAEA;AACA;AACA;AACA;AACA,0BAAyB,UAAU;AACnC,YAAW;AACX;AACA,0BAAyB,yCAAyC;AAClE;AACA;;AAEA;;AAEA,2BAA0B,YAAY;AACtC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,cAAc;AACzB;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE;AACrE;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,6CAA6C,EAAE;AAC9E;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,uBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA,wDAAuD;;AAEvD;AACA;AACA,kCAAiC,8DAA8D;AAC/F,UAAS;AACT,oCAAmC,mDAAmD;AACtF,6CAA4C,GAAG,oCAAoC;;AAEnF,uEAAsE;AACtE;AACA;AACA;AACA,wBAAuB,+BAA+B,EAAE;AACxD,wBAAuB,+BAA+B;AACtD;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B,6DAA6D;AACzF,iCAAgC,GAAG,8DAA8D;AACjG;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA,sEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,wDAAwD;AACrF;AACA,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,aAAa,qBAAqB;AACvD;AACA,qBAAoB,QAAQ;AAC5B,cAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD,uDAAuD;AACzG,aAAY,QAAQ,IAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,gBAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA4B;AAC5B;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qDAAoD;AACpD;AACA,qDAAoD;AACpD,4CAA2C;;AAE3C;AACA,wBAAuB,cAAc;AACrC;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B;AACA;AACA,iBAAgB;AAChB,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA,cAAa;AACb,MAAK;AACL;AACA;AACA;AACA;AACA,yBAAwB,QAAQ;AAChC;AACA;AACA;AACA,iBAAgB;AAChB,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA,cAAa;AACb,MAAK;AACL;AACA;AACA;AACA;AACA,yBAAwB,eAAe;AACvC;AACA;AACA;AACA,iBAAgB;AAChB,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA,4LAA2L,mCAAmC;AAC9N;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,gBAAe;AACf;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gFAA+E;AAC/E;AACA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,mEAAkE;;AAElE;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,4CAA2C;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,aAAa,IAAI,aAAa;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD,aAAa,EAAE;AAChE,kDAAiD,aAAa,EAAE;AAChE;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA,4BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,4BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,4BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,+CAA8C,sBAAsB;AACpE;AACA,gBAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA,6CAA4C;AAC5C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;;AAEf,cAAa;AACb;AACA,cAAa;;AAEb;AACA;AACA,cAAa;AACb;AACA,cAAa;;AAEb;AACA;;AAEA;AACA,UAAS;AACT;;AAEA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA2B,aAAa;AACxC;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA,wCAAuC;;AAEvC;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qCAAoC,mBAAmB;AACvD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,qCAAoC,oBAAoB;AACxD,SAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC;;AAEtC;AACA;AACA;AACA;AACA,yCAAwC;AACxC,iEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD,cAAc;AACrE,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA2B,oCAAoC;;AAE/D;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;;AAEA;;AAEA;AACA;AACA,+BAA8B;;AAE9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4DAA2D;;AAE3D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA,cAAa;;AAEb;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA,aAAY,4DAA4D;AACxE;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,aAAY,4DAA4D;AACxE;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAY,wEAAwE;AACpF;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mCAAkC,qBAAqB;AACvD,UAAS;AACT,0BAAyB,6CAA6C;AACtE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,uCAAsC,OAAO;AAC7C,mCAAkC,WAAW;AAC7C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB,aAAa;AACjC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ,4EAA4E,wDAAwD;AACvJ,YAAW,QAAQ;AACnB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB;AACA;AACA,uEAAsE,gDAAgD;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,YAAY;AACjC;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,oDAAoD;AAC7D,UAAS;AACT;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qEAAoE;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;;AAEA,uBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA0B,kBAAkB;AAC5C;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,+CAA8C;AAC9C;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,UAAS;AACT;AACA;;AAEA,UAAS;AACT;AACA;AACA,YAAW;;AAEX,UAAS;AACT;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,4BAA2B,sBAAsB;AACjD;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;;AAEA;AACA,sDAAqD;AACrD;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,2GAA0G,SAAS;AACnH;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,4FAA2F;AAC3F;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,8DAA6D,wBAAwB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,sCAAsC,0GAA0G,OAAO;AAClL;AACA;AACA;AACA;AACA,sEAAqE,OAAO;AAC5E;AACA;AACA;AACA;AACA,wEAAuE,sBAAsB;AAC7F;AACA,yDAAwD,gDAAgD,wBAAwB,8EAA8E,2BAA2B,KAAK,UAAU;AACxP;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,8CAA6C,yFAAyF;AACtI;AACA;AACA;AACA,sFAAqF,aAAa;AAClG,mHAAkH,kBAAkB,KAAK,iBAAiB;AAC1J,wFAAuF,WAAW;AAClG;AACA,0GAAyG,WAAW;AACpH;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,qDAAoD,YAAY,eAAe,2BAA2B;AAC1G,EAAC;;AAED;AACA;AACA,gDAA+C,eAAe,eAAe,YAAY,eAAe,6CAA6C;AACrJ;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,oDAAmD,kEAAkE,6CAA6C,WAAW;AAC7K;AACA,EAAC;;AAED;AACA;AACA;AACA,oDAAmD,6CAA6C,6CAA6C,WAAW;AACxJ;AACA,EAAC;;AAED;AACA;AACA,6BAA4B,WAAW,eAAe,kCAAkC;AACxF;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,6BAA4B,WAAW,eAAe,kCAAkC;AACxF;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,6BAA4B,WAAW,eAAe,kCAAkC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,sBAAqB,mCAAmC;AACxD,0DAAyD,SAAS;AAClE;AACA;AACA,EAAC;;AAED;AACA;AACA,wBAAuB,uBAAuB,eAAe,wBAAwB;AACrF;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,0BAAyB,uBAAuB,eAAe,oDAAoD;AACnH;AACA;AACA;AACA,2BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA,gCAA+B,oCAAoC,0BAA0B;AAC7F;AACA;AACA;AACA,gCAA+B,oCAAoC,4BAA4B;AAC/F;AACA;AACA,oIAAmI,UAAU;AAC7I;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,8CAA6C,uFAAuF;AACpI,yDAAwD,0BAA0B;AAClF;AACA;AACA;AACA,EAAC;;;;;;;AChmHD,4HAA2H,6BAA6B,mCAAmC,oBAAoB,yBAAyB,w5BAAw5B,4BAA4B,6BAA6B,wBAAwB,wIAAwI,iCAAiC,6BAA6B,wBAAwB,gVAAgV,qBAAqB,+BAA+B,sCAAsC,mBAAmB,aAAa,0bAA0b,uCAAuC,6aAA6a,oCAAoC,sFAAsF,oCAAoC,g9B;;;;;;ACAr6F,8N;;;;;;ACAA,gO;;;;;;ACAA,qGAAoG,eAAe,sJ;;;;;;ACAnH,4QAA2Q,iBAAiB,id;;;;;;ACA5R,4WAA2W,mBAAmB,IAAI,qBAAqB,6PAA6P,6BAA6B,8GAA8G,sIAAsI,6DAA6D,8MAA8M,mBAAmB,0BAA0B,qBAAqB,svCAAsvC,yEAAyE,ytC;;;;;;ACAjjF,+bAA8b,0EAA0E,Y;;;;;;ACAxgB,2RAA0R,kGAAkG,wBAAwB,2BAA2B,0BAA0B,8I;;;;;;ACAzc,oRAAmR,eAAe,+EAA+E,aAAa,yCAAyC,eAAe,klC;;;;;;ACAtb,sRAAqR,kDAAkD,gM;;;;;;ACAvU,kY;;;;;;ACAA,s3BAAq3B,MAAM,EAAE,MAAM,yIAAyI,0FAA0F,oYAAoY,MAAM,MAAM,MAAM,6KAA6K,MAAM,MAAM,MAAM,6KAA6K,MAAM,SAAS,MAAM,g6BAAg6B,MAAM,EAAE,MAAM,yIAAyI,gFAAgF,yaAAya,MAAM,MAAM,MAAM,4BAA4B,MAAM,MAAM,MAAM,yNAAyN,MAAM,SAAS,MAAM,kZ;;;;;;ACA3tH,mGAAkG,oFAAoF,EAAE,a;;;;;;ACAxL,wCAAuC,yCAAyC,0BAA0B,GAAG,+BAA+B,oCAAoC,GAAG,C;;;;;;ACAnL,oGAAmG,2BAA2B,OAAO,6BAA6B,mCAAmC,OAAO,+BAA+B,oBAAoB,0BAA0B,OAAO,4BAA4B,oBAAoB,0BAA0B,OAAO,6BAA6B,qBAAqB,OAAO,+UAA+U,0BAA0B,8GAA8G,6BAA6B,oHAAoH,6BAA6B,yhCAAyhC,kBAAkB,gvCAAgvC,sBAAsB,0gBAA0gB,sxBAAsxB,QAAQ,mqBAAmqB,QAAQ,oWAAoW,w6BAAw6B,4DAA4D,4DAA4D,eAAe,iG;;;;;;ACAtsN,wCAAuC,MAAM,4BAA4B,WAAW,8BAA8B,OAAO,iCAAiC,cAAc,4B;;;;;;ACAxK,6GAA4G,oDAAoD,gHAAgH,kCAAkC,sDAAsD,qDAAqD,+CAA+C,MAAM,qB;;;;;;ACAld,qCAAoC,MAAM,gDAAgD,MAAM,8BAA8B,WAAW,yC;;;;;;ACAzI,4aAA2a,uCAAuC,sDAAsD,cAAc,yHAAyH,YAAY,ia;;;;;;ACA3pB,8LAA6L,MAAM,+JAA+J,MAAM,uIAAuI,UAAU,YAAY,MAAM,8OAA8O,gBAAgB,wJAAwJ,WAAW,+M;;;;;;ACA56B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,iCAAgC,UAAU,EAAE;AAC5C,E;;;;;;mCCVA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCCpBD;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA,EAAC;;;;;;;mCCzCD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,EAAC;;;;;;;mCClCD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,WAAW;AAC7B,mBAAkB,WAAW;AAC7B,mBAAkB,MAAM;AACxB,mBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAqC,qBAAqB;AAC1D,uCAAsC,+BAA+B;AACrE,sCAAqC,uBAAuB;AAC5D,uCAAsC,uCAAuC;;AAE7E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,UAAS;AACT;;AAEA;AACA,MAAK;AACL,IAAG;AACH,EAAC;;;;;;;mCC/ED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,uCAAsC,iBAAiB,EAAE;AACzD,UAAS;AACT,uCAAsC,eAAe,EAAE;AACvD,UAAS;AACT;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCClFD;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,cAAc;AAC9B;AACA,iBAAgB,SAAS;AACzB;AACA;AACA;AACA,oBAAmB;AACnB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCrCD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,QAAQ;AACxB;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW;;AAEX;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCCjFD;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,MAAM;AACrB,kBAAiB;AACjB;AACA;AACA;;AAEA,sBAAqB,QAAQ,gBAAgB,SAAS;AACtD;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,QAAO,oBAAoB,OAAO,aAAa;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,wBAAuB;AACvB;AACA,kCAAiC;AACjC;;AAEA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;mCCnDD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA,EAAC;;;;;;;mCClHD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCC1BD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCCnED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iCAAgC,cAAc;AAC9C;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCCtBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCC3BD;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,EAAC,uJ;;;;;;mCC1BD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,iBAAiB;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC3BD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCzCD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB;;AAEvB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;AAEL;AACA;AACA,EAAC;;;;;;;mCCzOD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,EAAC;;;;;;;mCChBD;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA8B,4BAA4B;;AAE1D;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCzBD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAkB;AAClB,qBAAoB;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS,IAAI;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAkB;AAClB,qBAAoB,OAAO;AAC3B;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCrSD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA;AACA;;;AAGA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCC5CD;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA,EAAC;;;;;;;mCC7ED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA,EAAC;;;;;;;mCCtID;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCXD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCChHD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCZD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA,EAAC;;;;;;;mCCpBD;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;mCCLD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;AACL;AACA,EAAC;;;;;;;mCCdD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCCvBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCdD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCZD;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCC9DD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCCdD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB,UAAS;AACT;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCpBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCZD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCZD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB,UAAS;AACT;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCtBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB,UAAS;AACT;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCClBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB,UAAS;AACT;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCnBD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,KAAK;AACpB;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCChBD;AACA;AACA;AACA,yBAAwB;;AAExB;AACA;AACA,gBAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;AACL;AACA,EAAC;;;;;;;;mCCjBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;;AAEX;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCjED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE,UAAS,0DAA0D;AACnE;AACA,MAAK;AACL;AACA,EAAC;;;;;;;ACxBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,EAAC;;;;;;;AC7DD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,8EAA6E;AAC7E;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,EAAC;;;;;;;AC/CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,mCAAkC;AAClC,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCCtBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;;AAEA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAqC,kBAAkB;AACvD;;AAEA;AACA,sCAAqC,iBAAiB;AACtD;;AAEA;AACA,wDAAuD,0BAA0B;AACjF;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kCAAiC,IAAI;AACrC,sCAAqC,IAAI;AACzC,2CAA0C,IAAI;AAC9C,4CAA2C,IAAI;AAC/C;;AAEA;AACA;AACA,EAAC;;;;;;;mCC9QD;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAAyC,eAAe;AACxD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,EAAC,uJ;;;;;;mCCpCD;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAkB,kBAAkB;AACpC,kBAAiB,iBAAiB;AAClC,iBAAgB,iBAAiB;AACjC,eAAc,iBAAiB;AAC/B;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;;;;;;mCClDD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCCvBD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT,QAAO;;AAEP;AACA;;AAEA,sBAAqB,YAAY;AACjC;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;;;;;;mCCpDD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCC7CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAqB,gCAAgC;AACrD;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCCpBD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB,aAAa;AAC7B,iBAAgB,OAAO;AACvB,iBAAgB,SAAS;AACzB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA,IAAG;AACH,EAAC,uJ;;;;;;mCCvBD;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCC5BD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCC/CD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC,uJ;;;;;;mCC1CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCVD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCTD;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCvDD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCvBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCXD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCCvBD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET,0BAAyB,+CAA+C;AACxE;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCCxCD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,QAAO,8BAA8B;AACrC,QAAO,kCAAkC;AACzC,QAAO,kCAAkC;AACzC,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCC1DD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yDAAwD,OAAO;;AAE/D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA,8BAA6B,YAAY;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO,wBAAwB;AAC/B,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;mCChID;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA,MAAK;AACL,IAAG;AACH,EAAC;;;;;;;mCC/BD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCCpBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCChBD;AACA;;AAEA;AACA,MAAK,uCAAuC;;AAE5C,MAAK,gDAAgD;AACrD,MAAK,kDAAkD;AACvD,MAAK,kDAAkD;AACvD,MAAK,kDAAkD;;AAEvD,MAAK,gDAAgD;AACrD,MAAK,kDAAkD;AACvD,MAAK,mDAAmD;AACxD,MAAK,oDAAoD;;AAEzD,MAAK,gDAAgD;AACrD,MAAK,gDAAgD;AACrD,MAAK,kDAAkD;AACvD,MAAK;AACL;;AAEA,EAAC;;;;;;;mCCtBD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCC3BD;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCjDD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCnBD;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,KAAK;AACpB,kBAAiB;AACjB;AACA;AACA;AACA,+BAA8B,eAAe,aAAa;AAC1D;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yBAAwB;AACxB;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,EAAC;;;;;;;;mCCzCD;AACA;AACA;;AAEA;AACA;AACA,cAAa,KAAK;AAClB,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;mCCjBD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,2BAA2B;AAC7C,mBAAkB,SAAS;AAC3B,mBAAkB,SAAS;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,wDAAuD,YAAY;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA,gCAA+B,YAAY;AAC3C;;AAEA;AACA,MAAK;AACL,IAAG;AACH,EAAC,uJ;;;;;;mCCpHD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,uJ;;;;;;mCCtBD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,EAAC;;;;;;;mCClBD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA,YAAW,yBAAyB;AACpC,YAAW,yBAAyB;AACpC,YAAW,2BAA2B;AACtC,YAAW;AACX;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,YAAW;;AAEX;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAA4B,YAAY;AACxC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;;AAGH,EAAC;;;;;;;mCCrMD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH,EAAC,uJ;;;;;;mCC1ED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD;AAClD,6BAA4B,SAAS,mCAAmC,EAAE;AAC1E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA,iCAAgC;AAChC,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC,kBAAkB,EAAE;AAC7D;AACA,qDAAoD,qBAAqB,EAAE;AAC3E;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCCrGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,EAAC,uJ;;;;;;mCCXD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,aAAa;AAC5B,gBAAe,QAAQ;AACvB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,IAAG;AACH,EAAC;;;;;;;mCCzBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCCvCD;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;;AAEA;AACA,EAAC;;;;;;;mCCnDD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,MAAM;AACxB,mBAAkB,WAAW;AAC7B,mBAAkB,eAAe;AACjC,mBAAkB,SAAS;AAC3B,mBAAkB,MAAM;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,yBAAwB,eAAe,GAAG,qBAAqB;AAC/D,qBAAoB;AACpB;AACA,sBAAqB,eAAe,GAAG,qBAAqB;AAC5D,qBAAoB;AACpB;AACA,mBAAkB,MAAM;AACxB,mBAAkB,SAAS;AAC3B,mBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,mBAAkB,MAAM;AACxB,mBAAkB,IAAI;AACtB,mBAAkB,MAAM;AACxB;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,mBAAkB,MAAM;AACxB,mBAAkB,MAAM;AACxB,mBAAkB,MAAM;AACxB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,QAAO;;;AAGP,MAAK;AACL;AACA,EAAC;;;;;;;mCCrID;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,SAAS;AAC3B;AACA,mBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA,YAAW;;AAEX;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;;AAGP;AACA;AACA;AACA,mBAAkB,iBAAiB;AACnC,mBAAkB;AAClB;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA,MAAK;AACL;AACA,EAAC;;;;;;;mCClED;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,IAAI;AACtB,mBAAkB;AAClB;AACA;AACA;AACA,QAAO;;AAEP,MAAK;AACL;AACA,EAAC;;;;;;;mCCpBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB,mBAAkB,OAAO;AACzB,mBAAkB,QAAQ;AAC1B,mBAAkB;AAClB;AACA;AACA,wBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA;;AAEA,MAAK;AACL;AACA,EAAC;;;;;;;mCCvCD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA,mBAAkB,YAAY;AAC9B,mBAAkB,YAAY;AAC9B;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;;;;;;mCC7CD;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,mBAAkB,IAAI;AACtB,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,mBAAkB;AAClB;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,kBAAiB,aAAa;AAC9B,mBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,MAAK;AACL;AACA,EAAC;;;;;;;mCCtDD;AACA;;AAEA;AACA,cAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA,IAAG;;AAEH;AACA;AACA;AACA,eAAc,IAAI;AAClB,eAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc,IAAI;AAClB,eAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc,IAAI;AAClB,eAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,IAAI;AACb;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;mCC1ID;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;;;;ACnBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wCAAuC;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,oCAAoC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,oCAAoC;AAC5C;AACA;AACA,kBAAiB,wBAAwB;AACzC;AACA;AACA;AACA,4DAA2D,GAAG,iBAAiB;AAC/E;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,4BAA2B,oBAAoB;AAC/C,iDAAgD;AAChD,sBAAqB;AACrB,8BAA6B,QAAQ;AACrC;AACA,0BAAyB,oBAAoB;AAC7C,yEAAwE;AACxE,2CAA0C,KAAK,uCAAuC;AACtF;AACA;AACA;AACA;AACA,eAAc,eAAe;AAC7B;AACA;AACA,6BAA4B,oBAAoB;AAChD,4CAA2C,sCAAsC;AACjF;AACA;AACA;AACA,eAAc,eAAe;AAC7B;AACA;AACA,yBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA,yBAAwB,6DAA6D;AACrF;AACA,YAAW,yDAAyD;AACpE;AACA;AACA,uBAAsB,OAAO;AAC7B,2BAA0B,gBAAgB;AAC1C,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA,2BAA0B,qBAAqB;AAC/C,YAAW,6BAA6B;AACxC;AACA;AACA;AACA,eAAc,gBAAgB;AAC9B;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,sCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA,6CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO,qBAAqB;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAS,iBAAiB;AAC1B;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,kCAAkC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB;AACA;AACA;AACA,wDAAuD,iCAAiC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA,sBAAqB,wBAAwB;AAC7C;AACA,uCAAsC,4CAA4C;AAClF;AACA;AACA,SAAQ,wCAAwC;AAChD,SAAQ,0CAA0C;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC,kBAAkB;AACzD,kDAAiD,4BAA4B;AAC7E,6CAA4C,uBAAuB;AACnE,iDAAgD,2BAA2B;AAC3E,oCAAmC,cAAc;AACjD;AACA;AACA;AACA;AACA,0BAAyB,MAAM;AAC/B,uBAAsB,eAAe;AACrC;AACA;AACA;AACA,0BAAyB,MAAM;AAC/B,uBAAsB,eAAe;AACrC,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,sCAAsC;AAC9C;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,gBAAgB;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB,gBAAe,MAAM;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,6BAA6B;AAC3C;AACA,oCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,mBAAkB,OAAO;AACzB,sBAAqB,OAAO;AAC5B,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,sCAAqC,SAAS;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6CAA4C;AAC5C;;AAEA;AACA;AACA;AACA,gBAAe;;AAEf;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,sDAAqD,sBAAsB;AAC3E,gDAA+C,sBAAsB,EAAE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,YAAW;AACX;AACA;;;AAGA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC;AACrC,gCAA+B;AAC/B;AACA;AACA,QAAO;AACP,2BAA0B;AAC1B,8DAA6D,UAAU,gBAAgB;AACvF;;AAEA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,IAAG;AACH;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,wBAAwB;AACzC;AACA,+CAA8C,+BAA+B;AAC7E,KAAI,qCAAqC,MAAM,iCAAiC;AAChF,kDAAiD,8BAA8B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA,2BAA0B,WAAW;AACrC;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD,4BAA4B;AAC7E;AACA;AACA;AACA;AACA,kBAAiB,wBAAwB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA,YAAW,QAAQ,0CAA0C;AAC7D,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAoC,uBAAuB;AAC3D,+CAA8C,iCAAiC;AAC/E,0CAAyC,4BAA4B;AACrE,8CAA6C,gCAAgC;AAC7E,iCAAgC,mBAAmB;AACnD;AACA;;AAEA;AACA;AACA,yBAAwB,WAAW;AACnC,sBAAqB,oBAAoB;AACzC;AACA;;AAEA;AACA;AACA,yBAAwB,cAAc;AACtC,sBAAqB,uBAAuB;AAC5C,yBAAwB;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,kBAAiB;;AAEjB;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,YAAW;;AAEX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA,EAAC;;;;;;;;;;;;;;mCC55BD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA,YAAW;AACX,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;mCChED;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC,uJ;;;;;;mCCnDD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCCrDD;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;;AAEH,EAAC","file":"sense.js","sourcesContent":[" \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\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n \t__webpack_require__.p = \"/bundles/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap d26167e4f671993c83a6\n **/","/**\n * Optimized application entry file\n *\n * This is programatically created and updated, do not modify\n *\n * built using: Kibana 4.2.0-snapshot\n * includes code from:\n * - sense@1.0.0\n *\n */\n\nrequire('chrome');\nrequire('angular-bindonce');\nrequire('chrome/context');\nrequire('components/bind');\nrequire('components/bound_to_config_obj');\nrequire('components/config/config');\nrequire('components/courier/courier');\nrequire('components/debounce');\nrequire('components/doc_title/doc_title');\nrequire('components/elastic_textarea');\nrequire('components/es');\nrequire('components/events');\nrequire('components/fancy_forms/fancy_forms');\nrequire('components/filter_bar/filter_bar');\nrequire('components/filter_manager/filter_manager');\nrequire('components/index_patterns/index_patterns');\nrequire('components/listen');\nrequire('components/notify/notify');\nrequire('components/persisted_log/persisted_log');\nrequire('components/private');\nrequire('components/promises');\nrequire('components/state_management/app_state');\nrequire('components/state_management/global_state');\nrequire('components/storage/storage');\nrequire('components/stringify/register');\nrequire('components/style_compile/style_compile');\nrequire('components/timefilter/timefilter');\nrequire('components/timepicker/timepicker');\nrequire('components/tooltip/tooltip');\nrequire('components/typeahead/typeahead');\nrequire('components/ui-bootstrap/index');\nrequire('components/url/url');\nrequire('components/validateDateInterval');\nrequire('components/validate_query/validate_query');\nrequire('components/watch_multi');\nrequire('directives/auto_select_if_only_one');\nrequire('directives/click_focus');\nrequire('directives/config');\nrequire('directives/confirm_click');\nrequire('directives/css_truncate');\nrequire('directives/field_name');\nrequire('directives/file_upload');\nrequire('directives/inequality');\nrequire('directives/infinite_scroll');\nrequire('directives/info');\nrequire('directives/input_datetime');\nrequire('directives/input_focus');\nrequire('directives/input_whole_number');\nrequire('directives/paginate');\nrequire('directives/pretty_duration');\nrequire('directives/rows');\nrequire('directives/saved_object_finder');\nrequire('directives/spinner');\nrequire('directives/truncated');\nrequire('directives/validate_cidr_mask');\nrequire('directives/validate_date_math');\nrequire('directives/validate_index_name');\nrequire('directives/validate_ip');\nrequire('directives/validate_json');\nrequire('elasticsearch');\nrequire('filters/commaList');\nrequire('filters/field_type');\nrequire('filters/label');\nrequire('filters/match_any');\nrequire('filters/moment');\nrequire('filters/rison');\nrequire('filters/short_dots');\nrequire('filters/start_from');\nrequire('filters/trust_as_html');\nrequire('filters/unique');\nrequire('filters/uriescape');\nrequire('ui-styles/base.less');\nrequire('ui-styles/callout.less');\nrequire('ui-styles/config.less');\nrequire('ui-styles/control_group.less');\nrequire('ui-styles/hintbox.less');\nrequire('ui-styles/input.less');\nrequire('ui-styles/list-group-menu.less');\nrequire('ui-styles/navbar.less');\nrequire('ui-styles/notify.less');\nrequire('ui-styles/pagination.less');\nrequire('ui-styles/sidebar.less');\nrequire('ui-styles/spinner.less');\nrequire('ui-styles/table.less');\nrequire('ui-styles/truncate.less');\nrequire('plugins/sense/sense');\nrequire('chrome').bootstrap([\"elasticsearch\",\"pasvaz.bindonce\"]);\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./bundles/sense.entry.js\n ** module id = 0\n ** module chunks = 1\n **/","define(function (require) {\n /**\n * THESE ARE AUTOMATICALLY INCLUDED IN LODASH\n *\n * use:\n * var _ = require('lodash');\n *\n * require.js config points the 'lodash' id to\n * this module, which provides a modified version\n * of lodash.\n */\n var _ = require('lodash_src').runInContext();\n require('utils/lodash-mixins/string')(_);\n require('utils/lodash-mixins/lang')(_);\n require('utils/lodash-mixins/object')(_);\n require('utils/lodash-mixins/collection')(_);\n require('utils/lodash-mixins/function')(_);\n require('utils/lodash-mixins/oop')(_);\n return _;\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/utils/lodash-mixins/index.js\n ** module id = 1\n ** module chunks = 0 1 2\n **/","//! moment.js\n//! version : 2.10.3\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\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 utils_hooks__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 Object.prototype.toString.call(input) === '[object Array]';\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 create_utc__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 };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n function valid__isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n m._isValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated;\n\n if (m._strict) {\n m._isValid = m._isValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n return m._isValid;\n }\n\n function valid__createInvalid (flags) {\n var m = create_utc__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 var momentProperties = utils_hooks__hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (typeof from._isAMomentObject !== 'undefined') {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (typeof from._i !== 'undefined') {\n to._i = from._i;\n }\n if (typeof from._f !== 'undefined') {\n to._f = from._f;\n }\n if (typeof from._l !== 'undefined') {\n to._l = from._l;\n }\n if (typeof from._strict !== 'undefined') {\n to._strict = from._strict;\n }\n if (typeof from._tzm !== 'undefined') {\n to._tzm = from._tzm;\n }\n if (typeof from._isUTC !== 'undefined') {\n to._isUTC = from._isUTC;\n }\n if (typeof from._offset !== 'undefined') {\n to._offset = from._offset;\n }\n if (typeof from._pf !== 'undefined') {\n to._pf = getParsingFlags(from);\n }\n if (typeof from._locale !== 'undefined') {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i in momentProperties) {\n prop = momentProperties[i];\n val = from[prop];\n if (typeof val !== 'undefined') {\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);\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n utils_hooks__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 toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n if (coercedNumber >= 0) {\n value = Math.floor(coercedNumber);\n } else {\n value = Math.ceil(coercedNumber);\n }\n }\n\n return value;\n }\n\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 Locale() {\n }\n\n var locales = {};\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 null;\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 require('./locale/' + name);\n // because defineLocale currently also sets the global locale, we\n // want to undo that for lazy loaded locales\n locale_locales__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 locale_locales__getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (typeof values === 'undefined') {\n data = locale_locales__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 }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, values) {\n if (values !== null) {\n values.abbr = name;\n if (!locales[name]) {\n locales[name] = new Locale();\n }\n locales[name].set(values);\n\n // backwards compat for now: also set the locale\n locale_locales__getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n // returns locale data\n function locale_locales__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 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 function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n get_set__set(this, unit, value);\n utils_hooks__hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get_set__get(this, unit);\n }\n };\n }\n\n function get_set__get (mom, unit) {\n return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]();\n }\n\n function get_set__set (mom, unit, value) {\n return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n\n // MOMENTS\n\n function getSet (units, value) {\n var unit;\n if (typeof units === 'object') {\n for (unit in units) {\n this.set(unit, units[unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (typeof this[units] === 'function') {\n return this[units](value);\n }\n }\n return this;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var output = '' + Math.abs(number),\n sign = number >= 0;\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return (sign ? (forceSign ? '+' : '') : '-') + output;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|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 = '';\n for (i = 0; i < length; i++) {\n output += array[i] instanceof Function ? 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\n if (!formatFunctions[format]) {\n formatFunctions[format] = makeFormatFunction(format);\n }\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 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\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 var matchWord = /[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = typeof regex === 'function' ? regex : function (isStrict) {\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 s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }).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 (typeof callback === 'number') {\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\n function daysInMonth(year, month) {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\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 // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', matchWord);\n addRegexToken('MMMM', matchWord);\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 defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m) {\n return this._months[m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m) {\n return this._monthsShort[m.month()];\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = create_utc__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 // TODO: Move this out of here!\n if (typeof value === 'string') {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (typeof value !== 'number') {\n return mom;\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 utils_hooks__hooks.updateOffset(this, true);\n return this;\n } else {\n return get_set__get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\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\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n function warn(msg) {\n if (utils_hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true,\n msgWithStack = msg + '\\n' + (new Error()).stack;\n\n return extend(function () {\n if (firstTime) {\n warn(msgWithStack);\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 (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n utils_hooks__hooks.suppressDeprecationWarnings = false;\n\n var from_string__isoRegex = /^\\s*(?:[+-]\\d{6}|\\d{4})-(?:(\\d\\d-\\d\\d)|(W\\d\\d$)|(W\\d\\d-\\d)|(\\d\\d\\d))((T| )(\\d\\d(:\\d\\d(:\\d\\d(\\.\\d+)?)?)?)?([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d{2}-\\d{2}/],\n ['YYYY-MM-DD', /\\d{4}-\\d{2}-\\d{2}/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d{2}-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d{2}/],\n ['YYYY-DDD', /\\d{4}-\\d{3}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /(T| )\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss', /(T| )\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /(T| )\\d\\d:\\d\\d/],\n ['HH', /(T| )\\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 = from_string__isoRegex.exec(string);\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(string)) {\n // match[5] should be 'T' or undefined\n config._f = isoDates[i][0] + (match[6] || ' ');\n break;\n }\n }\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(string)) {\n config._f += isoTimes[i][0];\n break;\n }\n }\n if (string.match(matchOffset)) {\n config._f += 'Z';\n }\n configFromStringAndFormat(config);\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 utils_hooks__hooks.createFromInputFallback(config);\n }\n }\n\n utils_hooks__hooks.createFromInputFallback = deprecate(\n 'moment construction falls back to js Date. This is ' +\n 'discouraged and will be removed in upcoming major ' +\n 'release. Please refer to ' +\n 'https://github.com/moment/moment/issues/1407 for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n function createDate (y, m, d, h, M, s, ms) {\n //can't just apply() to create a date:\n //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply\n var date = new Date(y, m, d, h, M, s, ms);\n\n //the date constructor doesn't accept years < 1970\n if (y < 1970) {\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 if (y < 1970) {\n date.setUTCFullYear(y);\n }\n return date;\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 // 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(['YYYY', 'YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YY', function (input, array) {\n array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input);\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 utils_hooks__hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', false);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\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 // 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 // firstDayOfWeek 0 = sun, 6 = sat\n // the day of the week that starts the week\n // (usually sunday or monday)\n // firstDayOfWeekOfYear 0 = sun, 6 = sat\n // the first week is the week that contains the first\n // of this day of the week\n // (eg. ISO weeks use thursday (4))\n function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {\n var end = firstDayOfWeekOfYear - firstDayOfWeek,\n daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(),\n adjustedMoment;\n\n\n if (daysToDayOfWeek > end) {\n daysToDayOfWeek -= 7;\n }\n\n if (daysToDayOfWeek < end - 7) {\n daysToDayOfWeek += 7;\n }\n\n adjustedMoment = local__createLocal(mom).add(daysToDayOfWeek, 'd');\n return {\n week: Math.ceil(adjustedMoment.dayOfYear() / 7),\n year: adjustedMoment.year()\n };\n }\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 addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\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 //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {\n var d = createUTCDate(year, 0, 1).getUTCDay();\n var daysToAdd;\n var dayOfYear;\n\n d = d === 0 ? 7 : d;\n weekday = weekday != null ? weekday : firstDayOfWeek;\n daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0);\n dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1;\n\n return {\n year : dayOfYear > 0 ? year : year - 1,\n dayOfYear : dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear\n };\n }\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 // 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 var now = new Date();\n if (config._useUTC) {\n return [now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()];\n }\n return [now.getFullYear(), now.getMonth(), now.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, 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) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse)) {\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 // 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\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp;\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(local__createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year);\n week = defaults(w.w, 1);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < dow) {\n ++week;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow);\n\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n\n utils_hooks__hooks.ISO_8601 = 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 === utils_hooks__hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\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 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 (getParsingFlags(config).bigHour === true &&\n config._a[HOUR] <= 12 &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\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 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 (!valid__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 = [i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond];\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var input = config._i,\n format = config._f,\n res;\n\n config._locale = config._locale || locale_locales__getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return valid__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 (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else if (isDate(input)) {\n config._d = input;\n } else {\n configFromInput(config);\n }\n\n res = new Moment(checkOverflow(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 configFromInput(config) {\n var input = config._i;\n if (input === undefined) {\n config._d = new Date();\n } else if (isDate(input)) {\n config._d = new Date(+input);\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 (typeof(input) === 'object') {\n configFromObject(config);\n } else if (typeof(input) === 'number') {\n // from milliseconds\n config._d = new Date(input);\n } else {\n utils_hooks__hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (typeof(locale) === 'boolean') {\n strict = locale;\n locale = 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 local__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.min instead. https://github.com/moment/moment/issues/1548',\n function () {\n var other = local__createLocal.apply(null, arguments);\n return other < this ? this : other;\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548',\n function () {\n var other = local__createLocal.apply(null, arguments);\n return other > this ? this : other;\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 local__createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (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 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 // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 36e5; // 1000 * 60 * 60\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 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 = locale_locales__getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\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', matchOffset);\n addRegexToken('ZZ', matchOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(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(string) {\n var matches = ((string || '').match(matchOffset) || []);\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 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 : +local__createLocal(input)) - (+res);\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(+res._d + diff);\n utils_hooks__hooks.updateOffset(res, false);\n return res;\n } else {\n return local__createLocal(input).local();\n }\n return model._isUTC ? local__createLocal(input).zone(model._offset || 0) : local__createLocal(input).local();\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 utils_hooks__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) {\n var offset = this._offset || 0,\n localAdjust;\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(input);\n }\n if (Math.abs(input) < 16) {\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 add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n utils_hooks__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) {\n this.utcOffset(this._tzm);\n } else if (typeof this._i === 'string') {\n this.utcOffset(offsetFromString(this._i));\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!input) {\n input = 0;\n }\n else {\n input = local__createLocal(input).utcOffset();\n }\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 (this._a) {\n var other = this._isUTC ? create_utc__createUTC(this._a) : local__createLocal(this._a);\n return this.isValid() && compareArrays(this._a, other.toArray()) > 0;\n }\n\n return false;\n }\n\n function isLocal () {\n return !this._isUTC;\n }\n\n function isUtcOffset () {\n return this._isUTC;\n }\n\n function isUtc () {\n return this._isUTC && this._offset === 0;\n }\n\n var aspNetRegex = /(\\-)?(?:(\\d*)\\.)?(\\d+)\\:(\\d+)(?:\\:(\\d+)\\.?(\\d{3})?)?/;\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 var create__isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;\n\n function create__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 (typeof input === 'number') {\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(match[MILLISECOND]) * sign\n };\n } else if (!!(match = create__isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n d : parseIso(match[4], sign),\n h : parseIso(match[5], sign),\n m : parseIso(match[6], sign),\n s : parseIso(match[7], sign),\n w : 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(local__createLocal(duration.from), local__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 create__createDuration.fn = Duration.prototype;\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 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 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 tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = create__createDuration(val, period);\n add_subtract__addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = duration._days,\n months = duration._months;\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (milliseconds) {\n mom._d.setTime(+mom._d + milliseconds * isAdding);\n }\n if (days) {\n get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding);\n }\n if (months) {\n setMonth(mom, get_set__get(mom, 'Month') + months * isAdding);\n }\n if (updateOffset) {\n utils_hooks__hooks.updateOffset(mom, days || months);\n }\n }\n\n var add_subtract__add = createAdder(1, 'add');\n var add_subtract__subtract = createAdder(-1, 'subtract');\n\n function moment_calendar__calendar (time) {\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 || local__createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n diff = this.diff(sod, 'days', true),\n format = 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 return this.format(this.localeData().calendar(format, this, local__createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var inputMs;\n units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');\n if (units === 'millisecond') {\n input = isMoment(input) ? input : local__createLocal(input);\n return +this > +input;\n } else {\n inputMs = isMoment(input) ? +input : +local__createLocal(input);\n return inputMs < +this.clone().startOf(units);\n }\n }\n\n function isBefore (input, units) {\n var inputMs;\n units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');\n if (units === 'millisecond') {\n input = isMoment(input) ? input : local__createLocal(input);\n return +this < +input;\n } else {\n inputMs = isMoment(input) ? +input : +local__createLocal(input);\n return +this.clone().endOf(units) < inputMs;\n }\n }\n\n function isBetween (from, to, units) {\n return this.isAfter(from, units) && this.isBefore(to, units);\n }\n\n function isSame (input, units) {\n var inputMs;\n units = normalizeUnits(units || 'millisecond');\n if (units === 'millisecond') {\n input = isMoment(input) ? input : local__createLocal(input);\n return +this === +input;\n } else {\n inputMs = +local__createLocal(input);\n return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units));\n }\n }\n\n function absFloor (number) {\n if (number < 0) {\n return Math.ceil(number);\n } else {\n return Math.floor(number);\n }\n }\n\n function diff (input, units, asFloat) {\n var that = cloneWithOffset(input, this),\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4,\n delta, output;\n\n units = normalizeUnits(units);\n\n if (units === 'year' || units === 'month' || units === 'quarter') {\n output = monthDiff(this, that);\n if (units === 'quarter') {\n output = output / 3;\n } else if (units === 'year') {\n output = output / 12;\n }\n } else {\n delta = this - that;\n output = units === 'second' ? delta / 1e3 : // 1000\n units === 'minute' ? delta / 6e4 : // 1000 * 60\n units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60\n units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst\n units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst\n delta;\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 return -(wholeMonthDiff + adjust);\n }\n\n utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function moment_format__toISOString () {\n var m = this.clone().utc();\n if (0 < m.year() && m.year() <= 9999) {\n if ('function' === typeof Date.prototype.toISOString) {\n // native implementation is ~50x faster, use it when we can\n return this.toDate().toISOString();\n } else {\n return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n } else {\n return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n }\n\n function format (inputString) {\n var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n }\n\n function fromNow (withoutSuffix) {\n return this.from(local__createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n }\n\n function toNow (withoutSuffix) {\n return this.to(local__createLocal(), withoutSuffix);\n }\n\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = locale_locales__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 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 return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n }\n\n function to_type__valueOf () {\n return +this._d - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(+this / 1000);\n }\n\n function toDate () {\n return this._offset ? new Date(+this) : this._d;\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 moment_valid__isValid () {\n return valid__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 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 // 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] = utils_hooks__hooks.parseTwoDigitYear(input);\n });\n\n // HELPERS\n\n function weeksInYear(year, dow, doy) {\n return weekOfYear(local__createLocal([year, 11, 31 + dow - doy]), dow, doy).week;\n }\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year;\n return input == null ? year : this.add((input - year), 'y');\n }\n\n function getSetISOWeekYear (input) {\n var year = weekOfYear(this, 1, 4).year;\n return input == null ? year : this.add((input - year), 'y');\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 addFormatToken('Q', 0, 0, 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\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 addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0], 10);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\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 // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', matchWord);\n addRegexToken('ddd', matchWord);\n addRegexToken('dddd', matchWord);\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config) {\n var weekday = config._locale.weekdaysParse(input);\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 if (!isNaN(input)) {\n input = parseInt(input, 10);\n }\n else {\n input = locale.weekdaysParse(input);\n if (typeof input !== 'number') {\n return null;\n }\n }\n }\n return input;\n }\n\n // LOCALES\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m) {\n return this._weekdays[m.day()];\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return this._weekdaysShort[m.day()];\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return this._weekdaysMin[m.day()];\n }\n\n function localeWeekdaysParse (weekdayName) {\n var i, mom, regex;\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n if (!this._weekdaysParse[i]) {\n mom = local__createLocal([2000, 1]).day(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 (this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\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 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 // 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 return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, function () {\n return this.hours() % 12 || 12;\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 // 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('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n\n addParseToken(['H', 'HH'], HOUR);\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\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 he wants. 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 addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\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 addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\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 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 function millisecond__milliseconds (token) {\n addFormatToken(0, [token, 3], 0, 'millisecond');\n }\n\n millisecond__milliseconds('SSS');\n millisecond__milliseconds('SSSS');\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n addRegexToken('SSSS', matchUnsigned);\n addParseToken(['S', 'SS', 'SSS', 'SSSS'], function (input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n });\n\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\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 momentPrototype__proto = Moment.prototype;\n\n momentPrototype__proto.add = add_subtract__add;\n momentPrototype__proto.calendar = moment_calendar__calendar;\n momentPrototype__proto.clone = clone;\n momentPrototype__proto.diff = diff;\n momentPrototype__proto.endOf = endOf;\n momentPrototype__proto.format = format;\n momentPrototype__proto.from = from;\n momentPrototype__proto.fromNow = fromNow;\n momentPrototype__proto.to = to;\n momentPrototype__proto.toNow = toNow;\n momentPrototype__proto.get = getSet;\n momentPrototype__proto.invalidAt = invalidAt;\n momentPrototype__proto.isAfter = isAfter;\n momentPrototype__proto.isBefore = isBefore;\n momentPrototype__proto.isBetween = isBetween;\n momentPrototype__proto.isSame = isSame;\n momentPrototype__proto.isValid = moment_valid__isValid;\n momentPrototype__proto.lang = lang;\n momentPrototype__proto.locale = locale;\n momentPrototype__proto.localeData = localeData;\n momentPrototype__proto.max = prototypeMax;\n momentPrototype__proto.min = prototypeMin;\n momentPrototype__proto.parsingFlags = parsingFlags;\n momentPrototype__proto.set = getSet;\n momentPrototype__proto.startOf = startOf;\n momentPrototype__proto.subtract = add_subtract__subtract;\n momentPrototype__proto.toArray = toArray;\n momentPrototype__proto.toDate = toDate;\n momentPrototype__proto.toISOString = moment_format__toISOString;\n momentPrototype__proto.toJSON = moment_format__toISOString;\n momentPrototype__proto.toString = toString;\n momentPrototype__proto.unix = unix;\n momentPrototype__proto.valueOf = to_type__valueOf;\n\n // Year\n momentPrototype__proto.year = getSetYear;\n momentPrototype__proto.isLeapYear = getIsLeapYear;\n\n // Week Year\n momentPrototype__proto.weekYear = getSetWeekYear;\n momentPrototype__proto.isoWeekYear = getSetISOWeekYear;\n\n // Quarter\n momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter;\n\n // Month\n momentPrototype__proto.month = getSetMonth;\n momentPrototype__proto.daysInMonth = getDaysInMonth;\n\n // Week\n momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek;\n momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek;\n momentPrototype__proto.weeksInYear = getWeeksInYear;\n momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear;\n\n // Day\n momentPrototype__proto.date = getSetDayOfMonth;\n momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek;\n momentPrototype__proto.weekday = getSetLocaleDayOfWeek;\n momentPrototype__proto.isoWeekday = getSetISODayOfWeek;\n momentPrototype__proto.dayOfYear = getSetDayOfYear;\n\n // Hour\n momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour;\n\n // Minute\n momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute;\n\n // Second\n momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond;\n\n // Millisecond\n momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond;\n\n // Offset\n momentPrototype__proto.utcOffset = getSetOffset;\n momentPrototype__proto.utc = setOffsetToUTC;\n momentPrototype__proto.local = setOffsetToLocal;\n momentPrototype__proto.parseZone = setOffsetToParsedOffset;\n momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset;\n momentPrototype__proto.isDST = isDaylightSavingTime;\n momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted;\n momentPrototype__proto.isLocal = isLocal;\n momentPrototype__proto.isUtcOffset = isUtcOffset;\n momentPrototype__proto.isUtc = isUtc;\n momentPrototype__proto.isUTC = isUtc;\n\n // Timezone\n momentPrototype__proto.zoneAbbr = getZoneAbbr;\n momentPrototype__proto.zoneName = getZoneName;\n\n // Deprecations\n momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone);\n\n var momentPrototype = momentPrototype__proto;\n\n function moment__createUnix (input) {\n return local__createLocal(input * 1000);\n }\n\n function moment__createInZone () {\n return local__createLocal.apply(null, arguments).parseZone();\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 locale_calendar__calendar (key, mom, now) {\n var output = this._calendar[key];\n return typeof output === 'function' ? 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 LT',\n LLLL : 'dddd, MMMM D, YYYY LT'\n };\n\n function longDateFormat (key) {\n var output = this._longDateFormat[key];\n if (!output && this._longDateFormat[key.toUpperCase()]) {\n output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n this._longDateFormat[key] = output;\n }\n return output;\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var defaultRelativeTime = {\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\n function relative__relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (typeof output === 'function') ?\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 typeof format === 'function' ? format(output) : format.replace(/%s/i, output);\n }\n\n function locale_set__set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (typeof prop === 'function') {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _ordinalParseLenient.\n this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\\d{1,2}/).source);\n }\n\n var prototype__proto = Locale.prototype;\n\n prototype__proto._calendar = defaultCalendar;\n prototype__proto.calendar = locale_calendar__calendar;\n prototype__proto._longDateFormat = defaultLongDateFormat;\n prototype__proto.longDateFormat = longDateFormat;\n prototype__proto._invalidDate = defaultInvalidDate;\n prototype__proto.invalidDate = invalidDate;\n prototype__proto._ordinal = defaultOrdinal;\n prototype__proto.ordinal = ordinal;\n prototype__proto._ordinalParse = defaultOrdinalParse;\n prototype__proto.preparse = preParsePostFormat;\n prototype__proto.postformat = preParsePostFormat;\n prototype__proto._relativeTime = defaultRelativeTime;\n prototype__proto.relativeTime = relative__relativeTime;\n prototype__proto.pastFuture = pastFuture;\n prototype__proto.set = locale_set__set;\n\n // Month\n prototype__proto.months = localeMonths;\n prototype__proto._months = defaultLocaleMonths;\n prototype__proto.monthsShort = localeMonthsShort;\n prototype__proto._monthsShort = defaultLocaleMonthsShort;\n prototype__proto.monthsParse = localeMonthsParse;\n\n // Week\n prototype__proto.week = localeWeek;\n prototype__proto._week = defaultLocaleWeek;\n prototype__proto.firstDayOfYear = localeFirstDayOfYear;\n prototype__proto.firstDayOfWeek = localeFirstDayOfWeek;\n\n // Day of Week\n prototype__proto.weekdays = localeWeekdays;\n prototype__proto._weekdays = defaultLocaleWeekdays;\n prototype__proto.weekdaysMin = localeWeekdaysMin;\n prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin;\n prototype__proto.weekdaysShort = localeWeekdaysShort;\n prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort;\n prototype__proto.weekdaysParse = localeWeekdaysParse;\n\n // Hours\n prototype__proto.isPM = localeIsPM;\n prototype__proto._meridiemParse = defaultLocaleMeridiemParse;\n prototype__proto.meridiem = localeMeridiem;\n\n function lists__get (format, index, field, setter) {\n var locale = locale_locales__getLocale();\n var utc = create_utc__createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function list (format, index, field, count, setter) {\n if (typeof format === 'number') {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return lists__get(format, index, field, setter);\n }\n\n var i;\n var out = [];\n for (i = 0; i < count; i++) {\n out[i] = lists__get(format, i, field, setter);\n }\n return out;\n }\n\n function lists__listMonths (format, index) {\n return list(format, index, 'months', 12, 'month');\n }\n\n function lists__listMonthsShort (format, index) {\n return list(format, index, 'monthsShort', 12, 'month');\n }\n\n function lists__listWeekdays (format, index) {\n return list(format, index, 'weekdays', 7, 'day');\n }\n\n function lists__listWeekdaysShort (format, index) {\n return list(format, index, 'weekdaysShort', 7, 'day');\n }\n\n function lists__listWeekdaysMin (format, index) {\n return list(format, index, 'weekdaysMin', 7, 'day');\n }\n\n locale_locales__getSetGlobalLocale('en', {\n ordinalParse: /\\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 utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale);\n utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale);\n\n var mathAbs = Math.abs;\n\n function duration_abs__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 duration_add_subtract__addSubtract (duration, input, value, direction) {\n var other = create__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 duration_add_subtract__add (input, value) {\n return duration_add_subtract__addSubtract(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function duration_add_subtract__subtract (input, value) {\n return duration_add_subtract__addSubtract(this, input, value, -1);\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 = 0;\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 // Accurately convert days to years, assume start from year 0.\n years = absFloor(daysToYears(days));\n days -= absFloor(yearsToDays(years));\n\n // 30 days to a month\n // TODO (iskren): Use anchor date (like 1st Jan) to compute this.\n months += absFloor(days / 30);\n days %= 30;\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 daysToYears (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n return days * 400 / 146097;\n }\n\n function yearsToDays (years) {\n // years * 365 + absFloor(years / 4) -\n // absFloor(years / 100) + absFloor(years / 400);\n return years * 146097 / 400;\n }\n\n function as (units) {\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 + daysToYears(days) * 12;\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(yearsToDays(this._months / 12));\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 duration_as__valueOf () {\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 duration_get__get (units) {\n units = normalizeUnits(units);\n return this[units + 's']();\n }\n\n function makeGetter(name) {\n return function () {\n return this._data[name];\n };\n }\n\n var duration_get__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 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 duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) {\n var duration = create__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.s && ['s', 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 a threshold for relative time strings\n function duration_humanize__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 return true;\n }\n\n function humanize (withSuffix) {\n var locale = this.localeData();\n var output = duration_humanize__relativeTime(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var iso_string__abs = Math.abs;\n\n function iso_string__toISOString() {\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = iso_string__abs(this.years());\n var M = iso_string__abs(this.months());\n var D = iso_string__abs(this.days());\n var h = iso_string__abs(this.hours());\n var m = iso_string__abs(this.minutes());\n var s = iso_string__abs(this.seconds() + this.milliseconds() / 1000);\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 return (total < 0 ? '-' : '') +\n 'P' +\n (Y ? Y + 'Y' : '') +\n (M ? M + 'M' : '') +\n (D ? D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? h + 'H' : '') +\n (m ? m + 'M' : '') +\n (s ? s + 'S' : '');\n }\n\n var duration_prototype__proto = Duration.prototype;\n\n duration_prototype__proto.abs = duration_abs__abs;\n duration_prototype__proto.add = duration_add_subtract__add;\n duration_prototype__proto.subtract = duration_add_subtract__subtract;\n duration_prototype__proto.as = as;\n duration_prototype__proto.asMilliseconds = asMilliseconds;\n duration_prototype__proto.asSeconds = asSeconds;\n duration_prototype__proto.asMinutes = asMinutes;\n duration_prototype__proto.asHours = asHours;\n duration_prototype__proto.asDays = asDays;\n duration_prototype__proto.asWeeks = asWeeks;\n duration_prototype__proto.asMonths = asMonths;\n duration_prototype__proto.asYears = asYears;\n duration_prototype__proto.valueOf = duration_as__valueOf;\n duration_prototype__proto._bubble = bubble;\n duration_prototype__proto.get = duration_get__get;\n duration_prototype__proto.milliseconds = duration_get__milliseconds;\n duration_prototype__proto.seconds = seconds;\n duration_prototype__proto.minutes = minutes;\n duration_prototype__proto.hours = hours;\n duration_prototype__proto.days = days;\n duration_prototype__proto.weeks = weeks;\n duration_prototype__proto.months = months;\n duration_prototype__proto.years = years;\n duration_prototype__proto.humanize = humanize;\n duration_prototype__proto.toISOString = iso_string__toISOString;\n duration_prototype__proto.toString = iso_string__toISOString;\n duration_prototype__proto.toJSON = iso_string__toISOString;\n duration_prototype__proto.locale = locale;\n duration_prototype__proto.localeData = localeData;\n\n // Deprecations\n duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString);\n duration_prototype__proto.lang = lang;\n\n // Side effect imports\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 utils_hooks__hooks.version = '2.10.3';\n\n setHookCallback(local__createLocal);\n\n utils_hooks__hooks.fn = momentPrototype;\n utils_hooks__hooks.min = min;\n utils_hooks__hooks.max = max;\n utils_hooks__hooks.utc = create_utc__createUTC;\n utils_hooks__hooks.unix = moment__createUnix;\n utils_hooks__hooks.months = lists__listMonths;\n utils_hooks__hooks.isDate = isDate;\n utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale;\n utils_hooks__hooks.invalid = valid__createInvalid;\n utils_hooks__hooks.duration = create__createDuration;\n utils_hooks__hooks.isMoment = isMoment;\n utils_hooks__hooks.weekdays = lists__listWeekdays;\n utils_hooks__hooks.parseZone = moment__createInZone;\n utils_hooks__hooks.localeData = locale_locales__getLocale;\n utils_hooks__hooks.isDuration = isDuration;\n utils_hooks__hooks.monthsShort = lists__listMonthsShort;\n utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin;\n utils_hooks__hooks.defineLocale = defineLocale;\n utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort;\n utils_hooks__hooks.normalizeUnits = normalizeUnits;\n utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold;\n\n var _moment = utils_hooks__hooks;\n\n return _moment;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./bower_components/moment/moment.js\n ** module id = 2\n ** module chunks = 0 1 2\n **/","define(function (require) {\n var angular = require('angular');\n var existingModules = {};\n var _ = require('lodash');\n var links = [];\n\n function link(module) {\n // as modules are defined they will be set as requirements for this app\n links.push(module);\n\n // merge in the existing modules\n module.requires = _.union(module.requires, _.keys(existingModules));\n }\n\n function get(moduleName, requires) {\n var module = existingModules[moduleName];\n\n if (module === void 0) {\n // create the module\n module = existingModules[moduleName] = angular.module(moduleName, []);\n\n module.close = _.partial(close, moduleName);\n\n // ensure that it is required by linked modules\n _.each(links, function (app) {\n if (!~app.requires.indexOf(moduleName)) app.requires.push(moduleName);\n });\n }\n\n if (requires) {\n // update requires list with possibly new requirements\n module.requires = _.union(module.requires, requires);\n }\n\n return module;\n }\n\n function close(moduleName) {\n var module = existingModules[moduleName];\n\n // already closed\n if (!module) return;\n\n // if the module is currently linked, unlink it\n var i = links.indexOf(module);\n if (i > -1) links.splice(i, 1);\n\n // remove from linked modules list of required modules\n _.each(links, function (app) {\n _.pull(app.requires, moduleName);\n });\n\n // remove module from existingModules\n delete existingModules[moduleName];\n }\n\n return {\n link: link,\n get: get,\n close: close\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/ui/components/modules.js\n ** module id = 3\n ** module chunks = 0 1 2\n **/","/*** IMPORTS FROM imports-loader ***/\nvar $ = require(\"jquery\");\n\n/**\n * @license AngularJS v1.2.28\n * (c) 2010-2014 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(window, document, undefined) {'use strict';\n\n/**\n * @description\n *\n * This object provides a utility for producing rich Error messages within\n * Angular. It can be called as follows:\n *\n * var exampleMinErr = minErr('example');\n * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);\n *\n * The above creates an instance of minErr in the example namespace. The\n * resulting error will have a namespaced error code of example.one. The\n * resulting error will replace {0} with the value of foo, and {1} with the\n * value of bar. The object is not restricted in the number of arguments it can\n * take.\n *\n * If fewer arguments are specified than necessary for interpolation, the extra\n * interpolation markers will be preserved in the final string.\n *\n * Since data will be parsed statically during a build step, some restrictions\n * are applied with respect to how minErr instances are created and called.\n * Instances should have names of the form namespaceMinErr for a minErr created\n * using minErr('namespace') . Error codes, namespaces and template strings\n * should all be static strings, not variables or general expressions.\n *\n * @param {string} module The namespace to use for the new minErr instance.\n * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance\n */\n\nfunction minErr(module) {\n return function () {\n var code = arguments[0],\n prefix = '[' + (module ? module + ':' : '') + code + '] ',\n template = arguments[1],\n templateArgs = arguments,\n stringify = function (obj) {\n if (typeof obj === 'function') {\n return obj.toString().replace(/ \\{[\\s\\S]*$/, '');\n } else if (typeof obj === 'undefined') {\n return 'undefined';\n } else if (typeof obj !== 'string') {\n return JSON.stringify(obj);\n }\n return obj;\n },\n message, i;\n\n message = prefix + template.replace(/\\{\\d+\\}/g, function (match) {\n var index = +match.slice(1, -1), arg;\n\n if (index + 2 < templateArgs.length) {\n arg = templateArgs[index + 2];\n if (typeof arg === 'function') {\n return arg.toString().replace(/ ?\\{[\\s\\S]*$/, '');\n } else if (typeof arg === 'undefined') {\n return 'undefined';\n } else if (typeof arg !== 'string') {\n return toJson(arg);\n }\n return arg;\n }\n return match;\n });\n\n message = message + '\\nhttp://errors.angularjs.org/1.2.28/' +\n (module ? module + '/' : '') + code;\n for (i = 2; i < arguments.length; i++) {\n message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +\n encodeURIComponent(stringify(arguments[i]));\n }\n\n return new Error(message);\n };\n}\n\n/* We need to tell jshint what variables are being exported */\n/* global angular: true,\n msie: true,\n jqLite: true,\n jQuery: true,\n slice: true,\n push: true,\n toString: true,\n ngMinErr: true,\n angularModule: true,\n nodeName_: true,\n uid: true,\n VALIDITY_STATE_PROPERTY: true,\n\n lowercase: true,\n uppercase: true,\n manualLowercase: true,\n manualUppercase: true,\n nodeName_: true,\n isArrayLike: true,\n forEach: true,\n sortedKeys: true,\n forEachSorted: true,\n reverseParams: true,\n nextUid: true,\n setHashKey: true,\n extend: true,\n int: true,\n inherit: true,\n noop: true,\n identity: true,\n valueFn: true,\n isUndefined: true,\n isDefined: true,\n isObject: true,\n isString: true,\n isNumber: true,\n isDate: true,\n isArray: true,\n isFunction: true,\n isRegExp: true,\n isWindow: true,\n isScope: true,\n isFile: true,\n isBlob: true,\n isBoolean: true,\n isPromiseLike: true,\n trim: true,\n isElement: true,\n makeMap: true,\n map: true,\n size: true,\n includes: true,\n indexOf: true,\n arrayRemove: true,\n isLeafNode: true,\n copy: true,\n shallowCopy: true,\n equals: true,\n csp: true,\n concat: true,\n sliceArgs: true,\n bind: true,\n toJsonReplacer: true,\n toJson: true,\n fromJson: true,\n toBoolean: true,\n startingTag: true,\n tryDecodeURIComponent: true,\n parseKeyValue: true,\n toKeyValue: true,\n encodeUriSegment: true,\n encodeUriQuery: true,\n angularInit: true,\n bootstrap: true,\n snake_case: true,\n bindJQuery: true,\n assertArg: true,\n assertArgFn: true,\n assertNotHasOwnProperty: true,\n getter: true,\n getBlockElements: true,\n hasOwnProperty: true,\n*/\n\n////////////////////////////////////\n\n/**\n * @ngdoc module\n * @name ng\n * @module ng\n * @description\n *\n * # ng (core module)\n * The ng module is loaded by default when an AngularJS application is started. The module itself\n * contains the essential components for an AngularJS application to function. The table below\n * lists a high level breakdown of each of the services/factories, filters, directives and testing\n * components available within this core module.\n *\n *
\n */\n\n// The name of a form control's ValidityState property.\n// This is used so that it's possible for internal tests to create mock ValidityStates.\nvar VALIDITY_STATE_PROPERTY = 'validity';\n\n/**\n * @ngdoc function\n * @name angular.lowercase\n * @module ng\n * @kind function\n *\n * @description Converts the specified string to lowercase.\n * @param {string} string String to be converted to lowercase.\n * @returns {string} Lowercased string.\n */\nvar lowercase = function(string){return isString(string) ? string.toLowerCase() : string;};\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * @ngdoc function\n * @name angular.uppercase\n * @module ng\n * @kind function\n *\n * @description Converts the specified string to uppercase.\n * @param {string} string String to be converted to uppercase.\n * @returns {string} Uppercased string.\n */\nvar uppercase = function(string){return isString(string) ? string.toUpperCase() : string;};\n\n\nvar manualLowercase = function(s) {\n /* jshint bitwise: false */\n return isString(s)\n ? s.replace(/[A-Z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) | 32);})\n : s;\n};\nvar manualUppercase = function(s) {\n /* jshint bitwise: false */\n return isString(s)\n ? s.replace(/[a-z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) & ~32);})\n : s;\n};\n\n\n// String#toLowerCase and String#toUpperCase don't produce correct results in browsers with Turkish\n// locale, for this reason we need to detect this case and redefine lowercase/uppercase methods\n// with correct but slower alternatives.\nif ('i' !== 'I'.toLowerCase()) {\n lowercase = manualLowercase;\n uppercase = manualUppercase;\n}\n\n\nvar\n msie, // holds major version number for IE, or NaN if UA is not IE.\n jqLite, // delay binding since jQuery could be loaded after us.\n jQuery, // delay binding\n slice = [].slice,\n push = [].push,\n toString = Object.prototype.toString,\n ngMinErr = minErr('ng'),\n\n /** @name angular */\n angular = window.angular || (window.angular = {}),\n angularModule,\n nodeName_,\n uid = ['0', '0', '0'];\n\n/**\n * IE 11 changed the format of the UserAgent string.\n * See http://msdn.microsoft.com/en-us/library/ms537503.aspx\n */\nmsie = int((/msie (\\d+)/.exec(lowercase(navigator.userAgent)) || [])[1]);\nif (isNaN(msie)) {\n msie = int((/trident\\/.*; rv:(\\d+)/.exec(lowercase(navigator.userAgent)) || [])[1]);\n}\n\n\n/**\n * @private\n * @param {*} obj\n * @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments,\n * String ...)\n */\nfunction isArrayLike(obj) {\n if (obj == null || isWindow(obj)) {\n return false;\n }\n\n var length = obj.length;\n\n if (obj.nodeType === 1 && length) {\n return true;\n }\n\n return isString(obj) || isArray(obj) || length === 0 ||\n typeof length === 'number' && length > 0 && (length - 1) in obj;\n}\n\n/**\n * @ngdoc function\n * @name angular.forEach\n * @module ng\n * @kind function\n *\n * @description\n * Invokes the `iterator` function once for each item in `obj` collection, which can be either an\n * object or an array. The `iterator` function is invoked with `iterator(value, key)`, where `value`\n * is the value of an object property or an array element and `key` is the object property key or\n * array element index. Specifying a `context` for the function is optional.\n *\n * It is worth noting that `.forEach` does not iterate over inherited properties because it filters\n * using the `hasOwnProperty` method.\n *\n ```js\n var values = {name: 'misko', gender: 'male'};\n var log = [];\n angular.forEach(values, function(value, key) {\n this.push(key + ': ' + value);\n }, log);\n expect(log).toEqual(['name: misko', 'gender: male']);\n ```\n *\n * @param {Object|Array} obj Object to iterate over.\n * @param {Function} iterator Iterator function.\n * @param {Object=} context Object to become context (`this`) for the iterator function.\n * @returns {Object|Array} Reference to `obj`.\n */\nfunction forEach(obj, iterator, context) {\n var key;\n if (obj) {\n if (isFunction(obj)) {\n for (key in obj) {\n // Need to check if hasOwnProperty exists,\n // as on IE8 the result of querySelectorAll is an object without a hasOwnProperty function\n if (key != 'prototype' && key != 'length' && key != 'name' && (!obj.hasOwnProperty || obj.hasOwnProperty(key))) {\n iterator.call(context, obj[key], key);\n }\n }\n } else if (isArray(obj) || isArrayLike(obj)) {\n for (key = 0; key < obj.length; key++) {\n iterator.call(context, obj[key], key);\n }\n } else if (obj.forEach && obj.forEach !== forEach) {\n obj.forEach(iterator, context);\n } else {\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n iterator.call(context, obj[key], key);\n }\n }\n }\n }\n return obj;\n}\n\nfunction sortedKeys(obj) {\n var keys = [];\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n keys.push(key);\n }\n }\n return keys.sort();\n}\n\nfunction forEachSorted(obj, iterator, context) {\n var keys = sortedKeys(obj);\n for ( var i = 0; i < keys.length; i++) {\n iterator.call(context, obj[keys[i]], keys[i]);\n }\n return keys;\n}\n\n\n/**\n * when using forEach the params are value, key, but it is often useful to have key, value.\n * @param {function(string, *)} iteratorFn\n * @returns {function(*, string)}\n */\nfunction reverseParams(iteratorFn) {\n return function(value, key) { iteratorFn(key, value); };\n}\n\n/**\n * A consistent way of creating unique IDs in angular. The ID is a sequence of alpha numeric\n * characters such as '012ABC'. The reason why we are not using simply a number counter is that\n * the number string gets longer over time, and it can also overflow, where as the nextId\n * will grow much slower, it is a string, and it will never overflow.\n *\n * @returns {string} an unique alpha-numeric string\n */\nfunction nextUid() {\n var index = uid.length;\n var digit;\n\n while(index) {\n index--;\n digit = uid[index].charCodeAt(0);\n if (digit == 57 /*'9'*/) {\n uid[index] = 'A';\n return uid.join('');\n }\n if (digit == 90 /*'Z'*/) {\n uid[index] = '0';\n } else {\n uid[index] = String.fromCharCode(digit + 1);\n return uid.join('');\n }\n }\n uid.unshift('0');\n return uid.join('');\n}\n\n\n/**\n * Set or clear the hashkey for an object.\n * @param obj object\n * @param h the hashkey (!truthy to delete the hashkey)\n */\nfunction setHashKey(obj, h) {\n if (h) {\n obj.$$hashKey = h;\n }\n else {\n delete obj.$$hashKey;\n }\n}\n\n/**\n * @ngdoc function\n * @name angular.extend\n * @module ng\n * @kind function\n *\n * @description\n * Extends the destination object `dst` by copying own enumerable properties from the `src` object(s)\n * to `dst`. You can specify multiple `src` objects.\n *\n * @param {Object} dst Destination object.\n * @param {...Object} src Source object(s).\n * @returns {Object} Reference to `dst`.\n */\nfunction extend(dst) {\n var h = dst.$$hashKey;\n forEach(arguments, function(obj) {\n if (obj !== dst) {\n forEach(obj, function(value, key) {\n dst[key] = value;\n });\n }\n });\n\n setHashKey(dst,h);\n return dst;\n}\n\nfunction int(str) {\n return parseInt(str, 10);\n}\n\n\nfunction inherit(parent, extra) {\n return extend(new (extend(function() {}, {prototype:parent}))(), extra);\n}\n\n/**\n * @ngdoc function\n * @name angular.noop\n * @module ng\n * @kind function\n *\n * @description\n * A function that performs no operations. This function can be useful when writing code in the\n * functional style.\n ```js\n function foo(callback) {\n var result = calculateResult();\n (callback || angular.noop)(result);\n }\n ```\n */\nfunction noop() {}\nnoop.$inject = [];\n\n\n/**\n * @ngdoc function\n * @name angular.identity\n * @module ng\n * @kind function\n *\n * @description\n * A function that returns its first argument. This function is useful when writing code in the\n * functional style.\n *\n ```js\n function transformer(transformationFn, value) {\n return (transformationFn || angular.identity)(value);\n };\n ```\n */\nfunction identity($) {return $;}\nidentity.$inject = [];\n\n\nfunction valueFn(value) {return function() {return value;};}\n\n/**\n * @ngdoc function\n * @name angular.isUndefined\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is undefined.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is undefined.\n */\nfunction isUndefined(value){return typeof value === 'undefined';}\n\n\n/**\n * @ngdoc function\n * @name angular.isDefined\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is defined.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is defined.\n */\nfunction isDefined(value){return typeof value !== 'undefined';}\n\n\n/**\n * @ngdoc function\n * @name angular.isObject\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is an `Object`. Unlike `typeof` in JavaScript, `null`s are not\n * considered to be objects. Note that JavaScript arrays are objects.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is an `Object` but not `null`.\n */\nfunction isObject(value){return value != null && typeof value === 'object';}\n\n\n/**\n * @ngdoc function\n * @name angular.isString\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `String`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `String`.\n */\nfunction isString(value){return typeof value === 'string';}\n\n\n/**\n * @ngdoc function\n * @name angular.isNumber\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `Number`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Number`.\n */\nfunction isNumber(value){return typeof value === 'number';}\n\n\n/**\n * @ngdoc function\n * @name angular.isDate\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a value is a date.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Date`.\n */\nfunction isDate(value) {\n return toString.call(value) === '[object Date]';\n}\n\n\n/**\n * @ngdoc function\n * @name angular.isArray\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is an `Array`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is an `Array`.\n */\nvar isArray = (function() {\n if (!isFunction(Array.isArray)) {\n return function(value) {\n return toString.call(value) === '[object Array]';\n };\n }\n return Array.isArray;\n})();\n\n/**\n * @ngdoc function\n * @name angular.isFunction\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `Function`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Function`.\n */\nfunction isFunction(value){return typeof value === 'function';}\n\n\n/**\n * Determines if a value is a regular expression object.\n *\n * @private\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `RegExp`.\n */\nfunction isRegExp(value) {\n return toString.call(value) === '[object RegExp]';\n}\n\n\n/**\n * Checks if `obj` is a window object.\n *\n * @private\n * @param {*} obj Object to check\n * @returns {boolean} True if `obj` is a window obj.\n */\nfunction isWindow(obj) {\n return obj && obj.document && obj.location && obj.alert && obj.setInterval;\n}\n\n\nfunction isScope(obj) {\n return obj && obj.$evalAsync && obj.$watch;\n}\n\n\nfunction isFile(obj) {\n return toString.call(obj) === '[object File]';\n}\n\n\nfunction isBlob(obj) {\n return toString.call(obj) === '[object Blob]';\n}\n\n\nfunction isBoolean(value) {\n return typeof value === 'boolean';\n}\n\n\nfunction isPromiseLike(obj) {\n return obj && isFunction(obj.then);\n}\n\n\nvar trim = (function() {\n // native trim is way faster: http://jsperf.com/angular-trim-test\n // but IE doesn't have it... :-(\n // TODO: we should move this into IE/ES5 polyfill\n if (!String.prototype.trim) {\n return function(value) {\n return isString(value) ? value.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '') : value;\n };\n }\n return function(value) {\n return isString(value) ? value.trim() : value;\n };\n})();\n\n\n/**\n * @ngdoc function\n * @name angular.isElement\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a DOM element (or wrapped jQuery element).\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a DOM element (or wrapped jQuery element).\n */\nfunction isElement(node) {\n return !!(node &&\n (node.nodeName // we are a direct element\n || (node.prop && node.attr && node.find))); // we have an on and find method part of jQuery API\n}\n\n/**\n * @param str 'key1,key2,...'\n * @returns {object} in the form of {key1:true, key2:true, ...}\n */\nfunction makeMap(str) {\n var obj = {}, items = str.split(\",\"), i;\n for ( i = 0; i < items.length; i++ )\n obj[ items[i] ] = true;\n return obj;\n}\n\n\nif (msie < 9) {\n nodeName_ = function(element) {\n element = element.nodeName ? element : element[0];\n return (element.scopeName && element.scopeName != 'HTML')\n ? uppercase(element.scopeName + ':' + element.nodeName) : element.nodeName;\n };\n} else {\n nodeName_ = function(element) {\n return element.nodeName ? element.nodeName : element[0].nodeName;\n };\n}\n\n\nfunction map(obj, iterator, context) {\n var results = [];\n forEach(obj, function(value, index, list) {\n results.push(iterator.call(context, value, index, list));\n });\n return results;\n}\n\n\n/**\n * @description\n * Determines the number of elements in an array, the number of properties an object has, or\n * the length of a string.\n *\n * Note: This function is used to augment the Object type in Angular expressions. See\n * {@link angular.Object} for more information about Angular arrays.\n *\n * @param {Object|Array|string} obj Object, array, or string to inspect.\n * @param {boolean} [ownPropsOnly=false] Count only \"own\" properties in an object\n * @returns {number} The size of `obj` or `0` if `obj` is neither an object nor an array.\n */\nfunction size(obj, ownPropsOnly) {\n var count = 0, key;\n\n if (isArray(obj) || isString(obj)) {\n return obj.length;\n } else if (isObject(obj)) {\n for (key in obj)\n if (!ownPropsOnly || obj.hasOwnProperty(key))\n count++;\n }\n\n return count;\n}\n\n\nfunction includes(array, obj) {\n return indexOf(array, obj) != -1;\n}\n\nfunction indexOf(array, obj) {\n if (array.indexOf) return array.indexOf(obj);\n\n for (var i = 0; i < array.length; i++) {\n if (obj === array[i]) return i;\n }\n return -1;\n}\n\nfunction arrayRemove(array, value) {\n var index = indexOf(array, value);\n if (index >=0)\n array.splice(index, 1);\n return value;\n}\n\nfunction isLeafNode (node) {\n if (node) {\n switch (node.nodeName) {\n case \"OPTION\":\n case \"PRE\":\n case \"TITLE\":\n return true;\n }\n }\n return false;\n}\n\n/**\n * @ngdoc function\n * @name angular.copy\n * @module ng\n * @kind function\n *\n * @description\n * Creates a deep copy of `source`, which should be an object or an array.\n *\n * * If no destination is supplied, a copy of the object or array is created.\n * * If a destination is provided, all of its elements (for array) or properties (for objects)\n * are deleted and then all elements/properties from the source are copied to it.\n * * If `source` is not an object or array (inc. `null` and `undefined`), `source` is returned.\n * * If `source` is identical to 'destination' an exception will be thrown.\n *\n * @param {*} source The source that will be used to make a copy.\n * Can be any type, including primitives, `null`, and `undefined`.\n * @param {(Object|Array)=} destination Destination into which the source is copied. If\n * provided, must be of the same type as `source`.\n * @returns {*} The copy or updated `destination`, if `destination` was specified.\n *\n * @example\n \n \n
\n
\n Name:
\n E-mail:
\n Gender: male\n female
\n \n \n
\n
form = {{user | json}}
\n
master = {{master | json}}
\n
\n\n \n
\n
\n */\nfunction copy(source, destination, stackSource, stackDest) {\n if (isWindow(source) || isScope(source)) {\n throw ngMinErr('cpws',\n \"Can't copy! Making copies of Window or Scope instances is not supported.\");\n }\n\n if (!destination) {\n destination = source;\n if (source) {\n if (isArray(source)) {\n destination = copy(source, [], stackSource, stackDest);\n } else if (isDate(source)) {\n destination = new Date(source.getTime());\n } else if (isRegExp(source)) {\n destination = new RegExp(source.source, source.toString().match(/[^\\/]*$/)[0]);\n destination.lastIndex = source.lastIndex;\n } else if (isObject(source)) {\n destination = copy(source, {}, stackSource, stackDest);\n }\n }\n } else {\n if (source === destination) throw ngMinErr('cpi',\n \"Can't copy! Source and destination are identical.\");\n\n stackSource = stackSource || [];\n stackDest = stackDest || [];\n\n if (isObject(source)) {\n var index = indexOf(stackSource, source);\n if (index !== -1) return stackDest[index];\n\n stackSource.push(source);\n stackDest.push(destination);\n }\n\n var result;\n if (isArray(source)) {\n destination.length = 0;\n for ( var i = 0; i < source.length; i++) {\n result = copy(source[i], null, stackSource, stackDest);\n if (isObject(source[i])) {\n stackSource.push(source[i]);\n stackDest.push(result);\n }\n destination.push(result);\n }\n } else {\n var h = destination.$$hashKey;\n if (isArray(destination)) {\n destination.length = 0;\n } else {\n forEach(destination, function(value, key) {\n delete destination[key];\n });\n }\n for ( var key in source) {\n result = copy(source[key], null, stackSource, stackDest);\n if (isObject(source[key])) {\n stackSource.push(source[key]);\n stackDest.push(result);\n }\n destination[key] = result;\n }\n setHashKey(destination,h);\n }\n\n }\n return destination;\n}\n\n/**\n * Creates a shallow copy of an object, an array or a primitive\n */\nfunction shallowCopy(src, dst) {\n if (isArray(src)) {\n dst = dst || [];\n\n for ( var i = 0; i < src.length; i++) {\n dst[i] = src[i];\n }\n } else if (isObject(src)) {\n dst = dst || {};\n\n for (var key in src) {\n if (hasOwnProperty.call(src, key) && !(key.charAt(0) === '$' && key.charAt(1) === '$')) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst || src;\n}\n\n\n/**\n * @ngdoc function\n * @name angular.equals\n * @module ng\n * @kind function\n *\n * @description\n * Determines if two objects or two values are equivalent. Supports value types, regular\n * expressions, arrays and objects.\n *\n * Two objects or values are considered equivalent if at least one of the following is true:\n *\n * * Both objects or values pass `===` comparison.\n * * Both objects or values are of the same type and all of their properties are equal by\n * comparing them with `angular.equals`.\n * * Both values are NaN. (In JavaScript, NaN == NaN => false. But we consider two NaN as equal)\n * * Both values represent the same regular expression (In JavaScript,\n * /abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual\n * representation matches).\n *\n * During a property comparison, properties of `function` type and properties with names\n * that begin with `$` are ignored.\n *\n * Scope and DOMWindow objects are being compared only by identify (`===`).\n *\n * @param {*} o1 Object or value to compare.\n * @param {*} o2 Object or value to compare.\n * @returns {boolean} True if arguments are equal.\n */\nfunction equals(o1, o2) {\n if (o1 === o2) return true;\n if (o1 === null || o2 === null) return false;\n if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN\n var t1 = typeof o1, t2 = typeof o2, length, key, keySet;\n if (t1 == t2) {\n if (t1 == 'object') {\n if (isArray(o1)) {\n if (!isArray(o2)) return false;\n if ((length = o1.length) == o2.length) {\n for(key=0; key 2 ? sliceArgs(arguments, 2) : [];\n if (isFunction(fn) && !(fn instanceof RegExp)) {\n return curryArgs.length\n ? function() {\n return arguments.length\n ? fn.apply(self, curryArgs.concat(slice.call(arguments, 0)))\n : fn.apply(self, curryArgs);\n }\n : function() {\n return arguments.length\n ? fn.apply(self, arguments)\n : fn.call(self);\n };\n } else {\n // in IE, native methods are not functions so they cannot be bound (note: they don't need to be)\n return fn;\n }\n}\n\n\nfunction toJsonReplacer(key, value) {\n var val = value;\n\n if (typeof key === 'string' && key.charAt(0) === '$') {\n val = undefined;\n } else if (isWindow(value)) {\n val = '$WINDOW';\n } else if (value && document === value) {\n val = '$DOCUMENT';\n } else if (isScope(value)) {\n val = '$SCOPE';\n }\n\n return val;\n}\n\n\n/**\n * @ngdoc function\n * @name angular.toJson\n * @module ng\n * @kind function\n *\n * @description\n * Serializes input into a JSON-formatted string. Properties with leading $ characters will be\n * stripped since angular uses this notation internally.\n *\n * @param {Object|Array|Date|string|number} obj Input to be serialized into JSON.\n * @param {boolean=} pretty If set to true, the JSON output will contain newlines and whitespace.\n * @returns {string|undefined} JSON-ified string representing `obj`.\n */\nfunction toJson(obj, pretty) {\n if (typeof obj === 'undefined') return undefined;\n return JSON.stringify(obj, toJsonReplacer, pretty ? ' ' : null);\n}\n\n\n/**\n * @ngdoc function\n * @name angular.fromJson\n * @module ng\n * @kind function\n *\n * @description\n * Deserializes a JSON string.\n *\n * @param {string} json JSON string to deserialize.\n * @returns {Object|Array|string|number} Deserialized thingy.\n */\nfunction fromJson(json) {\n return isString(json)\n ? JSON.parse(json)\n : json;\n}\n\n\nfunction toBoolean(value) {\n if (typeof value === 'function') {\n value = true;\n } else if (value && value.length !== 0) {\n var v = lowercase(\"\" + value);\n value = !(v == 'f' || v == '0' || v == 'false' || v == 'no' || v == 'n' || v == '[]');\n } else {\n value = false;\n }\n return value;\n}\n\n/**\n * @returns {string} Returns the string representation of the element.\n */\nfunction startingTag(element) {\n element = jqLite(element).clone();\n try {\n // turns out IE does not let you set .html() on elements which\n // are not allowed to have children. So we just ignore it.\n element.empty();\n } catch(e) {}\n // As Per DOM Standards\n var TEXT_NODE = 3;\n var elemHtml = jqLite('
').append(element).html();\n try {\n return element[0].nodeType === TEXT_NODE ? lowercase(elemHtml) :\n elemHtml.\n match(/^(<[^>]+>)/)[1].\n replace(/^<([\\w\\-]+)/, function(match, nodeName) { return '<' + lowercase(nodeName); });\n } catch(e) {\n return lowercase(elemHtml);\n }\n\n}\n\n\n/////////////////////////////////////////////////\n\n/**\n * Tries to decode the URI component without throwing an exception.\n *\n * @private\n * @param str value potential URI component to check.\n * @returns {boolean} True if `value` can be decoded\n * with the decodeURIComponent function.\n */\nfunction tryDecodeURIComponent(value) {\n try {\n return decodeURIComponent(value);\n } catch(e) {\n // Ignore any invalid uri component\n }\n}\n\n\n/**\n * Parses an escaped url query string into key-value pairs.\n * @returns {Object.}\n */\nfunction parseKeyValue(/**string*/keyValue) {\n var obj = {}, key_value, key;\n forEach((keyValue || \"\").split('&'), function(keyValue) {\n if ( keyValue ) {\n key_value = keyValue.replace(/\\+/g,'%20').split('=');\n key = tryDecodeURIComponent(key_value[0]);\n if ( isDefined(key) ) {\n var val = isDefined(key_value[1]) ? tryDecodeURIComponent(key_value[1]) : true;\n if (!hasOwnProperty.call(obj, key)) {\n obj[key] = val;\n } else if(isArray(obj[key])) {\n obj[key].push(val);\n } else {\n obj[key] = [obj[key],val];\n }\n }\n }\n });\n return obj;\n}\n\nfunction toKeyValue(obj) {\n var parts = [];\n forEach(obj, function(value, key) {\n if (isArray(value)) {\n forEach(value, function(arrayValue) {\n parts.push(encodeUriQuery(key, true) +\n (arrayValue === true ? '' : '=' + encodeUriQuery(arrayValue, true)));\n });\n } else {\n parts.push(encodeUriQuery(key, true) +\n (value === true ? '' : '=' + encodeUriQuery(value, true)));\n }\n });\n return parts.length ? parts.join('&') : '';\n}\n\n\n/**\n * We need our custom method because encodeURIComponent is too aggressive and doesn't follow\n * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set (pchar) allowed in path\n * segments:\n * segment = *pchar\n * pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n * pct-encoded = \"%\" HEXDIG HEXDIG\n * unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\n * / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n */\nfunction encodeUriSegment(val) {\n return encodeUriQuery(val, true).\n replace(/%26/gi, '&').\n replace(/%3D/gi, '=').\n replace(/%2B/gi, '+');\n}\n\n\n/**\n * This method is intended for encoding *key* or *value* parts of query component. We need a custom\n * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be\n * encoded per http://tools.ietf.org/html/rfc3986:\n * query = *( pchar / \"/\" / \"?\" )\n * pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n * unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * pct-encoded = \"%\" HEXDIG HEXDIG\n * sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\n * / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n */\nfunction encodeUriQuery(val, pctEncodeSpaces) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));\n}\n\n\n/**\n * @ngdoc directive\n * @name ngApp\n * @module ng\n *\n * @element ANY\n * @param {angular.Module} ngApp an optional application\n * {@link angular.module module} name to load.\n *\n * @description\n *\n * Use this directive to **auto-bootstrap** an AngularJS application. The `ngApp` directive\n * designates the **root element** of the application and is typically placed near the root element\n * of the page - e.g. on the `` or `` tags.\n *\n * Only one AngularJS application can be auto-bootstrapped per HTML document. The first `ngApp`\n * found in the document will be used to define the root element to auto-bootstrap as an\n * application. To run multiple applications in an HTML document you must manually bootstrap them using\n * {@link angular.bootstrap} instead. AngularJS applications cannot be nested within each other.\n *\n * You can specify an **AngularJS module** to be used as the root module for the application. This\n * module will be loaded into the {@link auto.$injector} when the application is bootstrapped and\n * should contain the application code needed or have dependencies on other modules that will\n * contain the code. See {@link angular.module} for more information.\n *\n * In the example below if the `ngApp` directive were not placed on the `html` element then the\n * document would not be compiled, the `AppController` would not be instantiated and the `{{ a+b }}`\n * would not be resolved to `3`.\n *\n * `ngApp` is the easiest, and most common, way to bootstrap an application.\n *\n \n \n
\n I can add: {{a}} + {{b}} = {{ a+b }}\n
\n
\n \n angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) {\n $scope.a = 1;\n $scope.b = 2;\n });\n \n
\n *\n */\nfunction angularInit(element, bootstrap) {\n var elements = [element],\n appElement,\n module,\n names = ['ng:app', 'ng-app', 'x-ng-app', 'data-ng-app'],\n NG_APP_CLASS_REGEXP = /\\sng[:\\-]app(:\\s*([\\w\\d_]+);?)?\\s/;\n\n function append(element) {\n element && elements.push(element);\n }\n\n forEach(names, function(name) {\n names[name] = true;\n append(document.getElementById(name));\n name = name.replace(':', '\\\\:');\n if (element.querySelectorAll) {\n forEach(element.querySelectorAll('.' + name), append);\n forEach(element.querySelectorAll('.' + name + '\\\\:'), append);\n forEach(element.querySelectorAll('[' + name + ']'), append);\n }\n });\n\n forEach(elements, function(element) {\n if (!appElement) {\n var className = ' ' + element.className + ' ';\n var match = NG_APP_CLASS_REGEXP.exec(className);\n if (match) {\n appElement = element;\n module = (match[2] || '').replace(/\\s+/g, ',');\n } else {\n forEach(element.attributes, function(attr) {\n if (!appElement && names[attr.name]) {\n appElement = element;\n module = attr.value;\n }\n });\n }\n }\n });\n if (appElement) {\n bootstrap(appElement, module ? [module] : []);\n }\n}\n\n/**\n * @ngdoc function\n * @name angular.bootstrap\n * @module ng\n * @description\n * Use this function to manually start up angular application.\n *\n * See: {@link guide/bootstrap Bootstrap}\n *\n * Note that ngScenario-based end-to-end tests cannot use this function to bootstrap manually.\n * They must use {@link ng.directive:ngApp ngApp}.\n *\n * Angular will detect if it has been loaded into the browser more than once and only allow the\n * first loaded script to be bootstrapped and will report a warning to the browser console for\n * each of the subsequent scripts. This prevents strange results in applications, where otherwise\n * multiple instances of Angular try to work on the DOM.\n *\n * \n * \n * \n *
\n * \n * \n * \n * \n * \n * \n * \n *
{{heading}}
{{fill}}
\n *
\n *
\n * \n * var app = angular.module('multi-bootstrap', [])\n *\n * .controller('BrokenTable', function($scope) {\n * $scope.headings = ['One', 'Two', 'Three'];\n * $scope.fillings = [[1, 2, 3], ['A', 'B', 'C'], [7, 8, 9]];\n * });\n * \n * \n * it('should only insert one table cell for each item in $scope.fillings', function() {\n * expect(element.all(by.css('td')).count())\n * .toBe(9);\n * });\n * \n *
\n *\n * @param {DOMElement} element DOM element which is the root of angular application.\n * @param {Array=} modules an array of modules to load into the application.\n * Each item in the array should be the name of a predefined module or a (DI annotated)\n * function that will be invoked by the injector as a run block.\n * See: {@link angular.module modules}\n * @returns {auto.$injector} Returns the newly created injector for this app.\n */\nfunction bootstrap(element, modules) {\n var doBootstrap = function() {\n element = jqLite(element);\n\n if (element.injector()) {\n var tag = (element[0] === document) ? 'document' : startingTag(element);\n //Encode angle brackets to prevent input from being sanitized to empty string #8683\n throw ngMinErr(\n 'btstrpd',\n \"App Already Bootstrapped with this Element '{0}'\",\n tag.replace(//,'>'));\n }\n\n modules = modules || [];\n modules.unshift(['$provide', function($provide) {\n $provide.value('$rootElement', element);\n }]);\n modules.unshift('ng');\n var injector = createInjector(modules);\n injector.invoke(['$rootScope', '$rootElement', '$compile', '$injector', '$animate',\n function(scope, element, compile, injector, animate) {\n scope.$apply(function() {\n element.data('$injector', injector);\n compile(element)(scope);\n });\n }]\n );\n return injector;\n };\n\n var NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/;\n\n if (window && !NG_DEFER_BOOTSTRAP.test(window.name)) {\n return doBootstrap();\n }\n\n window.name = window.name.replace(NG_DEFER_BOOTSTRAP, '');\n angular.resumeBootstrap = function(extraModules) {\n forEach(extraModules, function(module) {\n modules.push(module);\n });\n doBootstrap();\n };\n}\n\nvar SNAKE_CASE_REGEXP = /[A-Z]/g;\nfunction snake_case(name, separator) {\n separator = separator || '_';\n return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {\n return (pos ? separator : '') + letter.toLowerCase();\n });\n}\n\nfunction bindJQuery() {\n // bind to jQuery if present;\n jQuery = window.jQuery;\n // Use jQuery if it exists with proper functionality, otherwise default to us.\n // Angular 1.2+ requires jQuery 1.7.1+ for on()/off() support.\n if (jQuery && jQuery.fn.on) {\n jqLite = jQuery;\n extend(jQuery.fn, {\n scope: JQLitePrototype.scope,\n isolateScope: JQLitePrototype.isolateScope,\n controller: JQLitePrototype.controller,\n injector: JQLitePrototype.injector,\n inheritedData: JQLitePrototype.inheritedData\n });\n // Method signature:\n // jqLitePatchJQueryRemove(name, dispatchThis, filterElems, getterIfNoArguments)\n jqLitePatchJQueryRemove('remove', true, true, false);\n jqLitePatchJQueryRemove('empty', false, false, false);\n jqLitePatchJQueryRemove('html', false, false, true);\n } else {\n jqLite = JQLite;\n }\n angular.element = jqLite;\n}\n\n/**\n * throw error if the argument is falsy.\n */\nfunction assertArg(arg, name, reason) {\n if (!arg) {\n throw ngMinErr('areq', \"Argument '{0}' is {1}\", (name || '?'), (reason || \"required\"));\n }\n return arg;\n}\n\nfunction assertArgFn(arg, name, acceptArrayAnnotation) {\n if (acceptArrayAnnotation && isArray(arg)) {\n arg = arg[arg.length - 1];\n }\n\n assertArg(isFunction(arg), name, 'not a function, got ' +\n (arg && typeof arg === 'object' ? arg.constructor.name || 'Object' : typeof arg));\n return arg;\n}\n\n/**\n * throw error if the name given is hasOwnProperty\n * @param {String} name the name to test\n * @param {String} context the context in which the name is used, such as module or directive\n */\nfunction assertNotHasOwnProperty(name, context) {\n if (name === 'hasOwnProperty') {\n throw ngMinErr('badname', \"hasOwnProperty is not a valid {0} name\", context);\n }\n}\n\n/**\n * Return the value accessible from the object by path. Any undefined traversals are ignored\n * @param {Object} obj starting object\n * @param {String} path path to traverse\n * @param {boolean} [bindFnToScope=true]\n * @returns {Object} value as accessible by path\n */\n//TODO(misko): this function needs to be removed\nfunction getter(obj, path, bindFnToScope) {\n if (!path) return obj;\n var keys = path.split('.');\n var key;\n var lastInstance = obj;\n var len = keys.length;\n\n for (var i = 0; i < len; i++) {\n key = keys[i];\n if (obj) {\n obj = (lastInstance = obj)[key];\n }\n }\n if (!bindFnToScope && isFunction(obj)) {\n return bind(lastInstance, obj);\n }\n return obj;\n}\n\n/**\n * Return the DOM siblings between the first and last node in the given array.\n * @param {Array} array like object\n * @returns {DOMElement} object containing the elements\n */\nfunction getBlockElements(nodes) {\n var startNode = nodes[0],\n endNode = nodes[nodes.length - 1];\n if (startNode === endNode) {\n return jqLite(startNode);\n }\n\n var element = startNode;\n var elements = [element];\n\n do {\n element = element.nextSibling;\n if (!element) break;\n elements.push(element);\n } while (element !== endNode);\n\n return jqLite(elements);\n}\n\n/**\n * @ngdoc type\n * @name angular.Module\n * @module ng\n * @description\n *\n * Interface for configuring angular {@link angular.module modules}.\n */\n\nfunction setupModuleLoader(window) {\n\n var $injectorMinErr = minErr('$injector');\n var ngMinErr = minErr('ng');\n\n function ensure(obj, name, factory) {\n return obj[name] || (obj[name] = factory());\n }\n\n var angular = ensure(window, 'angular', Object);\n\n // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap\n angular.$$minErr = angular.$$minErr || minErr;\n\n return ensure(angular, 'module', function() {\n /** @type {Object.} */\n var modules = {};\n\n /**\n * @ngdoc function\n * @name angular.module\n * @module ng\n * @description\n *\n * The `angular.module` is a global place for creating, registering and retrieving Angular\n * modules.\n * All modules (angular core or 3rd party) that should be available to an application must be\n * registered using this mechanism.\n *\n * When passed two or more arguments, a new module is created. If passed only one argument, an\n * existing module (the name passed as the first argument to `module`) is retrieved.\n *\n *\n * # Module\n *\n * A module is a collection of services, directives, controllers, filters, and configuration information.\n * `angular.module` is used to configure the {@link auto.$injector $injector}.\n *\n * ```js\n * // Create a new module\n * var myModule = angular.module('myModule', []);\n *\n * // register a new service\n * myModule.value('appName', 'MyCoolApp');\n *\n * // configure existing services inside initialization blocks.\n * myModule.config(['$locationProvider', function($locationProvider) {\n * // Configure existing providers\n * $locationProvider.hashPrefix('!');\n * }]);\n * ```\n *\n * Then you can create an injector and load your modules like this:\n *\n * ```js\n * var injector = angular.injector(['ng', 'myModule'])\n * ```\n *\n * However it's more likely that you'll just use\n * {@link ng.directive:ngApp ngApp} or\n * {@link angular.bootstrap} to simplify this process for you.\n *\n * @param {!string} name The name of the module to create or retrieve.\n * @param {!Array.=} requires If specified then new module is being created. If\n * unspecified then the module is being retrieved for further configuration.\n * @param {Function=} configFn Optional configuration function for the module. Same as\n * {@link angular.Module#config Module#config()}.\n * @returns {module} new module with the {@link angular.Module} api.\n */\n return function module(name, requires, configFn) {\n var assertNotHasOwnProperty = function(name, context) {\n if (name === 'hasOwnProperty') {\n throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);\n }\n };\n\n assertNotHasOwnProperty(name, 'module');\n if (requires && modules.hasOwnProperty(name)) {\n modules[name] = null;\n }\n return ensure(modules, name, function() {\n if (!requires) {\n throw $injectorMinErr('nomod', \"Module '{0}' is not available! You either misspelled \" +\n \"the module name or forgot to load it. If registering a module ensure that you \" +\n \"specify the dependencies as the second argument.\", name);\n }\n\n /** @type {!Array.>} */\n var invokeQueue = [];\n\n /** @type {!Array.} */\n var runBlocks = [];\n\n var config = invokeLater('$injector', 'invoke');\n\n /** @type {angular.Module} */\n var moduleInstance = {\n // Private state\n _invokeQueue: invokeQueue,\n _runBlocks: runBlocks,\n\n /**\n * @ngdoc property\n * @name angular.Module#requires\n * @module ng\n *\n * @description\n * Holds the list of modules which the injector will load before the current module is\n * loaded.\n */\n requires: requires,\n\n /**\n * @ngdoc property\n * @name angular.Module#name\n * @module ng\n *\n * @description\n * Name of the module.\n */\n name: name,\n\n\n /**\n * @ngdoc method\n * @name angular.Module#provider\n * @module ng\n * @param {string} name service name\n * @param {Function} providerType Construction function for creating new instance of the\n * service.\n * @description\n * See {@link auto.$provide#provider $provide.provider()}.\n */\n provider: invokeLater('$provide', 'provider'),\n\n /**\n * @ngdoc method\n * @name angular.Module#factory\n * @module ng\n * @param {string} name service name\n * @param {Function} providerFunction Function for creating new instance of the service.\n * @description\n * See {@link auto.$provide#factory $provide.factory()}.\n */\n factory: invokeLater('$provide', 'factory'),\n\n /**\n * @ngdoc method\n * @name angular.Module#service\n * @module ng\n * @param {string} name service name\n * @param {Function} constructor A constructor function that will be instantiated.\n * @description\n * See {@link auto.$provide#service $provide.service()}.\n */\n service: invokeLater('$provide', 'service'),\n\n /**\n * @ngdoc method\n * @name angular.Module#value\n * @module ng\n * @param {string} name service name\n * @param {*} object Service instance object.\n * @description\n * See {@link auto.$provide#value $provide.value()}.\n */\n value: invokeLater('$provide', 'value'),\n\n /**\n * @ngdoc method\n * @name angular.Module#constant\n * @module ng\n * @param {string} name constant name\n * @param {*} object Constant value.\n * @description\n * Because the constant are fixed, they get applied before other provide methods.\n * See {@link auto.$provide#constant $provide.constant()}.\n */\n constant: invokeLater('$provide', 'constant', 'unshift'),\n\n /**\n * @ngdoc method\n * @name angular.Module#animation\n * @module ng\n * @param {string} name animation name\n * @param {Function} animationFactory Factory function for creating new instance of an\n * animation.\n * @description\n *\n * **NOTE**: animations take effect only if the **ngAnimate** module is loaded.\n *\n *\n * Defines an animation hook that can be later used with\n * {@link ngAnimate.$animate $animate} service and directives that use this service.\n *\n * ```js\n * module.animation('.animation-name', function($inject1, $inject2) {\n * return {\n * eventName : function(element, done) {\n * //code to run the animation\n * //once complete, then run done()\n * return function cancellationFunction(element) {\n * //code to cancel the animation\n * }\n * }\n * }\n * })\n * ```\n *\n * See {@link ngAnimate.$animateProvider#register $animateProvider.register()} and\n * {@link ngAnimate ngAnimate module} for more information.\n */\n animation: invokeLater('$animateProvider', 'register'),\n\n /**\n * @ngdoc method\n * @name angular.Module#filter\n * @module ng\n * @param {string} name Filter name.\n * @param {Function} filterFactory Factory function for creating new instance of filter.\n * @description\n * See {@link ng.$filterProvider#register $filterProvider.register()}.\n */\n filter: invokeLater('$filterProvider', 'register'),\n\n /**\n * @ngdoc method\n * @name angular.Module#controller\n * @module ng\n * @param {string|Object} name Controller name, or an object map of controllers where the\n * keys are the names and the values are the constructors.\n * @param {Function} constructor Controller constructor function.\n * @description\n * See {@link ng.$controllerProvider#register $controllerProvider.register()}.\n */\n controller: invokeLater('$controllerProvider', 'register'),\n\n /**\n * @ngdoc method\n * @name angular.Module#directive\n * @module ng\n * @param {string|Object} name Directive name, or an object map of directives where the\n * keys are the names and the values are the factories.\n * @param {Function} directiveFactory Factory function for creating new instance of\n * directives.\n * @description\n * See {@link ng.$compileProvider#directive $compileProvider.directive()}.\n */\n directive: invokeLater('$compileProvider', 'directive'),\n\n /**\n * @ngdoc method\n * @name angular.Module#config\n * @module ng\n * @param {Function} configFn Execute this function on module load. Useful for service\n * configuration.\n * @description\n * Use this method to register work which needs to be performed on module loading.\n * For more about how to configure services, see\n * {@link providers#providers_provider-recipe Provider Recipe}.\n */\n config: config,\n\n /**\n * @ngdoc method\n * @name angular.Module#run\n * @module ng\n * @param {Function} initializationFn Execute this function after injector creation.\n * Useful for application initialization.\n * @description\n * Use this method to register work which should be performed when the injector is done\n * loading all modules.\n */\n run: function(block) {\n runBlocks.push(block);\n return this;\n }\n };\n\n if (configFn) {\n config(configFn);\n }\n\n return moduleInstance;\n\n /**\n * @param {string} provider\n * @param {string} method\n * @param {String=} insertMethod\n * @returns {angular.Module}\n */\n function invokeLater(provider, method, insertMethod) {\n return function() {\n invokeQueue[insertMethod || 'push']([provider, method, arguments]);\n return moduleInstance;\n };\n }\n });\n };\n });\n\n}\n\n/* global angularModule: true,\n version: true,\n\n $LocaleProvider,\n $CompileProvider,\n\n htmlAnchorDirective,\n inputDirective,\n inputDirective,\n formDirective,\n scriptDirective,\n selectDirective,\n styleDirective,\n optionDirective,\n ngBindDirective,\n ngBindHtmlDirective,\n ngBindTemplateDirective,\n ngClassDirective,\n ngClassEvenDirective,\n ngClassOddDirective,\n ngCspDirective,\n ngCloakDirective,\n ngControllerDirective,\n ngFormDirective,\n ngHideDirective,\n ngIfDirective,\n ngIncludeDirective,\n ngIncludeFillContentDirective,\n ngInitDirective,\n ngNonBindableDirective,\n ngPluralizeDirective,\n ngRepeatDirective,\n ngShowDirective,\n ngStyleDirective,\n ngSwitchDirective,\n ngSwitchWhenDirective,\n ngSwitchDefaultDirective,\n ngOptionsDirective,\n ngTranscludeDirective,\n ngModelDirective,\n ngListDirective,\n ngChangeDirective,\n requiredDirective,\n requiredDirective,\n ngValueDirective,\n ngAttributeAliasDirectives,\n ngEventDirectives,\n\n $AnchorScrollProvider,\n $AnimateProvider,\n $BrowserProvider,\n $CacheFactoryProvider,\n $ControllerProvider,\n $DocumentProvider,\n $ExceptionHandlerProvider,\n $FilterProvider,\n $InterpolateProvider,\n $IntervalProvider,\n $HttpProvider,\n $HttpBackendProvider,\n $LocationProvider,\n $LogProvider,\n $ParseProvider,\n $RootScopeProvider,\n $QProvider,\n $$SanitizeUriProvider,\n $SceProvider,\n $SceDelegateProvider,\n $SnifferProvider,\n $TemplateCacheProvider,\n $TimeoutProvider,\n $$RAFProvider,\n $$AsyncCallbackProvider,\n $WindowProvider\n*/\n\n\n/**\n * @ngdoc object\n * @name angular.version\n * @module ng\n * @description\n * An object that contains information about the current AngularJS version. This object has the\n * following properties:\n *\n * - `full` – `{string}` – Full version string, such as \"0.9.18\".\n * - `major` – `{number}` – Major version number, such as \"0\".\n * - `minor` – `{number}` – Minor version number, such as \"9\".\n * - `dot` – `{number}` – Dot version number, such as \"18\".\n * - `codeName` – `{string}` – Code name of the release, such as \"jiggling-armfat\".\n */\nvar version = {\n full: '1.2.28', // all of these placeholder strings will be replaced by grunt's\n major: 1, // package task\n minor: 2,\n dot: 28,\n codeName: 'finnish-disembarkation'\n};\n\n\nfunction publishExternalAPI(angular){\n extend(angular, {\n 'bootstrap': bootstrap,\n 'copy': copy,\n 'extend': extend,\n 'equals': equals,\n 'element': jqLite,\n 'forEach': forEach,\n 'injector': createInjector,\n 'noop': noop,\n 'bind': bind,\n 'toJson': toJson,\n 'fromJson': fromJson,\n 'identity': identity,\n 'isUndefined': isUndefined,\n 'isDefined': isDefined,\n 'isString': isString,\n 'isFunction': isFunction,\n 'isObject': isObject,\n 'isNumber': isNumber,\n 'isElement': isElement,\n 'isArray': isArray,\n 'version': version,\n 'isDate': isDate,\n 'lowercase': lowercase,\n 'uppercase': uppercase,\n 'callbacks': {counter: 0},\n '$$minErr': minErr,\n '$$csp': csp\n });\n\n angularModule = setupModuleLoader(window);\n try {\n angularModule('ngLocale');\n } catch (e) {\n angularModule('ngLocale', []).provider('$locale', $LocaleProvider);\n }\n\n angularModule('ng', ['ngLocale'], ['$provide',\n function ngModule($provide) {\n // $$sanitizeUriProvider needs to be before $compileProvider as it is used by it.\n $provide.provider({\n $$sanitizeUri: $$SanitizeUriProvider\n });\n $provide.provider('$compile', $CompileProvider).\n directive({\n a: htmlAnchorDirective,\n input: inputDirective,\n textarea: inputDirective,\n form: formDirective,\n script: scriptDirective,\n select: selectDirective,\n style: styleDirective,\n option: optionDirective,\n ngBind: ngBindDirective,\n ngBindHtml: ngBindHtmlDirective,\n ngBindTemplate: ngBindTemplateDirective,\n ngClass: ngClassDirective,\n ngClassEven: ngClassEvenDirective,\n ngClassOdd: ngClassOddDirective,\n ngCloak: ngCloakDirective,\n ngController: ngControllerDirective,\n ngForm: ngFormDirective,\n ngHide: ngHideDirective,\n ngIf: ngIfDirective,\n ngInclude: ngIncludeDirective,\n ngInit: ngInitDirective,\n ngNonBindable: ngNonBindableDirective,\n ngPluralize: ngPluralizeDirective,\n ngRepeat: ngRepeatDirective,\n ngShow: ngShowDirective,\n ngStyle: ngStyleDirective,\n ngSwitch: ngSwitchDirective,\n ngSwitchWhen: ngSwitchWhenDirective,\n ngSwitchDefault: ngSwitchDefaultDirective,\n ngOptions: ngOptionsDirective,\n ngTransclude: ngTranscludeDirective,\n ngModel: ngModelDirective,\n ngList: ngListDirective,\n ngChange: ngChangeDirective,\n required: requiredDirective,\n ngRequired: requiredDirective,\n ngValue: ngValueDirective\n }).\n directive({\n ngInclude: ngIncludeFillContentDirective\n }).\n directive(ngAttributeAliasDirectives).\n directive(ngEventDirectives);\n $provide.provider({\n $anchorScroll: $AnchorScrollProvider,\n $animate: $AnimateProvider,\n $browser: $BrowserProvider,\n $cacheFactory: $CacheFactoryProvider,\n $controller: $ControllerProvider,\n $document: $DocumentProvider,\n $exceptionHandler: $ExceptionHandlerProvider,\n $filter: $FilterProvider,\n $interpolate: $InterpolateProvider,\n $interval: $IntervalProvider,\n $http: $HttpProvider,\n $httpBackend: $HttpBackendProvider,\n $location: $LocationProvider,\n $log: $LogProvider,\n $parse: $ParseProvider,\n $rootScope: $RootScopeProvider,\n $q: $QProvider,\n $sce: $SceProvider,\n $sceDelegate: $SceDelegateProvider,\n $sniffer: $SnifferProvider,\n $templateCache: $TemplateCacheProvider,\n $timeout: $TimeoutProvider,\n $window: $WindowProvider,\n $$rAF: $$RAFProvider,\n $$asyncCallback : $$AsyncCallbackProvider\n });\n }\n ]);\n}\n\n/* global JQLitePrototype: true,\n addEventListenerFn: true,\n removeEventListenerFn: true,\n BOOLEAN_ATTR: true\n*/\n\n//////////////////////////////////\n//JQLite\n//////////////////////////////////\n\n/**\n * @ngdoc function\n * @name angular.element\n * @module ng\n * @kind function\n *\n * @description\n * Wraps a raw DOM element or HTML string as a [jQuery](http://jquery.com) element.\n *\n * If jQuery is available, `angular.element` is an alias for the\n * [jQuery](http://api.jquery.com/jQuery/) function. If jQuery is not available, `angular.element`\n * delegates to Angular's built-in subset of jQuery, called \"jQuery lite\" or \"jqLite.\"\n *\n *
jqLite is a tiny, API-compatible subset of jQuery that allows\n * Angular to manipulate the DOM in a cross-browser compatible way. **jqLite** implements only the most\n * commonly needed functionality with the goal of having a very small footprint.
\n *\n * To use jQuery, simply load it before `DOMContentLoaded` event fired.\n *\n *
**Note:** all element references in Angular are always wrapped with jQuery or\n * jqLite; they are never raw DOM references.
\n *\n * ## Angular's jqLite\n * jqLite provides only the following jQuery methods:\n *\n * - [`addClass()`](http://api.jquery.com/addClass/)\n * - [`after()`](http://api.jquery.com/after/)\n * - [`append()`](http://api.jquery.com/append/)\n * - [`attr()`](http://api.jquery.com/attr/)\n * - [`bind()`](http://api.jquery.com/bind/) - Does not support namespaces, selectors or eventData\n * - [`children()`](http://api.jquery.com/children/) - Does not support selectors\n * - [`clone()`](http://api.jquery.com/clone/)\n * - [`contents()`](http://api.jquery.com/contents/)\n * - [`css()`](http://api.jquery.com/css/) - Only retrieves inline-styles, does not call `getComputedStyles()`\n * - [`data()`](http://api.jquery.com/data/)\n * - [`empty()`](http://api.jquery.com/empty/)\n * - [`eq()`](http://api.jquery.com/eq/)\n * - [`find()`](http://api.jquery.com/find/) - Limited to lookups by tag name\n * - [`hasClass()`](http://api.jquery.com/hasClass/)\n * - [`html()`](http://api.jquery.com/html/)\n * - [`next()`](http://api.jquery.com/next/) - Does not support selectors\n * - [`on()`](http://api.jquery.com/on/) - Does not support namespaces, selectors or eventData\n * - [`off()`](http://api.jquery.com/off/) - Does not support namespaces or selectors\n * - [`one()`](http://api.jquery.com/one/) - Does not support namespaces or selectors\n * - [`parent()`](http://api.jquery.com/parent/) - Does not support selectors\n * - [`prepend()`](http://api.jquery.com/prepend/)\n * - [`prop()`](http://api.jquery.com/prop/)\n * - [`ready()`](http://api.jquery.com/ready/)\n * - [`remove()`](http://api.jquery.com/remove/)\n * - [`removeAttr()`](http://api.jquery.com/removeAttr/)\n * - [`removeClass()`](http://api.jquery.com/removeClass/)\n * - [`removeData()`](http://api.jquery.com/removeData/)\n * - [`replaceWith()`](http://api.jquery.com/replaceWith/)\n * - [`text()`](http://api.jquery.com/text/)\n * - [`toggleClass()`](http://api.jquery.com/toggleClass/)\n * - [`triggerHandler()`](http://api.jquery.com/triggerHandler/) - Passes a dummy event object to handlers.\n * - [`unbind()`](http://api.jquery.com/unbind/) - Does not support namespaces\n * - [`val()`](http://api.jquery.com/val/)\n * - [`wrap()`](http://api.jquery.com/wrap/)\n *\n * ## jQuery/jqLite Extras\n * Angular also provides the following additional methods and events to both jQuery and jqLite:\n *\n * ### Events\n * - `$destroy` - AngularJS intercepts all jqLite/jQuery's DOM destruction apis and fires this event\n * on all DOM nodes being removed. This can be used to clean up any 3rd party bindings to the DOM\n * element before it is removed.\n *\n * ### Methods\n * - `controller(name)` - retrieves the controller of the current element or its parent. By default\n * retrieves controller associated with the `ngController` directive. If `name` is provided as\n * camelCase directive name, then the controller for this directive will be retrieved (e.g.\n * `'ngModel'`).\n * - `injector()` - retrieves the injector of the current element or its parent.\n * - `scope()` - retrieves the {@link ng.$rootScope.Scope scope} of the current\n * element or its parent.\n * - `isolateScope()` - retrieves an isolate {@link ng.$rootScope.Scope scope} if one is attached directly to the\n * current element. This getter should be used only on elements that contain a directive which starts a new isolate\n * scope. Calling `scope()` on this element always returns the original non-isolate scope.\n * - `inheritedData()` - same as `data()`, but walks up the DOM until a value is found or the top\n * parent element is reached.\n *\n * @param {string|DOMElement} element HTML string or DOMElement to be wrapped into jQuery.\n * @returns {Object} jQuery object.\n */\n\nJQLite.expando = 'ng339';\n\nvar jqCache = JQLite.cache = {},\n jqId = 1,\n addEventListenerFn = (window.document.addEventListener\n ? function(element, type, fn) {element.addEventListener(type, fn, false);}\n : function(element, type, fn) {element.attachEvent('on' + type, fn);}),\n removeEventListenerFn = (window.document.removeEventListener\n ? function(element, type, fn) {element.removeEventListener(type, fn, false); }\n : function(element, type, fn) {element.detachEvent('on' + type, fn); });\n\n/*\n * !!! This is an undocumented \"private\" function !!!\n */\nvar jqData = JQLite._data = function(node) {\n //jQuery always returns an object on cache miss\n return this.cache[node[this.expando]] || {};\n};\n\nfunction jqNextId() { return ++jqId; }\n\n\nvar SPECIAL_CHARS_REGEXP = /([\\:\\-\\_]+(.))/g;\nvar MOZ_HACK_REGEXP = /^moz([A-Z])/;\nvar jqLiteMinErr = minErr('jqLite');\n\n/**\n * Converts snake_case to camelCase.\n * Also there is special case for Moz prefix starting with upper case letter.\n * @param name Name to normalize\n */\nfunction camelCase(name) {\n return name.\n replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {\n return offset ? letter.toUpperCase() : letter;\n }).\n replace(MOZ_HACK_REGEXP, 'Moz$1');\n}\n\n/////////////////////////////////////////////\n// jQuery mutation patch\n//\n// In conjunction with bindJQuery intercepts all jQuery's DOM destruction apis and fires a\n// $destroy event on all DOM nodes being removed.\n//\n/////////////////////////////////////////////\n\nfunction jqLitePatchJQueryRemove(name, dispatchThis, filterElems, getterIfNoArguments) {\n var originalJqFn = jQuery.fn[name];\n originalJqFn = originalJqFn.$original || originalJqFn;\n removePatch.$original = originalJqFn;\n jQuery.fn[name] = removePatch;\n\n function removePatch(param) {\n // jshint -W040\n var list = filterElems && param ? [this.filter(param)] : [this],\n fireEvent = dispatchThis,\n set, setIndex, setLength,\n element, childIndex, childLength, children;\n\n if (!getterIfNoArguments || param != null) {\n while(list.length) {\n set = list.shift();\n for(setIndex = 0, setLength = set.length; setIndex < setLength; setIndex++) {\n element = jqLite(set[setIndex]);\n if (fireEvent) {\n element.triggerHandler('$destroy');\n } else {\n fireEvent = !fireEvent;\n }\n for(childIndex = 0, childLength = (children = element.children()).length;\n childIndex < childLength;\n childIndex++) {\n list.push(jQuery(children[childIndex]));\n }\n }\n }\n }\n return originalJqFn.apply(this, arguments);\n }\n}\n\nvar SINGLE_TAG_REGEXP = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/;\nvar HTML_REGEXP = /<|&#?\\w+;/;\nvar TAG_NAME_REGEXP = /<([\\w:]+)/;\nvar XHTML_TAG_REGEXP = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi;\n\nvar wrapMap = {\n 'option': [1, ''],\n\n 'thead': [1, '', '
'],\n 'col': [2, '', '
'],\n 'tr': [2, '', '
'],\n 'td': [3, '', '
'],\n '_default': [0, \"\", \"\"]\n};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\nfunction jqLiteIsTextNode(html) {\n return !HTML_REGEXP.test(html);\n}\n\nfunction jqLiteBuildFragment(html, context) {\n var elem, tmp, tag, wrap,\n fragment = context.createDocumentFragment(),\n nodes = [], i, j, jj;\n\n if (jqLiteIsTextNode(html)) {\n // Convert non-html into a text node\n nodes.push(context.createTextNode(html));\n } else {\n tmp = fragment.appendChild(context.createElement('div'));\n // Convert html into DOM nodes\n tag = (TAG_NAME_REGEXP.exec(html) || [\"\", \"\"])[1].toLowerCase();\n wrap = wrapMap[tag] || wrapMap._default;\n tmp.innerHTML = '
 
' +\n wrap[1] + html.replace(XHTML_TAG_REGEXP, \"<$1>\") + wrap[2];\n tmp.removeChild(tmp.firstChild);\n\n // Descend through wrappers to the right content\n i = wrap[0];\n while (i--) {\n tmp = tmp.lastChild;\n }\n\n for (j=0, jj=tmp.childNodes.length; j -1);\n}\n\nfunction jqLiteRemoveClass(element, cssClasses) {\n if (cssClasses && element.setAttribute) {\n forEach(cssClasses.split(' '), function(cssClass) {\n element.setAttribute('class', trim(\n (\" \" + (element.getAttribute('class') || '') + \" \")\n .replace(/[\\n\\t]/g, \" \")\n .replace(\" \" + trim(cssClass) + \" \", \" \"))\n );\n });\n }\n}\n\nfunction jqLiteAddClass(element, cssClasses) {\n if (cssClasses && element.setAttribute) {\n var existingClasses = (' ' + (element.getAttribute('class') || '') + ' ')\n .replace(/[\\n\\t]/g, \" \");\n\n forEach(cssClasses.split(' '), function(cssClass) {\n cssClass = trim(cssClass);\n if (existingClasses.indexOf(' ' + cssClass + ' ') === -1) {\n existingClasses += cssClass + ' ';\n }\n });\n\n element.setAttribute('class', trim(existingClasses));\n }\n}\n\nfunction jqLiteAddNodes(root, elements) {\n if (elements) {\n elements = (!elements.nodeName && isDefined(elements.length) && !isWindow(elements))\n ? elements\n : [ elements ];\n for(var i=0; i < elements.length; i++) {\n root.push(elements[i]);\n }\n }\n}\n\nfunction jqLiteController(element, name) {\n return jqLiteInheritedData(element, '$' + (name || 'ngController' ) + 'Controller');\n}\n\nfunction jqLiteInheritedData(element, name, value) {\n // if element is the document object work with the html element instead\n // this makes $(document).scope() possible\n if(element.nodeType == 9) {\n element = element.documentElement;\n }\n var names = isArray(name) ? name : [name];\n\n while (element) {\n for (var i = 0, ii = names.length; i < ii; i++) {\n if ((value = jqLite.data(element, names[i])) !== undefined) return value;\n }\n\n // If dealing with a document fragment node with a host element, and no parent, use the host\n // element as the parent. This enables directives within a Shadow DOM or polyfilled Shadow DOM\n // to lookup parent controllers.\n element = element.parentNode || (element.nodeType === 11 && element.host);\n }\n}\n\nfunction jqLiteEmpty(element) {\n for (var i = 0, childNodes = element.childNodes; i < childNodes.length; i++) {\n jqLiteDealoc(childNodes[i]);\n }\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n}\n\n//////////////////////////////////////////\n// Functions which are declared directly.\n//////////////////////////////////////////\nvar JQLitePrototype = JQLite.prototype = {\n ready: function(fn) {\n var fired = false;\n\n function trigger() {\n if (fired) return;\n fired = true;\n fn();\n }\n\n // check if document already is loaded\n if (document.readyState === 'complete'){\n setTimeout(trigger);\n } else {\n this.on('DOMContentLoaded', trigger); // works for modern browsers and IE9\n // we can not use jqLite since we are not done loading and jQuery could be loaded later.\n // jshint -W064\n JQLite(window).on('load', trigger); // fallback to window.onload for others\n // jshint +W064\n }\n },\n toString: function() {\n var value = [];\n forEach(this, function(e){ value.push('' + e);});\n return '[' + value.join(', ') + ']';\n },\n\n eq: function(index) {\n return (index >= 0) ? jqLite(this[index]) : jqLite(this[this.length + index]);\n },\n\n length: 0,\n push: push,\n sort: [].sort,\n splice: [].splice\n};\n\n//////////////////////////////////////////\n// Functions iterating getter/setters.\n// these functions return self on setter and\n// value on get.\n//////////////////////////////////////////\nvar BOOLEAN_ATTR = {};\nforEach('multiple,selected,checked,disabled,readOnly,required,open'.split(','), function(value) {\n BOOLEAN_ATTR[lowercase(value)] = value;\n});\nvar BOOLEAN_ELEMENTS = {};\nforEach('input,select,option,textarea,button,form,details'.split(','), function(value) {\n BOOLEAN_ELEMENTS[uppercase(value)] = true;\n});\n\nfunction getBooleanAttrName(element, name) {\n // check dom last since we will most likely fail on name\n var booleanAttr = BOOLEAN_ATTR[name.toLowerCase()];\n\n // booleanAttr is here twice to minimize DOM access\n return booleanAttr && BOOLEAN_ELEMENTS[element.nodeName] && booleanAttr;\n}\n\nforEach({\n data: jqLiteData,\n removeData: jqLiteRemoveData\n}, function(fn, name) {\n JQLite[name] = fn;\n});\n\nforEach({\n data: jqLiteData,\n inheritedData: jqLiteInheritedData,\n\n scope: function(element) {\n // Can't use jqLiteData here directly so we stay compatible with jQuery!\n return jqLite.data(element, '$scope') || jqLiteInheritedData(element.parentNode || element, ['$isolateScope', '$scope']);\n },\n\n isolateScope: function(element) {\n // Can't use jqLiteData here directly so we stay compatible with jQuery!\n return jqLite.data(element, '$isolateScope') || jqLite.data(element, '$isolateScopeNoTemplate');\n },\n\n controller: jqLiteController,\n\n injector: function(element) {\n return jqLiteInheritedData(element, '$injector');\n },\n\n removeAttr: function(element,name) {\n element.removeAttribute(name);\n },\n\n hasClass: jqLiteHasClass,\n\n css: function(element, name, value) {\n name = camelCase(name);\n\n if (isDefined(value)) {\n element.style[name] = value;\n } else {\n var val;\n\n if (msie <= 8) {\n // this is some IE specific weirdness that jQuery 1.6.4 does not sure why\n val = element.currentStyle && element.currentStyle[name];\n if (val === '') val = 'auto';\n }\n\n val = val || element.style[name];\n\n if (msie <= 8) {\n // jquery weirdness :-/\n val = (val === '') ? undefined : val;\n }\n\n return val;\n }\n },\n\n attr: function(element, name, value){\n var lowercasedName = lowercase(name);\n if (BOOLEAN_ATTR[lowercasedName]) {\n if (isDefined(value)) {\n if (!!value) {\n element[name] = true;\n element.setAttribute(name, lowercasedName);\n } else {\n element[name] = false;\n element.removeAttribute(lowercasedName);\n }\n } else {\n return (element[name] ||\n (element.attributes.getNamedItem(name)|| noop).specified)\n ? lowercasedName\n : undefined;\n }\n } else if (isDefined(value)) {\n element.setAttribute(name, value);\n } else if (element.getAttribute) {\n // the extra argument \"2\" is to get the right thing for a.href in IE, see jQuery code\n // some elements (e.g. Document) don't have get attribute, so return undefined\n var ret = element.getAttribute(name, 2);\n // normalize non-existing attributes to undefined (as jQuery)\n return ret === null ? undefined : ret;\n }\n },\n\n prop: function(element, name, value) {\n if (isDefined(value)) {\n element[name] = value;\n } else {\n return element[name];\n }\n },\n\n text: (function() {\n var NODE_TYPE_TEXT_PROPERTY = [];\n if (msie < 9) {\n NODE_TYPE_TEXT_PROPERTY[1] = 'innerText'; /** Element **/\n NODE_TYPE_TEXT_PROPERTY[3] = 'nodeValue'; /** Text **/\n } else {\n NODE_TYPE_TEXT_PROPERTY[1] = /** Element **/\n NODE_TYPE_TEXT_PROPERTY[3] = 'textContent'; /** Text **/\n }\n getText.$dv = '';\n return getText;\n\n function getText(element, value) {\n var textProp = NODE_TYPE_TEXT_PROPERTY[element.nodeType];\n if (isUndefined(value)) {\n return textProp ? element[textProp] : '';\n }\n element[textProp] = value;\n }\n })(),\n\n val: function(element, value) {\n if (isUndefined(value)) {\n if (nodeName_(element) === 'SELECT' && element.multiple) {\n var result = [];\n forEach(element.options, function (option) {\n if (option.selected) {\n result.push(option.value || option.text);\n }\n });\n return result.length === 0 ? null : result;\n }\n return element.value;\n }\n element.value = value;\n },\n\n html: function(element, value) {\n if (isUndefined(value)) {\n return element.innerHTML;\n }\n for (var i = 0, childNodes = element.childNodes; i < childNodes.length; i++) {\n jqLiteDealoc(childNodes[i]);\n }\n element.innerHTML = value;\n },\n\n empty: jqLiteEmpty\n}, function(fn, name){\n /**\n * Properties: writes return selection, reads return first value\n */\n JQLite.prototype[name] = function(arg1, arg2) {\n var i, key;\n var nodeCount = this.length;\n\n // jqLiteHasClass has only two arguments, but is a getter-only fn, so we need to special-case it\n // in a way that survives minification.\n // jqLiteEmpty takes no arguments but is a setter.\n if (fn !== jqLiteEmpty &&\n (((fn.length == 2 && (fn !== jqLiteHasClass && fn !== jqLiteController)) ? arg1 : arg2) === undefined)) {\n if (isObject(arg1)) {\n\n // we are a write, but the object properties are the key/values\n for (i = 0; i < nodeCount; i++) {\n if (fn === jqLiteData) {\n // data() takes the whole object in jQuery\n fn(this[i], arg1);\n } else {\n for (key in arg1) {\n fn(this[i], key, arg1[key]);\n }\n }\n }\n // return self for chaining\n return this;\n } else {\n // we are a read, so read the first child.\n // TODO: do we still need this?\n var value = fn.$dv;\n // Only if we have $dv do we iterate over all, otherwise it is just the first element.\n var jj = (value === undefined) ? Math.min(nodeCount, 1) : nodeCount;\n for (var j = 0; j < jj; j++) {\n var nodeValue = fn(this[j], arg1, arg2);\n value = value ? value + nodeValue : nodeValue;\n }\n return value;\n }\n } else {\n // we are a write, so apply to all children\n for (i = 0; i < nodeCount; i++) {\n fn(this[i], arg1, arg2);\n }\n // return self for chaining\n return this;\n }\n };\n});\n\nfunction createEventHandler(element, events) {\n var eventHandler = function (event, type) {\n if (!event.preventDefault) {\n event.preventDefault = function() {\n event.returnValue = false; //ie\n };\n }\n\n if (!event.stopPropagation) {\n event.stopPropagation = function() {\n event.cancelBubble = true; //ie\n };\n }\n\n if (!event.target) {\n event.target = event.srcElement || document;\n }\n\n if (isUndefined(event.defaultPrevented)) {\n var prevent = event.preventDefault;\n event.preventDefault = function() {\n event.defaultPrevented = true;\n prevent.call(event);\n };\n event.defaultPrevented = false;\n }\n\n event.isDefaultPrevented = function() {\n return event.defaultPrevented || event.returnValue === false;\n };\n\n // Copy event handlers in case event handlers array is modified during execution.\n var eventHandlersCopy = shallowCopy(events[type || event.type] || []);\n\n forEach(eventHandlersCopy, function(fn) {\n fn.call(element, event);\n });\n\n // Remove monkey-patched methods (IE),\n // as they would cause memory leaks in IE8.\n if (msie <= 8) {\n // IE7/8 does not allow to delete property on native object\n event.preventDefault = null;\n event.stopPropagation = null;\n event.isDefaultPrevented = null;\n } else {\n // It shouldn't affect normal browsers (native methods are defined on prototype).\n delete event.preventDefault;\n delete event.stopPropagation;\n delete event.isDefaultPrevented;\n }\n };\n eventHandler.elem = element;\n return eventHandler;\n}\n\n//////////////////////////////////////////\n// Functions iterating traversal.\n// These functions chain results into a single\n// selector.\n//////////////////////////////////////////\nforEach({\n removeData: jqLiteRemoveData,\n\n dealoc: jqLiteDealoc,\n\n on: function onFn(element, type, fn, unsupported){\n if (isDefined(unsupported)) throw jqLiteMinErr('onargs', 'jqLite#on() does not support the `selector` or `eventData` parameters');\n\n var events = jqLiteExpandoStore(element, 'events'),\n handle = jqLiteExpandoStore(element, 'handle');\n\n if (!events) jqLiteExpandoStore(element, 'events', events = {});\n if (!handle) jqLiteExpandoStore(element, 'handle', handle = createEventHandler(element, events));\n\n forEach(type.split(' '), function(type){\n var eventFns = events[type];\n\n if (!eventFns) {\n if (type == 'mouseenter' || type == 'mouseleave') {\n var contains = document.body.contains || document.body.compareDocumentPosition ?\n function( a, b ) {\n // jshint bitwise: false\n var adown = a.nodeType === 9 ? a.documentElement : a,\n bup = b && b.parentNode;\n return a === bup || !!( bup && bup.nodeType === 1 && (\n adown.contains ?\n adown.contains( bup ) :\n a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n ));\n } :\n function( a, b ) {\n if ( b ) {\n while ( (b = b.parentNode) ) {\n if ( b === a ) {\n return true;\n }\n }\n }\n return false;\n };\n\n events[type] = [];\n\n // Refer to jQuery's implementation of mouseenter & mouseleave\n // Read about mouseenter and mouseleave:\n // http://www.quirksmode.org/js/events_mouse.html#link8\n var eventmap = { mouseleave : \"mouseout\", mouseenter : \"mouseover\"};\n\n onFn(element, eventmap[type], function(event) {\n var target = this, related = event.relatedTarget;\n // For mousenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n if ( !related || (related !== target && !contains(target, related)) ){\n handle(event, type);\n }\n });\n\n } else {\n addEventListenerFn(element, type, handle);\n events[type] = [];\n }\n eventFns = events[type];\n }\n eventFns.push(fn);\n });\n },\n\n off: jqLiteOff,\n\n one: function(element, type, fn) {\n element = jqLite(element);\n\n //add the listener twice so that when it is called\n //you can remove the original function and still be\n //able to call element.off(ev, fn) normally\n element.on(type, function onFn() {\n element.off(type, fn);\n element.off(type, onFn);\n });\n element.on(type, fn);\n },\n\n replaceWith: function(element, replaceNode) {\n var index, parent = element.parentNode;\n jqLiteDealoc(element);\n forEach(new JQLite(replaceNode), function(node){\n if (index) {\n parent.insertBefore(node, index.nextSibling);\n } else {\n parent.replaceChild(node, element);\n }\n index = node;\n });\n },\n\n children: function(element) {\n var children = [];\n forEach(element.childNodes, function(element){\n if (element.nodeType === 1)\n children.push(element);\n });\n return children;\n },\n\n contents: function(element) {\n return element.contentDocument || element.childNodes || [];\n },\n\n append: function(element, node) {\n forEach(new JQLite(node), function(child){\n if (element.nodeType === 1 || element.nodeType === 11) {\n element.appendChild(child);\n }\n });\n },\n\n prepend: function(element, node) {\n if (element.nodeType === 1) {\n var index = element.firstChild;\n forEach(new JQLite(node), function(child){\n element.insertBefore(child, index);\n });\n }\n },\n\n wrap: function(element, wrapNode) {\n wrapNode = jqLite(wrapNode)[0];\n var parent = element.parentNode;\n if (parent) {\n parent.replaceChild(wrapNode, element);\n }\n wrapNode.appendChild(element);\n },\n\n remove: function(element) {\n jqLiteDealoc(element);\n var parent = element.parentNode;\n if (parent) parent.removeChild(element);\n },\n\n after: function(element, newElement) {\n var index = element, parent = element.parentNode;\n forEach(new JQLite(newElement), function(node){\n parent.insertBefore(node, index.nextSibling);\n index = node;\n });\n },\n\n addClass: jqLiteAddClass,\n removeClass: jqLiteRemoveClass,\n\n toggleClass: function(element, selector, condition) {\n if (selector) {\n forEach(selector.split(' '), function(className){\n var classCondition = condition;\n if (isUndefined(classCondition)) {\n classCondition = !jqLiteHasClass(element, className);\n }\n (classCondition ? jqLiteAddClass : jqLiteRemoveClass)(element, className);\n });\n }\n },\n\n parent: function(element) {\n var parent = element.parentNode;\n return parent && parent.nodeType !== 11 ? parent : null;\n },\n\n next: function(element) {\n if (element.nextElementSibling) {\n return element.nextElementSibling;\n }\n\n // IE8 doesn't have nextElementSibling\n var elm = element.nextSibling;\n while (elm != null && elm.nodeType !== 1) {\n elm = elm.nextSibling;\n }\n return elm;\n },\n\n find: function(element, selector) {\n if (element.getElementsByTagName) {\n return element.getElementsByTagName(selector);\n } else {\n return [];\n }\n },\n\n clone: jqLiteClone,\n\n triggerHandler: function(element, event, extraParameters) {\n\n var dummyEvent, eventFnsCopy, handlerArgs;\n var eventName = event.type || event;\n var eventFns = (jqLiteExpandoStore(element, 'events') || {})[eventName];\n\n if (eventFns) {\n\n // Create a dummy event to pass to the handlers\n dummyEvent = {\n preventDefault: function() { this.defaultPrevented = true; },\n isDefaultPrevented: function() { return this.defaultPrevented === true; },\n stopPropagation: noop,\n type: eventName,\n target: element\n };\n\n // If a custom event was provided then extend our dummy event with it\n if (event.type) {\n dummyEvent = extend(dummyEvent, event);\n }\n\n // Copy event handlers in case event handlers array is modified during execution.\n eventFnsCopy = shallowCopy(eventFns);\n handlerArgs = extraParameters ? [dummyEvent].concat(extraParameters) : [dummyEvent];\n\n forEach(eventFnsCopy, function(fn) {\n fn.apply(element, handlerArgs);\n });\n\n }\n }\n}, function(fn, name){\n /**\n * chaining functions\n */\n JQLite.prototype[name] = function(arg1, arg2, arg3) {\n var value;\n for(var i=0; i < this.length; i++) {\n if (isUndefined(value)) {\n value = fn(this[i], arg1, arg2, arg3);\n if (isDefined(value)) {\n // any function which returns a value needs to be wrapped\n value = jqLite(value);\n }\n } else {\n jqLiteAddNodes(value, fn(this[i], arg1, arg2, arg3));\n }\n }\n return isDefined(value) ? value : this;\n };\n\n // bind legacy bind/unbind to on/off\n JQLite.prototype.bind = JQLite.prototype.on;\n JQLite.prototype.unbind = JQLite.prototype.off;\n});\n\n/**\n * Computes a hash of an 'obj'.\n * Hash of a:\n * string is string\n * number is number as string\n * object is either result of calling $$hashKey function on the object or uniquely generated id,\n * that is also assigned to the $$hashKey property of the object.\n *\n * @param obj\n * @returns {string} hash string such that the same input will have the same hash string.\n * The resulting string key is in 'type:hashKey' format.\n */\nfunction hashKey(obj, nextUidFn) {\n var objType = typeof obj,\n key;\n\n if (objType == 'function' || (objType == 'object' && obj !== null)) {\n if (typeof (key = obj.$$hashKey) == 'function') {\n // must invoke on object to keep the right this\n key = obj.$$hashKey();\n } else if (key === undefined) {\n key = obj.$$hashKey = (nextUidFn || nextUid)();\n }\n } else {\n key = obj;\n }\n\n return objType + ':' + key;\n}\n\n/**\n * HashMap which can use objects as keys\n */\nfunction HashMap(array, isolatedUid) {\n if (isolatedUid) {\n var uid = 0;\n this.nextUid = function() {\n return ++uid;\n };\n }\n forEach(array, this.put, this);\n}\nHashMap.prototype = {\n /**\n * Store key value pair\n * @param key key to store can be any type\n * @param value value to store can be any type\n */\n put: function(key, value) {\n this[hashKey(key, this.nextUid)] = value;\n },\n\n /**\n * @param key\n * @returns {Object} the value for the key\n */\n get: function(key) {\n return this[hashKey(key, this.nextUid)];\n },\n\n /**\n * Remove the key/value pair\n * @param key\n */\n remove: function(key) {\n var value = this[key = hashKey(key, this.nextUid)];\n delete this[key];\n return value;\n }\n};\n\n/**\n * @ngdoc function\n * @module ng\n * @name angular.injector\n * @kind function\n *\n * @description\n * Creates an injector object that can be used for retrieving services as well as for\n * dependency injection (see {@link guide/di dependency injection}).\n *\n\n * @param {Array.} modules A list of module functions or their aliases. See\n * {@link angular.module}. The `ng` module must be explicitly added.\n * @returns {injector} Injector object. See {@link auto.$injector $injector}.\n *\n * @example\n * Typical usage\n * ```js\n * // create an injector\n * var $injector = angular.injector(['ng']);\n *\n * // use the injector to kick off your application\n * // use the type inference to auto inject arguments, or use implicit injection\n * $injector.invoke(function($rootScope, $compile, $document){\n * $compile($document)($rootScope);\n * $rootScope.$digest();\n * });\n * ```\n *\n * Sometimes you want to get access to the injector of a currently running Angular app\n * from outside Angular. Perhaps, you want to inject and compile some markup after the\n * application has been bootstrapped. You can do this using the extra `injector()` added\n * to JQuery/jqLite elements. See {@link angular.element}.\n *\n * *This is fairly rare but could be the case if a third party library is injecting the\n * markup.*\n *\n * In the following example a new block of HTML containing a `ng-controller`\n * directive is added to the end of the document body by JQuery. We then compile and link\n * it into the current AngularJS scope.\n *\n * ```js\n * var $div = $('
{{content.label}}
');\n * $(document.body).append($div);\n *\n * angular.element(document).injector().invoke(function($compile) {\n * var scope = angular.element($div).scope();\n * $compile($div)(scope);\n * });\n * ```\n */\n\n\n/**\n * @ngdoc module\n * @name auto\n * @description\n *\n * Implicit module which gets automatically added to each {@link auto.$injector $injector}.\n */\n\nvar FN_ARGS = /^function\\s*[^\\(]*\\(\\s*([^\\)]*)\\)/m;\nvar FN_ARG_SPLIT = /,/;\nvar FN_ARG = /^\\s*(_?)(\\S+?)\\1\\s*$/;\nvar STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/mg;\nvar $injectorMinErr = minErr('$injector');\nfunction annotate(fn) {\n var $inject,\n fnText,\n argDecl,\n last;\n\n if (typeof fn === 'function') {\n if (!($inject = fn.$inject)) {\n $inject = [];\n if (fn.length) {\n fnText = fn.toString().replace(STRIP_COMMENTS, '');\n argDecl = fnText.match(FN_ARGS);\n forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg){\n arg.replace(FN_ARG, function(all, underscore, name){\n $inject.push(name);\n });\n });\n }\n fn.$inject = $inject;\n }\n } else if (isArray(fn)) {\n last = fn.length - 1;\n assertArgFn(fn[last], 'fn');\n $inject = fn.slice(0, last);\n } else {\n assertArgFn(fn, 'fn', true);\n }\n return $inject;\n}\n\n///////////////////////////////////////\n\n/**\n * @ngdoc service\n * @name $injector\n *\n * @description\n *\n * `$injector` is used to retrieve object instances as defined by\n * {@link auto.$provide provider}, instantiate types, invoke methods,\n * and load modules.\n *\n * The following always holds true:\n *\n * ```js\n * var $injector = angular.injector();\n * expect($injector.get('$injector')).toBe($injector);\n * expect($injector.invoke(function($injector){\n * return $injector;\n * })).toBe($injector);\n * ```\n *\n * # Injection Function Annotation\n *\n * JavaScript does not have annotations, and annotations are needed for dependency injection. The\n * following are all valid ways of annotating function with injection arguments and are equivalent.\n *\n * ```js\n * // inferred (only works if code not minified/obfuscated)\n * $injector.invoke(function(serviceA){});\n *\n * // annotated\n * function explicit(serviceA) {};\n * explicit.$inject = ['serviceA'];\n * $injector.invoke(explicit);\n *\n * // inline\n * $injector.invoke(['serviceA', function(serviceA){}]);\n * ```\n *\n * ## Inference\n *\n * In JavaScript calling `toString()` on a function returns the function definition. The definition\n * can then be parsed and the function arguments can be extracted. *NOTE:* This does not work with\n * minification, and obfuscation tools since these tools change the argument names.\n *\n * ## `$inject` Annotation\n * By adding an `$inject` property onto a function the injection parameters can be specified.\n *\n * ## Inline\n * As an array of injection names, where the last item in the array is the function to call.\n */\n\n/**\n * @ngdoc method\n * @name $injector#get\n *\n * @description\n * Return an instance of the service.\n *\n * @param {string} name The name of the instance to retrieve.\n * @return {*} The instance.\n */\n\n/**\n * @ngdoc method\n * @name $injector#invoke\n *\n * @description\n * Invoke the method and supply the method arguments from the `$injector`.\n *\n * @param {!Function} fn The function to invoke. Function parameters are injected according to the\n * {@link guide/di $inject Annotation} rules.\n * @param {Object=} self The `this` for the invoked method.\n * @param {Object=} locals Optional object. If preset then any argument names are read from this\n * object first, before the `$injector` is consulted.\n * @returns {*} the value returned by the invoked `fn` function.\n */\n\n/**\n * @ngdoc method\n * @name $injector#has\n *\n * @description\n * Allows the user to query if the particular service exists.\n *\n * @param {string} name Name of the service to query.\n * @returns {boolean} `true` if injector has given service.\n */\n\n/**\n * @ngdoc method\n * @name $injector#instantiate\n * @description\n * Create a new instance of JS type. The method takes a constructor function, invokes the new\n * operator, and supplies all of the arguments to the constructor function as specified by the\n * constructor annotation.\n *\n * @param {Function} Type Annotated constructor function.\n * @param {Object=} locals Optional object. If preset then any argument names are read from this\n * object first, before the `$injector` is consulted.\n * @returns {Object} new instance of `Type`.\n */\n\n/**\n * @ngdoc method\n * @name $injector#annotate\n *\n * @description\n * Returns an array of service names which the function is requesting for injection. This API is\n * used by the injector to determine which services need to be injected into the function when the\n * function is invoked. There are three ways in which the function can be annotated with the needed\n * dependencies.\n *\n * # Argument names\n *\n * The simplest form is to extract the dependencies from the arguments of the function. This is done\n * by converting the function into a string using `toString()` method and extracting the argument\n * names.\n * ```js\n * // Given\n * function MyController($scope, $route) {\n * // ...\n * }\n *\n * // Then\n * expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);\n * ```\n *\n * This method does not work with code minification / obfuscation. For this reason the following\n * annotation strategies are supported.\n *\n * # The `$inject` property\n *\n * If a function has an `$inject` property and its value is an array of strings, then the strings\n * represent names of services to be injected into the function.\n * ```js\n * // Given\n * var MyController = function(obfuscatedScope, obfuscatedRoute) {\n * // ...\n * }\n * // Define function dependencies\n * MyController['$inject'] = ['$scope', '$route'];\n *\n * // Then\n * expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);\n * ```\n *\n * # The array notation\n *\n * It is often desirable to inline Injected functions and that's when setting the `$inject` property\n * is very inconvenient. In these situations using the array notation to specify the dependencies in\n * a way that survives minification is a better choice:\n *\n * ```js\n * // We wish to write this (not minification / obfuscation safe)\n * injector.invoke(function($compile, $rootScope) {\n * // ...\n * });\n *\n * // We are forced to write break inlining\n * var tmpFn = function(obfuscatedCompile, obfuscatedRootScope) {\n * // ...\n * };\n * tmpFn.$inject = ['$compile', '$rootScope'];\n * injector.invoke(tmpFn);\n *\n * // To better support inline function the inline annotation is supported\n * injector.invoke(['$compile', '$rootScope', function(obfCompile, obfRootScope) {\n * // ...\n * }]);\n *\n * // Therefore\n * expect(injector.annotate(\n * ['$compile', '$rootScope', function(obfus_$compile, obfus_$rootScope) {}])\n * ).toEqual(['$compile', '$rootScope']);\n * ```\n *\n * @param {Function|Array.} fn Function for which dependent service names need to\n * be retrieved as described above.\n *\n * @returns {Array.} The names of the services which the function requires.\n */\n\n\n\n\n/**\n * @ngdoc service\n * @name $provide\n *\n * @description\n *\n * The {@link auto.$provide $provide} service has a number of methods for registering components\n * with the {@link auto.$injector $injector}. Many of these functions are also exposed on\n * {@link angular.Module}.\n *\n * An Angular **service** is a singleton object created by a **service factory**. These **service\n * factories** are functions which, in turn, are created by a **service provider**.\n * The **service providers** are constructor functions. When instantiated they must contain a\n * property called `$get`, which holds the **service factory** function.\n *\n * When you request a service, the {@link auto.$injector $injector} is responsible for finding the\n * correct **service provider**, instantiating it and then calling its `$get` **service factory**\n * function to get the instance of the **service**.\n *\n * Often services have no configuration options and there is no need to add methods to the service\n * provider. The provider will be no more than a constructor function with a `$get` property. For\n * these cases the {@link auto.$provide $provide} service has additional helper methods to register\n * services without specifying a provider.\n *\n * * {@link auto.$provide#provider provider(provider)} - registers a **service provider** with the\n * {@link auto.$injector $injector}\n * * {@link auto.$provide#constant constant(obj)} - registers a value/object that can be accessed by\n * providers and services.\n * * {@link auto.$provide#value value(obj)} - registers a value/object that can only be accessed by\n * services, not providers.\n * * {@link auto.$provide#factory factory(fn)} - registers a service **factory function**, `fn`,\n * that will be wrapped in a **service provider** object, whose `$get` property will contain the\n * given factory function.\n * * {@link auto.$provide#service service(class)} - registers a **constructor function**, `class`\n * that will be wrapped in a **service provider** object, whose `$get` property will instantiate\n * a new object using the given constructor function.\n *\n * See the individual methods for more information and examples.\n */\n\n/**\n * @ngdoc method\n * @name $provide#provider\n * @description\n *\n * Register a **provider function** with the {@link auto.$injector $injector}. Provider functions\n * are constructor functions, whose instances are responsible for \"providing\" a factory for a\n * service.\n *\n * Service provider names start with the name of the service they provide followed by `Provider`.\n * For example, the {@link ng.$log $log} service has a provider called\n * {@link ng.$logProvider $logProvider}.\n *\n * Service provider objects can have additional methods which allow configuration of the provider\n * and its service. Importantly, you can configure what kind of service is created by the `$get`\n * method, or how that service will act. For example, the {@link ng.$logProvider $logProvider} has a\n * method {@link ng.$logProvider#debugEnabled debugEnabled}\n * which lets you specify whether the {@link ng.$log $log} service will log debug messages to the\n * console or not.\n *\n * @param {string} name The name of the instance. NOTE: the provider will be available under `name +\n 'Provider'` key.\n * @param {(Object|function())} provider If the provider is:\n *\n * - `Object`: then it should have a `$get` method. The `$get` method will be invoked using\n * {@link auto.$injector#invoke $injector.invoke()} when an instance needs to be created.\n * - `Constructor`: a new instance of the provider will be created using\n * {@link auto.$injector#instantiate $injector.instantiate()}, then treated as `object`.\n *\n * @returns {Object} registered provider instance\n\n * @example\n *\n * The following example shows how to create a simple event tracking service and register it using\n * {@link auto.$provide#provider $provide.provider()}.\n *\n * ```js\n * // Define the eventTracker provider\n * function EventTrackerProvider() {\n * var trackingUrl = '/track';\n *\n * // A provider method for configuring where the tracked events should been saved\n * this.setTrackingUrl = function(url) {\n * trackingUrl = url;\n * };\n *\n * // The service factory function\n * this.$get = ['$http', function($http) {\n * var trackedEvents = {};\n * return {\n * // Call this to track an event\n * event: function(event) {\n * var count = trackedEvents[event] || 0;\n * count += 1;\n * trackedEvents[event] = count;\n * return count;\n * },\n * // Call this to save the tracked events to the trackingUrl\n * save: function() {\n * $http.post(trackingUrl, trackedEvents);\n * }\n * };\n * }];\n * }\n *\n * describe('eventTracker', function() {\n * var postSpy;\n *\n * beforeEach(module(function($provide) {\n * // Register the eventTracker provider\n * $provide.provider('eventTracker', EventTrackerProvider);\n * }));\n *\n * beforeEach(module(function(eventTrackerProvider) {\n * // Configure eventTracker provider\n * eventTrackerProvider.setTrackingUrl('/custom-track');\n * }));\n *\n * it('tracks events', inject(function(eventTracker) {\n * expect(eventTracker.event('login')).toEqual(1);\n * expect(eventTracker.event('login')).toEqual(2);\n * }));\n *\n * it('saves to the tracking url', inject(function(eventTracker, $http) {\n * postSpy = spyOn($http, 'post');\n * eventTracker.event('login');\n * eventTracker.save();\n * expect(postSpy).toHaveBeenCalled();\n * expect(postSpy.mostRecentCall.args[0]).not.toEqual('/track');\n * expect(postSpy.mostRecentCall.args[0]).toEqual('/custom-track');\n * expect(postSpy.mostRecentCall.args[1]).toEqual({ 'login': 1 });\n * }));\n * });\n * ```\n */\n\n/**\n * @ngdoc method\n * @name $provide#factory\n * @description\n *\n * Register a **service factory**, which will be called to return the service instance.\n * This is short for registering a service where its provider consists of only a `$get` property,\n * which is the given service factory function.\n * You should use {@link auto.$provide#factory $provide.factory(getFn)} if you do not need to\n * configure your service in a provider.\n *\n * @param {string} name The name of the instance.\n * @param {function()} $getFn The $getFn for the instance creation. Internally this is a short hand\n * for `$provide.provider(name, {$get: $getFn})`.\n * @returns {Object} registered provider instance\n *\n * @example\n * Here is an example of registering a service\n * ```js\n * $provide.factory('ping', ['$http', function($http) {\n * return function ping() {\n * return $http.send('/ping');\n * };\n * }]);\n * ```\n * You would then inject and use this service like this:\n * ```js\n * someModule.controller('Ctrl', ['ping', function(ping) {\n * ping();\n * }]);\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#service\n * @description\n *\n * Register a **service constructor**, which will be invoked with `new` to create the service\n * instance.\n * This is short for registering a service where its provider's `$get` property is the service\n * constructor function that will be used to instantiate the service instance.\n *\n * You should use {@link auto.$provide#service $provide.service(class)} if you define your service\n * as a type/class.\n *\n * @param {string} name The name of the instance.\n * @param {Function} constructor A class (constructor function) that will be instantiated.\n * @returns {Object} registered provider instance\n *\n * @example\n * Here is an example of registering a service using\n * {@link auto.$provide#service $provide.service(class)}.\n * ```js\n * var Ping = function($http) {\n * this.$http = $http;\n * };\n *\n * Ping.$inject = ['$http'];\n *\n * Ping.prototype.send = function() {\n * return this.$http.get('/ping');\n * };\n * $provide.service('ping', Ping);\n * ```\n * You would then inject and use this service like this:\n * ```js\n * someModule.controller('Ctrl', ['ping', function(ping) {\n * ping.send();\n * }]);\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#value\n * @description\n *\n * Register a **value service** with the {@link auto.$injector $injector}, such as a string, a\n * number, an array, an object or a function. This is short for registering a service where its\n * provider's `$get` property is a factory function that takes no arguments and returns the **value\n * service**.\n *\n * Value services are similar to constant services, except that they cannot be injected into a\n * module configuration function (see {@link angular.Module#config}) but they can be overridden by\n * an Angular\n * {@link auto.$provide#decorator decorator}.\n *\n * @param {string} name The name of the instance.\n * @param {*} value The value.\n * @returns {Object} registered provider instance\n *\n * @example\n * Here are some examples of creating value services.\n * ```js\n * $provide.value('ADMIN_USER', 'admin');\n *\n * $provide.value('RoleLookup', { admin: 0, writer: 1, reader: 2 });\n *\n * $provide.value('halfOf', function(value) {\n * return value / 2;\n * });\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#constant\n * @description\n *\n * Register a **constant service**, such as a string, a number, an array, an object or a function,\n * with the {@link auto.$injector $injector}. Unlike {@link auto.$provide#value value} it can be\n * injected into a module configuration function (see {@link angular.Module#config}) and it cannot\n * be overridden by an Angular {@link auto.$provide#decorator decorator}.\n *\n * @param {string} name The name of the constant.\n * @param {*} value The constant value.\n * @returns {Object} registered instance\n *\n * @example\n * Here a some examples of creating constants:\n * ```js\n * $provide.constant('SHARD_HEIGHT', 306);\n *\n * $provide.constant('MY_COLOURS', ['red', 'blue', 'grey']);\n *\n * $provide.constant('double', function(value) {\n * return value * 2;\n * });\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#decorator\n * @description\n *\n * Register a **service decorator** with the {@link auto.$injector $injector}. A service decorator\n * intercepts the creation of a service, allowing it to override or modify the behaviour of the\n * service. The object returned by the decorator may be the original service, or a new service\n * object which replaces or wraps and delegates to the original service.\n *\n * @param {string} name The name of the service to decorate.\n * @param {function()} decorator This function will be invoked when the service needs to be\n * instantiated and should return the decorated service instance. The function is called using\n * the {@link auto.$injector#invoke injector.invoke} method and is therefore fully injectable.\n * Local injection arguments:\n *\n * * `$delegate` - The original service instance, which can be monkey patched, configured,\n * decorated or delegated to.\n *\n * @example\n * Here we decorate the {@link ng.$log $log} service to convert warnings to errors by intercepting\n * calls to {@link ng.$log#error $log.warn()}.\n * ```js\n * $provide.decorator('$log', ['$delegate', function($delegate) {\n * $delegate.warn = $delegate.error;\n * return $delegate;\n * }]);\n * ```\n */\n\n\nfunction createInjector(modulesToLoad) {\n var INSTANTIATING = {},\n providerSuffix = 'Provider',\n path = [],\n loadedModules = new HashMap([], true),\n providerCache = {\n $provide: {\n provider: supportObject(provider),\n factory: supportObject(factory),\n service: supportObject(service),\n value: supportObject(value),\n constant: supportObject(constant),\n decorator: decorator\n }\n },\n providerInjector = (providerCache.$injector =\n createInternalInjector(providerCache, function() {\n throw $injectorMinErr('unpr', \"Unknown provider: {0}\", path.join(' <- '));\n })),\n instanceCache = {},\n instanceInjector = (instanceCache.$injector =\n createInternalInjector(instanceCache, function(servicename) {\n var provider = providerInjector.get(servicename + providerSuffix);\n return instanceInjector.invoke(provider.$get, provider);\n }));\n\n\n forEach(loadModules(modulesToLoad), function(fn) { instanceInjector.invoke(fn || noop); });\n\n return instanceInjector;\n\n ////////////////////////////////////\n // $provider\n ////////////////////////////////////\n\n function supportObject(delegate) {\n return function(key, value) {\n if (isObject(key)) {\n forEach(key, reverseParams(delegate));\n } else {\n return delegate(key, value);\n }\n };\n }\n\n function provider(name, provider_) {\n assertNotHasOwnProperty(name, 'service');\n if (isFunction(provider_) || isArray(provider_)) {\n provider_ = providerInjector.instantiate(provider_);\n }\n if (!provider_.$get) {\n throw $injectorMinErr('pget', \"Provider '{0}' must define $get factory method.\", name);\n }\n return providerCache[name + providerSuffix] = provider_;\n }\n\n function factory(name, factoryFn) { return provider(name, { $get: factoryFn }); }\n\n function service(name, constructor) {\n return factory(name, ['$injector', function($injector) {\n return $injector.instantiate(constructor);\n }]);\n }\n\n function value(name, val) { return factory(name, valueFn(val)); }\n\n function constant(name, value) {\n assertNotHasOwnProperty(name, 'constant');\n providerCache[name] = value;\n instanceCache[name] = value;\n }\n\n function decorator(serviceName, decorFn) {\n var origProvider = providerInjector.get(serviceName + providerSuffix),\n orig$get = origProvider.$get;\n\n origProvider.$get = function() {\n var origInstance = instanceInjector.invoke(orig$get, origProvider);\n return instanceInjector.invoke(decorFn, null, {$delegate: origInstance});\n };\n }\n\n ////////////////////////////////////\n // Module Loading\n ////////////////////////////////////\n function loadModules(modulesToLoad){\n var runBlocks = [], moduleFn, invokeQueue, i, ii;\n forEach(modulesToLoad, function(module) {\n if (loadedModules.get(module)) return;\n loadedModules.put(module, true);\n\n try {\n if (isString(module)) {\n moduleFn = angularModule(module);\n runBlocks = runBlocks.concat(loadModules(moduleFn.requires)).concat(moduleFn._runBlocks);\n\n for(invokeQueue = moduleFn._invokeQueue, i = 0, ii = invokeQueue.length; i < ii; i++) {\n var invokeArgs = invokeQueue[i],\n provider = providerInjector.get(invokeArgs[0]);\n\n provider[invokeArgs[1]].apply(provider, invokeArgs[2]);\n }\n } else if (isFunction(module)) {\n runBlocks.push(providerInjector.invoke(module));\n } else if (isArray(module)) {\n runBlocks.push(providerInjector.invoke(module));\n } else {\n assertArgFn(module, 'module');\n }\n } catch (e) {\n if (isArray(module)) {\n module = module[module.length - 1];\n }\n if (e.message && e.stack && e.stack.indexOf(e.message) == -1) {\n // Safari & FF's stack traces don't contain error.message content\n // unlike those of Chrome and IE\n // So if stack doesn't contain message, we create a new string that contains both.\n // Since error.stack is read-only in Safari, I'm overriding e and not e.stack here.\n /* jshint -W022 */\n e = e.message + '\\n' + e.stack;\n }\n throw $injectorMinErr('modulerr', \"Failed to instantiate module {0} due to:\\n{1}\",\n module, e.stack || e.message || e);\n }\n });\n return runBlocks;\n }\n\n ////////////////////////////////////\n // internal Injector\n ////////////////////////////////////\n\n function createInternalInjector(cache, factory) {\n\n function getService(serviceName) {\n if (cache.hasOwnProperty(serviceName)) {\n if (cache[serviceName] === INSTANTIATING) {\n throw $injectorMinErr('cdep', 'Circular dependency found: {0}',\n serviceName + ' <- ' + path.join(' <- '));\n }\n return cache[serviceName];\n } else {\n try {\n path.unshift(serviceName);\n cache[serviceName] = INSTANTIATING;\n return cache[serviceName] = factory(serviceName);\n } catch (err) {\n if (cache[serviceName] === INSTANTIATING) {\n delete cache[serviceName];\n }\n throw err;\n } finally {\n path.shift();\n }\n }\n }\n\n function invoke(fn, self, locals){\n var args = [],\n $inject = annotate(fn),\n length, i,\n key;\n\n for(i = 0, length = $inject.length; i < length; i++) {\n key = $inject[i];\n if (typeof key !== 'string') {\n throw $injectorMinErr('itkn',\n 'Incorrect injection token! Expected service name as string, got {0}', key);\n }\n args.push(\n locals && locals.hasOwnProperty(key)\n ? locals[key]\n : getService(key)\n );\n }\n if (isArray(fn)) {\n fn = fn[length];\n }\n\n // http://jsperf.com/angularjs-invoke-apply-vs-switch\n // #5388\n return fn.apply(self, args);\n }\n\n function instantiate(Type, locals) {\n var Constructor = function() {},\n instance, returnedValue;\n\n // Check if Type is annotated and use just the given function at n-1 as parameter\n // e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]);\n Constructor.prototype = (isArray(Type) ? Type[Type.length - 1] : Type).prototype;\n instance = new Constructor();\n returnedValue = invoke(Type, instance, locals);\n\n return isObject(returnedValue) || isFunction(returnedValue) ? returnedValue : instance;\n }\n\n return {\n invoke: invoke,\n instantiate: instantiate,\n get: getService,\n annotate: annotate,\n has: function(name) {\n return providerCache.hasOwnProperty(name + providerSuffix) || cache.hasOwnProperty(name);\n }\n };\n }\n}\n\n/**\n * @ngdoc service\n * @name $anchorScroll\n * @kind function\n * @requires $window\n * @requires $location\n * @requires $rootScope\n *\n * @description\n * When called, it checks current value of `$location.hash()` and scrolls to the related element,\n * according to rules specified in\n * [Html5 spec](http://dev.w3.org/html5/spec/Overview.html#the-indicated-part-of-the-document).\n *\n * It also watches the `$location.hash()` and scrolls whenever it changes to match any anchor.\n * This can be disabled by calling `$anchorScrollProvider.disableAutoScrolling()`.\n *\n * @example\n \n \n
\n Go to bottom\n You're at the bottom!\n
\n
\n \n function ScrollCtrl($scope, $location, $anchorScroll) {\n $scope.gotoBottom = function (){\n // set the location.hash to the id of\n // the element you wish to scroll to.\n $location.hash('bottom');\n\n // call $anchorScroll()\n $anchorScroll();\n };\n }\n \n \n #scrollArea {\n height: 350px;\n overflow: auto;\n }\n\n #bottom {\n display: block;\n margin-top: 2000px;\n }\n \n
\n */\nfunction $AnchorScrollProvider() {\n\n var autoScrollingEnabled = true;\n\n /**\n * @ngdoc method\n * @name $anchorScrollProvider#disableAutoScrolling\n *\n * @description\n * By default, {@link ng.$anchorScroll $anchorScroll()} will automatically detect changes to\n * {@link ng.$location#hash $location.hash()} and scroll to the element matching the new hash.
\n * Use this method to disable automatic scrolling.\n *\n * If automatic scrolling is disabled, one must explicitly call\n * {@link ng.$anchorScroll $anchorScroll()} in order to scroll to the element related to the\n * current hash.\n */\n this.disableAutoScrolling = function() {\n autoScrollingEnabled = false;\n };\n\n this.$get = ['$window', '$location', '$rootScope', function($window, $location, $rootScope) {\n var document = $window.document;\n\n // helper function to get first anchor from a NodeList\n // can't use filter.filter, as it accepts only instances of Array\n // and IE can't convert NodeList to an array using [].slice\n // TODO(vojta): use filter if we change it to accept lists as well\n function getFirstAnchor(list) {\n var result = null;\n forEach(list, function(element) {\n if (!result && lowercase(element.nodeName) === 'a') result = element;\n });\n return result;\n }\n\n function scroll() {\n var hash = $location.hash(), elm;\n\n // empty hash, scroll to the top of the page\n if (!hash) $window.scrollTo(0, 0);\n\n // element with given id\n else if ((elm = document.getElementById(hash))) elm.scrollIntoView();\n\n // first anchor with given name :-D\n else if ((elm = getFirstAnchor(document.getElementsByName(hash)))) elm.scrollIntoView();\n\n // no element and hash == 'top', scroll to the top of the page\n else if (hash === 'top') $window.scrollTo(0, 0);\n }\n\n // does not scroll when user clicks on anchor link that is currently on\n // (no url change, no $location.hash() change), browser native does scroll\n if (autoScrollingEnabled) {\n $rootScope.$watch(function autoScrollWatch() {return $location.hash();},\n function autoScrollWatchAction() {\n $rootScope.$evalAsync(scroll);\n });\n }\n\n return scroll;\n }];\n}\n\nvar $animateMinErr = minErr('$animate');\n\n/**\n * @ngdoc provider\n * @name $animateProvider\n *\n * @description\n * Default implementation of $animate that doesn't perform any animations, instead just\n * synchronously performs DOM\n * updates and calls done() callbacks.\n *\n * In order to enable animations the ngAnimate module has to be loaded.\n *\n * To see the functional implementation check out src/ngAnimate/animate.js\n */\nvar $AnimateProvider = ['$provide', function($provide) {\n\n\n this.$$selectors = {};\n\n\n /**\n * @ngdoc method\n * @name $animateProvider#register\n *\n * @description\n * Registers a new injectable animation factory function. The factory function produces the\n * animation object which contains callback functions for each event that is expected to be\n * animated.\n *\n * * `eventFn`: `function(Element, doneFunction)` The element to animate, the `doneFunction`\n * must be called once the element animation is complete. If a function is returned then the\n * animation service will use this function to cancel the animation whenever a cancel event is\n * triggered.\n *\n *\n * ```js\n * return {\n * eventFn : function(element, done) {\n * //code to run the animation\n * //once complete, then run done()\n * return function cancellationFunction() {\n * //code to cancel the animation\n * }\n * }\n * }\n * ```\n *\n * @param {string} name The name of the animation.\n * @param {Function} factory The factory function that will be executed to return the animation\n * object.\n */\n this.register = function(name, factory) {\n var key = name + '-animation';\n if (name && name.charAt(0) != '.') throw $animateMinErr('notcsel',\n \"Expecting class selector starting with '.' got '{0}'.\", name);\n this.$$selectors[name.substr(1)] = key;\n $provide.factory(key, factory);\n };\n\n /**\n * @ngdoc method\n * @name $animateProvider#classNameFilter\n *\n * @description\n * Sets and/or returns the CSS class regular expression that is checked when performing\n * an animation. Upon bootstrap the classNameFilter value is not set at all and will\n * therefore enable $animate to attempt to perform an animation on any element.\n * When setting the classNameFilter value, animations will only be performed on elements\n * that successfully match the filter expression. This in turn can boost performance\n * for low-powered devices as well as applications containing a lot of structural operations.\n * @param {RegExp=} expression The className expression which will be checked against all animations\n * @return {RegExp} The current CSS className expression value. If null then there is no expression value\n */\n this.classNameFilter = function(expression) {\n if(arguments.length === 1) {\n this.$$classNameFilter = (expression instanceof RegExp) ? expression : null;\n }\n return this.$$classNameFilter;\n };\n\n this.$get = ['$timeout', '$$asyncCallback', function($timeout, $$asyncCallback) {\n\n function async(fn) {\n fn && $$asyncCallback(fn);\n }\n\n /**\n *\n * @ngdoc service\n * @name $animate\n * @description The $animate service provides rudimentary DOM manipulation functions to\n * insert, remove and move elements within the DOM, as well as adding and removing classes.\n * This service is the core service used by the ngAnimate $animator service which provides\n * high-level animation hooks for CSS and JavaScript.\n *\n * $animate is available in the AngularJS core, however, the ngAnimate module must be included\n * to enable full out animation support. Otherwise, $animate will only perform simple DOM\n * manipulation operations.\n *\n * To learn more about enabling animation support, click here to visit the {@link ngAnimate\n * ngAnimate module page} as well as the {@link ngAnimate.$animate ngAnimate $animate service\n * page}.\n */\n return {\n\n /**\n *\n * @ngdoc method\n * @name $animate#enter\n * @kind function\n * @description Inserts the element into the DOM either after the `after` element or within\n * the `parent` element. Once complete, the done() callback will be fired (if provided).\n * @param {DOMElement} element the element which will be inserted into the DOM\n * @param {DOMElement} parent the parent element which will append the element as\n * a child (if the after element is not present)\n * @param {DOMElement} after the sibling element which will append the element\n * after itself\n * @param {Function=} done callback function that will be called after the element has been\n * inserted into the DOM\n */\n enter : function(element, parent, after, done) {\n if (after) {\n after.after(element);\n } else {\n if (!parent || !parent[0]) {\n parent = after.parent();\n }\n parent.append(element);\n }\n async(done);\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#leave\n * @kind function\n * @description Removes the element from the DOM. Once complete, the done() callback will be\n * fired (if provided).\n * @param {DOMElement} element the element which will be removed from the DOM\n * @param {Function=} done callback function that will be called after the element has been\n * removed from the DOM\n */\n leave : function(element, done) {\n element.remove();\n async(done);\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#move\n * @kind function\n * @description Moves the position of the provided element within the DOM to be placed\n * either after the `after` element or inside of the `parent` element. Once complete, the\n * done() callback will be fired (if provided).\n *\n * @param {DOMElement} element the element which will be moved around within the\n * DOM\n * @param {DOMElement} parent the parent element where the element will be\n * inserted into (if the after element is not present)\n * @param {DOMElement} after the sibling element where the element will be\n * positioned next to\n * @param {Function=} done the callback function (if provided) that will be fired after the\n * element has been moved to its new position\n */\n move : function(element, parent, after, done) {\n // Do not remove element before insert. Removing will cause data associated with the\n // element to be dropped. Insert will implicitly do the remove.\n this.enter(element, parent, after, done);\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#addClass\n * @kind function\n * @description Adds the provided className CSS class value to the provided element. Once\n * complete, the done() callback will be fired (if provided).\n * @param {DOMElement} element the element which will have the className value\n * added to it\n * @param {string} className the CSS class which will be added to the element\n * @param {Function=} done the callback function (if provided) that will be fired after the\n * className value has been added to the element\n */\n addClass : function(element, className, done) {\n className = isString(className) ?\n className :\n isArray(className) ? className.join(' ') : '';\n forEach(element, function (element) {\n jqLiteAddClass(element, className);\n });\n async(done);\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#removeClass\n * @kind function\n * @description Removes the provided className CSS class value from the provided element.\n * Once complete, the done() callback will be fired (if provided).\n * @param {DOMElement} element the element which will have the className value\n * removed from it\n * @param {string} className the CSS class which will be removed from the element\n * @param {Function=} done the callback function (if provided) that will be fired after the\n * className value has been removed from the element\n */\n removeClass : function(element, className, done) {\n className = isString(className) ?\n className :\n isArray(className) ? className.join(' ') : '';\n forEach(element, function (element) {\n jqLiteRemoveClass(element, className);\n });\n async(done);\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#setClass\n * @kind function\n * @description Adds and/or removes the given CSS classes to and from the element.\n * Once complete, the done() callback will be fired (if provided).\n * @param {DOMElement} element the element which will have its CSS classes changed\n * removed from it\n * @param {string} add the CSS classes which will be added to the element\n * @param {string} remove the CSS class which will be removed from the element\n * @param {Function=} done the callback function (if provided) that will be fired after the\n * CSS classes have been set on the element\n */\n setClass : function(element, add, remove, done) {\n forEach(element, function (element) {\n jqLiteAddClass(element, add);\n jqLiteRemoveClass(element, remove);\n });\n async(done);\n },\n\n enabled : noop\n };\n }];\n}];\n\nfunction $$AsyncCallbackProvider(){\n this.$get = ['$$rAF', '$timeout', function($$rAF, $timeout) {\n return $$rAF.supported\n ? function(fn) { return $$rAF(fn); }\n : function(fn) {\n return $timeout(fn, 0, false);\n };\n }];\n}\n\n/* global stripHash: true */\n\n/**\n * ! This is a private undocumented service !\n *\n * @name $browser\n * @requires $log\n * @description\n * This object has two goals:\n *\n * - hide all the global state in the browser caused by the window object\n * - abstract away all the browser specific features and inconsistencies\n *\n * For tests we provide {@link ngMock.$browser mock implementation} of the `$browser`\n * service, which can be used for convenient testing of the application without the interaction with\n * the real browser apis.\n */\n/**\n * @param {object} window The global window object.\n * @param {object} document jQuery wrapped document.\n * @param {function()} XHR XMLHttpRequest constructor.\n * @param {object} $log console.log or an object with the same interface.\n * @param {object} $sniffer $sniffer service\n */\nfunction Browser(window, document, $log, $sniffer) {\n var self = this,\n rawDocument = document[0],\n location = window.location,\n history = window.history,\n setTimeout = window.setTimeout,\n clearTimeout = window.clearTimeout,\n pendingDeferIds = {};\n\n self.isMock = false;\n\n var outstandingRequestCount = 0;\n var outstandingRequestCallbacks = [];\n\n // TODO(vojta): remove this temporary api\n self.$$completeOutstandingRequest = completeOutstandingRequest;\n self.$$incOutstandingRequestCount = function() { outstandingRequestCount++; };\n\n /**\n * Executes the `fn` function(supports currying) and decrements the `outstandingRequestCallbacks`\n * counter. If the counter reaches 0, all the `outstandingRequestCallbacks` are executed.\n */\n function completeOutstandingRequest(fn) {\n try {\n fn.apply(null, sliceArgs(arguments, 1));\n } finally {\n outstandingRequestCount--;\n if (outstandingRequestCount === 0) {\n while(outstandingRequestCallbacks.length) {\n try {\n outstandingRequestCallbacks.pop()();\n } catch (e) {\n $log.error(e);\n }\n }\n }\n }\n }\n\n /**\n * @private\n * Note: this method is used only by scenario runner\n * TODO(vojta): prefix this method with $$ ?\n * @param {function()} callback Function that will be called when no outstanding request\n */\n self.notifyWhenNoOutstandingRequests = function(callback) {\n // force browser to execute all pollFns - this is needed so that cookies and other pollers fire\n // at some deterministic time in respect to the test runner's actions. Leaving things up to the\n // regular poller would result in flaky tests.\n forEach(pollFns, function(pollFn){ pollFn(); });\n\n if (outstandingRequestCount === 0) {\n callback();\n } else {\n outstandingRequestCallbacks.push(callback);\n }\n };\n\n //////////////////////////////////////////////////////////////\n // Poll Watcher API\n //////////////////////////////////////////////////////////////\n var pollFns = [],\n pollTimeout;\n\n /**\n * @name $browser#addPollFn\n *\n * @param {function()} fn Poll function to add\n *\n * @description\n * Adds a function to the list of functions that poller periodically executes,\n * and starts polling if not started yet.\n *\n * @returns {function()} the added function\n */\n self.addPollFn = function(fn) {\n if (isUndefined(pollTimeout)) startPoller(100, setTimeout);\n pollFns.push(fn);\n return fn;\n };\n\n /**\n * @param {number} interval How often should browser call poll functions (ms)\n * @param {function()} setTimeout Reference to a real or fake `setTimeout` function.\n *\n * @description\n * Configures the poller to run in the specified intervals, using the specified\n * setTimeout fn and kicks it off.\n */\n function startPoller(interval, setTimeout) {\n (function check() {\n forEach(pollFns, function(pollFn){ pollFn(); });\n pollTimeout = setTimeout(check, interval);\n })();\n }\n\n //////////////////////////////////////////////////////////////\n // URL API\n //////////////////////////////////////////////////////////////\n\n var lastBrowserUrl = location.href,\n baseElement = document.find('base'),\n reloadLocation = null;\n\n /**\n * @name $browser#url\n *\n * @description\n * GETTER:\n * Without any argument, this method just returns current value of location.href.\n *\n * SETTER:\n * With at least one argument, this method sets url to new value.\n * If html5 history api supported, pushState/replaceState is used, otherwise\n * location.href/location.replace is used.\n * Returns its own instance to allow chaining\n *\n * NOTE: this api is intended for use only by the $location service. Please use the\n * {@link ng.$location $location service} to change url.\n *\n * @param {string} url New url (when used as setter)\n * @param {boolean=} replace Should new url replace current history record ?\n */\n self.url = function(url, replace) {\n // Android Browser BFCache causes location, history reference to become stale.\n if (location !== window.location) location = window.location;\n if (history !== window.history) history = window.history;\n\n // setter\n if (url) {\n if (lastBrowserUrl == url) return;\n var sameBase = lastBrowserUrl && stripHash(lastBrowserUrl) === stripHash(url);\n lastBrowserUrl = url;\n // Don't use history API if only the hash changed\n // due to a bug in IE10/IE11 which leads\n // to not firing a `hashchange` nor `popstate` event\n // in some cases (see #9143).\n if (!sameBase && $sniffer.history) {\n if (replace) history.replaceState(null, '', url);\n else {\n history.pushState(null, '', url);\n // Crazy Opera Bug: http://my.opera.com/community/forums/topic.dml?id=1185462\n baseElement.attr('href', baseElement.attr('href'));\n }\n } else {\n if (!sameBase) {\n reloadLocation = url;\n }\n if (replace) {\n location.replace(url);\n } else {\n location.href = url;\n }\n }\n return self;\n // getter\n } else {\n // - reloadLocation is needed as browsers don't allow to read out\n // the new location.href if a reload happened.\n // - the replacement is a workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=407172\n return reloadLocation || location.href.replace(/%27/g,\"'\");\n }\n };\n\n var urlChangeListeners = [],\n urlChangeInit = false;\n\n function fireUrlChange() {\n if (lastBrowserUrl == self.url()) return;\n\n lastBrowserUrl = self.url();\n forEach(urlChangeListeners, function(listener) {\n listener(self.url());\n });\n }\n\n /**\n * @name $browser#onUrlChange\n *\n * @description\n * Register callback function that will be called, when url changes.\n *\n * It's only called when the url is changed from outside of angular:\n * - user types different url into address bar\n * - user clicks on history (forward/back) button\n * - user clicks on a link\n *\n * It's not called when url is changed by $browser.url() method\n *\n * The listener gets called with new url as parameter.\n *\n * NOTE: this api is intended for use only by the $location service. Please use the\n * {@link ng.$location $location service} to monitor url changes in angular apps.\n *\n * @param {function(string)} listener Listener function to be called when url changes.\n * @return {function(string)} Returns the registered listener fn - handy if the fn is anonymous.\n */\n self.onUrlChange = function(callback) {\n // TODO(vojta): refactor to use node's syntax for events\n if (!urlChangeInit) {\n // We listen on both (hashchange/popstate) when available, as some browsers (e.g. Opera)\n // don't fire popstate when user change the address bar and don't fire hashchange when url\n // changed by push/replaceState\n\n // html5 history api - popstate event\n if ($sniffer.history) jqLite(window).on('popstate', fireUrlChange);\n // hashchange event\n if ($sniffer.hashchange) jqLite(window).on('hashchange', fireUrlChange);\n // polling\n else self.addPollFn(fireUrlChange);\n\n urlChangeInit = true;\n }\n\n urlChangeListeners.push(callback);\n return callback;\n };\n\n /**\n * Checks whether the url has changed outside of Angular.\n * Needs to be exported to be able to check for changes that have been done in sync,\n * as hashchange/popstate events fire in async.\n */\n self.$$checkUrlChange = fireUrlChange;\n\n //////////////////////////////////////////////////////////////\n // Misc API\n //////////////////////////////////////////////////////////////\n\n /**\n * @name $browser#baseHref\n *\n * @description\n * Returns current \n * (always relative - without domain)\n *\n * @returns {string} The current base href\n */\n self.baseHref = function() {\n var href = baseElement.attr('href');\n return href ? href.replace(/^(https?\\:)?\\/\\/[^\\/]*/, '') : '';\n };\n\n //////////////////////////////////////////////////////////////\n // Cookies API\n //////////////////////////////////////////////////////////////\n var lastCookies = {};\n var lastCookieString = '';\n var cookiePath = self.baseHref();\n\n /**\n * @name $browser#cookies\n *\n * @param {string=} name Cookie name\n * @param {string=} value Cookie value\n *\n * @description\n * The cookies method provides a 'private' low level access to browser cookies.\n * It is not meant to be used directly, use the $cookie service instead.\n *\n * The return values vary depending on the arguments that the method was called with as follows:\n *\n * - cookies() -> hash of all cookies, this is NOT a copy of the internal state, so do not modify\n * it\n * - cookies(name, value) -> set name to value, if value is undefined delete the cookie\n * - cookies(name) -> the same as (name, undefined) == DELETES (no one calls it right now that\n * way)\n *\n * @returns {Object} Hash of all cookies (if called without any parameter)\n */\n self.cookies = function(name, value) {\n /* global escape: false, unescape: false */\n var cookieLength, cookieArray, cookie, i, index;\n\n if (name) {\n if (value === undefined) {\n rawDocument.cookie = escape(name) + \"=;path=\" + cookiePath +\n \";expires=Thu, 01 Jan 1970 00:00:00 GMT\";\n } else {\n if (isString(value)) {\n cookieLength = (rawDocument.cookie = escape(name) + '=' + escape(value) +\n ';path=' + cookiePath).length + 1;\n\n // per http://www.ietf.org/rfc/rfc2109.txt browser must allow at minimum:\n // - 300 cookies\n // - 20 cookies per unique domain\n // - 4096 bytes per cookie\n if (cookieLength > 4096) {\n $log.warn(\"Cookie '\"+ name +\n \"' possibly not set or overflowed because it was too large (\"+\n cookieLength + \" > 4096 bytes)!\");\n }\n }\n }\n } else {\n if (rawDocument.cookie !== lastCookieString) {\n lastCookieString = rawDocument.cookie;\n cookieArray = lastCookieString.split(\"; \");\n lastCookies = {};\n\n for (i = 0; i < cookieArray.length; i++) {\n cookie = cookieArray[i];\n index = cookie.indexOf('=');\n if (index > 0) { //ignore nameless cookies\n name = unescape(cookie.substring(0, index));\n // the first value that is seen for a cookie is the most\n // specific one. values for the same cookie name that\n // follow are for less specific paths.\n if (lastCookies[name] === undefined) {\n lastCookies[name] = unescape(cookie.substring(index + 1));\n }\n }\n }\n }\n return lastCookies;\n }\n };\n\n\n /**\n * @name $browser#defer\n * @param {function()} fn A function, who's execution should be deferred.\n * @param {number=} [delay=0] of milliseconds to defer the function execution.\n * @returns {*} DeferId that can be used to cancel the task via `$browser.defer.cancel()`.\n *\n * @description\n * Executes a fn asynchronously via `setTimeout(fn, delay)`.\n *\n * Unlike when calling `setTimeout` directly, in test this function is mocked and instead of using\n * `setTimeout` in tests, the fns are queued in an array, which can be programmatically flushed\n * via `$browser.defer.flush()`.\n *\n */\n self.defer = function(fn, delay) {\n var timeoutId;\n outstandingRequestCount++;\n timeoutId = setTimeout(function() {\n delete pendingDeferIds[timeoutId];\n completeOutstandingRequest(fn);\n }, delay || 0);\n pendingDeferIds[timeoutId] = true;\n return timeoutId;\n };\n\n\n /**\n * @name $browser#defer.cancel\n *\n * @description\n * Cancels a deferred task identified with `deferId`.\n *\n * @param {*} deferId Token returned by the `$browser.defer` function.\n * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully\n * canceled.\n */\n self.defer.cancel = function(deferId) {\n if (pendingDeferIds[deferId]) {\n delete pendingDeferIds[deferId];\n clearTimeout(deferId);\n completeOutstandingRequest(noop);\n return true;\n }\n return false;\n };\n\n}\n\nfunction $BrowserProvider(){\n this.$get = ['$window', '$log', '$sniffer', '$document',\n function( $window, $log, $sniffer, $document){\n return new Browser($window, $document, $log, $sniffer);\n }];\n}\n\n/**\n * @ngdoc service\n * @name $cacheFactory\n *\n * @description\n * Factory that constructs {@link $cacheFactory.Cache Cache} objects and gives access to\n * them.\n *\n * ```js\n *\n * var cache = $cacheFactory('cacheId');\n * expect($cacheFactory.get('cacheId')).toBe(cache);\n * expect($cacheFactory.get('noSuchCacheId')).not.toBeDefined();\n *\n * cache.put(\"key\", \"value\");\n * cache.put(\"another key\", \"another value\");\n *\n * // We've specified no options on creation\n * expect(cache.info()).toEqual({id: 'cacheId', size: 2});\n *\n * ```\n *\n *\n * @param {string} cacheId Name or id of the newly created cache.\n * @param {object=} options Options object that specifies the cache behavior. Properties:\n *\n * - `{number=}` `capacity` — turns the cache into LRU cache.\n *\n * @returns {object} Newly created cache object with the following set of methods:\n *\n * - `{object}` `info()` — Returns id, size, and options of cache.\n * - `{{*}}` `put({string} key, {*} value)` — Puts a new key-value pair into the cache and returns\n * it.\n * - `{{*}}` `get({string} key)` — Returns cached value for `key` or undefined for cache miss.\n * - `{void}` `remove({string} key)` — Removes a key-value pair from the cache.\n * - `{void}` `removeAll()` — Removes all cached values.\n * - `{void}` `destroy()` — Removes references to this cache from $cacheFactory.\n *\n * @example\n \n \n
\n \n \n \n\n

Cached Values

\n
\n \n : \n \n
\n\n

Cache Info

\n
\n \n : \n \n
\n
\n
\n \n angular.module('cacheExampleApp', []).\n controller('CacheController', ['$scope', '$cacheFactory', function($scope, $cacheFactory) {\n $scope.keys = [];\n $scope.cache = $cacheFactory('cacheId');\n $scope.put = function(key, value) {\n if ($scope.cache.get(key) === undefined) {\n $scope.keys.push(key);\n }\n $scope.cache.put(key, value === undefined ? null : value);\n };\n }]);\n \n \n p {\n margin: 10px 0 3px;\n }\n \n
\n */\nfunction $CacheFactoryProvider() {\n\n this.$get = function() {\n var caches = {};\n\n function cacheFactory(cacheId, options) {\n if (cacheId in caches) {\n throw minErr('$cacheFactory')('iid', \"CacheId '{0}' is already taken!\", cacheId);\n }\n\n var size = 0,\n stats = extend({}, options, {id: cacheId}),\n data = {},\n capacity = (options && options.capacity) || Number.MAX_VALUE,\n lruHash = {},\n freshEnd = null,\n staleEnd = null;\n\n /**\n * @ngdoc type\n * @name $cacheFactory.Cache\n *\n * @description\n * A cache object used to store and retrieve data, primarily used by\n * {@link $http $http} and the {@link ng.directive:script script} directive to cache\n * templates and other data.\n *\n * ```js\n * angular.module('superCache')\n * .factory('superCache', ['$cacheFactory', function($cacheFactory) {\n * return $cacheFactory('super-cache');\n * }]);\n * ```\n *\n * Example test:\n *\n * ```js\n * it('should behave like a cache', inject(function(superCache) {\n * superCache.put('key', 'value');\n * superCache.put('another key', 'another value');\n *\n * expect(superCache.info()).toEqual({\n * id: 'super-cache',\n * size: 2\n * });\n *\n * superCache.remove('another key');\n * expect(superCache.get('another key')).toBeUndefined();\n *\n * superCache.removeAll();\n * expect(superCache.info()).toEqual({\n * id: 'super-cache',\n * size: 0\n * });\n * }));\n * ```\n */\n return caches[cacheId] = {\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#put\n * @kind function\n *\n * @description\n * Inserts a named entry into the {@link $cacheFactory.Cache Cache} object to be\n * retrieved later, and incrementing the size of the cache if the key was not already\n * present in the cache. If behaving like an LRU cache, it will also remove stale\n * entries from the set.\n *\n * It will not insert undefined values into the cache.\n *\n * @param {string} key the key under which the cached data is stored.\n * @param {*} value the value to store alongside the key. If it is undefined, the key\n * will not be stored.\n * @returns {*} the value stored.\n */\n put: function(key, value) {\n if (capacity < Number.MAX_VALUE) {\n var lruEntry = lruHash[key] || (lruHash[key] = {key: key});\n\n refresh(lruEntry);\n }\n\n if (isUndefined(value)) return;\n if (!(key in data)) size++;\n data[key] = value;\n\n if (size > capacity) {\n this.remove(staleEnd.key);\n }\n\n return value;\n },\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#get\n * @kind function\n *\n * @description\n * Retrieves named data stored in the {@link $cacheFactory.Cache Cache} object.\n *\n * @param {string} key the key of the data to be retrieved\n * @returns {*} the value stored.\n */\n get: function(key) {\n if (capacity < Number.MAX_VALUE) {\n var lruEntry = lruHash[key];\n\n if (!lruEntry) return;\n\n refresh(lruEntry);\n }\n\n return data[key];\n },\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#remove\n * @kind function\n *\n * @description\n * Removes an entry from the {@link $cacheFactory.Cache Cache} object.\n *\n * @param {string} key the key of the entry to be removed\n */\n remove: function(key) {\n if (capacity < Number.MAX_VALUE) {\n var lruEntry = lruHash[key];\n\n if (!lruEntry) return;\n\n if (lruEntry == freshEnd) freshEnd = lruEntry.p;\n if (lruEntry == staleEnd) staleEnd = lruEntry.n;\n link(lruEntry.n,lruEntry.p);\n\n delete lruHash[key];\n }\n\n delete data[key];\n size--;\n },\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#removeAll\n * @kind function\n *\n * @description\n * Clears the cache object of any entries.\n */\n removeAll: function() {\n data = {};\n size = 0;\n lruHash = {};\n freshEnd = staleEnd = null;\n },\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#destroy\n * @kind function\n *\n * @description\n * Destroys the {@link $cacheFactory.Cache Cache} object entirely,\n * removing it from the {@link $cacheFactory $cacheFactory} set.\n */\n destroy: function() {\n data = null;\n stats = null;\n lruHash = null;\n delete caches[cacheId];\n },\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#info\n * @kind function\n *\n * @description\n * Retrieve information regarding a particular {@link $cacheFactory.Cache Cache}.\n *\n * @returns {object} an object with the following properties:\n *
    \n *
  • **id**: the id of the cache instance
  • \n *
  • **size**: the number of entries kept in the cache instance
  • \n *
  • **...**: any additional properties from the options object when creating the\n * cache.
  • \n *
\n */\n info: function() {\n return extend({}, stats, {size: size});\n }\n };\n\n\n /**\n * makes the `entry` the freshEnd of the LRU linked list\n */\n function refresh(entry) {\n if (entry != freshEnd) {\n if (!staleEnd) {\n staleEnd = entry;\n } else if (staleEnd == entry) {\n staleEnd = entry.n;\n }\n\n link(entry.n, entry.p);\n link(entry, freshEnd);\n freshEnd = entry;\n freshEnd.n = null;\n }\n }\n\n\n /**\n * bidirectionally links two entries of the LRU linked list\n */\n function link(nextEntry, prevEntry) {\n if (nextEntry != prevEntry) {\n if (nextEntry) nextEntry.p = prevEntry; //p stands for previous, 'prev' didn't minify\n if (prevEntry) prevEntry.n = nextEntry; //n stands for next, 'next' didn't minify\n }\n }\n }\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory#info\n *\n * @description\n * Get information about all the caches that have been created\n *\n * @returns {Object} - key-value map of `cacheId` to the result of calling `cache#info`\n */\n cacheFactory.info = function() {\n var info = {};\n forEach(caches, function(cache, cacheId) {\n info[cacheId] = cache.info();\n });\n return info;\n };\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory#get\n *\n * @description\n * Get access to a cache object by the `cacheId` used when it was created.\n *\n * @param {string} cacheId Name or id of a cache to access.\n * @returns {object} Cache object identified by the cacheId or undefined if no such cache.\n */\n cacheFactory.get = function(cacheId) {\n return caches[cacheId];\n };\n\n\n return cacheFactory;\n };\n}\n\n/**\n * @ngdoc service\n * @name $templateCache\n *\n * @description\n * The first time a template is used, it is loaded in the template cache for quick retrieval. You\n * can load templates directly into the cache in a `script` tag, or by consuming the\n * `$templateCache` service directly.\n *\n * Adding via the `script` tag:\n *\n * ```html\n * \n * ```\n *\n * **Note:** the `script` tag containing the template does not need to be included in the `head` of\n * the document, but it must be a descendent of the {@link ng.$rootElement $rootElement} (IE,\n * element with ng-app attribute), otherwise the template will be ignored.\n *\n * Adding via the $templateCache service:\n *\n * ```js\n * var myApp = angular.module('myApp', []);\n * myApp.run(function($templateCache) {\n * $templateCache.put('templateId.html', 'This is the content of the template');\n * });\n * ```\n *\n * To retrieve the template later, simply use it in your HTML:\n * ```html\n *
\n * ```\n *\n * or get it via Javascript:\n * ```js\n * $templateCache.get('templateId.html')\n * ```\n *\n * See {@link ng.$cacheFactory $cacheFactory}.\n *\n */\nfunction $TemplateCacheProvider() {\n this.$get = ['$cacheFactory', function($cacheFactory) {\n return $cacheFactory('templates');\n }];\n}\n\n/* ! VARIABLE/FUNCTION NAMING CONVENTIONS THAT APPLY TO THIS FILE!\n *\n * DOM-related variables:\n *\n * - \"node\" - DOM Node\n * - \"element\" - DOM Element or Node\n * - \"$node\" or \"$element\" - jqLite-wrapped node or element\n *\n *\n * Compiler related stuff:\n *\n * - \"linkFn\" - linking fn of a single directive\n * - \"nodeLinkFn\" - function that aggregates all linking fns for a particular node\n * - \"childLinkFn\" - function that aggregates all linking fns for child nodes of a particular node\n * - \"compositeLinkFn\" - function that aggregates all linking fns for a compilation root (nodeList)\n */\n\n\n/**\n * @ngdoc service\n * @name $compile\n * @kind function\n *\n * @description\n * Compiles an HTML string or DOM into a template and produces a template function, which\n * can then be used to link {@link ng.$rootScope.Scope `scope`} and the template together.\n *\n * The compilation is a process of walking the DOM tree and matching DOM elements to\n * {@link ng.$compileProvider#directive directives}.\n *\n *
\n * **Note:** This document is an in-depth reference of all directive options.\n * For a gentle introduction to directives with examples of common use cases,\n * see the {@link guide/directive directive guide}.\n *
\n *\n * ## Comprehensive Directive API\n *\n * There are many different options for a directive.\n *\n * The difference resides in the return value of the factory function.\n * You can either return a \"Directive Definition Object\" (see below) that defines the directive properties,\n * or just the `postLink` function (all other properties will have the default values).\n *\n *
\n * **Best Practice:** It's recommended to use the \"directive definition object\" form.\n *
\n *\n * Here's an example directive declared with a Directive Definition Object:\n *\n * ```js\n * var myModule = angular.module(...);\n *\n * myModule.directive('directiveName', function factory(injectables) {\n * var directiveDefinitionObject = {\n * priority: 0,\n * template: '
', // or // function(tElement, tAttrs) { ... },\n * // or\n * // templateUrl: 'directive.html', // or // function(tElement, tAttrs) { ... },\n * transclude: false,\n * restrict: 'A',\n * scope: false,\n * controller: function($scope, $element, $attrs, $transclude, otherInjectables) { ... },\n * controllerAs: 'stringAlias',\n * require: 'siblingDirectiveName', // or // ['^parentDirectiveName', '?optionalDirectiveName', '?^optionalParent'],\n * compile: function compile(tElement, tAttrs, transclude) {\n * return {\n * pre: function preLink(scope, iElement, iAttrs, controller) { ... },\n * post: function postLink(scope, iElement, iAttrs, controller) { ... }\n * }\n * // or\n * // return function postLink( ... ) { ... }\n * },\n * // or\n * // link: {\n * // pre: function preLink(scope, iElement, iAttrs, controller) { ... },\n * // post: function postLink(scope, iElement, iAttrs, controller) { ... }\n * // }\n * // or\n * // link: function postLink( ... ) { ... }\n * };\n * return directiveDefinitionObject;\n * });\n * ```\n *\n *
\n * **Note:** Any unspecified options will use the default value. You can see the default values below.\n *
\n *\n * Therefore the above can be simplified as:\n *\n * ```js\n * var myModule = angular.module(...);\n *\n * myModule.directive('directiveName', function factory(injectables) {\n * var directiveDefinitionObject = {\n * link: function postLink(scope, iElement, iAttrs) { ... }\n * };\n * return directiveDefinitionObject;\n * // or\n * // return function postLink(scope, iElement, iAttrs) { ... }\n * });\n * ```\n *\n *\n *\n * ### Directive Definition Object\n *\n * The directive definition object provides instructions to the {@link ng.$compile\n * compiler}. The attributes are:\n *\n * #### `priority`\n * When there are multiple directives defined on a single DOM element, sometimes it\n * is necessary to specify the order in which the directives are applied. The `priority` is used\n * to sort the directives before their `compile` functions get called. Priority is defined as a\n * number. Directives with greater numerical `priority` are compiled first. Pre-link functions\n * are also run in priority order, but post-link functions are run in reverse order. The order\n * of directives with the same priority is undefined. The default priority is `0`.\n *\n * #### `terminal`\n * If set to true then the current `priority` will be the last set of directives\n * which will execute (any directives at the current priority will still execute\n * as the order of execution on same `priority` is undefined).\n *\n * #### `scope`\n * **If set to `true`,** then a new scope will be created for this directive. If multiple directives on the\n * same element request a new scope, only one new scope is created. The new scope rule does not\n * apply for the root of the template since the root of the template always gets a new scope.\n *\n * **If set to `{}` (object hash),** then a new \"isolate\" scope is created. The 'isolate' scope differs from\n * normal scope in that it does not prototypically inherit from the parent scope. This is useful\n * when creating reusable components, which should not accidentally read or modify data in the\n * parent scope.\n *\n * The 'isolate' scope takes an object hash which defines a set of local scope properties\n * derived from the parent scope. These local properties are useful for aliasing values for\n * templates. Locals definition is a hash of local scope property to its source:\n *\n * * `@` or `@attr` - bind a local scope property to the value of DOM attribute. The result is\n * always a string since DOM attributes are strings. If no `attr` name is specified then the\n * attribute name is assumed to be the same as the local name.\n * Given `` and widget definition\n * of `scope: { localName:'@myAttr' }`, then widget scope property `localName` will reflect\n * the interpolated value of `hello {{name}}`. As the `name` attribute changes so will the\n * `localName` property on the widget scope. The `name` is read from the parent scope (not\n * component scope).\n *\n * * `=` or `=attr` - set up bi-directional binding between a local scope property and the\n * parent scope property of name defined via the value of the `attr` attribute. If no `attr`\n * name is specified then the attribute name is assumed to be the same as the local name.\n * Given `` and widget definition of\n * `scope: { localModel:'=myAttr' }`, then widget scope property `localModel` will reflect the\n * value of `parentModel` on the parent scope. Any changes to `parentModel` will be reflected\n * in `localModel` and any changes in `localModel` will reflect in `parentModel`. If the parent\n * scope property doesn't exist, it will throw a NON_ASSIGNABLE_MODEL_EXPRESSION exception. You\n * can avoid this behavior using `=?` or `=?attr` in order to flag the property as optional.\n *\n * * `&` or `&attr` - provides a way to execute an expression in the context of the parent scope.\n * If no `attr` name is specified then the attribute name is assumed to be the same as the\n * local name. Given `` and widget definition of\n * `scope: { localFn:'&myAttr' }`, then isolate scope property `localFn` will point to\n * a function wrapper for the `count = count + value` expression. Often it's desirable to\n * pass data from the isolated scope via an expression to the parent scope, this can be\n * done by passing a map of local variable names and values into the expression wrapper fn.\n * For example, if the expression is `increment(amount)` then we can specify the amount value\n * by calling the `localFn` as `localFn({amount: 22})`.\n *\n *\n *\n * #### `controller`\n * Controller constructor function. The controller is instantiated before the\n * pre-linking phase and it is shared with other directives (see\n * `require` attribute). This allows the directives to communicate with each other and augment\n * each other's behavior. The controller is injectable (and supports bracket notation) with the following locals:\n *\n * * `$scope` - Current scope associated with the element\n * * `$element` - Current element\n * * `$attrs` - Current attributes object for the element\n * * `$transclude` - A transclude linking function pre-bound to the correct transclusion scope.\n * The scope can be overridden by an optional first argument.\n * `function([scope], cloneLinkingFn)`.\n *\n *\n * #### `require`\n * Require another directive and inject its controller as the fourth argument to the linking function. The\n * `require` takes a string name (or array of strings) of the directive(s) to pass in. If an array is used, the\n * injected argument will be an array in corresponding order. If no such directive can be\n * found, or if the directive does not have a controller, then an error is raised. The name can be prefixed with:\n *\n * * (no prefix) - Locate the required controller on the current element. Throw an error if not found.\n * * `?` - Attempt to locate the required controller or pass `null` to the `link` fn if not found.\n * * `^` - Locate the required controller by searching the element and its parents. Throw an error if not found.\n * * `?^` - Attempt to locate the required controller by searching the element and its parents or pass\n * `null` to the `link` fn if not found.\n *\n *\n * #### `controllerAs`\n * Controller alias at the directive scope. An alias for the controller so it\n * can be referenced at the directive template. The directive needs to define a scope for this\n * configuration to be used. Useful in the case when directive is used as component.\n *\n *\n * #### `restrict`\n * String of subset of `EACM` which restricts the directive to a specific directive\n * declaration style. If omitted, the default (attributes only) is used.\n *\n * * `E` - Element name: ``\n * * `A` - Attribute (default): `
`\n * * `C` - Class: `
`\n * * `M` - Comment: ``\n *\n *\n * #### `template`\n * HTML markup that may:\n * * Replace the contents of the directive's element (default).\n * * Replace the directive's element itself (if `replace` is true - DEPRECATED).\n * * Wrap the contents of the directive's element (if `transclude` is true).\n *\n * Value may be:\n *\n * * A string. For example `
{{delete_str}}
`.\n * * A function which takes two arguments `tElement` and `tAttrs` (described in the `compile`\n * function api below) and returns a string value.\n *\n *\n * #### `templateUrl`\n * Same as `template` but the template is loaded from the specified URL. Because\n * the template loading is asynchronous the compilation/linking is suspended until the template\n * is loaded.\n *\n * You can specify `templateUrl` as a string representing the URL or as a function which takes two\n * arguments `tElement` and `tAttrs` (described in the `compile` function api below) and returns\n * a string value representing the url. In either case, the template URL is passed through {@link\n * api/ng.$sce#getTrustedResourceUrl $sce.getTrustedResourceUrl}.\n *\n *\n * #### `replace` ([*DEPRECATED*!], will be removed in next major release)\n * specify what the template should replace. Defaults to `false`.\n *\n * * `true` - the template will replace the directive's element.\n * * `false` - the template will replace the contents of the directive's element.\n *\n * The replacement process migrates all of the attributes / classes from the old element to the new\n * one. See the {@link guide/directive#creating-custom-directives_creating-directives_template-expanding-directive\n * Directives Guide} for an example.\n *\n * #### `transclude`\n * compile the content of the element and make it available to the directive.\n * Typically used with {@link ng.directive:ngTransclude\n * ngTransclude}. The advantage of transclusion is that the linking function receives a\n * transclusion function which is pre-bound to the correct scope. In a typical setup the widget\n * creates an `isolate` scope, but the transclusion is not a child, but a sibling of the `isolate`\n * scope. This makes it possible for the widget to have private state, and the transclusion to\n * be bound to the parent (pre-`isolate`) scope.\n *\n * There are two kinds of transclusion depending upon whether you want to transclude just the contents of the\n * directive's element or the entire element:\n *\n * * `true` - transclude the content (i.e. the child nodes) of the directive's element.\n * * `'element'` - transclude the whole of the directive's element including any directives on this\n * element that defined at a lower priority than this directive. When used, the `template`\n * property is ignored.\n *\n *
\n * **Note:** When testing an element transclude directive you must not place the directive at the root of the\n * DOM fragment that is being compiled. See {@link guide/unit-testing#testing-transclusion-directives\n * Testing Transclusion Directives}.\n *
\n *\n * #### `compile`\n *\n * ```js\n * function compile(tElement, tAttrs, transclude) { ... }\n * ```\n *\n * The compile function deals with transforming the template DOM. Since most directives do not do\n * template transformation, it is not used often. The compile function takes the following arguments:\n *\n * * `tElement` - template element - The element where the directive has been declared. It is\n * safe to do template transformation on the element and child elements only.\n *\n * * `tAttrs` - template attributes - Normalized list of attributes declared on this element shared\n * between all directive compile functions.\n *\n * * `transclude` - [*DEPRECATED*!] A transclude linking function: `function(scope, cloneLinkingFn)`\n *\n *
\n * **Note:** The template instance and the link instance may be different objects if the template has\n * been cloned. For this reason it is **not** safe to do anything other than DOM transformations that\n * apply to all cloned DOM nodes within the compile function. Specifically, DOM listener registration\n * should be done in a linking function rather than in a compile function.\n *
\n\n *
\n * **Note:** The compile function cannot handle directives that recursively use themselves in their\n * own templates or compile functions. Compiling these directives results in an infinite loop and a\n * stack overflow errors.\n *\n * This can be avoided by manually using $compile in the postLink function to imperatively compile\n * a directive's template instead of relying on automatic template compilation via `template` or\n * `templateUrl` declaration or manual compilation inside the compile function.\n *
\n *\n *
\n * **Note:** The `transclude` function that is passed to the compile function is deprecated, as it\n * e.g. does not know about the right outer scope. Please use the transclude function that is passed\n * to the link function instead.\n *
\n\n * A compile function can have a return value which can be either a function or an object.\n *\n * * returning a (post-link) function - is equivalent to registering the linking function via the\n * `link` property of the config object when the compile function is empty.\n *\n * * returning an object with function(s) registered via `pre` and `post` properties - allows you to\n * control when a linking function should be called during the linking phase. See info about\n * pre-linking and post-linking functions below.\n *\n *\n * #### `link`\n * This property is used only if the `compile` property is not defined.\n *\n * ```js\n * function link(scope, iElement, iAttrs, controller, transcludeFn) { ... }\n * ```\n *\n * The link function is responsible for registering DOM listeners as well as updating the DOM. It is\n * executed after the template has been cloned. This is where most of the directive logic will be\n * put.\n *\n * * `scope` - {@link ng.$rootScope.Scope Scope} - The scope to be used by the\n * directive for registering {@link ng.$rootScope.Scope#$watch watches}.\n *\n * * `iElement` - instance element - The element where the directive is to be used. It is safe to\n * manipulate the children of the element only in `postLink` function since the children have\n * already been linked.\n *\n * * `iAttrs` - instance attributes - Normalized list of attributes declared on this element shared\n * between all directive linking functions.\n *\n * * `controller` - a controller instance - A controller instance if at least one directive on the\n * element defines a controller. The controller is shared among all the directives, which allows\n * the directives to use the controllers as a communication channel.\n *\n * * `transcludeFn` - A transclude linking function pre-bound to the correct transclusion scope.\n * The scope can be overridden by an optional first argument. This is the same as the `$transclude`\n * parameter of directive controllers.\n * `function([scope], cloneLinkingFn)`.\n *\n *\n * #### Pre-linking function\n *\n * Executed before the child elements are linked. Not safe to do DOM transformation since the\n * compiler linking function will fail to locate the correct elements for linking.\n *\n * #### Post-linking function\n *\n * Executed after the child elements are linked. It is safe to do DOM transformation in the post-linking function.\n *\n * \n * ### Attributes\n *\n * The {@link ng.$compile.directive.Attributes Attributes} object - passed as a parameter in the\n * `link()` or `compile()` functions. It has a variety of uses.\n *\n * accessing *Normalized attribute names:*\n * Directives like 'ngBind' can be expressed in many ways: 'ng:bind', `data-ng-bind`, or 'x-ng-bind'.\n * the attributes object allows for normalized access to\n * the attributes.\n *\n * * *Directive inter-communication:* All directives share the same instance of the attributes\n * object which allows the directives to use the attributes object as inter directive\n * communication.\n *\n * * *Supports interpolation:* Interpolation attributes are assigned to the attribute object\n * allowing other directives to read the interpolated value.\n *\n * * *Observing interpolated attributes:* Use `$observe` to observe the value changes of attributes\n * that contain interpolation (e.g. `src=\"{{bar}}\"`). Not only is this very efficient but it's also\n * the only way to easily get the actual value because during the linking phase the interpolation\n * hasn't been evaluated yet and so the value is at this time set to `undefined`.\n *\n * ```js\n * function linkingFn(scope, elm, attrs, ctrl) {\n * // get the attribute value\n * console.log(attrs.ngModel);\n *\n * // change the attribute\n * attrs.$set('ngModel', 'new value');\n *\n * // observe changes to interpolated attribute\n * attrs.$observe('ngModel', function(value) {\n * console.log('ngModel has changed value to ' + value);\n * });\n * }\n * ```\n *\n * ## Example\n *\n *
\n * **Note**: Typically directives are registered with `module.directive`. The example below is\n * to illustrate how `$compile` works.\n *
\n *\n \n \n \n
\n
\n
\n
\n
\n
\n \n it('should auto compile', function() {\n var textarea = $('textarea');\n var output = $('div[compile]');\n // The initial state reads 'Hello Angular'.\n expect(output.getText()).toBe('Hello Angular');\n textarea.clear();\n textarea.sendKeys('{{name}}!');\n expect(output.getText()).toBe('Angular!');\n });\n \n
\n\n *\n *\n * @param {string|DOMElement} element Element or HTML string to compile into a template function.\n * @param {function(angular.Scope, cloneAttachFn=)} transclude function available to directives.\n * @param {number} maxPriority only apply directives lower than given priority (Only effects the\n * root element(s), not their children)\n * @returns {function(scope, cloneAttachFn=)} a link function which is used to bind template\n * (a DOM element/tree) to a scope. Where:\n *\n * * `scope` - A {@link ng.$rootScope.Scope Scope} to bind to.\n * * `cloneAttachFn` - If `cloneAttachFn` is provided, then the link function will clone the\n * `template` and call the `cloneAttachFn` function allowing the caller to attach the\n * cloned elements to the DOM document at the appropriate place. The `cloneAttachFn` is\n * called as:
`cloneAttachFn(clonedElement, scope)` where:\n *\n * * `clonedElement` - is a clone of the original `element` passed into the compiler.\n * * `scope` - is the current scope with which the linking function is working with.\n *\n * Calling the linking function returns the element of the template. It is either the original\n * element passed in, or the clone of the element if the `cloneAttachFn` is provided.\n *\n * After linking the view is not updated until after a call to $digest which typically is done by\n * Angular automatically.\n *\n * If you need access to the bound view, there are two ways to do it:\n *\n * - If you are not asking the linking function to clone the template, create the DOM element(s)\n * before you send them to the compiler and keep this reference around.\n * ```js\n * var element = $compile('

{{total}}

')(scope);\n * ```\n *\n * - if on the other hand, you need the element to be cloned, the view reference from the original\n * example would not point to the clone, but rather to the original template that was cloned. In\n * this case, you can access the clone via the cloneAttachFn:\n * ```js\n * var templateElement = angular.element('

{{total}}

'),\n * scope = ....;\n *\n * var clonedElement = $compile(templateElement)(scope, function(clonedElement, scope) {\n * //attach the clone to DOM document at the right place\n * });\n *\n * //now we have reference to the cloned DOM via `clonedElement`\n * ```\n *\n *\n * For information on how the compiler works, see the\n * {@link guide/compiler Angular HTML Compiler} section of the Developer Guide.\n */\n\nvar $compileMinErr = minErr('$compile');\n\n/**\n * @ngdoc provider\n * @name $compileProvider\n * @kind function\n *\n * @description\n */\n$CompileProvider.$inject = ['$provide', '$$sanitizeUriProvider'];\nfunction $CompileProvider($provide, $$sanitizeUriProvider) {\n var hasDirectives = {},\n Suffix = 'Directive',\n COMMENT_DIRECTIVE_REGEXP = /^\\s*directive\\:\\s*([\\d\\w_\\-]+)\\s+(.*)$/,\n CLASS_DIRECTIVE_REGEXP = /(([\\d\\w_\\-]+)(?:\\:([^;]+))?;?)/;\n\n // Ref: http://developers.whatwg.org/webappapis.html#event-handler-idl-attributes\n // The assumption is that future DOM event attribute names will begin with\n // 'on' and be composed of only English letters.\n var EVENT_HANDLER_ATTR_REGEXP = /^(on[a-z]+|formaction)$/;\n\n /**\n * @ngdoc method\n * @name $compileProvider#directive\n * @kind function\n *\n * @description\n * Register a new directive with the compiler.\n *\n * @param {string|Object} name Name of the directive in camel-case (i.e. ngBind which\n * will match as ng-bind), or an object map of directives where the keys are the\n * names and the values are the factories.\n * @param {Function|Array} directiveFactory An injectable directive factory function. See\n * {@link guide/directive} for more info.\n * @returns {ng.$compileProvider} Self for chaining.\n */\n this.directive = function registerDirective(name, directiveFactory) {\n assertNotHasOwnProperty(name, 'directive');\n if (isString(name)) {\n assertArg(directiveFactory, 'directiveFactory');\n if (!hasDirectives.hasOwnProperty(name)) {\n hasDirectives[name] = [];\n $provide.factory(name + Suffix, ['$injector', '$exceptionHandler',\n function($injector, $exceptionHandler) {\n var directives = [];\n forEach(hasDirectives[name], function(directiveFactory, index) {\n try {\n var directive = $injector.invoke(directiveFactory);\n if (isFunction(directive)) {\n directive = { compile: valueFn(directive) };\n } else if (!directive.compile && directive.link) {\n directive.compile = valueFn(directive.link);\n }\n directive.priority = directive.priority || 0;\n directive.index = index;\n directive.name = directive.name || name;\n directive.require = directive.require || (directive.controller && directive.name);\n directive.restrict = directive.restrict || 'A';\n directives.push(directive);\n } catch (e) {\n $exceptionHandler(e);\n }\n });\n return directives;\n }]);\n }\n hasDirectives[name].push(directiveFactory);\n } else {\n forEach(name, reverseParams(registerDirective));\n }\n return this;\n };\n\n\n /**\n * @ngdoc method\n * @name $compileProvider#aHrefSanitizationWhitelist\n * @kind function\n *\n * @description\n * Retrieves or overrides the default regular expression that is used for whitelisting of safe\n * urls during a[href] sanitization.\n *\n * The sanitization is a security measure aimed at prevent XSS attacks via html links.\n *\n * Any url about to be assigned to a[href] via data-binding is first normalized and turned into\n * an absolute url. Afterwards, the url is matched against the `aHrefSanitizationWhitelist`\n * regular expression. If a match is found, the original url is written into the dom. Otherwise,\n * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.\n *\n * @param {RegExp=} regexp New regexp to whitelist urls with.\n * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for\n * chaining otherwise.\n */\n this.aHrefSanitizationWhitelist = function(regexp) {\n if (isDefined(regexp)) {\n $$sanitizeUriProvider.aHrefSanitizationWhitelist(regexp);\n return this;\n } else {\n return $$sanitizeUriProvider.aHrefSanitizationWhitelist();\n }\n };\n\n\n /**\n * @ngdoc method\n * @name $compileProvider#imgSrcSanitizationWhitelist\n * @kind function\n *\n * @description\n * Retrieves or overrides the default regular expression that is used for whitelisting of safe\n * urls during img[src] sanitization.\n *\n * The sanitization is a security measure aimed at prevent XSS attacks via html links.\n *\n * Any url about to be assigned to img[src] via data-binding is first normalized and turned into\n * an absolute url. Afterwards, the url is matched against the `imgSrcSanitizationWhitelist`\n * regular expression. If a match is found, the original url is written into the dom. Otherwise,\n * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.\n *\n * @param {RegExp=} regexp New regexp to whitelist urls with.\n * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for\n * chaining otherwise.\n */\n this.imgSrcSanitizationWhitelist = function(regexp) {\n if (isDefined(regexp)) {\n $$sanitizeUriProvider.imgSrcSanitizationWhitelist(regexp);\n return this;\n } else {\n return $$sanitizeUriProvider.imgSrcSanitizationWhitelist();\n }\n };\n\n this.$get = [\n '$injector', '$interpolate', '$exceptionHandler', '$http', '$templateCache', '$parse',\n '$controller', '$rootScope', '$document', '$sce', '$animate', '$$sanitizeUri',\n function($injector, $interpolate, $exceptionHandler, $http, $templateCache, $parse,\n $controller, $rootScope, $document, $sce, $animate, $$sanitizeUri) {\n\n var Attributes = function(element, attr) {\n this.$$element = element;\n this.$attr = attr || {};\n };\n\n Attributes.prototype = {\n /**\n * @ngdoc method\n * @name $compile.directive.Attributes#$normalize\n * @kind function\n *\n * @description\n * Converts an attribute name (e.g. dash/colon/underscore-delimited string, optionally prefixed with `x-` or\n * `data-`) to its normalized, camelCase form.\n *\n * Also there is special case for Moz prefix starting with upper case letter.\n *\n * For further information check out the guide on {@link guide/directive#matching-directives Matching Directives}\n *\n * @param {string} name Name to normalize\n */\n $normalize: directiveNormalize,\n\n\n /**\n * @ngdoc method\n * @name $compile.directive.Attributes#$addClass\n * @kind function\n *\n * @description\n * Adds the CSS class value specified by the classVal parameter to the element. If animations\n * are enabled then an animation will be triggered for the class addition.\n *\n * @param {string} classVal The className value that will be added to the element\n */\n $addClass : function(classVal) {\n if(classVal && classVal.length > 0) {\n $animate.addClass(this.$$element, classVal);\n }\n },\n\n /**\n * @ngdoc method\n * @name $compile.directive.Attributes#$removeClass\n * @kind function\n *\n * @description\n * Removes the CSS class value specified by the classVal parameter from the element. If\n * animations are enabled then an animation will be triggered for the class removal.\n *\n * @param {string} classVal The className value that will be removed from the element\n */\n $removeClass : function(classVal) {\n if(classVal && classVal.length > 0) {\n $animate.removeClass(this.$$element, classVal);\n }\n },\n\n /**\n * @ngdoc method\n * @name $compile.directive.Attributes#$updateClass\n * @kind function\n *\n * @description\n * Adds and removes the appropriate CSS class values to the element based on the difference\n * between the new and old CSS class values (specified as newClasses and oldClasses).\n *\n * @param {string} newClasses The current CSS className value\n * @param {string} oldClasses The former CSS className value\n */\n $updateClass : function(newClasses, oldClasses) {\n var toAdd = tokenDifference(newClasses, oldClasses);\n var toRemove = tokenDifference(oldClasses, newClasses);\n\n if(toAdd.length === 0) {\n $animate.removeClass(this.$$element, toRemove);\n } else if(toRemove.length === 0) {\n $animate.addClass(this.$$element, toAdd);\n } else {\n $animate.setClass(this.$$element, toAdd, toRemove);\n }\n },\n\n /**\n * Set a normalized attribute on the element in a way such that all directives\n * can share the attribute. This function properly handles boolean attributes.\n * @param {string} key Normalized key. (ie ngAttribute)\n * @param {string|boolean} value The value to set. If `null` attribute will be deleted.\n * @param {boolean=} writeAttr If false, does not write the value to DOM element attribute.\n * Defaults to true.\n * @param {string=} attrName Optional none normalized name. Defaults to key.\n */\n $set: function(key, value, writeAttr, attrName) {\n // TODO: decide whether or not to throw an error if \"class\"\n //is set through this function since it may cause $updateClass to\n //become unstable.\n\n var booleanKey = getBooleanAttrName(this.$$element[0], key),\n normalizedVal,\n nodeName;\n\n if (booleanKey) {\n this.$$element.prop(key, value);\n attrName = booleanKey;\n }\n\n this[key] = value;\n\n // translate normalized key to actual key\n if (attrName) {\n this.$attr[key] = attrName;\n } else {\n attrName = this.$attr[key];\n if (!attrName) {\n this.$attr[key] = attrName = snake_case(key, '-');\n }\n }\n\n nodeName = nodeName_(this.$$element);\n\n // sanitize a[href] and img[src] values\n if ((nodeName === 'A' && key === 'href') ||\n (nodeName === 'IMG' && key === 'src')) {\n this[key] = value = $$sanitizeUri(value, key === 'src');\n }\n\n if (writeAttr !== false) {\n if (value === null || value === undefined) {\n this.$$element.removeAttr(attrName);\n } else {\n this.$$element.attr(attrName, value);\n }\n }\n\n // fire observers\n var $$observers = this.$$observers;\n $$observers && forEach($$observers[key], function(fn) {\n try {\n fn(value);\n } catch (e) {\n $exceptionHandler(e);\n }\n });\n },\n\n\n /**\n * @ngdoc method\n * @name $compile.directive.Attributes#$observe\n * @kind function\n *\n * @description\n * Observes an interpolated attribute.\n *\n * The observer function will be invoked once during the next `$digest` following\n * compilation. The observer is then invoked whenever the interpolated value\n * changes.\n *\n * @param {string} key Normalized key. (ie ngAttribute) .\n * @param {function(interpolatedValue)} fn Function that will be called whenever\n the interpolated value of the attribute changes.\n * See the {@link guide/directive#Attributes Directives} guide for more info.\n * @returns {function()} the `fn` parameter.\n */\n $observe: function(key, fn) {\n var attrs = this,\n $$observers = (attrs.$$observers || (attrs.$$observers = {})),\n listeners = ($$observers[key] || ($$observers[key] = []));\n\n listeners.push(fn);\n $rootScope.$evalAsync(function() {\n if (!listeners.$$inter) {\n // no one registered attribute interpolation function, so lets call it manually\n fn(attrs[key]);\n }\n });\n return fn;\n }\n };\n\n var startSymbol = $interpolate.startSymbol(),\n endSymbol = $interpolate.endSymbol(),\n denormalizeTemplate = (startSymbol == '{{' || endSymbol == '}}')\n ? identity\n : function denormalizeTemplate(template) {\n return template.replace(/\\{\\{/g, startSymbol).replace(/}}/g, endSymbol);\n },\n NG_ATTR_BINDING = /^ngAttr[A-Z]/;\n\n\n return compile;\n\n //================================\n\n function compile($compileNodes, transcludeFn, maxPriority, ignoreDirective,\n previousCompileContext) {\n if (!($compileNodes instanceof jqLite)) {\n // jquery always rewraps, whereas we need to preserve the original selector so that we can\n // modify it.\n $compileNodes = jqLite($compileNodes);\n }\n // We can not compile top level text elements since text nodes can be merged and we will\n // not be able to attach scope data to them, so we will wrap them in \n forEach($compileNodes, function(node, index){\n if (node.nodeType == 3 /* text node */ && node.nodeValue.match(/\\S+/) /* non-empty */ ) {\n $compileNodes[index] = node = jqLite(node).wrap('').parent()[0];\n }\n });\n var compositeLinkFn =\n compileNodes($compileNodes, transcludeFn, $compileNodes,\n maxPriority, ignoreDirective, previousCompileContext);\n safeAddClass($compileNodes, 'ng-scope');\n return function publicLinkFn(scope, cloneConnectFn, transcludeControllers, parentBoundTranscludeFn){\n assertArg(scope, 'scope');\n // important!!: we must call our jqLite.clone() since the jQuery one is trying to be smart\n // and sometimes changes the structure of the DOM.\n var $linkNode = cloneConnectFn\n ? JQLitePrototype.clone.call($compileNodes) // IMPORTANT!!!\n : $compileNodes;\n\n forEach(transcludeControllers, function(instance, name) {\n $linkNode.data('$' + name + 'Controller', instance);\n });\n\n // Attach scope only to non-text nodes.\n for(var i = 0, ii = $linkNode.length; i\n addDirective(directives,\n directiveNormalize(nodeName_(node).toLowerCase()), 'E', maxPriority, ignoreDirective);\n\n // iterate over the attributes\n for (var attr, name, nName, ngAttrName, value, isNgAttr, nAttrs = node.attributes,\n j = 0, jj = nAttrs && nAttrs.length; j < jj; j++) {\n var attrStartName = false;\n var attrEndName = false;\n\n attr = nAttrs[j];\n if (!msie || msie >= 8 || attr.specified) {\n name = attr.name;\n value = trim(attr.value);\n\n // support ngAttr attribute binding\n ngAttrName = directiveNormalize(name);\n if (isNgAttr = NG_ATTR_BINDING.test(ngAttrName)) {\n name = snake_case(ngAttrName.substr(6), '-');\n }\n\n var directiveNName = ngAttrName.replace(/(Start|End)$/, '');\n if (ngAttrName === directiveNName + 'Start') {\n attrStartName = name;\n attrEndName = name.substr(0, name.length - 5) + 'end';\n name = name.substr(0, name.length - 6);\n }\n\n nName = directiveNormalize(name.toLowerCase());\n attrsMap[nName] = name;\n if (isNgAttr || !attrs.hasOwnProperty(nName)) {\n attrs[nName] = value;\n if (getBooleanAttrName(node, nName)) {\n attrs[nName] = true; // presence means true\n }\n }\n addAttrInterpolateDirective(node, directives, value, nName);\n addDirective(directives, nName, 'A', maxPriority, ignoreDirective, attrStartName,\n attrEndName);\n }\n }\n\n // use class as directive\n className = node.className;\n if (isString(className) && className !== '') {\n while (match = CLASS_DIRECTIVE_REGEXP.exec(className)) {\n nName = directiveNormalize(match[2]);\n if (addDirective(directives, nName, 'C', maxPriority, ignoreDirective)) {\n attrs[nName] = trim(match[3]);\n }\n className = className.substr(match.index + match[0].length);\n }\n }\n break;\n case 3: /* Text Node */\n addTextInterpolateDirective(directives, node.nodeValue);\n break;\n case 8: /* Comment */\n try {\n match = COMMENT_DIRECTIVE_REGEXP.exec(node.nodeValue);\n if (match) {\n nName = directiveNormalize(match[1]);\n if (addDirective(directives, nName, 'M', maxPriority, ignoreDirective)) {\n attrs[nName] = trim(match[2]);\n }\n }\n } catch (e) {\n // turns out that under some circumstances IE9 throws errors when one attempts to read\n // comment's node value.\n // Just ignore it and continue. (Can't seem to reproduce in test case.)\n }\n break;\n }\n\n directives.sort(byPriority);\n return directives;\n }\n\n /**\n * Given a node with an directive-start it collects all of the siblings until it finds\n * directive-end.\n * @param node\n * @param attrStart\n * @param attrEnd\n * @returns {*}\n */\n function groupScan(node, attrStart, attrEnd) {\n var nodes = [];\n var depth = 0;\n if (attrStart && node.hasAttribute && node.hasAttribute(attrStart)) {\n var startNode = node;\n do {\n if (!node) {\n throw $compileMinErr('uterdir',\n \"Unterminated attribute, found '{0}' but no matching '{1}' found.\",\n attrStart, attrEnd);\n }\n if (node.nodeType == 1 /** Element **/) {\n if (node.hasAttribute(attrStart)) depth++;\n if (node.hasAttribute(attrEnd)) depth--;\n }\n nodes.push(node);\n node = node.nextSibling;\n } while (depth > 0);\n } else {\n nodes.push(node);\n }\n\n return jqLite(nodes);\n }\n\n /**\n * Wrapper for linking function which converts normal linking function into a grouped\n * linking function.\n * @param linkFn\n * @param attrStart\n * @param attrEnd\n * @returns {Function}\n */\n function groupElementsLinkFnWrapper(linkFn, attrStart, attrEnd) {\n return function(scope, element, attrs, controllers, transcludeFn) {\n element = groupScan(element[0], attrStart, attrEnd);\n return linkFn(scope, element, attrs, controllers, transcludeFn);\n };\n }\n\n /**\n * Once the directives have been collected, their compile functions are executed. This method\n * is responsible for inlining directive templates as well as terminating the application\n * of the directives if the terminal directive has been reached.\n *\n * @param {Array} directives Array of collected directives to execute their compile function.\n * this needs to be pre-sorted by priority order.\n * @param {Node} compileNode The raw DOM node to apply the compile functions to\n * @param {Object} templateAttrs The shared attribute function\n * @param {function(angular.Scope, cloneAttachFn=)} transcludeFn A linking function, where the\n * scope argument is auto-generated to the new\n * child of the transcluded parent scope.\n * @param {JQLite} jqCollection If we are working on the root of the compile tree then this\n * argument has the root jqLite array so that we can replace nodes\n * on it.\n * @param {Object=} originalReplaceDirective An optional directive that will be ignored when\n * compiling the transclusion.\n * @param {Array.} preLinkFns\n * @param {Array.} postLinkFns\n * @param {Object} previousCompileContext Context used for previous compilation of the current\n * node\n * @returns {Function} linkFn\n */\n function applyDirectivesToNode(directives, compileNode, templateAttrs, transcludeFn,\n jqCollection, originalReplaceDirective, preLinkFns, postLinkFns,\n previousCompileContext) {\n previousCompileContext = previousCompileContext || {};\n\n var terminalPriority = -Number.MAX_VALUE,\n newScopeDirective,\n controllerDirectives = previousCompileContext.controllerDirectives,\n newIsolateScopeDirective = previousCompileContext.newIsolateScopeDirective,\n templateDirective = previousCompileContext.templateDirective,\n nonTlbTranscludeDirective = previousCompileContext.nonTlbTranscludeDirective,\n hasTranscludeDirective = false,\n hasTemplate = false,\n hasElementTranscludeDirective = previousCompileContext.hasElementTranscludeDirective,\n $compileNode = templateAttrs.$$element = jqLite(compileNode),\n directive,\n directiveName,\n $template,\n replaceDirective = originalReplaceDirective,\n childTranscludeFn = transcludeFn,\n linkFn,\n directiveValue;\n\n // executes all directives on the current element\n for(var i = 0, ii = directives.length; i < ii; i++) {\n directive = directives[i];\n var attrStart = directive.$$start;\n var attrEnd = directive.$$end;\n\n // collect multiblock sections\n if (attrStart) {\n $compileNode = groupScan(compileNode, attrStart, attrEnd);\n }\n $template = undefined;\n\n if (terminalPriority > directive.priority) {\n break; // prevent further processing of directives\n }\n\n if (directiveValue = directive.scope) {\n newScopeDirective = newScopeDirective || directive;\n\n // skip the check for directives with async templates, we'll check the derived sync\n // directive when the template arrives\n if (!directive.templateUrl) {\n assertNoDuplicate('new/isolated scope', newIsolateScopeDirective, directive,\n $compileNode);\n if (isObject(directiveValue)) {\n newIsolateScopeDirective = directive;\n }\n }\n }\n\n directiveName = directive.name;\n\n if (!directive.templateUrl && directive.controller) {\n directiveValue = directive.controller;\n controllerDirectives = controllerDirectives || {};\n assertNoDuplicate(\"'\" + directiveName + \"' controller\",\n controllerDirectives[directiveName], directive, $compileNode);\n controllerDirectives[directiveName] = directive;\n }\n\n if (directiveValue = directive.transclude) {\n hasTranscludeDirective = true;\n\n // Special case ngIf and ngRepeat so that we don't complain about duplicate transclusion.\n // This option should only be used by directives that know how to safely handle element transclusion,\n // where the transcluded nodes are added or replaced after linking.\n if (!directive.$$tlb) {\n assertNoDuplicate('transclusion', nonTlbTranscludeDirective, directive, $compileNode);\n nonTlbTranscludeDirective = directive;\n }\n\n if (directiveValue == 'element') {\n hasElementTranscludeDirective = true;\n terminalPriority = directive.priority;\n $template = $compileNode;\n $compileNode = templateAttrs.$$element =\n jqLite(document.createComment(' ' + directiveName + ': ' +\n templateAttrs[directiveName] + ' '));\n compileNode = $compileNode[0];\n replaceWith(jqCollection, sliceArgs($template), compileNode);\n\n childTranscludeFn = compile($template, transcludeFn, terminalPriority,\n replaceDirective && replaceDirective.name, {\n // Don't pass in:\n // - controllerDirectives - otherwise we'll create duplicates controllers\n // - newIsolateScopeDirective or templateDirective - combining templates with\n // element transclusion doesn't make sense.\n //\n // We need only nonTlbTranscludeDirective so that we prevent putting transclusion\n // on the same element more than once.\n nonTlbTranscludeDirective: nonTlbTranscludeDirective\n });\n } else {\n $template = jqLite(jqLiteClone(compileNode)).contents();\n $compileNode.empty(); // clear contents\n childTranscludeFn = compile($template, transcludeFn);\n }\n }\n\n if (directive.template) {\n hasTemplate = true;\n assertNoDuplicate('template', templateDirective, directive, $compileNode);\n templateDirective = directive;\n\n directiveValue = (isFunction(directive.template))\n ? directive.template($compileNode, templateAttrs)\n : directive.template;\n\n directiveValue = denormalizeTemplate(directiveValue);\n\n if (directive.replace) {\n replaceDirective = directive;\n if (jqLiteIsTextNode(directiveValue)) {\n $template = [];\n } else {\n $template = jqLite(trim(directiveValue));\n }\n compileNode = $template[0];\n\n if ($template.length != 1 || compileNode.nodeType !== 1) {\n throw $compileMinErr('tplrt',\n \"Template for directive '{0}' must have exactly one root element. {1}\",\n directiveName, '');\n }\n\n replaceWith(jqCollection, $compileNode, compileNode);\n\n var newTemplateAttrs = {$attr: {}};\n\n // combine directives from the original node and from the template:\n // - take the array of directives for this element\n // - split it into two parts, those that already applied (processed) and those that weren't (unprocessed)\n // - collect directives from the template and sort them by priority\n // - combine directives as: processed + template + unprocessed\n var templateDirectives = collectDirectives(compileNode, [], newTemplateAttrs);\n var unprocessedDirectives = directives.splice(i + 1, directives.length - (i + 1));\n\n if (newIsolateScopeDirective) {\n markDirectivesAsIsolate(templateDirectives);\n }\n directives = directives.concat(templateDirectives).concat(unprocessedDirectives);\n mergeTemplateAttributes(templateAttrs, newTemplateAttrs);\n\n ii = directives.length;\n } else {\n $compileNode.html(directiveValue);\n }\n }\n\n if (directive.templateUrl) {\n hasTemplate = true;\n assertNoDuplicate('template', templateDirective, directive, $compileNode);\n templateDirective = directive;\n\n if (directive.replace) {\n replaceDirective = directive;\n }\n\n nodeLinkFn = compileTemplateUrl(directives.splice(i, directives.length - i), $compileNode,\n templateAttrs, jqCollection, hasTranscludeDirective && childTranscludeFn, preLinkFns, postLinkFns, {\n controllerDirectives: controllerDirectives,\n newIsolateScopeDirective: newIsolateScopeDirective,\n templateDirective: templateDirective,\n nonTlbTranscludeDirective: nonTlbTranscludeDirective\n });\n ii = directives.length;\n } else if (directive.compile) {\n try {\n linkFn = directive.compile($compileNode, templateAttrs, childTranscludeFn);\n if (isFunction(linkFn)) {\n addLinkFns(null, linkFn, attrStart, attrEnd);\n } else if (linkFn) {\n addLinkFns(linkFn.pre, linkFn.post, attrStart, attrEnd);\n }\n } catch (e) {\n $exceptionHandler(e, startingTag($compileNode));\n }\n }\n\n if (directive.terminal) {\n nodeLinkFn.terminal = true;\n terminalPriority = Math.max(terminalPriority, directive.priority);\n }\n\n }\n\n nodeLinkFn.scope = newScopeDirective && newScopeDirective.scope === true;\n nodeLinkFn.transcludeOnThisElement = hasTranscludeDirective;\n nodeLinkFn.templateOnThisElement = hasTemplate;\n nodeLinkFn.transclude = childTranscludeFn;\n\n previousCompileContext.hasElementTranscludeDirective = hasElementTranscludeDirective;\n\n // might be normal or delayed nodeLinkFn depending on if templateUrl is present\n return nodeLinkFn;\n\n ////////////////////\n\n function addLinkFns(pre, post, attrStart, attrEnd) {\n if (pre) {\n if (attrStart) pre = groupElementsLinkFnWrapper(pre, attrStart, attrEnd);\n pre.require = directive.require;\n pre.directiveName = directiveName;\n if (newIsolateScopeDirective === directive || directive.$$isolateScope) {\n pre = cloneAndAnnotateFn(pre, {isolateScope: true});\n }\n preLinkFns.push(pre);\n }\n if (post) {\n if (attrStart) post = groupElementsLinkFnWrapper(post, attrStart, attrEnd);\n post.require = directive.require;\n post.directiveName = directiveName;\n if (newIsolateScopeDirective === directive || directive.$$isolateScope) {\n post = cloneAndAnnotateFn(post, {isolateScope: true});\n }\n postLinkFns.push(post);\n }\n }\n\n\n function getControllers(directiveName, require, $element, elementControllers) {\n var value, retrievalMethod = 'data', optional = false;\n if (isString(require)) {\n while((value = require.charAt(0)) == '^' || value == '?') {\n require = require.substr(1);\n if (value == '^') {\n retrievalMethod = 'inheritedData';\n }\n optional = optional || value == '?';\n }\n value = null;\n\n if (elementControllers && retrievalMethod === 'data') {\n value = elementControllers[require];\n }\n value = value || $element[retrievalMethod]('$' + require + 'Controller');\n\n if (!value && !optional) {\n throw $compileMinErr('ctreq',\n \"Controller '{0}', required by directive '{1}', can't be found!\",\n require, directiveName);\n }\n return value;\n } else if (isArray(require)) {\n value = [];\n forEach(require, function(require) {\n value.push(getControllers(directiveName, require, $element, elementControllers));\n });\n }\n return value;\n }\n\n\n function nodeLinkFn(childLinkFn, scope, linkNode, $rootElement, boundTranscludeFn) {\n var attrs, $element, i, ii, linkFn, controller, isolateScope, elementControllers = {}, transcludeFn;\n\n attrs = (compileNode === linkNode)\n ? templateAttrs\n : shallowCopy(templateAttrs, new Attributes(jqLite(linkNode), templateAttrs.$attr));\n $element = attrs.$$element;\n\n if (newIsolateScopeDirective) {\n var LOCAL_REGEXP = /^\\s*([@=&])(\\??)\\s*(\\w*)\\s*$/;\n\n isolateScope = scope.$new(true);\n\n if (templateDirective && (templateDirective === newIsolateScopeDirective ||\n templateDirective === newIsolateScopeDirective.$$originalDirective)) {\n $element.data('$isolateScope', isolateScope);\n } else {\n $element.data('$isolateScopeNoTemplate', isolateScope);\n }\n\n\n\n safeAddClass($element, 'ng-isolate-scope');\n\n forEach(newIsolateScopeDirective.scope, function(definition, scopeName) {\n var match = definition.match(LOCAL_REGEXP) || [],\n attrName = match[3] || scopeName,\n optional = (match[2] == '?'),\n mode = match[1], // @, =, or &\n lastValue,\n parentGet, parentSet, compare;\n\n isolateScope.$$isolateBindings[scopeName] = mode + attrName;\n\n switch (mode) {\n\n case '@':\n attrs.$observe(attrName, function(value) {\n isolateScope[scopeName] = value;\n });\n attrs.$$observers[attrName].$$scope = scope;\n if( attrs[attrName] ) {\n // If the attribute has been provided then we trigger an interpolation to ensure\n // the value is there for use in the link fn\n isolateScope[scopeName] = $interpolate(attrs[attrName])(scope);\n }\n break;\n\n case '=':\n if (optional && !attrs[attrName]) {\n return;\n }\n parentGet = $parse(attrs[attrName]);\n if (parentGet.literal) {\n compare = equals;\n } else {\n compare = function(a,b) { return a === b || (a !== a && b !== b); };\n }\n parentSet = parentGet.assign || function() {\n // reset the change, or we will throw this exception on every $digest\n lastValue = isolateScope[scopeName] = parentGet(scope);\n throw $compileMinErr('nonassign',\n \"Expression '{0}' used with directive '{1}' is non-assignable!\",\n attrs[attrName], newIsolateScopeDirective.name);\n };\n lastValue = isolateScope[scopeName] = parentGet(scope);\n isolateScope.$watch(function parentValueWatch() {\n var parentValue = parentGet(scope);\n if (!compare(parentValue, isolateScope[scopeName])) {\n // we are out of sync and need to copy\n if (!compare(parentValue, lastValue)) {\n // parent changed and it has precedence\n isolateScope[scopeName] = parentValue;\n } else {\n // if the parent can be assigned then do so\n parentSet(scope, parentValue = isolateScope[scopeName]);\n }\n }\n return lastValue = parentValue;\n }, null, parentGet.literal);\n break;\n\n case '&':\n parentGet = $parse(attrs[attrName]);\n isolateScope[scopeName] = function(locals) {\n return parentGet(scope, locals);\n };\n break;\n\n default:\n throw $compileMinErr('iscp',\n \"Invalid isolate scope definition for directive '{0}'.\" +\n \" Definition: {... {1}: '{2}' ...}\",\n newIsolateScopeDirective.name, scopeName, definition);\n }\n });\n }\n transcludeFn = boundTranscludeFn && controllersBoundTransclude;\n if (controllerDirectives) {\n forEach(controllerDirectives, function(directive) {\n var locals = {\n $scope: directive === newIsolateScopeDirective || directive.$$isolateScope ? isolateScope : scope,\n $element: $element,\n $attrs: attrs,\n $transclude: transcludeFn\n }, controllerInstance;\n\n controller = directive.controller;\n if (controller == '@') {\n controller = attrs[directive.name];\n }\n\n controllerInstance = $controller(controller, locals);\n // For directives with element transclusion the element is a comment,\n // but jQuery .data doesn't support attaching data to comment nodes as it's hard to\n // clean up (http://bugs.jquery.com/ticket/8335).\n // Instead, we save the controllers for the element in a local hash and attach to .data\n // later, once we have the actual element.\n elementControllers[directive.name] = controllerInstance;\n if (!hasElementTranscludeDirective) {\n $element.data('$' + directive.name + 'Controller', controllerInstance);\n }\n\n if (directive.controllerAs) {\n locals.$scope[directive.controllerAs] = controllerInstance;\n }\n });\n }\n\n // PRELINKING\n for(i = 0, ii = preLinkFns.length; i < ii; i++) {\n try {\n linkFn = preLinkFns[i];\n linkFn(linkFn.isolateScope ? isolateScope : scope, $element, attrs,\n linkFn.require && getControllers(linkFn.directiveName, linkFn.require, $element, elementControllers), transcludeFn);\n } catch (e) {\n $exceptionHandler(e, startingTag($element));\n }\n }\n\n // RECURSION\n // We only pass the isolate scope, if the isolate directive has a template,\n // otherwise the child elements do not belong to the isolate directive.\n var scopeToChild = scope;\n if (newIsolateScopeDirective && (newIsolateScopeDirective.template || newIsolateScopeDirective.templateUrl === null)) {\n scopeToChild = isolateScope;\n }\n childLinkFn && childLinkFn(scopeToChild, linkNode.childNodes, undefined, boundTranscludeFn);\n\n // POSTLINKING\n for(i = postLinkFns.length - 1; i >= 0; i--) {\n try {\n linkFn = postLinkFns[i];\n linkFn(linkFn.isolateScope ? isolateScope : scope, $element, attrs,\n linkFn.require && getControllers(linkFn.directiveName, linkFn.require, $element, elementControllers), transcludeFn);\n } catch (e) {\n $exceptionHandler(e, startingTag($element));\n }\n }\n\n // This is the function that is injected as `$transclude`.\n function controllersBoundTransclude(scope, cloneAttachFn) {\n var transcludeControllers;\n\n // no scope passed\n if (arguments.length < 2) {\n cloneAttachFn = scope;\n scope = undefined;\n }\n\n if (hasElementTranscludeDirective) {\n transcludeControllers = elementControllers;\n }\n\n return boundTranscludeFn(scope, cloneAttachFn, transcludeControllers);\n }\n }\n }\n\n function markDirectivesAsIsolate(directives) {\n // mark all directives as needing isolate scope.\n for (var j = 0, jj = directives.length; j < jj; j++) {\n directives[j] = inherit(directives[j], {$$isolateScope: true});\n }\n }\n\n /**\n * looks up the directive and decorates it with exception handling and proper parameters. We\n * call this the boundDirective.\n *\n * @param {string} name name of the directive to look up.\n * @param {string} location The directive must be found in specific format.\n * String containing any of theses characters:\n *\n * * `E`: element name\n * * `A': attribute\n * * `C`: class\n * * `M`: comment\n * @returns {boolean} true if directive was added.\n */\n function addDirective(tDirectives, name, location, maxPriority, ignoreDirective, startAttrName,\n endAttrName) {\n if (name === ignoreDirective) return null;\n var match = null;\n if (hasDirectives.hasOwnProperty(name)) {\n for(var directive, directives = $injector.get(name + Suffix),\n i = 0, ii = directives.length; i directive.priority) &&\n directive.restrict.indexOf(location) != -1) {\n if (startAttrName) {\n directive = inherit(directive, {$$start: startAttrName, $$end: endAttrName});\n }\n tDirectives.push(directive);\n match = directive;\n }\n } catch(e) { $exceptionHandler(e); }\n }\n }\n return match;\n }\n\n\n /**\n * When the element is replaced with HTML template then the new attributes\n * on the template need to be merged with the existing attributes in the DOM.\n * The desired effect is to have both of the attributes present.\n *\n * @param {object} dst destination attributes (original DOM)\n * @param {object} src source attributes (from the directive template)\n */\n function mergeTemplateAttributes(dst, src) {\n var srcAttr = src.$attr,\n dstAttr = dst.$attr,\n $element = dst.$$element;\n\n // reapply the old attributes to the new element\n forEach(dst, function(value, key) {\n if (key.charAt(0) != '$') {\n if (src[key] && src[key] !== value) {\n value += (key === 'style' ? ';' : ' ') + src[key];\n }\n dst.$set(key, value, true, srcAttr[key]);\n }\n });\n\n // copy the new attributes on the old attrs object\n forEach(src, function(value, key) {\n if (key == 'class') {\n safeAddClass($element, value);\n dst['class'] = (dst['class'] ? dst['class'] + ' ' : '') + value;\n } else if (key == 'style') {\n $element.attr('style', $element.attr('style') + ';' + value);\n dst['style'] = (dst['style'] ? dst['style'] + ';' : '') + value;\n // `dst` will never contain hasOwnProperty as DOM parser won't let it.\n // You will get an \"InvalidCharacterError: DOM Exception 5\" error if you\n // have an attribute like \"has-own-property\" or \"data-has-own-property\", etc.\n } else if (key.charAt(0) != '$' && !dst.hasOwnProperty(key)) {\n dst[key] = value;\n dstAttr[key] = srcAttr[key];\n }\n });\n }\n\n\n function compileTemplateUrl(directives, $compileNode, tAttrs,\n $rootElement, childTranscludeFn, preLinkFns, postLinkFns, previousCompileContext) {\n var linkQueue = [],\n afterTemplateNodeLinkFn,\n afterTemplateChildLinkFn,\n beforeTemplateCompileNode = $compileNode[0],\n origAsyncDirective = directives.shift(),\n // The fact that we have to copy and patch the directive seems wrong!\n derivedSyncDirective = extend({}, origAsyncDirective, {\n templateUrl: null, transclude: null, replace: null, $$originalDirective: origAsyncDirective\n }),\n templateUrl = (isFunction(origAsyncDirective.templateUrl))\n ? origAsyncDirective.templateUrl($compileNode, tAttrs)\n : origAsyncDirective.templateUrl;\n\n $compileNode.empty();\n\n $http.get($sce.getTrustedResourceUrl(templateUrl), {cache: $templateCache}).\n success(function(content) {\n var compileNode, tempTemplateAttrs, $template, childBoundTranscludeFn;\n\n content = denormalizeTemplate(content);\n\n if (origAsyncDirective.replace) {\n if (jqLiteIsTextNode(content)) {\n $template = [];\n } else {\n $template = jqLite(trim(content));\n }\n compileNode = $template[0];\n\n if ($template.length != 1 || compileNode.nodeType !== 1) {\n throw $compileMinErr('tplrt',\n \"Template for directive '{0}' must have exactly one root element. {1}\",\n origAsyncDirective.name, templateUrl);\n }\n\n tempTemplateAttrs = {$attr: {}};\n replaceWith($rootElement, $compileNode, compileNode);\n var templateDirectives = collectDirectives(compileNode, [], tempTemplateAttrs);\n\n if (isObject(origAsyncDirective.scope)) {\n markDirectivesAsIsolate(templateDirectives);\n }\n directives = templateDirectives.concat(directives);\n mergeTemplateAttributes(tAttrs, tempTemplateAttrs);\n } else {\n compileNode = beforeTemplateCompileNode;\n $compileNode.html(content);\n }\n\n directives.unshift(derivedSyncDirective);\n\n afterTemplateNodeLinkFn = applyDirectivesToNode(directives, compileNode, tAttrs,\n childTranscludeFn, $compileNode, origAsyncDirective, preLinkFns, postLinkFns,\n previousCompileContext);\n forEach($rootElement, function(node, i) {\n if (node == compileNode) {\n $rootElement[i] = $compileNode[0];\n }\n });\n afterTemplateChildLinkFn = compileNodes($compileNode[0].childNodes, childTranscludeFn);\n\n while(linkQueue.length) {\n var scope = linkQueue.shift(),\n beforeTemplateLinkNode = linkQueue.shift(),\n linkRootElement = linkQueue.shift(),\n boundTranscludeFn = linkQueue.shift(),\n linkNode = $compileNode[0];\n\n if (beforeTemplateLinkNode !== beforeTemplateCompileNode) {\n var oldClasses = beforeTemplateLinkNode.className;\n\n if (!(previousCompileContext.hasElementTranscludeDirective &&\n origAsyncDirective.replace)) {\n // it was cloned therefore we have to clone as well.\n linkNode = jqLiteClone(compileNode);\n }\n\n replaceWith(linkRootElement, jqLite(beforeTemplateLinkNode), linkNode);\n\n // Copy in CSS classes from original node\n safeAddClass(jqLite(linkNode), oldClasses);\n }\n if (afterTemplateNodeLinkFn.transcludeOnThisElement) {\n childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn);\n } else {\n childBoundTranscludeFn = boundTranscludeFn;\n }\n afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, linkNode, $rootElement,\n childBoundTranscludeFn);\n }\n linkQueue = null;\n }).\n error(function(response, code, headers, config) {\n throw $compileMinErr('tpload', 'Failed to load template: {0}', config.url);\n });\n\n return function delayedNodeLinkFn(ignoreChildLinkFn, scope, node, rootElement, boundTranscludeFn) {\n var childBoundTranscludeFn = boundTranscludeFn;\n if (linkQueue) {\n linkQueue.push(scope);\n linkQueue.push(node);\n linkQueue.push(rootElement);\n linkQueue.push(childBoundTranscludeFn);\n } else {\n if (afterTemplateNodeLinkFn.transcludeOnThisElement) {\n childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn);\n }\n afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, node, rootElement, childBoundTranscludeFn);\n }\n };\n }\n\n\n /**\n * Sorting function for bound directives.\n */\n function byPriority(a, b) {\n var diff = b.priority - a.priority;\n if (diff !== 0) return diff;\n if (a.name !== b.name) return (a.name < b.name) ? -1 : 1;\n return a.index - b.index;\n }\n\n\n function assertNoDuplicate(what, previousDirective, directive, element) {\n if (previousDirective) {\n throw $compileMinErr('multidir', 'Multiple directives [{0}, {1}] asking for {2} on: {3}',\n previousDirective.name, directive.name, what, startingTag(element));\n }\n }\n\n\n function addTextInterpolateDirective(directives, text) {\n var interpolateFn = $interpolate(text, true);\n if (interpolateFn) {\n directives.push({\n priority: 0,\n compile: function textInterpolateCompileFn(templateNode) {\n // when transcluding a template that has bindings in the root\n // then we don't have a parent and should do this in the linkFn\n var parent = templateNode.parent(), hasCompileParent = parent.length;\n if (hasCompileParent) safeAddClass(templateNode.parent(), 'ng-binding');\n\n return function textInterpolateLinkFn(scope, node) {\n var parent = node.parent(),\n bindings = parent.data('$binding') || [];\n bindings.push(interpolateFn);\n parent.data('$binding', bindings);\n if (!hasCompileParent) safeAddClass(parent, 'ng-binding');\n scope.$watch(interpolateFn, function interpolateFnWatchAction(value) {\n node[0].nodeValue = value;\n });\n };\n }\n });\n }\n }\n\n\n function getTrustedContext(node, attrNormalizedName) {\n if (attrNormalizedName == \"srcdoc\") {\n return $sce.HTML;\n }\n var tag = nodeName_(node);\n // maction[xlink:href] can source SVG. It's not limited to .\n if (attrNormalizedName == \"xlinkHref\" ||\n (tag == \"FORM\" && attrNormalizedName == \"action\") ||\n (tag != \"IMG\" && (attrNormalizedName == \"src\" ||\n attrNormalizedName == \"ngSrc\"))) {\n return $sce.RESOURCE_URL;\n }\n }\n\n\n function addAttrInterpolateDirective(node, directives, value, name) {\n var interpolateFn = $interpolate(value, true);\n\n // no interpolation found -> ignore\n if (!interpolateFn) return;\n\n\n if (name === \"multiple\" && nodeName_(node) === \"SELECT\") {\n throw $compileMinErr(\"selmulti\",\n \"Binding to the 'multiple' attribute is not supported. Element: {0}\",\n startingTag(node));\n }\n\n directives.push({\n priority: 100,\n compile: function() {\n return {\n pre: function attrInterpolatePreLinkFn(scope, element, attr) {\n var $$observers = (attr.$$observers || (attr.$$observers = {}));\n\n if (EVENT_HANDLER_ATTR_REGEXP.test(name)) {\n throw $compileMinErr('nodomevents',\n \"Interpolations for HTML DOM event attributes are disallowed. Please use the \" +\n \"ng- versions (such as ng-click instead of onclick) instead.\");\n }\n\n // we need to interpolate again, in case the attribute value has been updated\n // (e.g. by another directive's compile function)\n interpolateFn = $interpolate(attr[name], true, getTrustedContext(node, name));\n\n // if attribute was updated so that there is no interpolation going on we don't want to\n // register any observers\n if (!interpolateFn) return;\n\n // TODO(i): this should likely be attr.$set(name, iterpolateFn(scope) so that we reset the\n // actual attr value\n attr[name] = interpolateFn(scope);\n ($$observers[name] || ($$observers[name] = [])).$$inter = true;\n (attr.$$observers && attr.$$observers[name].$$scope || scope).\n $watch(interpolateFn, function interpolateFnWatchAction(newValue, oldValue) {\n //special case for class attribute addition + removal\n //so that class changes can tap into the animation\n //hooks provided by the $animate service. Be sure to\n //skip animations when the first digest occurs (when\n //both the new and the old values are the same) since\n //the CSS classes are the non-interpolated values\n if(name === 'class' && newValue != oldValue) {\n attr.$updateClass(newValue, oldValue);\n } else {\n attr.$set(name, newValue);\n }\n });\n }\n };\n }\n });\n }\n\n\n /**\n * This is a special jqLite.replaceWith, which can replace items which\n * have no parents, provided that the containing jqLite collection is provided.\n *\n * @param {JqLite=} $rootElement The root of the compile tree. Used so that we can replace nodes\n * in the root of the tree.\n * @param {JqLite} elementsToRemove The jqLite element which we are going to replace. We keep\n * the shell, but replace its DOM node reference.\n * @param {Node} newNode The new DOM node.\n */\n function replaceWith($rootElement, elementsToRemove, newNode) {\n var firstElementToRemove = elementsToRemove[0],\n removeCount = elementsToRemove.length,\n parent = firstElementToRemove.parentNode,\n i, ii;\n\n if ($rootElement) {\n for(i = 0, ii = $rootElement.length; i < ii; i++) {\n if ($rootElement[i] == firstElementToRemove) {\n $rootElement[i++] = newNode;\n for (var j = i, j2 = j + removeCount - 1,\n jj = $rootElement.length;\n j < jj; j++, j2++) {\n if (j2 < jj) {\n $rootElement[j] = $rootElement[j2];\n } else {\n delete $rootElement[j];\n }\n }\n $rootElement.length -= removeCount - 1;\n break;\n }\n }\n }\n\n if (parent) {\n parent.replaceChild(newNode, firstElementToRemove);\n }\n var fragment = document.createDocumentFragment();\n fragment.appendChild(firstElementToRemove);\n newNode[jqLite.expando] = firstElementToRemove[jqLite.expando];\n for (var k = 1, kk = elementsToRemove.length; k < kk; k++) {\n var element = elementsToRemove[k];\n jqLite(element).remove(); // must do this way to clean up expando\n fragment.appendChild(element);\n delete elementsToRemove[k];\n }\n\n elementsToRemove[0] = newNode;\n elementsToRemove.length = 1;\n }\n\n\n function cloneAndAnnotateFn(fn, annotation) {\n return extend(function() { return fn.apply(null, arguments); }, fn, annotation);\n }\n }];\n}\n\nvar PREFIX_REGEXP = /^(x[\\:\\-_]|data[\\:\\-_])/i;\n/**\n * Converts all accepted directives format into proper directive name.\n * @param name Name to normalize\n */\nfunction directiveNormalize(name) {\n return camelCase(name.replace(PREFIX_REGEXP, ''));\n}\n\n/**\n * @ngdoc type\n * @name $compile.directive.Attributes\n *\n * @description\n * A shared object between directive compile / linking functions which contains normalized DOM\n * element attributes. The values reflect current binding state `{{ }}`. The normalization is\n * needed since all of these are treated as equivalent in Angular:\n *\n * ```\n * \n * ```\n */\n\n/**\n * @ngdoc property\n * @name $compile.directive.Attributes#$attr\n *\n * @description\n * A map of DOM element attribute names to the normalized name. This is\n * needed to do reverse lookup from normalized name back to actual name.\n */\n\n\n/**\n * @ngdoc method\n * @name $compile.directive.Attributes#$set\n * @kind function\n *\n * @description\n * Set DOM element attribute value.\n *\n *\n * @param {string} name Normalized element attribute name of the property to modify. The name is\n * reverse-translated using the {@link ng.$compile.directive.Attributes#$attr $attr}\n * property to the original name.\n * @param {string} value Value to set the attribute to. The value can be an interpolated string.\n */\n\n\n\n/**\n * Closure compiler type information\n */\n\nfunction nodesetLinkingFn(\n /* angular.Scope */ scope,\n /* NodeList */ nodeList,\n /* Element */ rootElement,\n /* function(Function) */ boundTranscludeFn\n){}\n\nfunction directiveLinkingFn(\n /* nodesetLinkingFn */ nodesetLinkingFn,\n /* angular.Scope */ scope,\n /* Node */ node,\n /* Element */ rootElement,\n /* function(Function) */ boundTranscludeFn\n){}\n\nfunction tokenDifference(str1, str2) {\n var values = '',\n tokens1 = str1.split(/\\s+/),\n tokens2 = str2.split(/\\s+/);\n\n outer:\n for(var i = 0; i < tokens1.length; i++) {\n var token = tokens1[i];\n for(var j = 0; j < tokens2.length; j++) {\n if(token == tokens2[j]) continue outer;\n }\n values += (values.length > 0 ? ' ' : '') + token;\n }\n return values;\n}\n\n/**\n * @ngdoc provider\n * @name $controllerProvider\n * @description\n * The {@link ng.$controller $controller service} is used by Angular to create new\n * controllers.\n *\n * This provider allows controller registration via the\n * {@link ng.$controllerProvider#register register} method.\n */\nfunction $ControllerProvider() {\n var controllers = {},\n CNTRL_REG = /^(\\S+)(\\s+as\\s+(\\w+))?$/;\n\n\n /**\n * @ngdoc method\n * @name $controllerProvider#register\n * @param {string|Object} name Controller name, or an object map of controllers where the keys are\n * the names and the values are the constructors.\n * @param {Function|Array} constructor Controller constructor fn (optionally decorated with DI\n * annotations in the array notation).\n */\n this.register = function(name, constructor) {\n assertNotHasOwnProperty(name, 'controller');\n if (isObject(name)) {\n extend(controllers, name);\n } else {\n controllers[name] = constructor;\n }\n };\n\n\n this.$get = ['$injector', '$window', function($injector, $window) {\n\n /**\n * @ngdoc service\n * @name $controller\n * @requires $injector\n *\n * @param {Function|string} constructor If called with a function then it's considered to be the\n * controller constructor function. Otherwise it's considered to be a string which is used\n * to retrieve the controller constructor using the following steps:\n *\n * * check if a controller with given name is registered via `$controllerProvider`\n * * check if evaluating the string on the current scope returns a constructor\n * * check `window[constructor]` on the global `window` object\n *\n * @param {Object} locals Injection locals for Controller.\n * @return {Object} Instance of given controller.\n *\n * @description\n * `$controller` service is responsible for instantiating controllers.\n *\n * It's just a simple call to {@link auto.$injector $injector}, but extracted into\n * a service, so that one can override this service with [BC version](https://gist.github.com/1649788).\n */\n return function(expression, locals) {\n var instance, match, constructor, identifier;\n\n if(isString(expression)) {\n match = expression.match(CNTRL_REG),\n constructor = match[1],\n identifier = match[3];\n expression = controllers.hasOwnProperty(constructor)\n ? controllers[constructor]\n : getter(locals.$scope, constructor, true) || getter($window, constructor, true);\n\n assertArgFn(expression, constructor, true);\n }\n\n instance = $injector.instantiate(expression, locals);\n\n if (identifier) {\n if (!(locals && typeof locals.$scope === 'object')) {\n throw minErr('$controller')('noscp',\n \"Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.\",\n constructor || expression.name, identifier);\n }\n\n locals.$scope[identifier] = instance;\n }\n\n return instance;\n };\n }];\n}\n\n/**\n * @ngdoc service\n * @name $document\n * @requires $window\n *\n * @description\n * A {@link angular.element jQuery or jqLite} wrapper for the browser's `window.document` object.\n *\n * @example\n \n \n
\n

$document title:

\n

window.document title:

\n
\n
\n \n angular.module('documentExample', [])\n .controller('ExampleController', ['$scope', '$document', function($scope, $document) {\n $scope.title = $document[0].title;\n $scope.windowTitle = angular.element(window.document)[0].title;\n }]);\n \n
\n */\nfunction $DocumentProvider(){\n this.$get = ['$window', function(window){\n return jqLite(window.document);\n }];\n}\n\n/**\n * @ngdoc service\n * @name $exceptionHandler\n * @requires ng.$log\n *\n * @description\n * Any uncaught exception in angular expressions is delegated to this service.\n * The default implementation simply delegates to `$log.error` which logs it into\n * the browser console.\n *\n * In unit tests, if `angular-mocks.js` is loaded, this service is overridden by\n * {@link ngMock.$exceptionHandler mock $exceptionHandler} which aids in testing.\n *\n * ## Example:\n *\n * ```js\n * angular.module('exceptionOverride', []).factory('$exceptionHandler', function () {\n * return function (exception, cause) {\n * exception.message += ' (caused by \"' + cause + '\")';\n * throw exception;\n * };\n * });\n * ```\n *\n * This example will override the normal action of `$exceptionHandler`, to make angular\n * exceptions fail hard when they happen, instead of just logging to the console.\n *\n * @param {Error} exception Exception associated with the error.\n * @param {string=} cause optional information about the context in which\n * the error was thrown.\n *\n */\nfunction $ExceptionHandlerProvider() {\n this.$get = ['$log', function($log) {\n return function(exception, cause) {\n $log.error.apply($log, arguments);\n };\n }];\n}\n\n/**\n * Parse headers into key value object\n *\n * @param {string} headers Raw headers as a string\n * @returns {Object} Parsed headers as key value object\n */\nfunction parseHeaders(headers) {\n var parsed = {}, key, val, i;\n\n if (!headers) return parsed;\n\n forEach(headers.split('\\n'), function(line) {\n i = line.indexOf(':');\n key = lowercase(trim(line.substr(0, i)));\n val = trim(line.substr(i + 1));\n\n if (key) {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n}\n\n\n/**\n * Returns a function that provides access to parsed headers.\n *\n * Headers are lazy parsed when first requested.\n * @see parseHeaders\n *\n * @param {(string|Object)} headers Headers to provide access to.\n * @returns {function(string=)} Returns a getter function which if called with:\n *\n * - if called with single an argument returns a single header value or null\n * - if called with no arguments returns an object containing all headers.\n */\nfunction headersGetter(headers) {\n var headersObj = isObject(headers) ? headers : undefined;\n\n return function(name) {\n if (!headersObj) headersObj = parseHeaders(headers);\n\n if (name) {\n return headersObj[lowercase(name)] || null;\n }\n\n return headersObj;\n };\n}\n\n\n/**\n * Chain all given functions\n *\n * This function is used for both request and response transforming\n *\n * @param {*} data Data to transform.\n * @param {function(string=)} headers Http headers getter fn.\n * @param {(Function|Array.)} fns Function or an array of functions.\n * @returns {*} Transformed data.\n */\nfunction transformData(data, headers, fns) {\n if (isFunction(fns))\n return fns(data, headers);\n\n forEach(fns, function(fn) {\n data = fn(data, headers);\n });\n\n return data;\n}\n\n\nfunction isSuccess(status) {\n return 200 <= status && status < 300;\n}\n\n\n/**\n * @ngdoc provider\n * @name $httpProvider\n * @description\n * Use `$httpProvider` to change the default behavior of the {@link ng.$http $http} service.\n * */\nfunction $HttpProvider() {\n var JSON_START = /^\\s*(\\[|\\{[^\\{])/,\n JSON_END = /[\\}\\]]\\s*$/,\n PROTECTION_PREFIX = /^\\)\\]\\}',?\\n/,\n CONTENT_TYPE_APPLICATION_JSON = {'Content-Type': 'application/json;charset=utf-8'};\n\n /**\n * @ngdoc property\n * @name $httpProvider#defaults\n * @description\n *\n * Object containing default values for all {@link ng.$http $http} requests.\n *\n * - **`defaults.xsrfCookieName`** - {string} - Name of cookie containing the XSRF token.\n * Defaults value is `'XSRF-TOKEN'`.\n *\n * - **`defaults.xsrfHeaderName`** - {string} - Name of HTTP header to populate with the\n * XSRF token. Defaults value is `'X-XSRF-TOKEN'`.\n *\n * - **`defaults.headers`** - {Object} - Default headers for all $http requests.\n * Refer to {@link ng.$http#setting-http-headers $http} for documentation on\n * setting default headers.\n * - **`defaults.headers.common`**\n * - **`defaults.headers.post`**\n * - **`defaults.headers.put`**\n * - **`defaults.headers.patch`**\n **/\n var defaults = this.defaults = {\n // transform incoming response data\n transformResponse: [function(data) {\n if (isString(data)) {\n // strip json vulnerability protection prefix\n data = data.replace(PROTECTION_PREFIX, '');\n if (JSON_START.test(data) && JSON_END.test(data))\n data = fromJson(data);\n }\n return data;\n }],\n\n // transform outgoing request data\n transformRequest: [function(d) {\n return isObject(d) && !isFile(d) && !isBlob(d) ? toJson(d) : d;\n }],\n\n // default headers\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n },\n post: shallowCopy(CONTENT_TYPE_APPLICATION_JSON),\n put: shallowCopy(CONTENT_TYPE_APPLICATION_JSON),\n patch: shallowCopy(CONTENT_TYPE_APPLICATION_JSON)\n },\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN'\n };\n\n /**\n * @ngdoc property\n * @name $httpProvider#interceptors\n * @description\n *\n * Array containing service factories for all synchronous or asynchronous {@link ng.$http $http}\n * pre-processing of request or postprocessing of responses.\n *\n * These service factories are ordered by request, i.e. they are applied in the same order as the\n * array, on request, but reverse order, on response.\n *\n * {@link ng.$http#interceptors Interceptors detailed info}\n **/\n var interceptorFactories = this.interceptors = [];\n\n /**\n * For historical reasons, response interceptors are ordered by the order in which\n * they are applied to the response. (This is the opposite of interceptorFactories)\n */\n var responseInterceptorFactories = this.responseInterceptors = [];\n\n this.$get = ['$httpBackend', '$browser', '$cacheFactory', '$rootScope', '$q', '$injector',\n function($httpBackend, $browser, $cacheFactory, $rootScope, $q, $injector) {\n\n var defaultCache = $cacheFactory('$http');\n\n /**\n * Interceptors stored in reverse order. Inner interceptors before outer interceptors.\n * The reversal is needed so that we can build up the interception chain around the\n * server request.\n */\n var reversedInterceptors = [];\n\n forEach(interceptorFactories, function(interceptorFactory) {\n reversedInterceptors.unshift(isString(interceptorFactory)\n ? $injector.get(interceptorFactory) : $injector.invoke(interceptorFactory));\n });\n\n forEach(responseInterceptorFactories, function(interceptorFactory, index) {\n var responseFn = isString(interceptorFactory)\n ? $injector.get(interceptorFactory)\n : $injector.invoke(interceptorFactory);\n\n /**\n * Response interceptors go before \"around\" interceptors (no real reason, just\n * had to pick one.) But they are already reversed, so we can't use unshift, hence\n * the splice.\n */\n reversedInterceptors.splice(index, 0, {\n response: function(response) {\n return responseFn($q.when(response));\n },\n responseError: function(response) {\n return responseFn($q.reject(response));\n }\n });\n });\n\n\n /**\n * @ngdoc service\n * @kind function\n * @name $http\n * @requires ng.$httpBackend\n * @requires $cacheFactory\n * @requires $rootScope\n * @requires $q\n * @requires $injector\n *\n * @description\n * The `$http` service is a core Angular service that facilitates communication with the remote\n * HTTP servers via the browser's [XMLHttpRequest](https://developer.mozilla.org/en/xmlhttprequest)\n * object or via [JSONP](http://en.wikipedia.org/wiki/JSONP).\n *\n * For unit testing applications that use `$http` service, see\n * {@link ngMock.$httpBackend $httpBackend mock}.\n *\n * For a higher level of abstraction, please check out the {@link ngResource.$resource\n * $resource} service.\n *\n * The $http API is based on the {@link ng.$q deferred/promise APIs} exposed by\n * the $q service. While for simple usage patterns this doesn't matter much, for advanced usage\n * it is important to familiarize yourself with these APIs and the guarantees they provide.\n *\n *\n * # General usage\n * The `$http` service is a function which takes a single argument — a configuration object —\n * that is used to generate an HTTP request and returns a {@link ng.$q promise}\n * with two $http specific methods: `success` and `error`.\n *\n * ```js\n * $http({method: 'GET', url: '/someUrl'}).\n * success(function(data, status, headers, config) {\n * // this callback will be called asynchronously\n * // when the response is available\n * }).\n * error(function(data, status, headers, config) {\n * // called asynchronously if an error occurs\n * // or server returns response with an error status.\n * });\n * ```\n *\n * Since the returned value of calling the $http function is a `promise`, you can also use\n * the `then` method to register callbacks, and these callbacks will receive a single argument –\n * an object representing the response. See the API signature and type info below for more\n * details.\n *\n * A response status code between 200 and 299 is considered a success status and\n * will result in the success callback being called. Note that if the response is a redirect,\n * XMLHttpRequest will transparently follow it, meaning that the error callback will not be\n * called for such responses.\n *\n * # Writing Unit Tests that use $http\n * When unit testing (using {@link ngMock ngMock}), it is necessary to call\n * {@link ngMock.$httpBackend#flush $httpBackend.flush()} to flush each pending\n * request using trained responses.\n *\n * ```\n * $httpBackend.expectGET(...);\n * $http.get(...);\n * $httpBackend.flush();\n * ```\n *\n * # Shortcut methods\n *\n * Shortcut methods are also available. All shortcut methods require passing in the URL, and\n * request data must be passed in for POST/PUT requests.\n *\n * ```js\n * $http.get('/someUrl').success(successCallback);\n * $http.post('/someUrl', data).success(successCallback);\n * ```\n *\n * Complete list of shortcut methods:\n *\n * - {@link ng.$http#get $http.get}\n * - {@link ng.$http#head $http.head}\n * - {@link ng.$http#post $http.post}\n * - {@link ng.$http#put $http.put}\n * - {@link ng.$http#delete $http.delete}\n * - {@link ng.$http#jsonp $http.jsonp}\n * - {@link ng.$http#patch $http.patch}\n *\n *\n * # Setting HTTP Headers\n *\n * The $http service will automatically add certain HTTP headers to all requests. These defaults\n * can be fully configured by accessing the `$httpProvider.defaults.headers` configuration\n * object, which currently contains this default configuration:\n *\n * - `$httpProvider.defaults.headers.common` (headers that are common for all requests):\n * - `Accept: application/json, text/plain, * / *`\n * - `$httpProvider.defaults.headers.post`: (header defaults for POST requests)\n * - `Content-Type: application/json`\n * - `$httpProvider.defaults.headers.put` (header defaults for PUT requests)\n * - `Content-Type: application/json`\n *\n * To add or overwrite these defaults, simply add or remove a property from these configuration\n * objects. To add headers for an HTTP method other than POST or PUT, simply add a new object\n * with the lowercased HTTP method name as the key, e.g.\n * `$httpProvider.defaults.headers.get = { 'My-Header' : 'value' }.\n *\n * The defaults can also be set at runtime via the `$http.defaults` object in the same\n * fashion. For example:\n *\n * ```\n * module.run(function($http) {\n * $http.defaults.headers.common.Authorization = 'Basic YmVlcDpib29w'\n * });\n * ```\n *\n * In addition, you can supply a `headers` property in the config object passed when\n * calling `$http(config)`, which overrides the defaults without changing them globally.\n *\n * To explicitly remove a header automatically added via $httpProvider.defaults.headers on a per request basis,\n * Use the `headers` property, setting the desired header to `undefined`. For example:\n *\n * ```js\n * var req = {\n * method: 'POST',\n * url: 'http://example.com',\n * headers: {\n * 'Content-Type': undefined\n * },\n * data: { test: 'test' },\n * }\n *\n * $http(req).success(function(){...}).error(function(){...});\n * ```\n *\n * # Transforming Requests and Responses\n *\n * Both requests and responses can be transformed using transform functions. By default, Angular\n * applies these transformations:\n *\n * Request transformations:\n *\n * - If the `data` property of the request configuration object contains an object, serialize it\n * into JSON format.\n *\n * Response transformations:\n *\n * - If XSRF prefix is detected, strip it (see Security Considerations section below).\n * - If JSON response is detected, deserialize it using a JSON parser.\n *\n * To globally augment or override the default transforms, modify the\n * `$httpProvider.defaults.transformRequest` and `$httpProvider.defaults.transformResponse`\n * properties. These properties are by default an array of transform functions, which allows you\n * to `push` or `unshift` a new transformation function into the transformation chain. You can\n * also decide to completely override any default transformations by assigning your\n * transformation functions to these properties directly without the array wrapper. These defaults\n * are again available on the $http factory at run-time, which may be useful if you have run-time\n * services you wish to be involved in your transformations.\n *\n * Similarly, to locally override the request/response transforms, augment the\n * `transformRequest` and/or `transformResponse` properties of the configuration object passed\n * into `$http`.\n *\n *\n * # Caching\n *\n * To enable caching, set the request configuration `cache` property to `true` (to use default\n * cache) or to a custom cache object (built with {@link ng.$cacheFactory `$cacheFactory`}).\n * When the cache is enabled, `$http` stores the response from the server in the specified\n * cache. The next time the same request is made, the response is served from the cache without\n * sending a request to the server.\n *\n * Note that even if the response is served from cache, delivery of the data is asynchronous in\n * the same way that real requests are.\n *\n * If there are multiple GET requests for the same URL that should be cached using the same\n * cache, but the cache is not populated yet, only one request to the server will be made and\n * the remaining requests will be fulfilled using the response from the first request.\n *\n * You can change the default cache to a new object (built with\n * {@link ng.$cacheFactory `$cacheFactory`}) by updating the\n * {@link ng.$http#properties_defaults `$http.defaults.cache`} property. All requests who set\n * their `cache` property to `true` will now use this cache object.\n *\n * If you set the default cache to `false` then only requests that specify their own custom\n * cache object will be cached.\n *\n * # Interceptors\n *\n * Before you start creating interceptors, be sure to understand the\n * {@link ng.$q $q and deferred/promise APIs}.\n *\n * For purposes of global error handling, authentication, or any kind of synchronous or\n * asynchronous pre-processing of request or postprocessing of responses, it is desirable to be\n * able to intercept requests before they are handed to the server and\n * responses before they are handed over to the application code that\n * initiated these requests. The interceptors leverage the {@link ng.$q\n * promise APIs} to fulfill this need for both synchronous and asynchronous pre-processing.\n *\n * The interceptors are service factories that are registered with the `$httpProvider` by\n * adding them to the `$httpProvider.interceptors` array. The factory is called and\n * injected with dependencies (if specified) and returns the interceptor.\n *\n * There are two kinds of interceptors (and two kinds of rejection interceptors):\n *\n * * `request`: interceptors get called with a http `config` object. The function is free to\n * modify the `config` object or create a new one. The function needs to return the `config`\n * object directly, or a promise containing the `config` or a new `config` object.\n * * `requestError`: interceptor gets called when a previous interceptor threw an error or\n * resolved with a rejection.\n * * `response`: interceptors get called with http `response` object. The function is free to\n * modify the `response` object or create a new one. The function needs to return the `response`\n * object directly, or as a promise containing the `response` or a new `response` object.\n * * `responseError`: interceptor gets called when a previous interceptor threw an error or\n * resolved with a rejection.\n *\n *\n * ```js\n * // register the interceptor as a service\n * $provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {\n * return {\n * // optional method\n * 'request': function(config) {\n * // do something on success\n * return config;\n * },\n *\n * // optional method\n * 'requestError': function(rejection) {\n * // do something on error\n * if (canRecover(rejection)) {\n * return responseOrNewPromise\n * }\n * return $q.reject(rejection);\n * },\n *\n *\n *\n * // optional method\n * 'response': function(response) {\n * // do something on success\n * return response;\n * },\n *\n * // optional method\n * 'responseError': function(rejection) {\n * // do something on error\n * if (canRecover(rejection)) {\n * return responseOrNewPromise\n * }\n * return $q.reject(rejection);\n * }\n * };\n * });\n *\n * $httpProvider.interceptors.push('myHttpInterceptor');\n *\n *\n * // alternatively, register the interceptor via an anonymous factory\n * $httpProvider.interceptors.push(function($q, dependency1, dependency2) {\n * return {\n * 'request': function(config) {\n * // same as above\n * },\n *\n * 'response': function(response) {\n * // same as above\n * }\n * };\n * });\n * ```\n *\n * # Response interceptors (DEPRECATED)\n *\n * Before you start creating interceptors, be sure to understand the\n * {@link ng.$q $q and deferred/promise APIs}.\n *\n * For purposes of global error handling, authentication or any kind of synchronous or\n * asynchronous preprocessing of received responses, it is desirable to be able to intercept\n * responses for http requests before they are handed over to the application code that\n * initiated these requests. The response interceptors leverage the {@link ng.$q\n * promise apis} to fulfil this need for both synchronous and asynchronous preprocessing.\n *\n * The interceptors are service factories that are registered with the $httpProvider by\n * adding them to the `$httpProvider.responseInterceptors` array. The factory is called and\n * injected with dependencies (if specified) and returns the interceptor — a function that\n * takes a {@link ng.$q promise} and returns the original or a new promise.\n *\n * ```js\n * // register the interceptor as a service\n * $provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {\n * return function(promise) {\n * return promise.then(function(response) {\n * // do something on success\n * return response;\n * }, function(response) {\n * // do something on error\n * if (canRecover(response)) {\n * return responseOrNewPromise\n * }\n * return $q.reject(response);\n * });\n * }\n * });\n *\n * $httpProvider.responseInterceptors.push('myHttpInterceptor');\n *\n *\n * // register the interceptor via an anonymous factory\n * $httpProvider.responseInterceptors.push(function($q, dependency1, dependency2) {\n * return function(promise) {\n * // same as above\n * }\n * });\n * ```\n *\n *\n * # Security Considerations\n *\n * When designing web applications, consider security threats from:\n *\n * - [JSON vulnerability](http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx)\n * - [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery)\n *\n * Both server and the client must cooperate in order to eliminate these threats. Angular comes\n * pre-configured with strategies that address these issues, but for this to work backend server\n * cooperation is required.\n *\n * ## JSON Vulnerability Protection\n *\n * A [JSON vulnerability](http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx)\n * allows third party website to turn your JSON resource URL into\n * [JSONP](http://en.wikipedia.org/wiki/JSONP) request under some conditions. To\n * counter this your server can prefix all JSON requests with following string `\")]}',\\n\"`.\n * Angular will automatically strip the prefix before processing it as JSON.\n *\n * For example if your server needs to return:\n * ```js\n * ['one','two']\n * ```\n *\n * which is vulnerable to attack, your server can return:\n * ```js\n * )]}',\n * ['one','two']\n * ```\n *\n * Angular will strip the prefix, before processing the JSON.\n *\n *\n * ## Cross Site Request Forgery (XSRF) Protection\n *\n * [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery) is a technique by which\n * an unauthorized site can gain your user's private data. Angular provides a mechanism\n * to counter XSRF. When performing XHR requests, the $http service reads a token from a cookie\n * (by default, `XSRF-TOKEN`) and sets it as an HTTP header (`X-XSRF-TOKEN`). Since only\n * JavaScript that runs on your domain could read the cookie, your server can be assured that\n * the XHR came from JavaScript running on your domain. The header will not be set for\n * cross-domain requests.\n *\n * To take advantage of this, your server needs to set a token in a JavaScript readable session\n * cookie called `XSRF-TOKEN` on the first HTTP GET request. On subsequent XHR requests the\n * server can verify that the cookie matches `X-XSRF-TOKEN` HTTP header, and therefore be sure\n * that only JavaScript running on your domain could have sent the request. The token must be\n * unique for each user and must be verifiable by the server (to prevent the JavaScript from\n * making up its own tokens). We recommend that the token is a digest of your site's\n * authentication cookie with a [salt](https://en.wikipedia.org/wiki/Salt_(cryptography))\n * for added security.\n *\n * The name of the headers can be specified using the xsrfHeaderName and xsrfCookieName\n * properties of either $httpProvider.defaults at config-time, $http.defaults at run-time,\n * or the per-request config object.\n *\n *\n * @param {object} config Object describing the request to be made and how it should be\n * processed. The object has following properties:\n *\n * - **method** – `{string}` – HTTP method (e.g. 'GET', 'POST', etc)\n * - **url** – `{string}` – Absolute or relative URL of the resource that is being requested.\n * - **params** – `{Object.}` – Map of strings or objects which will be turned\n * to `?key1=value1&key2=value2` after the url. If the value is not a string, it will be\n * JSONified.\n * - **data** – `{string|Object}` – Data to be sent as the request message data.\n * - **headers** – `{Object}` – Map of strings or functions which return strings representing\n * HTTP headers to send to the server. If the return value of a function is null, the\n * header will not be sent.\n * - **xsrfHeaderName** – `{string}` – Name of HTTP header to populate with the XSRF token.\n * - **xsrfCookieName** – `{string}` – Name of cookie containing the XSRF token.\n * - **transformRequest** –\n * `{function(data, headersGetter)|Array.}` –\n * transform function or an array of such functions. The transform function takes the http\n * request body and headers and returns its transformed (typically serialized) version.\n * - **transformResponse** –\n * `{function(data, headersGetter)|Array.}` –\n * transform function or an array of such functions. The transform function takes the http\n * response body and headers and returns its transformed (typically deserialized) version.\n * - **cache** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the\n * GET request, otherwise if a cache instance built with\n * {@link ng.$cacheFactory $cacheFactory}, this cache will be used for\n * caching.\n * - **timeout** – `{number|Promise}` – timeout in milliseconds, or {@link ng.$q promise}\n * that should abort the request when resolved.\n * - **withCredentials** - `{boolean}` - whether to set the `withCredentials` flag on the\n * XHR object. See [requests with credentials](https://developer.mozilla.org/docs/Web/HTTP/Access_control_CORS#Requests_with_credentials)\n * for more information.\n * - **responseType** - `{string}` - see\n * [requestType](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType).\n *\n * @returns {HttpPromise} Returns a {@link ng.$q promise} object with the\n * standard `then` method and two http specific methods: `success` and `error`. The `then`\n * method takes two arguments a success and an error callback which will be called with a\n * response object. The `success` and `error` methods take a single argument - a function that\n * will be called when the request succeeds or fails respectively. The arguments passed into\n * these functions are destructured representation of the response object passed into the\n * `then` method. The response object has these properties:\n *\n * - **data** – `{string|Object}` – The response body transformed with the transform\n * functions.\n * - **status** – `{number}` – HTTP status code of the response.\n * - **headers** – `{function([headerName])}` – Header getter function.\n * - **config** – `{Object}` – The configuration object that was used to generate the request.\n * - **statusText** – `{string}` – HTTP status text of the response.\n *\n * @property {Array.} pendingRequests Array of config objects for currently pending\n * requests. This is primarily meant to be used for debugging purposes.\n *\n *\n * @example\n\n\n
\n \n \n
\n \n \n \n
http status code: {{status}}
\n
http response data: {{data}}
\n
\n
\n\n angular.module('httpExample', [])\n .controller('FetchController', ['$scope', '$http', '$templateCache',\n function($scope, $http, $templateCache) {\n $scope.method = 'GET';\n $scope.url = 'http-hello.html';\n\n $scope.fetch = function() {\n $scope.code = null;\n $scope.response = null;\n\n $http({method: $scope.method, url: $scope.url, cache: $templateCache}).\n success(function(data, status) {\n $scope.status = status;\n $scope.data = data;\n }).\n error(function(data, status) {\n $scope.data = data || \"Request failed\";\n $scope.status = status;\n });\n };\n\n $scope.updateModel = function(method, url) {\n $scope.method = method;\n $scope.url = url;\n };\n }]);\n\n\n Hello, $http!\n\n\n var status = element(by.binding('status'));\n var data = element(by.binding('data'));\n var fetchBtn = element(by.id('fetchbtn'));\n var sampleGetBtn = element(by.id('samplegetbtn'));\n var sampleJsonpBtn = element(by.id('samplejsonpbtn'));\n var invalidJsonpBtn = element(by.id('invalidjsonpbtn'));\n\n it('should make an xhr GET request', function() {\n sampleGetBtn.click();\n fetchBtn.click();\n expect(status.getText()).toMatch('200');\n expect(data.getText()).toMatch(/Hello, \\$http!/);\n });\n\n// Commented out due to flakes. See https://github.com/angular/angular.js/issues/9185\n// it('should make a JSONP request to angularjs.org', function() {\n// sampleJsonpBtn.click();\n// fetchBtn.click();\n// expect(status.getText()).toMatch('200');\n// expect(data.getText()).toMatch(/Super Hero!/);\n// });\n\n it('should make JSONP request to invalid URL and invoke the error handler',\n function() {\n invalidJsonpBtn.click();\n fetchBtn.click();\n expect(status.getText()).toMatch('0');\n expect(data.getText()).toMatch('Request failed');\n });\n\n
\n */\n function $http(requestConfig) {\n var config = {\n method: 'get',\n transformRequest: defaults.transformRequest,\n transformResponse: defaults.transformResponse\n };\n var headers = mergeHeaders(requestConfig);\n\n extend(config, requestConfig);\n config.headers = headers;\n config.method = uppercase(config.method);\n\n var serverRequest = function(config) {\n headers = config.headers;\n var reqData = transformData(config.data, headersGetter(headers), config.transformRequest);\n\n // strip content-type if data is undefined\n if (isUndefined(reqData)) {\n forEach(headers, function(value, header) {\n if (lowercase(header) === 'content-type') {\n delete headers[header];\n }\n });\n }\n\n if (isUndefined(config.withCredentials) && !isUndefined(defaults.withCredentials)) {\n config.withCredentials = defaults.withCredentials;\n }\n\n // send request\n return sendReq(config, reqData, headers).then(transformResponse, transformResponse);\n };\n\n var chain = [serverRequest, undefined];\n var promise = $q.when(config);\n\n // apply interceptors\n forEach(reversedInterceptors, function(interceptor) {\n if (interceptor.request || interceptor.requestError) {\n chain.unshift(interceptor.request, interceptor.requestError);\n }\n if (interceptor.response || interceptor.responseError) {\n chain.push(interceptor.response, interceptor.responseError);\n }\n });\n\n while(chain.length) {\n var thenFn = chain.shift();\n var rejectFn = chain.shift();\n\n promise = promise.then(thenFn, rejectFn);\n }\n\n promise.success = function(fn) {\n promise.then(function(response) {\n fn(response.data, response.status, response.headers, config);\n });\n return promise;\n };\n\n promise.error = function(fn) {\n promise.then(null, function(response) {\n fn(response.data, response.status, response.headers, config);\n });\n return promise;\n };\n\n return promise;\n\n function transformResponse(response) {\n // make a copy since the response must be cacheable\n var resp = extend({}, response, {\n data: transformData(response.data, response.headers, config.transformResponse)\n });\n return (isSuccess(response.status))\n ? resp\n : $q.reject(resp);\n }\n\n function mergeHeaders(config) {\n var defHeaders = defaults.headers,\n reqHeaders = extend({}, config.headers),\n defHeaderName, lowercaseDefHeaderName, reqHeaderName;\n\n defHeaders = extend({}, defHeaders.common, defHeaders[lowercase(config.method)]);\n\n // using for-in instead of forEach to avoid unecessary iteration after header has been found\n defaultHeadersIteration:\n for (defHeaderName in defHeaders) {\n lowercaseDefHeaderName = lowercase(defHeaderName);\n\n for (reqHeaderName in reqHeaders) {\n if (lowercase(reqHeaderName) === lowercaseDefHeaderName) {\n continue defaultHeadersIteration;\n }\n }\n\n reqHeaders[defHeaderName] = defHeaders[defHeaderName];\n }\n\n // execute if header value is a function for merged headers\n execHeaders(reqHeaders);\n return reqHeaders;\n\n function execHeaders(headers) {\n var headerContent;\n\n forEach(headers, function(headerFn, header) {\n if (isFunction(headerFn)) {\n headerContent = headerFn();\n if (headerContent != null) {\n headers[header] = headerContent;\n } else {\n delete headers[header];\n }\n }\n });\n }\n }\n }\n\n $http.pendingRequests = [];\n\n /**\n * @ngdoc method\n * @name $http#get\n *\n * @description\n * Shortcut method to perform `GET` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n\n /**\n * @ngdoc method\n * @name $http#delete\n *\n * @description\n * Shortcut method to perform `DELETE` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n\n /**\n * @ngdoc method\n * @name $http#head\n *\n * @description\n * Shortcut method to perform `HEAD` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n\n /**\n * @ngdoc method\n * @name $http#jsonp\n *\n * @description\n * Shortcut method to perform `JSONP` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request.\n * The name of the callback should be the string `JSON_CALLBACK`.\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n createShortMethods('get', 'delete', 'head', 'jsonp');\n\n /**\n * @ngdoc method\n * @name $http#post\n *\n * @description\n * Shortcut method to perform `POST` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request\n * @param {*} data Request content\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n\n /**\n * @ngdoc method\n * @name $http#put\n *\n * @description\n * Shortcut method to perform `PUT` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request\n * @param {*} data Request content\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n\n /**\n * @ngdoc method\n * @name $http#patch\n *\n * @description\n * Shortcut method to perform `PATCH` request.\n *\n * @param {string} url Relative or absolute URL specifying the destination of the request\n * @param {*} data Request content\n * @param {Object=} config Optional configuration object\n * @returns {HttpPromise} Future object\n */\n createShortMethodsWithData('post', 'put', 'patch');\n\n /**\n * @ngdoc property\n * @name $http#defaults\n *\n * @description\n * Runtime equivalent of the `$httpProvider.defaults` property. Allows configuration of\n * default headers, withCredentials as well as request and response transformations.\n *\n * See \"Setting HTTP Headers\" and \"Transforming Requests and Responses\" sections above.\n */\n $http.defaults = defaults;\n\n\n return $http;\n\n\n function createShortMethods(names) {\n forEach(arguments, function(name) {\n $http[name] = function(url, config) {\n return $http(extend(config || {}, {\n method: name,\n url: url\n }));\n };\n });\n }\n\n\n function createShortMethodsWithData(name) {\n forEach(arguments, function(name) {\n $http[name] = function(url, data, config) {\n return $http(extend(config || {}, {\n method: name,\n url: url,\n data: data\n }));\n };\n });\n }\n\n\n /**\n * Makes the request.\n *\n * !!! ACCESSES CLOSURE VARS:\n * $httpBackend, defaults, $log, $rootScope, defaultCache, $http.pendingRequests\n */\n function sendReq(config, reqData, reqHeaders) {\n var deferred = $q.defer(),\n promise = deferred.promise,\n cache,\n cachedResp,\n url = buildUrl(config.url, config.params);\n\n $http.pendingRequests.push(config);\n promise.then(removePendingReq, removePendingReq);\n\n\n if ((config.cache || defaults.cache) && config.cache !== false &&\n (config.method === 'GET' || config.method === 'JSONP')) {\n cache = isObject(config.cache) ? config.cache\n : isObject(defaults.cache) ? defaults.cache\n : defaultCache;\n }\n\n if (cache) {\n cachedResp = cache.get(url);\n if (isDefined(cachedResp)) {\n if (isPromiseLike(cachedResp)) {\n // cached request has already been sent, but there is no response yet\n cachedResp.then(removePendingReq, removePendingReq);\n return cachedResp;\n } else {\n // serving from cache\n if (isArray(cachedResp)) {\n resolvePromise(cachedResp[1], cachedResp[0], shallowCopy(cachedResp[2]), cachedResp[3]);\n } else {\n resolvePromise(cachedResp, 200, {}, 'OK');\n }\n }\n } else {\n // put the promise for the non-transformed response into cache as a placeholder\n cache.put(url, promise);\n }\n }\n\n\n // if we won't have the response in cache, set the xsrf headers and\n // send the request to the backend\n if (isUndefined(cachedResp)) {\n var xsrfValue = urlIsSameOrigin(config.url)\n ? $browser.cookies()[config.xsrfCookieName || defaults.xsrfCookieName]\n : undefined;\n if (xsrfValue) {\n reqHeaders[(config.xsrfHeaderName || defaults.xsrfHeaderName)] = xsrfValue;\n }\n\n $httpBackend(config.method, url, reqData, done, reqHeaders, config.timeout,\n config.withCredentials, config.responseType);\n }\n\n return promise;\n\n\n /**\n * Callback registered to $httpBackend():\n * - caches the response if desired\n * - resolves the raw $http promise\n * - calls $apply\n */\n function done(status, response, headersString, statusText) {\n if (cache) {\n if (isSuccess(status)) {\n cache.put(url, [status, response, parseHeaders(headersString), statusText]);\n } else {\n // remove promise from the cache\n cache.remove(url);\n }\n }\n\n resolvePromise(response, status, headersString, statusText);\n if (!$rootScope.$$phase) $rootScope.$apply();\n }\n\n\n /**\n * Resolves the raw $http promise.\n */\n function resolvePromise(response, status, headers, statusText) {\n // normalize internal statuses to 0\n status = Math.max(status, 0);\n\n (isSuccess(status) ? deferred.resolve : deferred.reject)({\n data: response,\n status: status,\n headers: headersGetter(headers),\n config: config,\n statusText : statusText\n });\n }\n\n\n function removePendingReq() {\n var idx = indexOf($http.pendingRequests, config);\n if (idx !== -1) $http.pendingRequests.splice(idx, 1);\n }\n }\n\n\n function buildUrl(url, params) {\n if (!params) return url;\n var parts = [];\n forEachSorted(params, function(value, key) {\n if (value === null || isUndefined(value)) return;\n if (!isArray(value)) value = [value];\n\n forEach(value, function(v) {\n if (isObject(v)) {\n if (isDate(v)){\n v = v.toISOString();\n } else {\n v = toJson(v);\n }\n }\n parts.push(encodeUriQuery(key) + '=' +\n encodeUriQuery(v));\n });\n });\n if(parts.length > 0) {\n url += ((url.indexOf('?') == -1) ? '?' : '&') + parts.join('&');\n }\n return url;\n }\n }];\n}\n\nfunction createXhr(method) {\n //if IE and the method is not RFC2616 compliant, or if XMLHttpRequest\n //is not available, try getting an ActiveXObject. Otherwise, use XMLHttpRequest\n //if it is available\n if (msie <= 8 && (!method.match(/^(get|post|head|put|delete|options)$/i) ||\n !window.XMLHttpRequest)) {\n return new window.ActiveXObject(\"Microsoft.XMLHTTP\");\n } else if (window.XMLHttpRequest) {\n return new window.XMLHttpRequest();\n }\n\n throw minErr('$httpBackend')('noxhr', \"This browser does not support XMLHttpRequest.\");\n}\n\n/**\n * @ngdoc service\n * @name $httpBackend\n * @requires $window\n * @requires $document\n *\n * @description\n * HTTP backend used by the {@link ng.$http service} that delegates to\n * XMLHttpRequest object or JSONP and deals with browser incompatibilities.\n *\n * You should never need to use this service directly, instead use the higher-level abstractions:\n * {@link ng.$http $http} or {@link ngResource.$resource $resource}.\n *\n * During testing this implementation is swapped with {@link ngMock.$httpBackend mock\n * $httpBackend} which can be trained with responses.\n */\nfunction $HttpBackendProvider() {\n this.$get = ['$browser', '$window', '$document', function($browser, $window, $document) {\n return createHttpBackend($browser, createXhr, $browser.defer, $window.angular.callbacks, $document[0]);\n }];\n}\n\nfunction createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDocument) {\n var ABORTED = -1;\n\n // TODO(vojta): fix the signature\n return function(method, url, post, callback, headers, timeout, withCredentials, responseType) {\n var status;\n $browser.$$incOutstandingRequestCount();\n url = url || $browser.url();\n\n if (lowercase(method) == 'jsonp') {\n var callbackId = '_' + (callbacks.counter++).toString(36);\n callbacks[callbackId] = function(data) {\n callbacks[callbackId].data = data;\n callbacks[callbackId].called = true;\n };\n\n var jsonpDone = jsonpReq(url.replace('JSON_CALLBACK', 'angular.callbacks.' + callbackId),\n callbackId, function(status, text) {\n completeRequest(callback, status, callbacks[callbackId].data, \"\", text);\n callbacks[callbackId] = noop;\n });\n } else {\n\n var xhr = createXhr(method);\n\n xhr.open(method, url, true);\n forEach(headers, function(value, key) {\n if (isDefined(value)) {\n xhr.setRequestHeader(key, value);\n }\n });\n\n // In IE6 and 7, this might be called synchronously when xhr.send below is called and the\n // response is in the cache. the promise api will ensure that to the app code the api is\n // always async\n xhr.onreadystatechange = function() {\n // onreadystatechange might get called multiple times with readyState === 4 on mobile webkit caused by\n // xhrs that are resolved while the app is in the background (see #5426).\n // since calling completeRequest sets the `xhr` variable to null, we just check if it's not null before\n // continuing\n //\n // we can't set xhr.onreadystatechange to undefined or delete it because that breaks IE8 (method=PATCH) and\n // Safari respectively.\n if (xhr && xhr.readyState == 4) {\n var responseHeaders = null,\n response = null,\n statusText = '';\n\n if(status !== ABORTED) {\n responseHeaders = xhr.getAllResponseHeaders();\n\n // responseText is the old-school way of retrieving response (supported by IE8 & 9)\n // response/responseType properties were introduced in XHR Level2 spec (supported by IE10)\n response = ('response' in xhr) ? xhr.response : xhr.responseText;\n }\n\n // Accessing statusText on an aborted xhr object will\n // throw an 'c00c023f error' in IE9 and lower, don't touch it.\n if (!(status === ABORTED && msie < 10)) {\n statusText = xhr.statusText;\n }\n\n completeRequest(callback,\n status || xhr.status,\n response,\n responseHeaders,\n statusText);\n }\n };\n\n if (withCredentials) {\n xhr.withCredentials = true;\n }\n\n if (responseType) {\n try {\n xhr.responseType = responseType;\n } catch (e) {\n // WebKit added support for the json responseType value on 09/03/2013\n // https://bugs.webkit.org/show_bug.cgi?id=73648. Versions of Safari prior to 7 are\n // known to throw when setting the value \"json\" as the response type. Other older\n // browsers implementing the responseType\n //\n // The json response type can be ignored if not supported, because JSON payloads are\n // parsed on the client-side regardless.\n if (responseType !== 'json') {\n throw e;\n }\n }\n }\n\n xhr.send(post || null);\n }\n\n if (timeout > 0) {\n var timeoutId = $browserDefer(timeoutRequest, timeout);\n } else if (isPromiseLike(timeout)) {\n timeout.then(timeoutRequest);\n }\n\n\n function timeoutRequest() {\n status = ABORTED;\n jsonpDone && jsonpDone();\n xhr && xhr.abort();\n }\n\n function completeRequest(callback, status, response, headersString, statusText) {\n // cancel timeout and subsequent timeout promise resolution\n timeoutId && $browserDefer.cancel(timeoutId);\n jsonpDone = xhr = null;\n\n // fix status code when it is 0 (0 status is undocumented).\n // Occurs when accessing file resources or on Android 4.1 stock browser\n // while retrieving files from application cache.\n if (status === 0) {\n status = response ? 200 : urlResolve(url).protocol == 'file' ? 404 : 0;\n }\n\n // normalize IE bug (http://bugs.jquery.com/ticket/1450)\n status = status === 1223 ? 204 : status;\n statusText = statusText || '';\n\n callback(status, response, headersString, statusText);\n $browser.$$completeOutstandingRequest(noop);\n }\n };\n\n function jsonpReq(url, callbackId, done) {\n // we can't use jQuery/jqLite here because jQuery does crazy shit with script elements, e.g.:\n // - fetches local scripts via XHR and evals them\n // - adds and immediately removes script elements from the document\n var script = rawDocument.createElement('script'), callback = null;\n script.type = \"text/javascript\";\n script.src = url;\n script.async = true;\n\n callback = function(event) {\n removeEventListenerFn(script, \"load\", callback);\n removeEventListenerFn(script, \"error\", callback);\n rawDocument.body.removeChild(script);\n script = null;\n var status = -1;\n var text = \"unknown\";\n\n if (event) {\n if (event.type === \"load\" && !callbacks[callbackId].called) {\n event = { type: \"error\" };\n }\n text = event.type;\n status = event.type === \"error\" ? 404 : 200;\n }\n\n if (done) {\n done(status, text);\n }\n };\n\n addEventListenerFn(script, \"load\", callback);\n addEventListenerFn(script, \"error\", callback);\n\n if (msie <= 8) {\n script.onreadystatechange = function() {\n if (isString(script.readyState) && /loaded|complete/.test(script.readyState)) {\n script.onreadystatechange = null;\n callback({\n type: 'load'\n });\n }\n };\n }\n\n rawDocument.body.appendChild(script);\n return callback;\n }\n}\n\nvar $interpolateMinErr = minErr('$interpolate');\n\n/**\n * @ngdoc provider\n * @name $interpolateProvider\n * @kind function\n *\n * @description\n *\n * Used for configuring the interpolation markup. Defaults to `{{` and `}}`.\n *\n * @example\n\n\n\n
\n //demo.label//\n
\n
\n\n it('should interpolate binding with custom symbols', function() {\n expect(element(by.binding('demo.label')).getText()).toBe('This binding is brought you by // interpolation symbols.');\n });\n\n
\n */\nfunction $InterpolateProvider() {\n var startSymbol = '{{';\n var endSymbol = '}}';\n\n /**\n * @ngdoc method\n * @name $interpolateProvider#startSymbol\n * @description\n * Symbol to denote start of expression in the interpolated string. Defaults to `{{`.\n *\n * @param {string=} value new value to set the starting symbol to.\n * @returns {string|self} Returns the symbol when used as getter and self if used as setter.\n */\n this.startSymbol = function(value){\n if (value) {\n startSymbol = value;\n return this;\n } else {\n return startSymbol;\n }\n };\n\n /**\n * @ngdoc method\n * @name $interpolateProvider#endSymbol\n * @description\n * Symbol to denote the end of expression in the interpolated string. Defaults to `}}`.\n *\n * @param {string=} value new value to set the ending symbol to.\n * @returns {string|self} Returns the symbol when used as getter and self if used as setter.\n */\n this.endSymbol = function(value){\n if (value) {\n endSymbol = value;\n return this;\n } else {\n return endSymbol;\n }\n };\n\n\n this.$get = ['$parse', '$exceptionHandler', '$sce', function($parse, $exceptionHandler, $sce) {\n var startSymbolLength = startSymbol.length,\n endSymbolLength = endSymbol.length;\n\n /**\n * @ngdoc service\n * @name $interpolate\n * @kind function\n *\n * @requires $parse\n * @requires $sce\n *\n * @description\n *\n * Compiles a string with markup into an interpolation function. This service is used by the\n * HTML {@link ng.$compile $compile} service for data binding. See\n * {@link ng.$interpolateProvider $interpolateProvider} for configuring the\n * interpolation markup.\n *\n *\n * ```js\n * var $interpolate = ...; // injected\n * var exp = $interpolate('Hello {{name | uppercase}}!');\n * expect(exp({name:'Angular'}).toEqual('Hello ANGULAR!');\n * ```\n *\n *\n * @param {string} text The text with markup to interpolate.\n * @param {boolean=} mustHaveExpression if set to true then the interpolation string must have\n * embedded expression in order to return an interpolation function. Strings with no\n * embedded expression will return null for the interpolation function.\n * @param {string=} trustedContext when provided, the returned function passes the interpolated\n * result through {@link ng.$sce#getTrusted $sce.getTrusted(interpolatedResult,\n * trustedContext)} before returning it. Refer to the {@link ng.$sce $sce} service that\n * provides Strict Contextual Escaping for details.\n * @returns {function(context)} an interpolation function which is used to compute the\n * interpolated string. The function has these parameters:\n *\n * * `context`: an object against which any expressions embedded in the strings are evaluated\n * against.\n *\n */\n function $interpolate(text, mustHaveExpression, trustedContext) {\n var startIndex,\n endIndex,\n index = 0,\n parts = [],\n length = text.length,\n hasInterpolation = false,\n fn,\n exp,\n concat = [];\n\n while(index < length) {\n if ( ((startIndex = text.indexOf(startSymbol, index)) != -1) &&\n ((endIndex = text.indexOf(endSymbol, startIndex + startSymbolLength)) != -1) ) {\n (index != startIndex) && parts.push(text.substring(index, startIndex));\n parts.push(fn = $parse(exp = text.substring(startIndex + startSymbolLength, endIndex)));\n fn.exp = exp;\n index = endIndex + endSymbolLength;\n hasInterpolation = true;\n } else {\n // we did not find anything, so we have to add the remainder to the parts array\n (index != length) && parts.push(text.substring(index));\n index = length;\n }\n }\n\n if (!(length = parts.length)) {\n // we added, nothing, must have been an empty string.\n parts.push('');\n length = 1;\n }\n\n // Concatenating expressions makes it hard to reason about whether some combination of\n // concatenated values are unsafe to use and could easily lead to XSS. By requiring that a\n // single expression be used for iframe[src], object[src], etc., we ensure that the value\n // that's used is assigned or constructed by some JS code somewhere that is more testable or\n // make it obvious that you bound the value to some user controlled value. This helps reduce\n // the load when auditing for XSS issues.\n if (trustedContext && parts.length > 1) {\n throw $interpolateMinErr('noconcat',\n \"Error while interpolating: {0}\\nStrict Contextual Escaping disallows \" +\n \"interpolations that concatenate multiple expressions when a trusted value is \" +\n \"required. See http://docs.angularjs.org/api/ng.$sce\", text);\n }\n\n if (!mustHaveExpression || hasInterpolation) {\n concat.length = length;\n fn = function(context) {\n try {\n for(var i = 0, ii = length, part; i\n * **Note**: Intervals created by this service must be explicitly destroyed when you are finished\n * with them. In particular they are not automatically destroyed when a controller's scope or a\n * directive's element are destroyed.\n * You should take this into consideration and make sure to always cancel the interval at the\n * appropriate moment. See the example below for more details on how and when to do this.\n * \n *\n * @param {function()} fn A function that should be called repeatedly.\n * @param {number} delay Number of milliseconds between each function call.\n * @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat\n * indefinitely.\n * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise\n * will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.\n * @returns {promise} A promise which will be notified on each iteration.\n *\n * @example\n * \n * \n * \n *\n *
\n *
\n * Date format:
\n * Current time is: \n *
\n * Blood 1 : {{blood_1}}\n * Blood 2 : {{blood_2}}\n * \n * \n * \n *
\n *
\n *\n *
\n *
\n */\n function interval(fn, delay, count, invokeApply) {\n var setInterval = $window.setInterval,\n clearInterval = $window.clearInterval,\n deferred = $q.defer(),\n promise = deferred.promise,\n iteration = 0,\n skipApply = (isDefined(invokeApply) && !invokeApply);\n\n count = isDefined(count) ? count : 0;\n\n promise.then(null, null, fn);\n\n promise.$$intervalId = setInterval(function tick() {\n deferred.notify(iteration++);\n\n if (count > 0 && iteration >= count) {\n deferred.resolve(iteration);\n clearInterval(promise.$$intervalId);\n delete intervals[promise.$$intervalId];\n }\n\n if (!skipApply) $rootScope.$apply();\n\n }, delay);\n\n intervals[promise.$$intervalId] = deferred;\n\n return promise;\n }\n\n\n /**\n * @ngdoc method\n * @name $interval#cancel\n *\n * @description\n * Cancels a task associated with the `promise`.\n *\n * @param {promise} promise returned by the `$interval` function.\n * @returns {boolean} Returns `true` if the task was successfully canceled.\n */\n interval.cancel = function(promise) {\n if (promise && promise.$$intervalId in intervals) {\n intervals[promise.$$intervalId].reject('canceled');\n $window.clearInterval(promise.$$intervalId);\n delete intervals[promise.$$intervalId];\n return true;\n }\n return false;\n };\n\n return interval;\n }];\n}\n\n/**\n * @ngdoc service\n * @name $locale\n *\n * @description\n * $locale service provides localization rules for various Angular components. As of right now the\n * only public api is:\n *\n * * `id` – `{string}` – locale id formatted as `languageId-countryId` (e.g. `en-us`)\n */\nfunction $LocaleProvider(){\n this.$get = function() {\n return {\n id: 'en-us',\n\n NUMBER_FORMATS: {\n DECIMAL_SEP: '.',\n GROUP_SEP: ',',\n PATTERNS: [\n { // Decimal Pattern\n minInt: 1,\n minFrac: 0,\n maxFrac: 3,\n posPre: '',\n posSuf: '',\n negPre: '-',\n negSuf: '',\n gSize: 3,\n lgSize: 3\n },{ //Currency Pattern\n minInt: 1,\n minFrac: 2,\n maxFrac: 2,\n posPre: '\\u00A4',\n posSuf: '',\n negPre: '(\\u00A4',\n negSuf: ')',\n gSize: 3,\n lgSize: 3\n }\n ],\n CURRENCY_SYM: '$'\n },\n\n DATETIME_FORMATS: {\n MONTH:\n 'January,February,March,April,May,June,July,August,September,October,November,December'\n .split(','),\n SHORTMONTH: 'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'.split(','),\n DAY: 'Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday'.split(','),\n SHORTDAY: 'Sun,Mon,Tue,Wed,Thu,Fri,Sat'.split(','),\n AMPMS: ['AM','PM'],\n medium: 'MMM d, y h:mm:ss a',\n short: 'M/d/yy h:mm a',\n fullDate: 'EEEE, MMMM d, y',\n longDate: 'MMMM d, y',\n mediumDate: 'MMM d, y',\n shortDate: 'M/d/yy',\n mediumTime: 'h:mm:ss a',\n shortTime: 'h:mm a'\n },\n\n pluralCat: function(num) {\n if (num === 1) {\n return 'one';\n }\n return 'other';\n }\n };\n };\n}\n\nvar PATH_MATCH = /^([^\\?#]*)(\\?([^#]*))?(#(.*))?$/,\n DEFAULT_PORTS = {'http': 80, 'https': 443, 'ftp': 21};\nvar $locationMinErr = minErr('$location');\n\n\n/**\n * Encode path using encodeUriSegment, ignoring forward slashes\n *\n * @param {string} path Path to encode\n * @returns {string}\n */\nfunction encodePath(path) {\n var segments = path.split('/'),\n i = segments.length;\n\n while (i--) {\n segments[i] = encodeUriSegment(segments[i]);\n }\n\n return segments.join('/');\n}\n\nfunction parseAbsoluteUrl(absoluteUrl, locationObj, appBase) {\n var parsedUrl = urlResolve(absoluteUrl, appBase);\n\n locationObj.$$protocol = parsedUrl.protocol;\n locationObj.$$host = parsedUrl.hostname;\n locationObj.$$port = int(parsedUrl.port) || DEFAULT_PORTS[parsedUrl.protocol] || null;\n}\n\n\nfunction parseAppUrl(relativeUrl, locationObj, appBase) {\n var prefixed = (relativeUrl.charAt(0) !== '/');\n if (prefixed) {\n relativeUrl = '/' + relativeUrl;\n }\n var match = urlResolve(relativeUrl, appBase);\n locationObj.$$path = decodeURIComponent(prefixed && match.pathname.charAt(0) === '/' ?\n match.pathname.substring(1) : match.pathname);\n locationObj.$$search = parseKeyValue(match.search);\n locationObj.$$hash = decodeURIComponent(match.hash);\n\n // make sure path starts with '/';\n if (locationObj.$$path && locationObj.$$path.charAt(0) != '/') {\n locationObj.$$path = '/' + locationObj.$$path;\n }\n}\n\n\n/**\n *\n * @param {string} begin\n * @param {string} whole\n * @returns {string} returns text from whole after begin or undefined if it does not begin with\n * expected string.\n */\nfunction beginsWith(begin, whole) {\n if (whole.indexOf(begin) === 0) {\n return whole.substr(begin.length);\n }\n}\n\n\nfunction stripHash(url) {\n var index = url.indexOf('#');\n return index == -1 ? url : url.substr(0, index);\n}\n\n\nfunction stripFile(url) {\n return url.substr(0, stripHash(url).lastIndexOf('/') + 1);\n}\n\n/* return the server only (scheme://host:port) */\nfunction serverBase(url) {\n return url.substring(0, url.indexOf('/', url.indexOf('//') + 2));\n}\n\n\n/**\n * LocationHtml5Url represents an url\n * This object is exposed as $location service when HTML5 mode is enabled and supported\n *\n * @constructor\n * @param {string} appBase application base URL\n * @param {string} basePrefix url path prefix\n */\nfunction LocationHtml5Url(appBase, basePrefix) {\n this.$$html5 = true;\n basePrefix = basePrefix || '';\n var appBaseNoFile = stripFile(appBase);\n parseAbsoluteUrl(appBase, this, appBase);\n\n\n /**\n * Parse given html5 (regular) url string into properties\n * @param {string} newAbsoluteUrl HTML5 url\n * @private\n */\n this.$$parse = function(url) {\n var pathUrl = beginsWith(appBaseNoFile, url);\n if (!isString(pathUrl)) {\n throw $locationMinErr('ipthprfx', 'Invalid url \"{0}\", missing path prefix \"{1}\".', url,\n appBaseNoFile);\n }\n\n parseAppUrl(pathUrl, this, appBase);\n\n if (!this.$$path) {\n this.$$path = '/';\n }\n\n this.$$compose();\n };\n\n /**\n * Compose url and update `absUrl` property\n * @private\n */\n this.$$compose = function() {\n var search = toKeyValue(this.$$search),\n hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';\n\n this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;\n this.$$absUrl = appBaseNoFile + this.$$url.substr(1); // first char is always '/'\n };\n\n this.$$parseLinkUrl = function(url, relHref) {\n var appUrl, prevAppUrl;\n var rewrittenUrl;\n\n if ( (appUrl = beginsWith(appBase, url)) !== undefined ) {\n prevAppUrl = appUrl;\n if ( (appUrl = beginsWith(basePrefix, appUrl)) !== undefined ) {\n rewrittenUrl = appBaseNoFile + (beginsWith('/', appUrl) || appUrl);\n } else {\n rewrittenUrl = appBase + prevAppUrl;\n }\n } else if ( (appUrl = beginsWith(appBaseNoFile, url)) !== undefined ) {\n rewrittenUrl = appBaseNoFile + appUrl;\n } else if (appBaseNoFile == url + '/') {\n rewrittenUrl = appBaseNoFile;\n }\n if (rewrittenUrl) {\n this.$$parse(rewrittenUrl);\n }\n return !!rewrittenUrl;\n };\n}\n\n\n/**\n * LocationHashbangUrl represents url\n * This object is exposed as $location service when developer doesn't opt into html5 mode.\n * It also serves as the base class for html5 mode fallback on legacy browsers.\n *\n * @constructor\n * @param {string} appBase application base URL\n * @param {string} hashPrefix hashbang prefix\n */\nfunction LocationHashbangUrl(appBase, hashPrefix) {\n var appBaseNoFile = stripFile(appBase);\n\n parseAbsoluteUrl(appBase, this, appBase);\n\n\n /**\n * Parse given hashbang url into properties\n * @param {string} url Hashbang url\n * @private\n */\n this.$$parse = function(url) {\n var withoutBaseUrl = beginsWith(appBase, url) || beginsWith(appBaseNoFile, url);\n var withoutHashUrl = withoutBaseUrl.charAt(0) == '#'\n ? beginsWith(hashPrefix, withoutBaseUrl)\n : (this.$$html5)\n ? withoutBaseUrl\n : '';\n\n if (!isString(withoutHashUrl)) {\n throw $locationMinErr('ihshprfx', 'Invalid url \"{0}\", missing hash prefix \"{1}\".', url,\n hashPrefix);\n }\n parseAppUrl(withoutHashUrl, this, appBase);\n\n this.$$path = removeWindowsDriveName(this.$$path, withoutHashUrl, appBase);\n\n this.$$compose();\n\n /*\n * In Windows, on an anchor node on documents loaded from\n * the filesystem, the browser will return a pathname\n * prefixed with the drive name ('/C:/path') when a\n * pathname without a drive is set:\n * * a.setAttribute('href', '/foo')\n * * a.pathname === '/C:/foo' //true\n *\n * Inside of Angular, we're always using pathnames that\n * do not include drive names for routing.\n */\n function removeWindowsDriveName (path, url, base) {\n /*\n Matches paths for file protocol on windows,\n such as /C:/foo/bar, and captures only /foo/bar.\n */\n var windowsFilePathExp = /^\\/[A-Z]:(\\/.*)/;\n\n var firstPathSegmentMatch;\n\n //Get the relative path from the input URL.\n if (url.indexOf(base) === 0) {\n url = url.replace(base, '');\n }\n\n // The input URL intentionally contains a first path segment that ends with a colon.\n if (windowsFilePathExp.exec(url)) {\n return path;\n }\n\n firstPathSegmentMatch = windowsFilePathExp.exec(path);\n return firstPathSegmentMatch ? firstPathSegmentMatch[1] : path;\n }\n };\n\n /**\n * Compose hashbang url and update `absUrl` property\n * @private\n */\n this.$$compose = function() {\n var search = toKeyValue(this.$$search),\n hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';\n\n this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;\n this.$$absUrl = appBase + (this.$$url ? hashPrefix + this.$$url : '');\n };\n\n this.$$parseLinkUrl = function(url, relHref) {\n if(stripHash(appBase) == stripHash(url)) {\n this.$$parse(url);\n return true;\n }\n return false;\n };\n}\n\n\n/**\n * LocationHashbangUrl represents url\n * This object is exposed as $location service when html5 history api is enabled but the browser\n * does not support it.\n *\n * @constructor\n * @param {string} appBase application base URL\n * @param {string} hashPrefix hashbang prefix\n */\nfunction LocationHashbangInHtml5Url(appBase, hashPrefix) {\n this.$$html5 = true;\n LocationHashbangUrl.apply(this, arguments);\n\n var appBaseNoFile = stripFile(appBase);\n\n this.$$parseLinkUrl = function(url, relHref) {\n var rewrittenUrl;\n var appUrl;\n\n if ( appBase == stripHash(url) ) {\n rewrittenUrl = url;\n } else if ( (appUrl = beginsWith(appBaseNoFile, url)) ) {\n rewrittenUrl = appBase + hashPrefix + appUrl;\n } else if ( appBaseNoFile === url + '/') {\n rewrittenUrl = appBaseNoFile;\n }\n if (rewrittenUrl) {\n this.$$parse(rewrittenUrl);\n }\n return !!rewrittenUrl;\n };\n\n this.$$compose = function() {\n var search = toKeyValue(this.$$search),\n hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';\n\n this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;\n // include hashPrefix in $$absUrl when $$url is empty so IE8 & 9 do not reload page because of removal of '#'\n this.$$absUrl = appBase + hashPrefix + this.$$url;\n };\n\n}\n\n\nLocationHashbangInHtml5Url.prototype =\n LocationHashbangUrl.prototype =\n LocationHtml5Url.prototype = {\n\n /**\n * Are we in html5 mode?\n * @private\n */\n $$html5: false,\n\n /**\n * Has any change been replacing ?\n * @private\n */\n $$replace: false,\n\n /**\n * @ngdoc method\n * @name $location#absUrl\n *\n * @description\n * This method is getter only.\n *\n * Return full url representation with all segments encoded according to rules specified in\n * [RFC 3986](http://www.ietf.org/rfc/rfc3986.txt).\n *\n * @return {string} full url\n */\n absUrl: locationGetter('$$absUrl'),\n\n /**\n * @ngdoc method\n * @name $location#url\n *\n * @description\n * This method is getter / setter.\n *\n * Return url (e.g. `/path?a=b#hash`) when called without any parameter.\n *\n * Change path, search and hash, when called with parameter and return `$location`.\n *\n * @param {string=} url New url without base prefix (e.g. `/path?a=b#hash`)\n * @return {string} url\n */\n url: function(url) {\n if (isUndefined(url))\n return this.$$url;\n\n var match = PATH_MATCH.exec(url);\n if (match[1]) this.path(decodeURIComponent(match[1]));\n if (match[2] || match[1]) this.search(match[3] || '');\n this.hash(match[5] || '');\n\n return this;\n },\n\n /**\n * @ngdoc method\n * @name $location#protocol\n *\n * @description\n * This method is getter only.\n *\n * Return protocol of current url.\n *\n * @return {string} protocol of current url\n */\n protocol: locationGetter('$$protocol'),\n\n /**\n * @ngdoc method\n * @name $location#host\n *\n * @description\n * This method is getter only.\n *\n * Return host of current url.\n *\n * @return {string} host of current url.\n */\n host: locationGetter('$$host'),\n\n /**\n * @ngdoc method\n * @name $location#port\n *\n * @description\n * This method is getter only.\n *\n * Return port of current url.\n *\n * @return {Number} port\n */\n port: locationGetter('$$port'),\n\n /**\n * @ngdoc method\n * @name $location#path\n *\n * @description\n * This method is getter / setter.\n *\n * Return path of current url when called without any parameter.\n *\n * Change path when called with parameter and return `$location`.\n *\n * Note: Path should always begin with forward slash (/), this method will add the forward slash\n * if it is missing.\n *\n * @param {(string|number)=} path New path\n * @return {string} path\n */\n path: locationGetterSetter('$$path', function(path) {\n path = path !== null ? path.toString() : '';\n return path.charAt(0) == '/' ? path : '/' + path;\n }),\n\n /**\n * @ngdoc method\n * @name $location#search\n *\n * @description\n * This method is getter / setter.\n *\n * Return search part (as object) of current url when called without any parameter.\n *\n * Change search part when called with parameter and return `$location`.\n *\n *\n * ```js\n * // given url http://example.com/#/some/path?foo=bar&baz=xoxo\n * var searchObject = $location.search();\n * // => {foo: 'bar', baz: 'xoxo'}\n *\n *\n * // set foo to 'yipee'\n * $location.search('foo', 'yipee');\n * // => $location\n * ```\n *\n * @param {string|Object.|Object.>} search New search params - string or\n * hash object.\n *\n * When called with a single argument the method acts as a setter, setting the `search` component\n * of `$location` to the specified value.\n *\n * If the argument is a hash object containing an array of values, these values will be encoded\n * as duplicate search parameters in the url.\n *\n * @param {(string|Number|Array|boolean)=} paramValue If `search` is a string or number, then `paramValue`\n * will override only a single search property.\n *\n * If `paramValue` is an array, it will override the property of the `search` component of\n * `$location` specified via the first argument.\n *\n * If `paramValue` is `null`, the property specified via the first argument will be deleted.\n *\n * If `paramValue` is `true`, the property specified via the first argument will be added with no\n * value nor trailing equal sign.\n *\n * @return {Object} If called with no arguments returns the parsed `search` object. If called with\n * one or more arguments returns `$location` object itself.\n */\n search: function(search, paramValue) {\n switch (arguments.length) {\n case 0:\n return this.$$search;\n case 1:\n if (isString(search) || isNumber(search)) {\n search = search.toString();\n this.$$search = parseKeyValue(search);\n } else if (isObject(search)) {\n // remove object undefined or null properties\n forEach(search, function(value, key) {\n if (value == null) delete search[key];\n });\n\n this.$$search = search;\n } else {\n throw $locationMinErr('isrcharg',\n 'The first argument of the `$location#search()` call must be a string or an object.');\n }\n break;\n default:\n if (isUndefined(paramValue) || paramValue === null) {\n delete this.$$search[search];\n } else {\n this.$$search[search] = paramValue;\n }\n }\n\n this.$$compose();\n return this;\n },\n\n /**\n * @ngdoc method\n * @name $location#hash\n *\n * @description\n * This method is getter / setter.\n *\n * Return hash fragment when called without any parameter.\n *\n * Change hash fragment when called with parameter and return `$location`.\n *\n * @param {(string|number)=} hash New hash fragment\n * @return {string} hash\n */\n hash: locationGetterSetter('$$hash', function(hash) {\n return hash !== null ? hash.toString() : '';\n }),\n\n /**\n * @ngdoc method\n * @name $location#replace\n *\n * @description\n * If called, all changes to $location during current `$digest` will be replacing current history\n * record, instead of adding new one.\n */\n replace: function() {\n this.$$replace = true;\n return this;\n }\n};\n\nfunction locationGetter(property) {\n return function() {\n return this[property];\n };\n}\n\n\nfunction locationGetterSetter(property, preprocess) {\n return function(value) {\n if (isUndefined(value))\n return this[property];\n\n this[property] = preprocess(value);\n this.$$compose();\n\n return this;\n };\n}\n\n\n/**\n * @ngdoc service\n * @name $location\n *\n * @requires $rootElement\n *\n * @description\n * The $location service parses the URL in the browser address bar (based on the\n * [window.location](https://developer.mozilla.org/en/window.location)) and makes the URL\n * available to your application. Changes to the URL in the address bar are reflected into\n * $location service and changes to $location are reflected into the browser address bar.\n *\n * **The $location service:**\n *\n * - Exposes the current URL in the browser address bar, so you can\n * - Watch and observe the URL.\n * - Change the URL.\n * - Synchronizes the URL with the browser when the user\n * - Changes the address bar.\n * - Clicks the back or forward button (or clicks a History link).\n * - Clicks on a link.\n * - Represents the URL object as a set of methods (protocol, host, port, path, search, hash).\n *\n * For more information see {@link guide/$location Developer Guide: Using $location}\n */\n\n/**\n * @ngdoc provider\n * @name $locationProvider\n * @description\n * Use the `$locationProvider` to configure how the application deep linking paths are stored.\n */\nfunction $LocationProvider(){\n var hashPrefix = '',\n html5Mode = false;\n\n /**\n * @ngdoc method\n * @name $locationProvider#hashPrefix\n * @description\n * @param {string=} prefix Prefix for hash part (containing path and search)\n * @returns {*} current value if used as getter or itself (chaining) if used as setter\n */\n this.hashPrefix = function(prefix) {\n if (isDefined(prefix)) {\n hashPrefix = prefix;\n return this;\n } else {\n return hashPrefix;\n }\n };\n\n /**\n * @ngdoc method\n * @name $locationProvider#html5Mode\n * @description\n * @param {boolean=} mode Use HTML5 strategy if available.\n * @returns {*} current value if used as getter or itself (chaining) if used as setter\n */\n this.html5Mode = function(mode) {\n if (isDefined(mode)) {\n html5Mode = mode;\n return this;\n } else {\n return html5Mode;\n }\n };\n\n /**\n * @ngdoc event\n * @name $location#$locationChangeStart\n * @eventType broadcast on root scope\n * @description\n * Broadcasted before a URL will change. This change can be prevented by calling\n * `preventDefault` method of the event. See {@link ng.$rootScope.Scope#$on} for more\n * details about event object. Upon successful change\n * {@link ng.$location#events_$locationChangeSuccess $locationChangeSuccess} is fired.\n *\n * @param {Object} angularEvent Synthetic event object.\n * @param {string} newUrl New URL\n * @param {string=} oldUrl URL that was before it was changed.\n */\n\n /**\n * @ngdoc event\n * @name $location#$locationChangeSuccess\n * @eventType broadcast on root scope\n * @description\n * Broadcasted after a URL was changed.\n *\n * @param {Object} angularEvent Synthetic event object.\n * @param {string} newUrl New URL\n * @param {string=} oldUrl URL that was before it was changed.\n */\n\n this.$get = ['$rootScope', '$browser', '$sniffer', '$rootElement',\n function( $rootScope, $browser, $sniffer, $rootElement) {\n var $location,\n LocationMode,\n baseHref = $browser.baseHref(), // if base[href] is undefined, it defaults to ''\n initialUrl = $browser.url(),\n appBase;\n\n if (html5Mode) {\n appBase = serverBase(initialUrl) + (baseHref || '/');\n LocationMode = $sniffer.history ? LocationHtml5Url : LocationHashbangInHtml5Url;\n } else {\n appBase = stripHash(initialUrl);\n LocationMode = LocationHashbangUrl;\n }\n $location = new LocationMode(appBase, '#' + hashPrefix);\n $location.$$parseLinkUrl(initialUrl, initialUrl);\n\n var IGNORE_URI_REGEXP = /^\\s*(javascript|mailto):/i;\n\n $rootElement.on('click', function(event) {\n // TODO(vojta): rewrite link when opening in new tab/window (in legacy browser)\n // currently we open nice url link and redirect then\n\n if (event.ctrlKey || event.metaKey || event.which == 2) return;\n\n var elm = jqLite(event.target);\n\n // traverse the DOM up to find first A tag\n while (lowercase(elm[0].nodeName) !== 'a') {\n // ignore rewriting if no A tag (reached root element, or no parent - removed from document)\n if (elm[0] === $rootElement[0] || !(elm = elm.parent())[0]) return;\n }\n\n var absHref = elm.prop('href');\n // get the actual href attribute - see\n // http://msdn.microsoft.com/en-us/library/ie/dd347148(v=vs.85).aspx\n var relHref = elm.attr('href') || elm.attr('xlink:href');\n\n if (isObject(absHref) && absHref.toString() === '[object SVGAnimatedString]') {\n // SVGAnimatedString.animVal should be identical to SVGAnimatedString.baseVal, unless during\n // an animation.\n absHref = urlResolve(absHref.animVal).href;\n }\n\n // Ignore when url is started with javascript: or mailto:\n if (IGNORE_URI_REGEXP.test(absHref)) return;\n\n if (absHref && !elm.attr('target') && !event.isDefaultPrevented()) {\n if ($location.$$parseLinkUrl(absHref, relHref)) {\n // We do a preventDefault for all urls that are part of the angular application,\n // in html5mode and also without, so that we are able to abort navigation without\n // getting double entries in the location history.\n event.preventDefault();\n // update location manually\n if ($location.absUrl() != $browser.url()) {\n $rootScope.$apply();\n // hack to work around FF6 bug 684208 when scenario runner clicks on links\n window.angular['ff-684208-preventDefault'] = true;\n }\n }\n }\n });\n\n\n // rewrite hashbang url <> html5 url\n if ($location.absUrl() != initialUrl) {\n $browser.url($location.absUrl(), true);\n }\n\n // update $location when $browser url changes\n $browser.onUrlChange(function(newUrl) {\n if ($location.absUrl() != newUrl) {\n $rootScope.$evalAsync(function() {\n var oldUrl = $location.absUrl();\n\n $location.$$parse(newUrl);\n if ($rootScope.$broadcast('$locationChangeStart', newUrl,\n oldUrl).defaultPrevented) {\n $location.$$parse(oldUrl);\n $browser.url(oldUrl);\n } else {\n afterLocationChange(oldUrl);\n }\n });\n if (!$rootScope.$$phase) $rootScope.$digest();\n }\n });\n\n // update browser\n var changeCounter = 0;\n $rootScope.$watch(function $locationWatch() {\n var oldUrl = $browser.url();\n var currentReplace = $location.$$replace;\n\n if (!changeCounter || oldUrl != $location.absUrl()) {\n changeCounter++;\n $rootScope.$evalAsync(function() {\n if ($rootScope.$broadcast('$locationChangeStart', $location.absUrl(), oldUrl).\n defaultPrevented) {\n $location.$$parse(oldUrl);\n } else {\n $browser.url($location.absUrl(), currentReplace);\n afterLocationChange(oldUrl);\n }\n });\n }\n $location.$$replace = false;\n\n return changeCounter;\n });\n\n return $location;\n\n function afterLocationChange(oldUrl) {\n $rootScope.$broadcast('$locationChangeSuccess', $location.absUrl(), oldUrl);\n }\n}];\n}\n\n/**\n * @ngdoc service\n * @name $log\n * @requires $window\n *\n * @description\n * Simple service for logging. Default implementation safely writes the message\n * into the browser's console (if present).\n *\n * The main purpose of this service is to simplify debugging and troubleshooting.\n *\n * The default is to log `debug` messages. You can use\n * {@link ng.$logProvider ng.$logProvider#debugEnabled} to change this.\n *\n * @example\n \n \n angular.module('logExample', [])\n .controller('LogController', ['$scope', '$log', function($scope, $log) {\n $scope.$log = $log;\n $scope.message = 'Hello World!';\n }]);\n \n \n
\n

Reload this page with open console, enter text and hit the log button...

\n Message:\n \n \n \n \n \n
\n
\n
\n */\n\n/**\n * @ngdoc provider\n * @name $logProvider\n * @description\n * Use the `$logProvider` to configure how the application logs messages\n */\nfunction $LogProvider(){\n var debug = true,\n self = this;\n\n /**\n * @ngdoc method\n * @name $logProvider#debugEnabled\n * @description\n * @param {boolean=} flag enable or disable debug level messages\n * @returns {*} current value if used as getter or itself (chaining) if used as setter\n */\n this.debugEnabled = function(flag) {\n if (isDefined(flag)) {\n debug = flag;\n return this;\n } else {\n return debug;\n }\n };\n\n this.$get = ['$window', function($window){\n return {\n /**\n * @ngdoc method\n * @name $log#log\n *\n * @description\n * Write a log message\n */\n log: consoleLog('log'),\n\n /**\n * @ngdoc method\n * @name $log#info\n *\n * @description\n * Write an information message\n */\n info: consoleLog('info'),\n\n /**\n * @ngdoc method\n * @name $log#warn\n *\n * @description\n * Write a warning message\n */\n warn: consoleLog('warn'),\n\n /**\n * @ngdoc method\n * @name $log#error\n *\n * @description\n * Write an error message\n */\n error: consoleLog('error'),\n\n /**\n * @ngdoc method\n * @name $log#debug\n *\n * @description\n * Write a debug message\n */\n debug: (function () {\n var fn = consoleLog('debug');\n\n return function() {\n if (debug) {\n fn.apply(self, arguments);\n }\n };\n }())\n };\n\n function formatError(arg) {\n if (arg instanceof Error) {\n if (arg.stack) {\n arg = (arg.message && arg.stack.indexOf(arg.message) === -1)\n ? 'Error: ' + arg.message + '\\n' + arg.stack\n : arg.stack;\n } else if (arg.sourceURL) {\n arg = arg.message + '\\n' + arg.sourceURL + ':' + arg.line;\n }\n }\n return arg;\n }\n\n function consoleLog(type) {\n var console = $window.console || {},\n logFn = console[type] || console.log || noop,\n hasApply = false;\n\n // Note: reading logFn.apply throws an error in IE11 in IE8 document mode.\n // The reason behind this is that console.log has type \"object\" in IE8...\n try {\n hasApply = !!logFn.apply;\n } catch (e) {}\n\n if (hasApply) {\n return function() {\n var args = [];\n forEach(arguments, function(arg) {\n args.push(formatError(arg));\n });\n return logFn.apply(console, args);\n };\n }\n\n // we are IE which either doesn't have window.console => this is noop and we do nothing,\n // or we are IE where console.log doesn't have apply so we log at least first 2 args\n return function(arg1, arg2) {\n logFn(arg1, arg2 == null ? '' : arg2);\n };\n }\n }];\n}\n\nvar $parseMinErr = minErr('$parse');\nvar promiseWarningCache = {};\nvar promiseWarning;\n\n// Sandboxing Angular Expressions\n// ------------------------------\n// Angular expressions are generally considered safe because these expressions only have direct\n// access to `$scope` and locals. However, one can obtain the ability to execute arbitrary JS code by\n// obtaining a reference to native JS functions such as the Function constructor.\n//\n// As an example, consider the following Angular expression:\n//\n// {}.toString.constructor('alert(\"evil JS code\")')\n//\n// This sandboxing technique is not perfect and doesn't aim to be. The goal is to prevent exploits\n// against the expression language, but not to prevent exploits that were enabled by exposing\n// sensitive JavaScript or browser APIs on Scope. Exposing such objects on a Scope is never a good\n// practice and therefore we are not even trying to protect against interaction with an object\n// explicitly exposed in this way.\n//\n// In general, it is not possible to access a Window object from an angular expression unless a\n// window or some DOM object that has a reference to window is published onto a Scope.\n// Similarly we prevent invocations of function known to be dangerous, as well as assignments to\n// native objects.\n//\n// See https://docs.angularjs.org/guide/security\n\n\nfunction ensureSafeMemberName(name, fullExpression) {\n if (name === \"__defineGetter__\" || name === \"__defineSetter__\"\n || name === \"__lookupGetter__\" || name === \"__lookupSetter__\"\n || name === \"__proto__\") {\n throw $parseMinErr('isecfld',\n 'Attempting to access a disallowed field in Angular expressions! '\n +'Expression: {0}', fullExpression);\n }\n return name;\n}\n\nfunction ensureSafeObject(obj, fullExpression) {\n // nifty check if obj is Function that is fast and works across iframes and other contexts\n if (obj) {\n if (obj.constructor === obj) {\n throw $parseMinErr('isecfn',\n 'Referencing Function in Angular expressions is disallowed! Expression: {0}',\n fullExpression);\n } else if (// isWindow(obj)\n obj.document && obj.location && obj.alert && obj.setInterval) {\n throw $parseMinErr('isecwindow',\n 'Referencing the Window in Angular expressions is disallowed! Expression: {0}',\n fullExpression);\n } else if (// isElement(obj)\n obj.children && (obj.nodeName || (obj.prop && obj.attr && obj.find))) {\n throw $parseMinErr('isecdom',\n 'Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}',\n fullExpression);\n } else if (// block Object so that we can't get hold of dangerous Object.* methods\n obj === Object) {\n throw $parseMinErr('isecobj',\n 'Referencing Object in Angular expressions is disallowed! Expression: {0}',\n fullExpression);\n }\n }\n return obj;\n}\n\nvar CALL = Function.prototype.call;\nvar APPLY = Function.prototype.apply;\nvar BIND = Function.prototype.bind;\n\nfunction ensureSafeFunction(obj, fullExpression) {\n if (obj) {\n if (obj.constructor === obj) {\n throw $parseMinErr('isecfn',\n 'Referencing Function in Angular expressions is disallowed! Expression: {0}',\n fullExpression);\n } else if (obj === CALL || obj === APPLY || (BIND && obj === BIND)) {\n throw $parseMinErr('isecff',\n 'Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}',\n fullExpression);\n }\n }\n}\n\nvar OPERATORS = {\n /* jshint bitwise : false */\n 'null':function(){return null;},\n 'true':function(){return true;},\n 'false':function(){return false;},\n undefined:noop,\n '+':function(self, locals, a,b){\n a=a(self, locals); b=b(self, locals);\n if (isDefined(a)) {\n if (isDefined(b)) {\n return a + b;\n }\n return a;\n }\n return isDefined(b)?b:undefined;},\n '-':function(self, locals, a,b){\n a=a(self, locals); b=b(self, locals);\n return (isDefined(a)?a:0)-(isDefined(b)?b:0);\n },\n '*':function(self, locals, a,b){return a(self, locals)*b(self, locals);},\n '/':function(self, locals, a,b){return a(self, locals)/b(self, locals);},\n '%':function(self, locals, a,b){return a(self, locals)%b(self, locals);},\n '^':function(self, locals, a,b){return a(self, locals)^b(self, locals);},\n '=':noop,\n '===':function(self, locals, a, b){return a(self, locals)===b(self, locals);},\n '!==':function(self, locals, a, b){return a(self, locals)!==b(self, locals);},\n '==':function(self, locals, a,b){return a(self, locals)==b(self, locals);},\n '!=':function(self, locals, a,b){return a(self, locals)!=b(self, locals);},\n '<':function(self, locals, a,b){return a(self, locals)':function(self, locals, a,b){return a(self, locals)>b(self, locals);},\n '<=':function(self, locals, a,b){return a(self, locals)<=b(self, locals);},\n '>=':function(self, locals, a,b){return a(self, locals)>=b(self, locals);},\n '&&':function(self, locals, a,b){return a(self, locals)&&b(self, locals);},\n '||':function(self, locals, a,b){return a(self, locals)||b(self, locals);},\n '&':function(self, locals, a,b){return a(self, locals)&b(self, locals);},\n// '|':function(self, locals, a,b){return a|b;},\n '|':function(self, locals, a,b){return b(self, locals)(self, locals, a(self, locals));},\n '!':function(self, locals, a){return !a(self, locals);}\n};\n/* jshint bitwise: true */\nvar ESCAPE = {\"n\":\"\\n\", \"f\":\"\\f\", \"r\":\"\\r\", \"t\":\"\\t\", \"v\":\"\\v\", \"'\":\"'\", '\"':'\"'};\n\n\n/////////////////////////////////////////\n\n\n/**\n * @constructor\n */\nvar Lexer = function (options) {\n this.options = options;\n};\n\nLexer.prototype = {\n constructor: Lexer,\n\n lex: function (text) {\n this.text = text;\n\n this.index = 0;\n this.ch = undefined;\n this.lastCh = ':'; // can start regexp\n\n this.tokens = [];\n\n while (this.index < this.text.length) {\n this.ch = this.text.charAt(this.index);\n if (this.is('\"\\'')) {\n this.readString(this.ch);\n } else if (this.isNumber(this.ch) || this.is('.') && this.isNumber(this.peek())) {\n this.readNumber();\n } else if (this.isIdent(this.ch)) {\n this.readIdent();\n } else if (this.is('(){}[].,;:?')) {\n this.tokens.push({\n index: this.index,\n text: this.ch\n });\n this.index++;\n } else if (this.isWhitespace(this.ch)) {\n this.index++;\n continue;\n } else {\n var ch2 = this.ch + this.peek();\n var ch3 = ch2 + this.peek(2);\n var fn = OPERATORS[this.ch];\n var fn2 = OPERATORS[ch2];\n var fn3 = OPERATORS[ch3];\n if (fn3) {\n this.tokens.push({index: this.index, text: ch3, fn: fn3});\n this.index += 3;\n } else if (fn2) {\n this.tokens.push({index: this.index, text: ch2, fn: fn2});\n this.index += 2;\n } else if (fn) {\n this.tokens.push({\n index: this.index,\n text: this.ch,\n fn: fn\n });\n this.index += 1;\n } else {\n this.throwError('Unexpected next character ', this.index, this.index + 1);\n }\n }\n this.lastCh = this.ch;\n }\n return this.tokens;\n },\n\n is: function(chars) {\n return chars.indexOf(this.ch) !== -1;\n },\n\n was: function(chars) {\n return chars.indexOf(this.lastCh) !== -1;\n },\n\n peek: function(i) {\n var num = i || 1;\n return (this.index + num < this.text.length) ? this.text.charAt(this.index + num) : false;\n },\n\n isNumber: function(ch) {\n return ('0' <= ch && ch <= '9');\n },\n\n isWhitespace: function(ch) {\n // IE treats non-breaking space as \\u00A0\n return (ch === ' ' || ch === '\\r' || ch === '\\t' ||\n ch === '\\n' || ch === '\\v' || ch === '\\u00A0');\n },\n\n isIdent: function(ch) {\n return ('a' <= ch && ch <= 'z' ||\n 'A' <= ch && ch <= 'Z' ||\n '_' === ch || ch === '$');\n },\n\n isExpOperator: function(ch) {\n return (ch === '-' || ch === '+' || this.isNumber(ch));\n },\n\n throwError: function(error, start, end) {\n end = end || this.index;\n var colStr = (isDefined(start)\n ? 's ' + start + '-' + this.index + ' [' + this.text.substring(start, end) + ']'\n : ' ' + end);\n throw $parseMinErr('lexerr', 'Lexer Error: {0} at column{1} in expression [{2}].',\n error, colStr, this.text);\n },\n\n readNumber: function() {\n var number = '';\n var start = this.index;\n while (this.index < this.text.length) {\n var ch = lowercase(this.text.charAt(this.index));\n if (ch == '.' || this.isNumber(ch)) {\n number += ch;\n } else {\n var peekCh = this.peek();\n if (ch == 'e' && this.isExpOperator(peekCh)) {\n number += ch;\n } else if (this.isExpOperator(ch) &&\n peekCh && this.isNumber(peekCh) &&\n number.charAt(number.length - 1) == 'e') {\n number += ch;\n } else if (this.isExpOperator(ch) &&\n (!peekCh || !this.isNumber(peekCh)) &&\n number.charAt(number.length - 1) == 'e') {\n this.throwError('Invalid exponent');\n } else {\n break;\n }\n }\n this.index++;\n }\n number = 1 * number;\n this.tokens.push({\n index: start,\n text: number,\n literal: true,\n constant: true,\n fn: function() { return number; }\n });\n },\n\n readIdent: function() {\n var parser = this;\n\n var ident = '';\n var start = this.index;\n\n var lastDot, peekIndex, methodName, ch;\n\n while (this.index < this.text.length) {\n ch = this.text.charAt(this.index);\n if (ch === '.' || this.isIdent(ch) || this.isNumber(ch)) {\n if (ch === '.') lastDot = this.index;\n ident += ch;\n } else {\n break;\n }\n this.index++;\n }\n\n //check if this is not a method invocation and if it is back out to last dot\n if (lastDot) {\n peekIndex = this.index;\n while (peekIndex < this.text.length) {\n ch = this.text.charAt(peekIndex);\n if (ch === '(') {\n methodName = ident.substr(lastDot - start + 1);\n ident = ident.substr(0, lastDot - start);\n this.index = peekIndex;\n break;\n }\n if (this.isWhitespace(ch)) {\n peekIndex++;\n } else {\n break;\n }\n }\n }\n\n\n var token = {\n index: start,\n text: ident\n };\n\n // OPERATORS is our own object so we don't need to use special hasOwnPropertyFn\n if (OPERATORS.hasOwnProperty(ident)) {\n token.fn = OPERATORS[ident];\n token.literal = true;\n token.constant = true;\n } else {\n var getter = getterFn(ident, this.options, this.text);\n token.fn = extend(function(self, locals) {\n return (getter(self, locals));\n }, {\n assign: function(self, value) {\n return setter(self, ident, value, parser.text, parser.options);\n }\n });\n }\n\n this.tokens.push(token);\n\n if (methodName) {\n this.tokens.push({\n index:lastDot,\n text: '.'\n });\n this.tokens.push({\n index: lastDot + 1,\n text: methodName\n });\n }\n },\n\n readString: function(quote) {\n var start = this.index;\n this.index++;\n var string = '';\n var rawString = quote;\n var escape = false;\n while (this.index < this.text.length) {\n var ch = this.text.charAt(this.index);\n rawString += ch;\n if (escape) {\n if (ch === 'u') {\n var hex = this.text.substring(this.index + 1, this.index + 5);\n if (!hex.match(/[\\da-f]{4}/i))\n this.throwError('Invalid unicode escape [\\\\u' + hex + ']');\n this.index += 4;\n string += String.fromCharCode(parseInt(hex, 16));\n } else {\n var rep = ESCAPE[ch];\n string = string + (rep || ch);\n }\n escape = false;\n } else if (ch === '\\\\') {\n escape = true;\n } else if (ch === quote) {\n this.index++;\n this.tokens.push({\n index: start,\n text: rawString,\n string: string,\n literal: true,\n constant: true,\n fn: function() { return string; }\n });\n return;\n } else {\n string += ch;\n }\n this.index++;\n }\n this.throwError('Unterminated quote', start);\n }\n};\n\n\n/**\n * @constructor\n */\nvar Parser = function (lexer, $filter, options) {\n this.lexer = lexer;\n this.$filter = $filter;\n this.options = options;\n};\n\nParser.ZERO = extend(function () {\n return 0;\n}, {\n constant: true\n});\n\nParser.prototype = {\n constructor: Parser,\n\n parse: function (text) {\n this.text = text;\n\n this.tokens = this.lexer.lex(text);\n\n var value = this.statements();\n\n if (this.tokens.length !== 0) {\n this.throwError('is an unexpected token', this.tokens[0]);\n }\n\n value.literal = !!value.literal;\n value.constant = !!value.constant;\n\n return value;\n },\n\n primary: function () {\n var primary;\n if (this.expect('(')) {\n primary = this.filterChain();\n this.consume(')');\n } else if (this.expect('[')) {\n primary = this.arrayDeclaration();\n } else if (this.expect('{')) {\n primary = this.object();\n } else {\n var token = this.expect();\n primary = token.fn;\n if (!primary) {\n this.throwError('not a primary expression', token);\n }\n primary.literal = !!token.literal;\n primary.constant = !!token.constant;\n }\n\n var next, context;\n while ((next = this.expect('(', '[', '.'))) {\n if (next.text === '(') {\n primary = this.functionCall(primary, context);\n context = null;\n } else if (next.text === '[') {\n context = primary;\n primary = this.objectIndex(primary);\n } else if (next.text === '.') {\n context = primary;\n primary = this.fieldAccess(primary);\n } else {\n this.throwError('IMPOSSIBLE');\n }\n }\n return primary;\n },\n\n throwError: function(msg, token) {\n throw $parseMinErr('syntax',\n 'Syntax Error: Token \\'{0}\\' {1} at column {2} of the expression [{3}] starting at [{4}].',\n token.text, msg, (token.index + 1), this.text, this.text.substring(token.index));\n },\n\n peekToken: function() {\n if (this.tokens.length === 0)\n throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text);\n return this.tokens[0];\n },\n\n peek: function(e1, e2, e3, e4) {\n if (this.tokens.length > 0) {\n var token = this.tokens[0];\n var t = token.text;\n if (t === e1 || t === e2 || t === e3 || t === e4 ||\n (!e1 && !e2 && !e3 && !e4)) {\n return token;\n }\n }\n return false;\n },\n\n expect: function(e1, e2, e3, e4){\n var token = this.peek(e1, e2, e3, e4);\n if (token) {\n this.tokens.shift();\n return token;\n }\n return false;\n },\n\n consume: function(e1){\n if (!this.expect(e1)) {\n this.throwError('is unexpected, expecting [' + e1 + ']', this.peek());\n }\n },\n\n unaryFn: function(fn, right) {\n return extend(function(self, locals) {\n return fn(self, locals, right);\n }, {\n constant:right.constant\n });\n },\n\n ternaryFn: function(left, middle, right){\n return extend(function(self, locals){\n return left(self, locals) ? middle(self, locals) : right(self, locals);\n }, {\n constant: left.constant && middle.constant && right.constant\n });\n },\n\n binaryFn: function(left, fn, right) {\n return extend(function(self, locals) {\n return fn(self, locals, left, right);\n }, {\n constant:left.constant && right.constant\n });\n },\n\n statements: function() {\n var statements = [];\n while (true) {\n if (this.tokens.length > 0 && !this.peek('}', ')', ';', ']'))\n statements.push(this.filterChain());\n if (!this.expect(';')) {\n // optimize for the common case where there is only one statement.\n // TODO(size): maybe we should not support multiple statements?\n return (statements.length === 1)\n ? statements[0]\n : function(self, locals) {\n var value;\n for (var i = 0; i < statements.length; i++) {\n var statement = statements[i];\n if (statement) {\n value = statement(self, locals);\n }\n }\n return value;\n };\n }\n }\n },\n\n filterChain: function() {\n var left = this.expression();\n var token;\n while (true) {\n if ((token = this.expect('|'))) {\n left = this.binaryFn(left, token.fn, this.filter());\n } else {\n return left;\n }\n }\n },\n\n filter: function() {\n var token = this.expect();\n var fn = this.$filter(token.text);\n var argsFn = [];\n while (true) {\n if ((token = this.expect(':'))) {\n argsFn.push(this.expression());\n } else {\n var fnInvoke = function(self, locals, input) {\n var args = [input];\n for (var i = 0; i < argsFn.length; i++) {\n args.push(argsFn[i](self, locals));\n }\n return fn.apply(self, args);\n };\n return function() {\n return fnInvoke;\n };\n }\n }\n },\n\n expression: function() {\n return this.assignment();\n },\n\n assignment: function() {\n var left = this.ternary();\n var right;\n var token;\n if ((token = this.expect('='))) {\n if (!left.assign) {\n this.throwError('implies assignment but [' +\n this.text.substring(0, token.index) + '] can not be assigned to', token);\n }\n right = this.ternary();\n return function(scope, locals) {\n return left.assign(scope, right(scope, locals), locals);\n };\n }\n return left;\n },\n\n ternary: function() {\n var left = this.logicalOR();\n var middle;\n var token;\n if ((token = this.expect('?'))) {\n middle = this.assignment();\n if ((token = this.expect(':'))) {\n return this.ternaryFn(left, middle, this.assignment());\n } else {\n this.throwError('expected :', token);\n }\n } else {\n return left;\n }\n },\n\n logicalOR: function() {\n var left = this.logicalAND();\n var token;\n while (true) {\n if ((token = this.expect('||'))) {\n left = this.binaryFn(left, token.fn, this.logicalAND());\n } else {\n return left;\n }\n }\n },\n\n logicalAND: function() {\n var left = this.equality();\n var token;\n if ((token = this.expect('&&'))) {\n left = this.binaryFn(left, token.fn, this.logicalAND());\n }\n return left;\n },\n\n equality: function() {\n var left = this.relational();\n var token;\n if ((token = this.expect('==','!=','===','!=='))) {\n left = this.binaryFn(left, token.fn, this.equality());\n }\n return left;\n },\n\n relational: function() {\n var left = this.additive();\n var token;\n if ((token = this.expect('<', '>', '<=', '>='))) {\n left = this.binaryFn(left, token.fn, this.relational());\n }\n return left;\n },\n\n additive: function() {\n var left = this.multiplicative();\n var token;\n while ((token = this.expect('+','-'))) {\n left = this.binaryFn(left, token.fn, this.multiplicative());\n }\n return left;\n },\n\n multiplicative: function() {\n var left = this.unary();\n var token;\n while ((token = this.expect('*','/','%'))) {\n left = this.binaryFn(left, token.fn, this.unary());\n }\n return left;\n },\n\n unary: function() {\n var token;\n if (this.expect('+')) {\n return this.primary();\n } else if ((token = this.expect('-'))) {\n return this.binaryFn(Parser.ZERO, token.fn, this.unary());\n } else if ((token = this.expect('!'))) {\n return this.unaryFn(token.fn, this.unary());\n } else {\n return this.primary();\n }\n },\n\n fieldAccess: function(object) {\n var parser = this;\n var field = this.expect().text;\n var getter = getterFn(field, this.options, this.text);\n\n return extend(function(scope, locals, self) {\n return getter(self || object(scope, locals));\n }, {\n assign: function(scope, value, locals) {\n var o = object(scope, locals);\n if (!o) object.assign(scope, o = {});\n return setter(o, field, value, parser.text, parser.options);\n }\n });\n },\n\n objectIndex: function(obj) {\n var parser = this;\n\n var indexFn = this.expression();\n this.consume(']');\n\n return extend(function(self, locals) {\n var o = obj(self, locals),\n i = indexFn(self, locals),\n v, p;\n\n ensureSafeMemberName(i, parser.text);\n if (!o) return undefined;\n v = ensureSafeObject(o[i], parser.text);\n if (v && v.then && parser.options.unwrapPromises) {\n p = v;\n if (!('$$v' in v)) {\n p.$$v = undefined;\n p.then(function(val) { p.$$v = val; });\n }\n v = v.$$v;\n }\n return v;\n }, {\n assign: function(self, value, locals) {\n var key = ensureSafeMemberName(indexFn(self, locals), parser.text);\n // prevent overwriting of Function.constructor which would break ensureSafeObject check\n var o = ensureSafeObject(obj(self, locals), parser.text);\n if (!o) obj.assign(self, o = {});\n return o[key] = value;\n }\n });\n },\n\n functionCall: function(fn, contextGetter) {\n var argsFn = [];\n if (this.peekToken().text !== ')') {\n do {\n argsFn.push(this.expression());\n } while (this.expect(','));\n }\n this.consume(')');\n\n var parser = this;\n\n return function(scope, locals) {\n var args = [];\n var context = contextGetter ? contextGetter(scope, locals) : scope;\n\n for (var i = 0; i < argsFn.length; i++) {\n args.push(ensureSafeObject(argsFn[i](scope, locals), parser.text));\n }\n var fnPtr = fn(scope, locals, context) || noop;\n\n ensureSafeObject(context, parser.text);\n ensureSafeFunction(fnPtr, parser.text);\n\n // IE doesn't have apply for some native functions\n var v = fnPtr.apply\n ? fnPtr.apply(context, args)\n : fnPtr(args[0], args[1], args[2], args[3], args[4]);\n\n return ensureSafeObject(v, parser.text);\n };\n },\n\n // This is used with json array declaration\n arrayDeclaration: function () {\n var elementFns = [];\n var allConstant = true;\n if (this.peekToken().text !== ']') {\n do {\n if (this.peek(']')) {\n // Support trailing commas per ES5.1.\n break;\n }\n var elementFn = this.expression();\n elementFns.push(elementFn);\n if (!elementFn.constant) {\n allConstant = false;\n }\n } while (this.expect(','));\n }\n this.consume(']');\n\n return extend(function(self, locals) {\n var array = [];\n for (var i = 0; i < elementFns.length; i++) {\n array.push(elementFns[i](self, locals));\n }\n return array;\n }, {\n literal: true,\n constant: allConstant\n });\n },\n\n object: function () {\n var keyValues = [];\n var allConstant = true;\n if (this.peekToken().text !== '}') {\n do {\n if (this.peek('}')) {\n // Support trailing commas per ES5.1.\n break;\n }\n var token = this.expect(),\n key = token.string || token.text;\n this.consume(':');\n var value = this.expression();\n keyValues.push({key: key, value: value});\n if (!value.constant) {\n allConstant = false;\n }\n } while (this.expect(','));\n }\n this.consume('}');\n\n return extend(function(self, locals) {\n var object = {};\n for (var i = 0; i < keyValues.length; i++) {\n var keyValue = keyValues[i];\n object[keyValue.key] = keyValue.value(self, locals);\n }\n return object;\n }, {\n literal: true,\n constant: allConstant\n });\n }\n};\n\n\n//////////////////////////////////////////////////\n// Parser helper functions\n//////////////////////////////////////////////////\n\nfunction setter(obj, path, setValue, fullExp, options) {\n ensureSafeObject(obj, fullExp);\n\n //needed?\n options = options || {};\n\n var element = path.split('.'), key;\n for (var i = 0; element.length > 1; i++) {\n key = ensureSafeMemberName(element.shift(), fullExp);\n var propertyObj = ensureSafeObject(obj[key], fullExp);\n if (!propertyObj) {\n propertyObj = {};\n obj[key] = propertyObj;\n }\n obj = propertyObj;\n if (obj.then && options.unwrapPromises) {\n promiseWarning(fullExp);\n if (!(\"$$v\" in obj)) {\n (function(promise) {\n promise.then(function(val) { promise.$$v = val; }); }\n )(obj);\n }\n if (obj.$$v === undefined) {\n obj.$$v = {};\n }\n obj = obj.$$v;\n }\n }\n key = ensureSafeMemberName(element.shift(), fullExp);\n ensureSafeObject(obj[key], fullExp);\n obj[key] = setValue;\n return setValue;\n}\n\nvar getterFnCacheDefault = {};\nvar getterFnCacheExpensive = {};\n\nfunction isPossiblyDangerousMemberName(name) {\n return name == 'constructor';\n}\n\n/**\n * Implementation of the \"Black Hole\" variant from:\n * - http://jsperf.com/angularjs-parse-getter/4\n * - http://jsperf.com/path-evaluation-simplified/7\n */\nfunction cspSafeGetterFn(key0, key1, key2, key3, key4, fullExp, options) {\n ensureSafeMemberName(key0, fullExp);\n ensureSafeMemberName(key1, fullExp);\n ensureSafeMemberName(key2, fullExp);\n ensureSafeMemberName(key3, fullExp);\n ensureSafeMemberName(key4, fullExp);\n var eso = function(o) {\n return ensureSafeObject(o, fullExp);\n };\n var expensiveChecks = options.expensiveChecks;\n var eso0 = (expensiveChecks || isPossiblyDangerousMemberName(key0)) ? eso : identity;\n var eso1 = (expensiveChecks || isPossiblyDangerousMemberName(key1)) ? eso : identity;\n var eso2 = (expensiveChecks || isPossiblyDangerousMemberName(key2)) ? eso : identity;\n var eso3 = (expensiveChecks || isPossiblyDangerousMemberName(key3)) ? eso : identity;\n var eso4 = (expensiveChecks || isPossiblyDangerousMemberName(key4)) ? eso : identity;\n\n return !options.unwrapPromises\n ? function cspSafeGetter(scope, locals) {\n var pathVal = (locals && locals.hasOwnProperty(key0)) ? locals : scope;\n\n if (pathVal == null) return pathVal;\n pathVal = eso0(pathVal[key0]);\n\n if (!key1) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso1(pathVal[key1]);\n\n if (!key2) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso2(pathVal[key2]);\n\n if (!key3) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso3(pathVal[key3]);\n\n if (!key4) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso4(pathVal[key4]);\n\n return pathVal;\n }\n : function cspSafePromiseEnabledGetter(scope, locals) {\n var pathVal = (locals && locals.hasOwnProperty(key0)) ? locals : scope,\n promise;\n\n if (pathVal == null) return pathVal;\n\n pathVal = eso0(pathVal[key0]);\n if (pathVal && pathVal.then) {\n promiseWarning(fullExp);\n if (!(\"$$v\" in pathVal)) {\n promise = pathVal;\n promise.$$v = undefined;\n promise.then(function(val) { promise.$$v = eso0(val); });\n }\n pathVal = eso0(pathVal.$$v);\n }\n\n if (!key1) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso1(pathVal[key1]);\n if (pathVal && pathVal.then) {\n promiseWarning(fullExp);\n if (!(\"$$v\" in pathVal)) {\n promise = pathVal;\n promise.$$v = undefined;\n promise.then(function(val) { promise.$$v = eso1(val); });\n }\n pathVal = eso1(pathVal.$$v);\n }\n\n if (!key2) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso2(pathVal[key2]);\n if (pathVal && pathVal.then) {\n promiseWarning(fullExp);\n if (!(\"$$v\" in pathVal)) {\n promise = pathVal;\n promise.$$v = undefined;\n promise.then(function(val) { promise.$$v = eso2(val); });\n }\n pathVal = eso2(pathVal.$$v);\n }\n\n if (!key3) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso3(pathVal[key3]);\n if (pathVal && pathVal.then) {\n promiseWarning(fullExp);\n if (!(\"$$v\" in pathVal)) {\n promise = pathVal;\n promise.$$v = undefined;\n promise.then(function(val) { promise.$$v = eso3(val); });\n }\n pathVal = eso3(pathVal.$$v);\n }\n\n if (!key4) return pathVal;\n if (pathVal == null) return undefined;\n pathVal = eso4(pathVal[key4]);\n if (pathVal && pathVal.then) {\n promiseWarning(fullExp);\n if (!(\"$$v\" in pathVal)) {\n promise = pathVal;\n promise.$$v = undefined;\n promise.then(function(val) { promise.$$v = eso4(val); });\n }\n pathVal = eso4(pathVal.$$v);\n }\n return pathVal;\n };\n}\n\nfunction getterFnWithExtraArgs(fn, fullExpression) {\n return function(s, l) {\n return fn(s, l, promiseWarning, ensureSafeObject, fullExpression);\n };\n}\n\nfunction getterFn(path, options, fullExp) {\n var expensiveChecks = options.expensiveChecks;\n var getterFnCache = (expensiveChecks ? getterFnCacheExpensive : getterFnCacheDefault);\n // Check whether the cache has this getter already.\n // We can use hasOwnProperty directly on the cache because we ensure,\n // see below, that the cache never stores a path called 'hasOwnProperty'\n if (getterFnCache.hasOwnProperty(path)) {\n return getterFnCache[path];\n }\n\n var pathKeys = path.split('.'),\n pathKeysLength = pathKeys.length,\n fn;\n\n // http://jsperf.com/angularjs-parse-getter/6\n if (options.csp) {\n if (pathKeysLength < 6) {\n fn = cspSafeGetterFn(pathKeys[0], pathKeys[1], pathKeys[2], pathKeys[3], pathKeys[4], fullExp,\n options);\n } else {\n fn = function(scope, locals) {\n var i = 0, val;\n do {\n val = cspSafeGetterFn(pathKeys[i++], pathKeys[i++], pathKeys[i++], pathKeys[i++],\n pathKeys[i++], fullExp, options)(scope, locals);\n\n locals = undefined; // clear after first iteration\n scope = val;\n } while (i < pathKeysLength);\n return val;\n };\n }\n } else {\n var code = 'var p;\\n';\n if (expensiveChecks) {\n code += 's = eso(s, fe);\\nl = eso(l, fe);\\n';\n }\n var needsEnsureSafeObject = expensiveChecks;\n forEach(pathKeys, function(key, index) {\n ensureSafeMemberName(key, fullExp);\n var lookupJs = (index\n // we simply dereference 's' on any .dot notation\n ? 's'\n // but if we are first then we check locals first, and if so read it first\n : '((l&&l.hasOwnProperty(\"' + key + '\"))?l:s)') + '[\"' + key + '\"]';\n var wrapWithEso = expensiveChecks || isPossiblyDangerousMemberName(key);\n if (wrapWithEso) {\n lookupJs = 'eso(' + lookupJs + ', fe)';\n needsEnsureSafeObject = true;\n }\n code += 'if(s == null) return undefined;\\n' +\n 's=' + lookupJs + ';\\n';\n if (options.unwrapPromises) {\n code += 'if (s && s.then) {\\n' +\n ' pw(\"' + fullExp.replace(/([\"\\r\\n])/g, '\\\\$1') + '\");\\n' +\n ' if (!(\"$$v\" in s)) {\\n' +\n ' p=s;\\n' +\n ' p.$$v = undefined;\\n' +\n ' p.then(function(v) {p.$$v=' + (wrapWithEso ? 'eso(v)' : 'v') + ';});\\n' +\n '}\\n' +\n ' s=' + (wrapWithEso ? 'eso(s.$$v)' : 's.$$v') + '\\n' +\n '}\\n';\n\n }\n });\n code += 'return s;';\n\n /* jshint -W054 */\n // s=scope, l=locals, pw=promiseWarning, eso=ensureSafeObject, fe=fullExpression\n var evaledFnGetter = new Function('s', 'l', 'pw', 'eso', 'fe', code);\n /* jshint +W054 */\n evaledFnGetter.toString = valueFn(code);\n if (needsEnsureSafeObject || options.unwrapPromises) {\n evaledFnGetter = getterFnWithExtraArgs(evaledFnGetter, fullExp);\n }\n fn = evaledFnGetter;\n }\n\n // Only cache the value if it's not going to mess up the cache object\n // This is more performant that using Object.prototype.hasOwnProperty.call\n if (path !== 'hasOwnProperty') {\n getterFnCache[path] = fn;\n }\n return fn;\n}\n\n///////////////////////////////////\n\n/**\n * @ngdoc service\n * @name $parse\n * @kind function\n *\n * @description\n *\n * Converts Angular {@link guide/expression expression} into a function.\n *\n * ```js\n * var getter = $parse('user.name');\n * var setter = getter.assign;\n * var context = {user:{name:'angular'}};\n * var locals = {user:{name:'local'}};\n *\n * expect(getter(context)).toEqual('angular');\n * setter(context, 'newValue');\n * expect(context.user.name).toEqual('newValue');\n * expect(getter(context, locals)).toEqual('local');\n * ```\n *\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n *\n * The returned function also has the following properties:\n * * `literal` – `{boolean}` – whether the expression's top-level node is a JavaScript\n * literal.\n * * `constant` – `{boolean}` – whether the expression is made entirely of JavaScript\n * constant literals.\n * * `assign` – `{?function(context, value)}` – if the expression is assignable, this will be\n * set to a function to change its value on the given context.\n *\n */\n\n\n/**\n * @ngdoc provider\n * @name $parseProvider\n * @kind function\n *\n * @description\n * `$parseProvider` can be used for configuring the default behavior of the {@link ng.$parse $parse}\n * service.\n */\nfunction $ParseProvider() {\n var cacheDefault = {};\n var cacheExpensive = {};\n\n var $parseOptions = {\n csp: false,\n unwrapPromises: false,\n logPromiseWarnings: true,\n expensiveChecks: false\n };\n\n\n /**\n * @deprecated Promise unwrapping via $parse is deprecated and will be removed in the future.\n *\n * @ngdoc method\n * @name $parseProvider#unwrapPromises\n * @description\n *\n * **This feature is deprecated, see deprecation notes below for more info**\n *\n * If set to true (default is false), $parse will unwrap promises automatically when a promise is\n * found at any part of the expression. In other words, if set to true, the expression will always\n * result in a non-promise value.\n *\n * While the promise is unresolved, it's treated as undefined, but once resolved and fulfilled,\n * the fulfillment value is used in place of the promise while evaluating the expression.\n *\n * **Deprecation notice**\n *\n * This is a feature that didn't prove to be wildly useful or popular, primarily because of the\n * dichotomy between data access in templates (accessed as raw values) and controller code\n * (accessed as promises).\n *\n * In most code we ended up resolving promises manually in controllers anyway and thus unifying\n * the model access there.\n *\n * Other downsides of automatic promise unwrapping:\n *\n * - when building components it's often desirable to receive the raw promises\n * - adds complexity and slows down expression evaluation\n * - makes expression code pre-generation unattractive due to the amount of code that needs to be\n * generated\n * - makes IDE auto-completion and tool support hard\n *\n * **Warning Logs**\n *\n * If the unwrapping is enabled, Angular will log a warning about each expression that unwraps a\n * promise (to reduce the noise, each expression is logged only once). To disable this logging use\n * `$parseProvider.logPromiseWarnings(false)` api.\n *\n *\n * @param {boolean=} value New value.\n * @returns {boolean|self} Returns the current setting when used as getter and self if used as\n * setter.\n */\n this.unwrapPromises = function(value) {\n if (isDefined(value)) {\n $parseOptions.unwrapPromises = !!value;\n return this;\n } else {\n return $parseOptions.unwrapPromises;\n }\n };\n\n\n /**\n * @deprecated Promise unwrapping via $parse is deprecated and will be removed in the future.\n *\n * @ngdoc method\n * @name $parseProvider#logPromiseWarnings\n * @description\n *\n * Controls whether Angular should log a warning on any encounter of a promise in an expression.\n *\n * The default is set to `true`.\n *\n * This setting applies only if `$parseProvider.unwrapPromises` setting is set to true as well.\n *\n * @param {boolean=} value New value.\n * @returns {boolean|self} Returns the current setting when used as getter and self if used as\n * setter.\n */\n this.logPromiseWarnings = function(value) {\n if (isDefined(value)) {\n $parseOptions.logPromiseWarnings = value;\n return this;\n } else {\n return $parseOptions.logPromiseWarnings;\n }\n };\n\n\n this.$get = ['$filter', '$sniffer', '$log', function($filter, $sniffer, $log) {\n $parseOptions.csp = $sniffer.csp;\n var $parseOptionsExpensive = {\n csp: $parseOptions.csp,\n unwrapPromises: $parseOptions.unwrapPromises,\n logPromiseWarnings: $parseOptions.logPromiseWarnings,\n expensiveChecks: true\n };\n\n promiseWarning = function promiseWarningFn(fullExp) {\n if (!$parseOptions.logPromiseWarnings || promiseWarningCache.hasOwnProperty(fullExp)) return;\n promiseWarningCache[fullExp] = true;\n $log.warn('[$parse] Promise found in the expression `' + fullExp + '`. ' +\n 'Automatic unwrapping of promises in Angular expressions is deprecated.');\n };\n\n return function(exp, expensiveChecks) {\n var parsedExpression;\n\n switch (typeof exp) {\n case 'string':\n\n var cache = (expensiveChecks ? cacheExpensive : cacheDefault);\n if (cache.hasOwnProperty(exp)) {\n return cache[exp];\n }\n\n var parseOptions = expensiveChecks ? $parseOptionsExpensive : $parseOptions;\n var lexer = new Lexer(parseOptions);\n var parser = new Parser(lexer, $filter, parseOptions);\n parsedExpression = parser.parse(exp);\n\n if (exp !== 'hasOwnProperty') {\n // Only cache the value if it's not going to mess up the cache object\n // This is more performant that using Object.prototype.hasOwnProperty.call\n cache[exp] = parsedExpression;\n }\n\n return parsedExpression;\n\n case 'function':\n return exp;\n\n default:\n return noop;\n }\n };\n }];\n}\n\n/**\n * @ngdoc service\n * @name $q\n * @requires $rootScope\n *\n * @description\n * A service that helps you run functions asynchronously, and use their return values (or exceptions)\n * when they are done processing.\n *\n * This is an implementation of promises/deferred objects inspired by\n * [Kris Kowal's Q](https://github.com/kriskowal/q).\n *\n * [The CommonJS Promise proposal](http://wiki.commonjs.org/wiki/Promises) describes a promise as an\n * interface for interacting with an object that represents the result of an action that is\n * performed asynchronously, and may or may not be finished at any given point in time.\n *\n * From the perspective of dealing with error handling, deferred and promise APIs are to\n * asynchronous programming what `try`, `catch` and `throw` keywords are to synchronous programming.\n *\n * ```js\n * // for the purpose of this example let's assume that variables `$q`, `scope` and `okToGreet`\n * // are available in the current lexical scope (they could have been injected or passed in).\n *\n * function asyncGreet(name) {\n * var deferred = $q.defer();\n *\n * setTimeout(function() {\n * deferred.notify('About to greet ' + name + '.');\n *\n * if (okToGreet(name)) {\n * deferred.resolve('Hello, ' + name + '!');\n * } else {\n * deferred.reject('Greeting ' + name + ' is not allowed.');\n * }\n * }, 1000);\n *\n * return deferred.promise;\n * }\n *\n * var promise = asyncGreet('Robin Hood');\n * promise.then(function(greeting) {\n * alert('Success: ' + greeting);\n * }, function(reason) {\n * alert('Failed: ' + reason);\n * }, function(update) {\n * alert('Got notification: ' + update);\n * });\n * ```\n *\n * At first it might not be obvious why this extra complexity is worth the trouble. The payoff\n * comes in the way of guarantees that promise and deferred APIs make, see\n * https://github.com/kriskowal/uncommonjs/blob/master/promises/specification.md.\n *\n * Additionally the promise api allows for composition that is very hard to do with the\n * traditional callback ([CPS](http://en.wikipedia.org/wiki/Continuation-passing_style)) approach.\n * For more on this please see the [Q documentation](https://github.com/kriskowal/q) especially the\n * section on serial or parallel joining of promises.\n *\n *\n * # The Deferred API\n *\n * A new instance of deferred is constructed by calling `$q.defer()`.\n *\n * The purpose of the deferred object is to expose the associated Promise instance as well as APIs\n * that can be used for signaling the successful or unsuccessful completion, as well as the status\n * of the task.\n *\n * **Methods**\n *\n * - `resolve(value)` – resolves the derived promise with the `value`. If the value is a rejection\n * constructed via `$q.reject`, the promise will be rejected instead.\n * - `reject(reason)` – rejects the derived promise with the `reason`. This is equivalent to\n * resolving it with a rejection constructed via `$q.reject`.\n * - `notify(value)` - provides updates on the status of the promise's execution. This may be called\n * multiple times before the promise is either resolved or rejected.\n *\n * **Properties**\n *\n * - promise – `{Promise}` – promise object associated with this deferred.\n *\n *\n * # The Promise API\n *\n * A new promise instance is created when a deferred instance is created and can be retrieved by\n * calling `deferred.promise`.\n *\n * The purpose of the promise object is to allow for interested parties to get access to the result\n * of the deferred task when it completes.\n *\n * **Methods**\n *\n * - `then(successCallback, errorCallback, notifyCallback)` – regardless of when the promise was or\n * will be resolved or rejected, `then` calls one of the success or error callbacks asynchronously\n * as soon as the result is available. The callbacks are called with a single argument: the result\n * or rejection reason. Additionally, the notify callback may be called zero or more times to\n * provide a progress indication, before the promise is resolved or rejected.\n *\n * This method *returns a new promise* which is resolved or rejected via the return value of the\n * `successCallback`, `errorCallback`. It also notifies via the return value of the\n * `notifyCallback` method. The promise can not be resolved or rejected from the notifyCallback\n * method.\n *\n * - `catch(errorCallback)` – shorthand for `promise.then(null, errorCallback)`\n *\n * Because `catch` is a reserved word in JavaScript and reserved keywords are not supported as\n * property names by ES3, you'll need to invoke the method like `promise['catch'](callback)` or\n * `promise.then(null, errorCallback)` to make your code IE8 and Android 2.x compatible.\n *\n * - `finally(callback)` – allows you to observe either the fulfillment or rejection of a promise,\n * but to do so without modifying the final value. This is useful to release resources or do some\n * clean-up that needs to be done whether the promise was rejected or resolved. See the [full\n * specification](https://github.com/kriskowal/q/wiki/API-Reference#promisefinallycallback) for\n * more information.\n *\n * Because `finally` is a reserved word in JavaScript and reserved keywords are not supported as\n * property names by ES3, you'll need to invoke the method like `promise['finally'](callback)` to\n * make your code IE8 and Android 2.x compatible.\n *\n * # Chaining promises\n *\n * Because calling the `then` method of a promise returns a new derived promise, it is easily\n * possible to create a chain of promises:\n *\n * ```js\n * promiseB = promiseA.then(function(result) {\n * return result + 1;\n * });\n *\n * // promiseB will be resolved immediately after promiseA is resolved and its value\n * // will be the result of promiseA incremented by 1\n * ```\n *\n * It is possible to create chains of any length and since a promise can be resolved with another\n * promise (which will defer its resolution further), it is possible to pause/defer resolution of\n * the promises at any point in the chain. This makes it possible to implement powerful APIs like\n * $http's response interceptors.\n *\n *\n * # Differences between Kris Kowal's Q and $q\n *\n * There are two main differences:\n *\n * - $q is integrated with the {@link ng.$rootScope.Scope} Scope model observation\n * mechanism in angular, which means faster propagation of resolution or rejection into your\n * models and avoiding unnecessary browser repaints, which would result in flickering UI.\n * - Q has many more features than $q, but that comes at a cost of bytes. $q is tiny, but contains\n * all the important functionality needed for common async tasks.\n *\n * # Testing\n *\n * ```js\n * it('should simulate promise', inject(function($q, $rootScope) {\n * var deferred = $q.defer();\n * var promise = deferred.promise;\n * var resolvedValue;\n *\n * promise.then(function(value) { resolvedValue = value; });\n * expect(resolvedValue).toBeUndefined();\n *\n * // Simulate resolving of promise\n * deferred.resolve(123);\n * // Note that the 'then' function does not get called synchronously.\n * // This is because we want the promise API to always be async, whether or not\n * // it got called synchronously or asynchronously.\n * expect(resolvedValue).toBeUndefined();\n *\n * // Propagate promise resolution to 'then' functions using $apply().\n * $rootScope.$apply();\n * expect(resolvedValue).toEqual(123);\n * }));\n * ```\n */\nfunction $QProvider() {\n\n this.$get = ['$rootScope', '$exceptionHandler', function($rootScope, $exceptionHandler) {\n return qFactory(function(callback) {\n $rootScope.$evalAsync(callback);\n }, $exceptionHandler);\n }];\n}\n\n\n/**\n * Constructs a promise manager.\n *\n * @param {function(Function)} nextTick Function for executing functions in the next turn.\n * @param {function(...*)} exceptionHandler Function into which unexpected exceptions are passed for\n * debugging purposes.\n * @returns {object} Promise manager.\n */\nfunction qFactory(nextTick, exceptionHandler) {\n\n /**\n * @ngdoc method\n * @name $q#defer\n * @kind function\n *\n * @description\n * Creates a `Deferred` object which represents a task which will finish in the future.\n *\n * @returns {Deferred} Returns a new instance of deferred.\n */\n var defer = function() {\n var pending = [],\n value, deferred;\n\n deferred = {\n\n resolve: function(val) {\n if (pending) {\n var callbacks = pending;\n pending = undefined;\n value = ref(val);\n\n if (callbacks.length) {\n nextTick(function() {\n var callback;\n for (var i = 0, ii = callbacks.length; i < ii; i++) {\n callback = callbacks[i];\n value.then(callback[0], callback[1], callback[2]);\n }\n });\n }\n }\n },\n\n\n reject: function(reason) {\n deferred.resolve(createInternalRejectedPromise(reason));\n },\n\n\n notify: function(progress) {\n if (pending) {\n var callbacks = pending;\n\n if (pending.length) {\n nextTick(function() {\n var callback;\n for (var i = 0, ii = callbacks.length; i < ii; i++) {\n callback = callbacks[i];\n callback[2](progress);\n }\n });\n }\n }\n },\n\n\n promise: {\n then: function(callback, errback, progressback) {\n var result = defer();\n\n var wrappedCallback = function(value) {\n try {\n result.resolve((isFunction(callback) ? callback : defaultCallback)(value));\n } catch(e) {\n result.reject(e);\n exceptionHandler(e);\n }\n };\n\n var wrappedErrback = function(reason) {\n try {\n result.resolve((isFunction(errback) ? errback : defaultErrback)(reason));\n } catch(e) {\n result.reject(e);\n exceptionHandler(e);\n }\n };\n\n var wrappedProgressback = function(progress) {\n try {\n result.notify((isFunction(progressback) ? progressback : defaultCallback)(progress));\n } catch(e) {\n exceptionHandler(e);\n }\n };\n\n if (pending) {\n pending.push([wrappedCallback, wrappedErrback, wrappedProgressback]);\n } else {\n value.then(wrappedCallback, wrappedErrback, wrappedProgressback);\n }\n\n return result.promise;\n },\n\n \"catch\": function(callback) {\n return this.then(null, callback);\n },\n\n \"finally\": function(callback) {\n\n function makePromise(value, resolved) {\n var result = defer();\n if (resolved) {\n result.resolve(value);\n } else {\n result.reject(value);\n }\n return result.promise;\n }\n\n function handleCallback(value, isResolved) {\n var callbackOutput = null;\n try {\n callbackOutput = (callback ||defaultCallback)();\n } catch(e) {\n return makePromise(e, false);\n }\n if (isPromiseLike(callbackOutput)) {\n return callbackOutput.then(function() {\n return makePromise(value, isResolved);\n }, function(error) {\n return makePromise(error, false);\n });\n } else {\n return makePromise(value, isResolved);\n }\n }\n\n return this.then(function(value) {\n return handleCallback(value, true);\n }, function(error) {\n return handleCallback(error, false);\n });\n }\n }\n };\n\n return deferred;\n };\n\n\n var ref = function(value) {\n if (isPromiseLike(value)) return value;\n return {\n then: function(callback) {\n var result = defer();\n nextTick(function() {\n result.resolve(callback(value));\n });\n return result.promise;\n }\n };\n };\n\n\n /**\n * @ngdoc method\n * @name $q#reject\n * @kind function\n *\n * @description\n * Creates a promise that is resolved as rejected with the specified `reason`. This api should be\n * used to forward rejection in a chain of promises. If you are dealing with the last promise in\n * a promise chain, you don't need to worry about it.\n *\n * When comparing deferreds/promises to the familiar behavior of try/catch/throw, think of\n * `reject` as the `throw` keyword in JavaScript. This also means that if you \"catch\" an error via\n * a promise error callback and you want to forward the error to the promise derived from the\n * current promise, you have to \"rethrow\" the error by returning a rejection constructed via\n * `reject`.\n *\n * ```js\n * promiseB = promiseA.then(function(result) {\n * // success: do something and resolve promiseB\n * // with the old or a new result\n * return result;\n * }, function(reason) {\n * // error: handle the error if possible and\n * // resolve promiseB with newPromiseOrValue,\n * // otherwise forward the rejection to promiseB\n * if (canHandle(reason)) {\n * // handle the error and recover\n * return newPromiseOrValue;\n * }\n * return $q.reject(reason);\n * });\n * ```\n *\n * @param {*} reason Constant, message, exception or an object representing the rejection reason.\n * @returns {Promise} Returns a promise that was already resolved as rejected with the `reason`.\n */\n var reject = function(reason) {\n var result = defer();\n result.reject(reason);\n return result.promise;\n };\n\n var createInternalRejectedPromise = function(reason) {\n return {\n then: function(callback, errback) {\n var result = defer();\n nextTick(function() {\n try {\n result.resolve((isFunction(errback) ? errback : defaultErrback)(reason));\n } catch(e) {\n result.reject(e);\n exceptionHandler(e);\n }\n });\n return result.promise;\n }\n };\n };\n\n\n /**\n * @ngdoc method\n * @name $q#when\n * @kind function\n *\n * @description\n * Wraps an object that might be a value or a (3rd party) then-able promise into a $q promise.\n * This is useful when you are dealing with an object that might or might not be a promise, or if\n * the promise comes from a source that can't be trusted.\n *\n * @param {*} value Value or a promise\n * @returns {Promise} Returns a promise of the passed value or promise\n */\n var when = function(value, callback, errback, progressback) {\n var result = defer(),\n done;\n\n var wrappedCallback = function(value) {\n try {\n return (isFunction(callback) ? callback : defaultCallback)(value);\n } catch (e) {\n exceptionHandler(e);\n return reject(e);\n }\n };\n\n var wrappedErrback = function(reason) {\n try {\n return (isFunction(errback) ? errback : defaultErrback)(reason);\n } catch (e) {\n exceptionHandler(e);\n return reject(e);\n }\n };\n\n var wrappedProgressback = function(progress) {\n try {\n return (isFunction(progressback) ? progressback : defaultCallback)(progress);\n } catch (e) {\n exceptionHandler(e);\n }\n };\n\n nextTick(function() {\n ref(value).then(function(value) {\n if (done) return;\n done = true;\n result.resolve(ref(value).then(wrappedCallback, wrappedErrback, wrappedProgressback));\n }, function(reason) {\n if (done) return;\n done = true;\n result.resolve(wrappedErrback(reason));\n }, function(progress) {\n if (done) return;\n result.notify(wrappedProgressback(progress));\n });\n });\n\n return result.promise;\n };\n\n\n function defaultCallback(value) {\n return value;\n }\n\n\n function defaultErrback(reason) {\n return reject(reason);\n }\n\n\n /**\n * @ngdoc method\n * @name $q#all\n * @kind function\n *\n * @description\n * Combines multiple promises into a single promise that is resolved when all of the input\n * promises are resolved.\n *\n * @param {Array.|Object.} promises An array or hash of promises.\n * @returns {Promise} Returns a single promise that will be resolved with an array/hash of values,\n * each value corresponding to the promise at the same index/key in the `promises` array/hash.\n * If any of the promises is resolved with a rejection, this resulting promise will be rejected\n * with the same rejection value.\n */\n function all(promises) {\n var deferred = defer(),\n counter = 0,\n results = isArray(promises) ? [] : {};\n\n forEach(promises, function(promise, key) {\n counter++;\n ref(promise).then(function(value) {\n if (results.hasOwnProperty(key)) return;\n results[key] = value;\n if (!(--counter)) deferred.resolve(results);\n }, function(reason) {\n if (results.hasOwnProperty(key)) return;\n deferred.reject(reason);\n });\n });\n\n if (counter === 0) {\n deferred.resolve(results);\n }\n\n return deferred.promise;\n }\n\n return {\n defer: defer,\n reject: reject,\n when: when,\n all: all\n };\n}\n\nfunction $$RAFProvider(){ //rAF\n this.$get = ['$window', '$timeout', function($window, $timeout) {\n var requestAnimationFrame = $window.requestAnimationFrame ||\n $window.webkitRequestAnimationFrame ||\n $window.mozRequestAnimationFrame;\n\n var cancelAnimationFrame = $window.cancelAnimationFrame ||\n $window.webkitCancelAnimationFrame ||\n $window.mozCancelAnimationFrame ||\n $window.webkitCancelRequestAnimationFrame;\n\n var rafSupported = !!requestAnimationFrame;\n var raf = rafSupported\n ? function(fn) {\n var id = requestAnimationFrame(fn);\n return function() {\n cancelAnimationFrame(id);\n };\n }\n : function(fn) {\n var timer = $timeout(fn, 16.66, false); // 1000 / 60 = 16.666\n return function() {\n $timeout.cancel(timer);\n };\n };\n\n raf.supported = rafSupported;\n\n return raf;\n }];\n}\n\n/**\n * DESIGN NOTES\n *\n * The design decisions behind the scope are heavily favored for speed and memory consumption.\n *\n * The typical use of scope is to watch the expressions, which most of the time return the same\n * value as last time so we optimize the operation.\n *\n * Closures construction is expensive in terms of speed as well as memory:\n * - No closures, instead use prototypical inheritance for API\n * - Internal state needs to be stored on scope directly, which means that private state is\n * exposed as $$____ properties\n *\n * Loop operations are optimized by using while(count--) { ... }\n * - this means that in order to keep the same order of execution as addition we have to add\n * items to the array at the beginning (unshift) instead of at the end (push)\n *\n * Child scopes are created and removed often\n * - Using an array would be slow since inserts in middle are expensive so we use linked list\n *\n * There are few watches then a lot of observers. This is why you don't want the observer to be\n * implemented in the same way as watch. Watch requires return of initialization function which\n * are expensive to construct.\n */\n\n\n/**\n * @ngdoc provider\n * @name $rootScopeProvider\n * @description\n *\n * Provider for the $rootScope service.\n */\n\n/**\n * @ngdoc method\n * @name $rootScopeProvider#digestTtl\n * @description\n *\n * Sets the number of `$digest` iterations the scope should attempt to execute before giving up and\n * assuming that the model is unstable.\n *\n * The current default is 10 iterations.\n *\n * In complex applications it's possible that the dependencies between `$watch`s will result in\n * several digest iterations. However if an application needs more than the default 10 digest\n * iterations for its model to stabilize then you should investigate what is causing the model to\n * continuously change during the digest.\n *\n * Increasing the TTL could have performance implications, so you should not change it without\n * proper justification.\n *\n * @param {number} limit The number of digest iterations.\n */\n\n\n/**\n * @ngdoc service\n * @name $rootScope\n * @description\n *\n * Every application has a single root {@link ng.$rootScope.Scope scope}.\n * All other scopes are descendant scopes of the root scope. Scopes provide separation\n * between the model and the view, via a mechanism for watching the model for changes.\n * They also provide an event emission/broadcast and subscription facility. See the\n * {@link guide/scope developer guide on scopes}.\n */\nfunction $RootScopeProvider(){\n var TTL = 10;\n var $rootScopeMinErr = minErr('$rootScope');\n var lastDirtyWatch = null;\n\n this.digestTtl = function(value) {\n if (arguments.length) {\n TTL = value;\n }\n return TTL;\n };\n\n this.$get = ['$injector', '$exceptionHandler', '$parse', '$browser',\n function( $injector, $exceptionHandler, $parse, $browser) {\n\n /**\n * @ngdoc type\n * @name $rootScope.Scope\n *\n * @description\n * A root scope can be retrieved using the {@link ng.$rootScope $rootScope} key from the\n * {@link auto.$injector $injector}. Child scopes are created using the\n * {@link ng.$rootScope.Scope#$new $new()} method. (Most scopes are created automatically when\n * compiled HTML template is executed.)\n *\n * Here is a simple scope snippet to show how you can interact with the scope.\n * ```html\n * \n * ```\n *\n * # Inheritance\n * A scope can inherit from a parent scope, as in this example:\n * ```js\n var parent = $rootScope;\n var child = parent.$new();\n\n parent.salutation = \"Hello\";\n child.name = \"World\";\n expect(child.salutation).toEqual('Hello');\n\n child.salutation = \"Welcome\";\n expect(child.salutation).toEqual('Welcome');\n expect(parent.salutation).toEqual('Hello');\n * ```\n *\n *\n * @param {Object.=} providers Map of service factory which need to be\n * provided for the current scope. Defaults to {@link ng}.\n * @param {Object.=} instanceCache Provides pre-instantiated services which should\n * append/override services provided by `providers`. This is handy\n * when unit-testing and having the need to override a default\n * service.\n * @returns {Object} Newly created scope.\n *\n */\n function Scope() {\n this.$id = nextUid();\n this.$$phase = this.$parent = this.$$watchers =\n this.$$nextSibling = this.$$prevSibling =\n this.$$childHead = this.$$childTail = null;\n this['this'] = this.$root = this;\n this.$$destroyed = false;\n this.$$asyncQueue = [];\n this.$$postDigestQueue = [];\n this.$$listeners = {};\n this.$$listenerCount = {};\n this.$$isolateBindings = {};\n }\n\n /**\n * @ngdoc property\n * @name $rootScope.Scope#$id\n *\n * @description\n * Unique scope ID (monotonically increasing) useful for debugging.\n */\n\n /**\n * @ngdoc property\n * @name $rootScope.Scope#$parent\n *\n * @description\n * Reference to the parent scope.\n */\n\n /**\n * @ngdoc property\n * @name $rootScope.Scope#$root\n *\n * @description\n * Reference to the root scope.\n */\n\n Scope.prototype = {\n constructor: Scope,\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$new\n * @kind function\n *\n * @description\n * Creates a new child {@link ng.$rootScope.Scope scope}.\n *\n * The parent scope will propagate the {@link ng.$rootScope.Scope#$digest $digest()} event.\n * The scope can be removed from the scope hierarchy using {@link ng.$rootScope.Scope#$destroy $destroy()}.\n *\n * {@link ng.$rootScope.Scope#$destroy $destroy()} must be called on a scope when it is\n * desired for the scope and its child scopes to be permanently detached from the parent and\n * thus stop participating in model change detection and listener notification by invoking.\n *\n * @param {boolean} isolate If true, then the scope does not prototypically inherit from the\n * parent scope. The scope is isolated, as it can not see parent scope properties.\n * When creating widgets, it is useful for the widget to not accidentally read parent\n * state.\n *\n * @returns {Object} The newly created child scope.\n *\n */\n $new: function(isolate) {\n var ChildScope,\n child;\n\n if (isolate) {\n child = new Scope();\n child.$root = this.$root;\n // ensure that there is just one async queue per $rootScope and its children\n child.$$asyncQueue = this.$$asyncQueue;\n child.$$postDigestQueue = this.$$postDigestQueue;\n } else {\n // Only create a child scope class if somebody asks for one,\n // but cache it to allow the VM to optimize lookups.\n if (!this.$$childScopeClass) {\n this.$$childScopeClass = function() {\n this.$$watchers = this.$$nextSibling =\n this.$$childHead = this.$$childTail = null;\n this.$$listeners = {};\n this.$$listenerCount = {};\n this.$id = nextUid();\n this.$$childScopeClass = null;\n };\n this.$$childScopeClass.prototype = this;\n }\n child = new this.$$childScopeClass();\n }\n child['this'] = child;\n child.$parent = this;\n child.$$prevSibling = this.$$childTail;\n if (this.$$childHead) {\n this.$$childTail.$$nextSibling = child;\n this.$$childTail = child;\n } else {\n this.$$childHead = this.$$childTail = child;\n }\n return child;\n },\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$watch\n * @kind function\n *\n * @description\n * Registers a `listener` callback to be executed whenever the `watchExpression` changes.\n *\n * - The `watchExpression` is called on every call to {@link ng.$rootScope.Scope#$digest\n * $digest()} and should return the value that will be watched. (Since\n * {@link ng.$rootScope.Scope#$digest $digest()} reruns when it detects changes the\n * `watchExpression` can execute multiple times per\n * {@link ng.$rootScope.Scope#$digest $digest()} and should be idempotent.)\n * - The `listener` is called only when the value from the current `watchExpression` and the\n * previous call to `watchExpression` are not equal (with the exception of the initial run,\n * see below). Inequality is determined according to reference inequality,\n * [strict comparison](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators)\n * via the `!==` Javascript operator, unless `objectEquality == true`\n * (see next point)\n * - When `objectEquality == true`, inequality of the `watchExpression` is determined\n * according to the {@link angular.equals} function. To save the value of the object for\n * later comparison, the {@link angular.copy} function is used. This therefore means that\n * watching complex objects will have adverse memory and performance implications.\n * - The watch `listener` may change the model, which may trigger other `listener`s to fire.\n * This is achieved by rerunning the watchers until no changes are detected. The rerun\n * iteration limit is 10 to prevent an infinite loop deadlock.\n *\n *\n * If you want to be notified whenever {@link ng.$rootScope.Scope#$digest $digest} is called,\n * you can register a `watchExpression` function with no `listener`. (Since `watchExpression`\n * can execute multiple times per {@link ng.$rootScope.Scope#$digest $digest} cycle when a\n * change is detected, be prepared for multiple calls to your listener.)\n *\n * After a watcher is registered with the scope, the `listener` fn is called asynchronously\n * (via {@link ng.$rootScope.Scope#$evalAsync $evalAsync}) to initialize the\n * watcher. In rare cases, this is undesirable because the listener is called when the result\n * of `watchExpression` didn't change. To detect this scenario within the `listener` fn, you\n * can compare the `newVal` and `oldVal`. If these two values are identical (`===`) then the\n * listener was called due to initialization.\n *\n * The example below contains an illustration of using a function as your $watch listener\n *\n *\n * # Example\n * ```js\n // let's assume that scope was dependency injected as the $rootScope\n var scope = $rootScope;\n scope.name = 'misko';\n scope.counter = 0;\n\n expect(scope.counter).toEqual(0);\n scope.$watch('name', function(newValue, oldValue) {\n scope.counter = scope.counter + 1;\n });\n expect(scope.counter).toEqual(0);\n\n scope.$digest();\n // the listener is always called during the first $digest loop after it was registered\n expect(scope.counter).toEqual(1);\n\n scope.$digest();\n // but now it will not be called unless the value changes\n expect(scope.counter).toEqual(1);\n\n scope.name = 'adam';\n scope.$digest();\n expect(scope.counter).toEqual(2);\n\n\n\n // Using a listener function\n var food;\n scope.foodCounter = 0;\n expect(scope.foodCounter).toEqual(0);\n scope.$watch(\n // This is the listener function\n function() { return food; },\n // This is the change handler\n function(newValue, oldValue) {\n if ( newValue !== oldValue ) {\n // Only increment the counter if the value changed\n scope.foodCounter = scope.foodCounter + 1;\n }\n }\n );\n // No digest has been run so the counter will be zero\n expect(scope.foodCounter).toEqual(0);\n\n // Run the digest but since food has not changed count will still be zero\n scope.$digest();\n expect(scope.foodCounter).toEqual(0);\n\n // Update food and run digest. Now the counter will increment\n food = 'cheeseburger';\n scope.$digest();\n expect(scope.foodCounter).toEqual(1);\n\n * ```\n *\n *\n *\n * @param {(function()|string)} watchExpression Expression that is evaluated on each\n * {@link ng.$rootScope.Scope#$digest $digest} cycle. A change in the return value triggers\n * a call to the `listener`.\n *\n * - `string`: Evaluated as {@link guide/expression expression}\n * - `function(scope)`: called with current `scope` as a parameter.\n * @param {(function()|string)=} listener Callback called whenever the return value of\n * the `watchExpression` changes.\n *\n * - `string`: Evaluated as {@link guide/expression expression}\n * - `function(newValue, oldValue, scope)`: called with current and previous values as\n * parameters.\n *\n * @param {boolean=} objectEquality Compare for object equality using {@link angular.equals} instead of\n * comparing for reference equality.\n * @returns {function()} Returns a deregistration function for this listener.\n */\n $watch: function(watchExp, listener, objectEquality) {\n var scope = this,\n get = compileToFn(watchExp, 'watch'),\n array = scope.$$watchers,\n watcher = {\n fn: listener,\n last: initWatchVal,\n get: get,\n exp: watchExp,\n eq: !!objectEquality\n };\n\n lastDirtyWatch = null;\n\n // in the case user pass string, we need to compile it, do we really need this ?\n if (!isFunction(listener)) {\n var listenFn = compileToFn(listener || noop, 'listener');\n watcher.fn = function(newVal, oldVal, scope) {listenFn(scope);};\n }\n\n if (typeof watchExp == 'string' && get.constant) {\n var originalFn = watcher.fn;\n watcher.fn = function(newVal, oldVal, scope) {\n originalFn.call(this, newVal, oldVal, scope);\n arrayRemove(array, watcher);\n };\n }\n\n if (!array) {\n array = scope.$$watchers = [];\n }\n // we use unshift since we use a while loop in $digest for speed.\n // the while loop reads in reverse order.\n array.unshift(watcher);\n\n return function deregisterWatch() {\n arrayRemove(array, watcher);\n lastDirtyWatch = null;\n };\n },\n\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$watchCollection\n * @kind function\n *\n * @description\n * Shallow watches the properties of an object and fires whenever any of the properties change\n * (for arrays, this implies watching the array items; for object maps, this implies watching\n * the properties). If a change is detected, the `listener` callback is fired.\n *\n * - The `obj` collection is observed via standard $watch operation and is examined on every\n * call to $digest() to see if any items have been added, removed, or moved.\n * - The `listener` is called whenever anything within the `obj` has changed. Examples include\n * adding, removing, and moving items belonging to an object or array.\n *\n *\n * # Example\n * ```js\n $scope.names = ['igor', 'matias', 'misko', 'james'];\n $scope.dataCount = 4;\n\n $scope.$watchCollection('names', function(newNames, oldNames) {\n $scope.dataCount = newNames.length;\n });\n\n expect($scope.dataCount).toEqual(4);\n $scope.$digest();\n\n //still at 4 ... no changes\n expect($scope.dataCount).toEqual(4);\n\n $scope.names.pop();\n $scope.$digest();\n\n //now there's been a change\n expect($scope.dataCount).toEqual(3);\n * ```\n *\n *\n * @param {string|function(scope)} obj Evaluated as {@link guide/expression expression}. The\n * expression value should evaluate to an object or an array which is observed on each\n * {@link ng.$rootScope.Scope#$digest $digest} cycle. Any shallow change within the\n * collection will trigger a call to the `listener`.\n *\n * @param {function(newCollection, oldCollection, scope)} listener a callback function called\n * when a change is detected.\n * - The `newCollection` object is the newly modified data obtained from the `obj` expression\n * - The `oldCollection` object is a copy of the former collection data.\n * Due to performance considerations, the`oldCollection` value is computed only if the\n * `listener` function declares two or more arguments.\n * - The `scope` argument refers to the current scope.\n *\n * @returns {function()} Returns a de-registration function for this listener. When the\n * de-registration function is executed, the internal watch operation is terminated.\n */\n $watchCollection: function(obj, listener) {\n var self = this;\n // the current value, updated on each dirty-check run\n var newValue;\n // a shallow copy of the newValue from the last dirty-check run,\n // updated to match newValue during dirty-check run\n var oldValue;\n // a shallow copy of the newValue from when the last change happened\n var veryOldValue;\n // only track veryOldValue if the listener is asking for it\n var trackVeryOldValue = (listener.length > 1);\n var changeDetected = 0;\n var objGetter = $parse(obj);\n var internalArray = [];\n var internalObject = {};\n var initRun = true;\n var oldLength = 0;\n\n function $watchCollectionWatch() {\n newValue = objGetter(self);\n var newLength, key, bothNaN;\n\n if (!isObject(newValue)) { // if primitive\n if (oldValue !== newValue) {\n oldValue = newValue;\n changeDetected++;\n }\n } else if (isArrayLike(newValue)) {\n if (oldValue !== internalArray) {\n // we are transitioning from something which was not an array into array.\n oldValue = internalArray;\n oldLength = oldValue.length = 0;\n changeDetected++;\n }\n\n newLength = newValue.length;\n\n if (oldLength !== newLength) {\n // if lengths do not match we need to trigger change notification\n changeDetected++;\n oldValue.length = oldLength = newLength;\n }\n // copy the items to oldValue and look for changes.\n for (var i = 0; i < newLength; i++) {\n bothNaN = (oldValue[i] !== oldValue[i]) &&\n (newValue[i] !== newValue[i]);\n if (!bothNaN && (oldValue[i] !== newValue[i])) {\n changeDetected++;\n oldValue[i] = newValue[i];\n }\n }\n } else {\n if (oldValue !== internalObject) {\n // we are transitioning from something which was not an object into object.\n oldValue = internalObject = {};\n oldLength = 0;\n changeDetected++;\n }\n // copy the items to oldValue and look for changes.\n newLength = 0;\n for (key in newValue) {\n if (newValue.hasOwnProperty(key)) {\n newLength++;\n if (oldValue.hasOwnProperty(key)) {\n bothNaN = (oldValue[key] !== oldValue[key]) &&\n (newValue[key] !== newValue[key]);\n if (!bothNaN && (oldValue[key] !== newValue[key])) {\n changeDetected++;\n oldValue[key] = newValue[key];\n }\n } else {\n oldLength++;\n oldValue[key] = newValue[key];\n changeDetected++;\n }\n }\n }\n if (oldLength > newLength) {\n // we used to have more keys, need to find them and destroy them.\n changeDetected++;\n for(key in oldValue) {\n if (oldValue.hasOwnProperty(key) && !newValue.hasOwnProperty(key)) {\n oldLength--;\n delete oldValue[key];\n }\n }\n }\n }\n return changeDetected;\n }\n\n function $watchCollectionAction() {\n if (initRun) {\n initRun = false;\n listener(newValue, newValue, self);\n } else {\n listener(newValue, veryOldValue, self);\n }\n\n // make a copy for the next time a collection is changed\n if (trackVeryOldValue) {\n if (!isObject(newValue)) {\n //primitive\n veryOldValue = newValue;\n } else if (isArrayLike(newValue)) {\n veryOldValue = new Array(newValue.length);\n for (var i = 0; i < newValue.length; i++) {\n veryOldValue[i] = newValue[i];\n }\n } else { // if object\n veryOldValue = {};\n for (var key in newValue) {\n if (hasOwnProperty.call(newValue, key)) {\n veryOldValue[key] = newValue[key];\n }\n }\n }\n }\n }\n\n return this.$watch($watchCollectionWatch, $watchCollectionAction);\n },\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$digest\n * @kind function\n *\n * @description\n * Processes all of the {@link ng.$rootScope.Scope#$watch watchers} of the current scope and\n * its children. Because a {@link ng.$rootScope.Scope#$watch watcher}'s listener can change\n * the model, the `$digest()` keeps calling the {@link ng.$rootScope.Scope#$watch watchers}\n * until no more listeners are firing. This means that it is possible to get into an infinite\n * loop. This function will throw `'Maximum iteration limit exceeded.'` if the number of\n * iterations exceeds 10.\n *\n * Usually, you don't call `$digest()` directly in\n * {@link ng.directive:ngController controllers} or in\n * {@link ng.$compileProvider#directive directives}.\n * Instead, you should call {@link ng.$rootScope.Scope#$apply $apply()} (typically from within\n * a {@link ng.$compileProvider#directive directives}), which will force a `$digest()`.\n *\n * If you want to be notified whenever `$digest()` is called,\n * you can register a `watchExpression` function with\n * {@link ng.$rootScope.Scope#$watch $watch()} with no `listener`.\n *\n * In unit tests, you may need to call `$digest()` to simulate the scope life cycle.\n *\n * # Example\n * ```js\n var scope = ...;\n scope.name = 'misko';\n scope.counter = 0;\n\n expect(scope.counter).toEqual(0);\n scope.$watch('name', function(newValue, oldValue) {\n scope.counter = scope.counter + 1;\n });\n expect(scope.counter).toEqual(0);\n\n scope.$digest();\n // the listener is always called during the first $digest loop after it was registered\n expect(scope.counter).toEqual(1);\n\n scope.$digest();\n // but now it will not be called unless the value changes\n expect(scope.counter).toEqual(1);\n\n scope.name = 'adam';\n scope.$digest();\n expect(scope.counter).toEqual(2);\n * ```\n *\n */\n $digest: function() {\n var watch, value, last,\n watchers,\n asyncQueue = this.$$asyncQueue,\n postDigestQueue = this.$$postDigestQueue,\n length,\n dirty, ttl = TTL,\n next, current, target = this,\n watchLog = [],\n logIdx, logMsg, asyncTask;\n\n beginPhase('$digest');\n // Check for changes to browser url that happened in sync before the call to $digest\n $browser.$$checkUrlChange();\n\n lastDirtyWatch = null;\n\n do { // \"while dirty\" loop\n dirty = false;\n current = target;\n\n while(asyncQueue.length) {\n try {\n asyncTask = asyncQueue.shift();\n asyncTask.scope.$eval(asyncTask.expression);\n } catch (e) {\n clearPhase();\n $exceptionHandler(e);\n }\n lastDirtyWatch = null;\n }\n\n traverseScopesLoop:\n do { // \"traverse the scopes\" loop\n if ((watchers = current.$$watchers)) {\n // process our watches\n length = watchers.length;\n while (length--) {\n try {\n watch = watchers[length];\n // Most common watches are on primitives, in which case we can short\n // circuit it with === operator, only when === fails do we use .equals\n if (watch) {\n if ((value = watch.get(current)) !== (last = watch.last) &&\n !(watch.eq\n ? equals(value, last)\n : (typeof value === 'number' && typeof last === 'number'\n && isNaN(value) && isNaN(last)))) {\n dirty = true;\n lastDirtyWatch = watch;\n watch.last = watch.eq ? copy(value, null) : value;\n watch.fn(value, ((last === initWatchVal) ? value : last), current);\n if (ttl < 5) {\n logIdx = 4 - ttl;\n if (!watchLog[logIdx]) watchLog[logIdx] = [];\n logMsg = (isFunction(watch.exp))\n ? 'fn: ' + (watch.exp.name || watch.exp.toString())\n : watch.exp;\n logMsg += '; newVal: ' + toJson(value) + '; oldVal: ' + toJson(last);\n watchLog[logIdx].push(logMsg);\n }\n } else if (watch === lastDirtyWatch) {\n // If the most recently dirty watcher is now clean, short circuit since the remaining watchers\n // have already been tested.\n dirty = false;\n break traverseScopesLoop;\n }\n }\n } catch (e) {\n clearPhase();\n $exceptionHandler(e);\n }\n }\n }\n\n // Insanity Warning: scope depth-first traversal\n // yes, this code is a bit crazy, but it works and we have tests to prove it!\n // this piece should be kept in sync with the traversal in $broadcast\n if (!(next = (current.$$childHead ||\n (current !== target && current.$$nextSibling)))) {\n while(current !== target && !(next = current.$$nextSibling)) {\n current = current.$parent;\n }\n }\n } while ((current = next));\n\n // `break traverseScopesLoop;` takes us to here\n\n if((dirty || asyncQueue.length) && !(ttl--)) {\n clearPhase();\n throw $rootScopeMinErr('infdig',\n '{0} $digest() iterations reached. Aborting!\\n' +\n 'Watchers fired in the last 5 iterations: {1}',\n TTL, toJson(watchLog));\n }\n\n } while (dirty || asyncQueue.length);\n\n clearPhase();\n\n while(postDigestQueue.length) {\n try {\n postDigestQueue.shift()();\n } catch (e) {\n $exceptionHandler(e);\n }\n }\n },\n\n\n /**\n * @ngdoc event\n * @name $rootScope.Scope#$destroy\n * @eventType broadcast on scope being destroyed\n *\n * @description\n * Broadcasted when a scope and its children are being destroyed.\n *\n * Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to\n * clean up DOM bindings before an element is removed from the DOM.\n */\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$destroy\n * @kind function\n *\n * @description\n * Removes the current scope (and all of its children) from the parent scope. Removal implies\n * that calls to {@link ng.$rootScope.Scope#$digest $digest()} will no longer\n * propagate to the current scope and its children. Removal also implies that the current\n * scope is eligible for garbage collection.\n *\n * The `$destroy()` is usually used by directives such as\n * {@link ng.directive:ngRepeat ngRepeat} for managing the\n * unrolling of the loop.\n *\n * Just before a scope is destroyed, a `$destroy` event is broadcasted on this scope.\n * Application code can register a `$destroy` event handler that will give it a chance to\n * perform any necessary cleanup.\n *\n * Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to\n * clean up DOM bindings before an element is removed from the DOM.\n */\n $destroy: function() {\n // we can't destroy the root scope or a scope that has been already destroyed\n if (this.$$destroyed) return;\n var parent = this.$parent;\n\n this.$broadcast('$destroy');\n this.$$destroyed = true;\n if (this === $rootScope) return;\n\n forEach(this.$$listenerCount, bind(null, decrementListenerCount, this));\n\n // sever all the references to parent scopes (after this cleanup, the current scope should\n // not be retained by any of our references and should be eligible for garbage collection)\n if (parent.$$childHead == this) parent.$$childHead = this.$$nextSibling;\n if (parent.$$childTail == this) parent.$$childTail = this.$$prevSibling;\n if (this.$$prevSibling) this.$$prevSibling.$$nextSibling = this.$$nextSibling;\n if (this.$$nextSibling) this.$$nextSibling.$$prevSibling = this.$$prevSibling;\n\n\n // All of the code below is bogus code that works around V8's memory leak via optimized code\n // and inline caches.\n //\n // see:\n // - https://code.google.com/p/v8/issues/detail?id=2073#c26\n // - https://github.com/angular/angular.js/issues/6794#issuecomment-38648909\n // - https://github.com/angular/angular.js/issues/1313#issuecomment-10378451\n\n this.$parent = this.$$nextSibling = this.$$prevSibling = this.$$childHead =\n this.$$childTail = this.$root = null;\n\n // don't reset these to null in case some async task tries to register a listener/watch/task\n this.$$listeners = {};\n this.$$watchers = this.$$asyncQueue = this.$$postDigestQueue = [];\n\n // prevent NPEs since these methods have references to properties we nulled out\n this.$destroy = this.$digest = this.$apply = noop;\n this.$on = this.$watch = function() { return noop; };\n },\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$eval\n * @kind function\n *\n * @description\n * Executes the `expression` on the current scope and returns the result. Any exceptions in\n * the expression are propagated (uncaught). This is useful when evaluating Angular\n * expressions.\n *\n * # Example\n * ```js\n var scope = ng.$rootScope.Scope();\n scope.a = 1;\n scope.b = 2;\n\n expect(scope.$eval('a+b')).toEqual(3);\n expect(scope.$eval(function(scope){ return scope.a + scope.b; })).toEqual(3);\n * ```\n *\n * @param {(string|function())=} expression An angular expression to be executed.\n *\n * - `string`: execute using the rules as defined in {@link guide/expression expression}.\n * - `function(scope)`: execute the function with the current `scope` parameter.\n *\n * @param {(object)=} locals Local variables object, useful for overriding values in scope.\n * @returns {*} The result of evaluating the expression.\n */\n $eval: function(expr, locals) {\n return $parse(expr)(this, locals);\n },\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$evalAsync\n * @kind function\n *\n * @description\n * Executes the expression on the current scope at a later point in time.\n *\n * The `$evalAsync` makes no guarantees as to when the `expression` will be executed, only\n * that:\n *\n * - it will execute after the function that scheduled the evaluation (preferably before DOM\n * rendering).\n * - at least one {@link ng.$rootScope.Scope#$digest $digest cycle} will be performed after\n * `expression` execution.\n *\n * Any exceptions from the execution of the expression are forwarded to the\n * {@link ng.$exceptionHandler $exceptionHandler} service.\n *\n * __Note:__ if this function is called outside of a `$digest` cycle, a new `$digest` cycle\n * will be scheduled. However, it is encouraged to always call code that changes the model\n * from within an `$apply` call. That includes code evaluated via `$evalAsync`.\n *\n * @param {(string|function())=} expression An angular expression to be executed.\n *\n * - `string`: execute using the rules as defined in {@link guide/expression expression}.\n * - `function(scope)`: execute the function with the current `scope` parameter.\n *\n */\n $evalAsync: function(expr) {\n // if we are outside of an $digest loop and this is the first time we are scheduling async\n // task also schedule async auto-flush\n if (!$rootScope.$$phase && !$rootScope.$$asyncQueue.length) {\n $browser.defer(function() {\n if ($rootScope.$$asyncQueue.length) {\n $rootScope.$digest();\n }\n });\n }\n\n this.$$asyncQueue.push({scope: this, expression: expr});\n },\n\n $$postDigest : function(fn) {\n this.$$postDigestQueue.push(fn);\n },\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$apply\n * @kind function\n *\n * @description\n * `$apply()` is used to execute an expression in angular from outside of the angular\n * framework. (For example from browser DOM events, setTimeout, XHR or third party libraries).\n * Because we are calling into the angular framework we need to perform proper scope life\n * cycle of {@link ng.$exceptionHandler exception handling},\n * {@link ng.$rootScope.Scope#$digest executing watches}.\n *\n * ## Life cycle\n *\n * # Pseudo-Code of `$apply()`\n * ```js\n function $apply(expr) {\n try {\n return $eval(expr);\n } catch (e) {\n $exceptionHandler(e);\n } finally {\n $root.$digest();\n }\n }\n * ```\n *\n *\n * Scope's `$apply()` method transitions through the following stages:\n *\n * 1. The {@link guide/expression expression} is executed using the\n * {@link ng.$rootScope.Scope#$eval $eval()} method.\n * 2. Any exceptions from the execution of the expression are forwarded to the\n * {@link ng.$exceptionHandler $exceptionHandler} service.\n * 3. The {@link ng.$rootScope.Scope#$watch watch} listeners are fired immediately after the\n * expression was executed using the {@link ng.$rootScope.Scope#$digest $digest()} method.\n *\n *\n * @param {(string|function())=} exp An angular expression to be executed.\n *\n * - `string`: execute using the rules as defined in {@link guide/expression expression}.\n * - `function(scope)`: execute the function with current `scope` parameter.\n *\n * @returns {*} The result of evaluating the expression.\n */\n $apply: function(expr) {\n try {\n beginPhase('$apply');\n return this.$eval(expr);\n } catch (e) {\n $exceptionHandler(e);\n } finally {\n clearPhase();\n try {\n $rootScope.$digest();\n } catch (e) {\n $exceptionHandler(e);\n throw e;\n }\n }\n },\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$on\n * @kind function\n *\n * @description\n * Listens on events of a given type. See {@link ng.$rootScope.Scope#$emit $emit} for\n * discussion of event life cycle.\n *\n * The event listener function format is: `function(event, args...)`. The `event` object\n * passed into the listener has the following attributes:\n *\n * - `targetScope` - `{Scope}`: the scope on which the event was `$emit`-ed or\n * `$broadcast`-ed.\n * - `currentScope` - `{Scope}`: the current scope which is handling the event.\n * - `name` - `{string}`: name of the event.\n * - `stopPropagation` - `{function=}`: calling `stopPropagation` function will cancel\n * further event propagation (available only for events that were `$emit`-ed).\n * - `preventDefault` - `{function}`: calling `preventDefault` sets `defaultPrevented` flag\n * to true.\n * - `defaultPrevented` - `{boolean}`: true if `preventDefault` was called.\n *\n * @param {string} name Event name to listen on.\n * @param {function(event, ...args)} listener Function to call when the event is emitted.\n * @returns {function()} Returns a deregistration function for this listener.\n */\n $on: function(name, listener) {\n var namedListeners = this.$$listeners[name];\n if (!namedListeners) {\n this.$$listeners[name] = namedListeners = [];\n }\n namedListeners.push(listener);\n\n var current = this;\n do {\n if (!current.$$listenerCount[name]) {\n current.$$listenerCount[name] = 0;\n }\n current.$$listenerCount[name]++;\n } while ((current = current.$parent));\n\n var self = this;\n return function() {\n var indexOfListener = indexOf(namedListeners, listener);\n if (indexOfListener !== -1) {\n namedListeners[indexOfListener] = null;\n decrementListenerCount(self, 1, name);\n }\n };\n },\n\n\n /**\n * @ngdoc method\n * @name $rootScope.Scope#$emit\n * @kind function\n *\n * @description\n * Dispatches an event `name` upwards through the scope hierarchy notifying the\n * registered {@link ng.$rootScope.Scope#$on} listeners.\n *\n * The event life cycle starts at the scope on which `$emit` was called. All\n * {@link ng.$rootScope.Scope#$on listeners} listening for `name` event on this scope get\n * notified. Afterwards, the event traverses upwards toward the root scope and calls all\n * registered listeners along the way. The event will stop propagating if one of the listeners\n * cancels it.\n *\n * Any exception emitted from the {@link ng.$rootScope.Scope#$on listeners} will be passed\n * onto the {@link ng.$exceptionHandler $exceptionHandler} service.\n *\n * @param {string} name Event name to emit.\n * @param {...*} args Optional one or more arguments which will be passed onto the event listeners.\n * @return {Object} Event object (see {@link ng.$rootScope.Scope#$on}).\n */\n $emit: function(name, args) {\n var empty = [],\n namedListeners,\n scope = this,\n stopPropagation = false,\n event = {\n name: name,\n targetScope: scope,\n stopPropagation: function() {stopPropagation = true;},\n preventDefault: function() {\n event.defaultPrevented = true;\n },\n defaultPrevented: false\n },\n listenerArgs = concat([event], arguments, 1),\n i, length;\n\n do {\n namedListeners = scope.$$listeners[name] || empty;\n event.currentScope = scope;\n for (i=0, length=namedListeners.length; i= 8 ) {\n normalizedVal = urlResolve(uri).href;\n if (normalizedVal !== '' && !normalizedVal.match(regex)) {\n return 'unsafe:'+normalizedVal;\n }\n }\n return uri;\n };\n };\n}\n\nvar $sceMinErr = minErr('$sce');\n\nvar SCE_CONTEXTS = {\n HTML: 'html',\n CSS: 'css',\n URL: 'url',\n // RESOURCE_URL is a subtype of URL used in contexts where a privileged resource is sourced from a\n // url. (e.g. ng-include, script src, templateUrl)\n RESOURCE_URL: 'resourceUrl',\n JS: 'js'\n};\n\n// Helper functions follow.\n\n// Copied from:\n// http://docs.closure-library.googlecode.com/git/closure_goog_string_string.js.source.html#line962\n// Prereq: s is a string.\nfunction escapeForRegexp(s) {\n return s.replace(/([-()\\[\\]{}+?*.$\\^|,:# -1) {\n throw $sceMinErr('iwcard',\n 'Illegal sequence *** in string matcher. String: {0}', matcher);\n }\n matcher = escapeForRegexp(matcher).\n replace('\\\\*\\\\*', '.*').\n replace('\\\\*', '[^:/.?&;]*');\n return new RegExp('^' + matcher + '$');\n } else if (isRegExp(matcher)) {\n // The only other type of matcher allowed is a Regexp.\n // Match entire URL / disallow partial matches.\n // Flags are reset (i.e. no global, ignoreCase or multiline)\n return new RegExp('^' + matcher.source + '$');\n } else {\n throw $sceMinErr('imatcher',\n 'Matchers may only be \"self\", string patterns or RegExp objects');\n }\n}\n\n\nfunction adjustMatchers(matchers) {\n var adjustedMatchers = [];\n if (isDefined(matchers)) {\n forEach(matchers, function(matcher) {\n adjustedMatchers.push(adjustMatcher(matcher));\n });\n }\n return adjustedMatchers;\n}\n\n\n/**\n * @ngdoc service\n * @name $sceDelegate\n * @kind function\n *\n * @description\n *\n * `$sceDelegate` is a service that is used by the `$sce` service to provide {@link ng.$sce Strict\n * Contextual Escaping (SCE)} services to AngularJS.\n *\n * Typically, you would configure or override the {@link ng.$sceDelegate $sceDelegate} instead of\n * the `$sce` service to customize the way Strict Contextual Escaping works in AngularJS. This is\n * because, while the `$sce` provides numerous shorthand methods, etc., you really only need to\n * override 3 core functions (`trustAs`, `getTrusted` and `valueOf`) to replace the way things\n * work because `$sce` delegates to `$sceDelegate` for these operations.\n *\n * Refer {@link ng.$sceDelegateProvider $sceDelegateProvider} to configure this service.\n *\n * The default instance of `$sceDelegate` should work out of the box with little pain. While you\n * can override it completely to change the behavior of `$sce`, the common case would\n * involve configuring the {@link ng.$sceDelegateProvider $sceDelegateProvider} instead by setting\n * your own whitelists and blacklists for trusting URLs used for loading AngularJS resources such as\n * templates. Refer {@link ng.$sceDelegateProvider#resourceUrlWhitelist\n * $sceDelegateProvider.resourceUrlWhitelist} and {@link\n * ng.$sceDelegateProvider#resourceUrlBlacklist $sceDelegateProvider.resourceUrlBlacklist}\n */\n\n/**\n * @ngdoc provider\n * @name $sceDelegateProvider\n * @description\n *\n * The `$sceDelegateProvider` provider allows developers to configure the {@link ng.$sceDelegate\n * $sceDelegate} service. This allows one to get/set the whitelists and blacklists used to ensure\n * that the URLs used for sourcing Angular templates are safe. Refer {@link\n * ng.$sceDelegateProvider#resourceUrlWhitelist $sceDelegateProvider.resourceUrlWhitelist} and\n * {@link ng.$sceDelegateProvider#resourceUrlBlacklist $sceDelegateProvider.resourceUrlBlacklist}\n *\n * For the general details about this service in Angular, read the main page for {@link ng.$sce\n * Strict Contextual Escaping (SCE)}.\n *\n * **Example**: Consider the following case. \n *\n * - your app is hosted at url `http://myapp.example.com/`\n * - but some of your templates are hosted on other domains you control such as\n * `http://srv01.assets.example.com/`,  `http://srv02.assets.example.com/`, etc.\n * - and you have an open redirect at `http://myapp.example.com/clickThru?...`.\n *\n * Here is what a secure configuration for this scenario might look like:\n *\n * ```\n * angular.module('myApp', []).config(function($sceDelegateProvider) {\n * $sceDelegateProvider.resourceUrlWhitelist([\n * // Allow same origin resource loads.\n * 'self',\n * // Allow loading from our assets domain. Notice the difference between * and **.\n * 'http://srv*.assets.example.com/**'\n * ]);\n *\n * // The blacklist overrides the whitelist so the open redirect here is blocked.\n * $sceDelegateProvider.resourceUrlBlacklist([\n * 'http://myapp.example.com/clickThru**'\n * ]);\n * });\n * ```\n */\n\nfunction $SceDelegateProvider() {\n this.SCE_CONTEXTS = SCE_CONTEXTS;\n\n // Resource URLs can also be trusted by policy.\n var resourceUrlWhitelist = ['self'],\n resourceUrlBlacklist = [];\n\n /**\n * @ngdoc method\n * @name $sceDelegateProvider#resourceUrlWhitelist\n * @kind function\n *\n * @param {Array=} whitelist When provided, replaces the resourceUrlWhitelist with the value\n * provided. This must be an array or null. A snapshot of this array is used so further\n * changes to the array are ignored.\n *\n * Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items\n * allowed in this array.\n *\n * Note: **an empty whitelist array will block all URLs**!\n *\n * @return {Array} the currently set whitelist array.\n *\n * The **default value** when no whitelist has been explicitly set is `['self']` allowing only\n * same origin resource requests.\n *\n * @description\n * Sets/Gets the whitelist of trusted resource URLs.\n */\n this.resourceUrlWhitelist = function (value) {\n if (arguments.length) {\n resourceUrlWhitelist = adjustMatchers(value);\n }\n return resourceUrlWhitelist;\n };\n\n /**\n * @ngdoc method\n * @name $sceDelegateProvider#resourceUrlBlacklist\n * @kind function\n *\n * @param {Array=} blacklist When provided, replaces the resourceUrlBlacklist with the value\n * provided. This must be an array or null. A snapshot of this array is used so further\n * changes to the array are ignored.\n *\n * Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items\n * allowed in this array.\n *\n * The typical usage for the blacklist is to **block\n * [open redirects](http://cwe.mitre.org/data/definitions/601.html)** served by your domain as\n * these would otherwise be trusted but actually return content from the redirected domain.\n *\n * Finally, **the blacklist overrides the whitelist** and has the final say.\n *\n * @return {Array} the currently set blacklist array.\n *\n * The **default value** when no whitelist has been explicitly set is the empty array (i.e. there\n * is no blacklist.)\n *\n * @description\n * Sets/Gets the blacklist of trusted resource URLs.\n */\n\n this.resourceUrlBlacklist = function (value) {\n if (arguments.length) {\n resourceUrlBlacklist = adjustMatchers(value);\n }\n return resourceUrlBlacklist;\n };\n\n this.$get = ['$injector', function($injector) {\n\n var htmlSanitizer = function htmlSanitizer(html) {\n throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.');\n };\n\n if ($injector.has('$sanitize')) {\n htmlSanitizer = $injector.get('$sanitize');\n }\n\n\n function matchUrl(matcher, parsedUrl) {\n if (matcher === 'self') {\n return urlIsSameOrigin(parsedUrl);\n } else {\n // definitely a regex. See adjustMatchers()\n return !!matcher.exec(parsedUrl.href);\n }\n }\n\n function isResourceUrlAllowedByPolicy(url) {\n var parsedUrl = urlResolve(url.toString());\n var i, n, allowed = false;\n // Ensure that at least one item from the whitelist allows this url.\n for (i = 0, n = resourceUrlWhitelist.length; i < n; i++) {\n if (matchUrl(resourceUrlWhitelist[i], parsedUrl)) {\n allowed = true;\n break;\n }\n }\n if (allowed) {\n // Ensure that no item from the blacklist blocked this url.\n for (i = 0, n = resourceUrlBlacklist.length; i < n; i++) {\n if (matchUrl(resourceUrlBlacklist[i], parsedUrl)) {\n allowed = false;\n break;\n }\n }\n }\n return allowed;\n }\n\n function generateHolderType(Base) {\n var holderType = function TrustedValueHolderType(trustedValue) {\n this.$$unwrapTrustedValue = function() {\n return trustedValue;\n };\n };\n if (Base) {\n holderType.prototype = new Base();\n }\n holderType.prototype.valueOf = function sceValueOf() {\n return this.$$unwrapTrustedValue();\n };\n holderType.prototype.toString = function sceToString() {\n return this.$$unwrapTrustedValue().toString();\n };\n return holderType;\n }\n\n var trustedValueHolderBase = generateHolderType(),\n byType = {};\n\n byType[SCE_CONTEXTS.HTML] = generateHolderType(trustedValueHolderBase);\n byType[SCE_CONTEXTS.CSS] = generateHolderType(trustedValueHolderBase);\n byType[SCE_CONTEXTS.URL] = generateHolderType(trustedValueHolderBase);\n byType[SCE_CONTEXTS.JS] = generateHolderType(trustedValueHolderBase);\n byType[SCE_CONTEXTS.RESOURCE_URL] = generateHolderType(byType[SCE_CONTEXTS.URL]);\n\n /**\n * @ngdoc method\n * @name $sceDelegate#trustAs\n *\n * @description\n * Returns an object that is trusted by angular for use in specified strict\n * contextual escaping contexts (such as ng-bind-html, ng-include, any src\n * attribute interpolation, any dom event binding attribute interpolation\n * such as for onclick, etc.) that uses the provided value.\n * See {@link ng.$sce $sce} for enabling strict contextual escaping.\n *\n * @param {string} type The kind of context in which this value is safe for use. e.g. url,\n * resourceUrl, html, js and css.\n * @param {*} value The value that that should be considered trusted/safe.\n * @returns {*} A value that can be used to stand in for the provided `value` in places\n * where Angular expects a $sce.trustAs() return value.\n */\n function trustAs(type, trustedValue) {\n var Constructor = (byType.hasOwnProperty(type) ? byType[type] : null);\n if (!Constructor) {\n throw $sceMinErr('icontext',\n 'Attempted to trust a value in invalid context. Context: {0}; Value: {1}',\n type, trustedValue);\n }\n if (trustedValue === null || trustedValue === undefined || trustedValue === '') {\n return trustedValue;\n }\n // All the current contexts in SCE_CONTEXTS happen to be strings. In order to avoid trusting\n // mutable objects, we ensure here that the value passed in is actually a string.\n if (typeof trustedValue !== 'string') {\n throw $sceMinErr('itype',\n 'Attempted to trust a non-string value in a content requiring a string: Context: {0}',\n type);\n }\n return new Constructor(trustedValue);\n }\n\n /**\n * @ngdoc method\n * @name $sceDelegate#valueOf\n *\n * @description\n * If the passed parameter had been returned by a prior call to {@link ng.$sceDelegate#trustAs\n * `$sceDelegate.trustAs`}, returns the value that had been passed to {@link\n * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}.\n *\n * If the passed parameter is not a value that had been returned by {@link\n * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}, returns it as-is.\n *\n * @param {*} value The result of a prior {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}\n * call or anything else.\n * @returns {*} The `value` that was originally provided to {@link ng.$sceDelegate#trustAs\n * `$sceDelegate.trustAs`} if `value` is the result of such a call. Otherwise, returns\n * `value` unchanged.\n */\n function valueOf(maybeTrusted) {\n if (maybeTrusted instanceof trustedValueHolderBase) {\n return maybeTrusted.$$unwrapTrustedValue();\n } else {\n return maybeTrusted;\n }\n }\n\n /**\n * @ngdoc method\n * @name $sceDelegate#getTrusted\n *\n * @description\n * Takes the result of a {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`} call and\n * returns the originally supplied value if the queried context type is a supertype of the\n * created type. If this condition isn't satisfied, throws an exception.\n *\n * @param {string} type The kind of context in which this value is to be used.\n * @param {*} maybeTrusted The result of a prior {@link ng.$sceDelegate#trustAs\n * `$sceDelegate.trustAs`} call.\n * @returns {*} The value the was originally provided to {@link ng.$sceDelegate#trustAs\n * `$sceDelegate.trustAs`} if valid in this context. Otherwise, throws an exception.\n */\n function getTrusted(type, maybeTrusted) {\n if (maybeTrusted === null || maybeTrusted === undefined || maybeTrusted === '') {\n return maybeTrusted;\n }\n var constructor = (byType.hasOwnProperty(type) ? byType[type] : null);\n if (constructor && maybeTrusted instanceof constructor) {\n return maybeTrusted.$$unwrapTrustedValue();\n }\n // If we get here, then we may only take one of two actions.\n // 1. sanitize the value for the requested type, or\n // 2. throw an exception.\n if (type === SCE_CONTEXTS.RESOURCE_URL) {\n if (isResourceUrlAllowedByPolicy(maybeTrusted)) {\n return maybeTrusted;\n } else {\n throw $sceMinErr('insecurl',\n 'Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}',\n maybeTrusted.toString());\n }\n } else if (type === SCE_CONTEXTS.HTML) {\n return htmlSanitizer(maybeTrusted);\n }\n throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.');\n }\n\n return { trustAs: trustAs,\n getTrusted: getTrusted,\n valueOf: valueOf };\n }];\n}\n\n\n/**\n * @ngdoc provider\n * @name $sceProvider\n * @description\n *\n * The $sceProvider provider allows developers to configure the {@link ng.$sce $sce} service.\n * - enable/disable Strict Contextual Escaping (SCE) in a module\n * - override the default implementation with a custom delegate\n *\n * Read more about {@link ng.$sce Strict Contextual Escaping (SCE)}.\n */\n\n/* jshint maxlen: false*/\n\n/**\n * @ngdoc service\n * @name $sce\n * @kind function\n *\n * @description\n *\n * `$sce` is a service that provides Strict Contextual Escaping services to AngularJS.\n *\n * # Strict Contextual Escaping\n *\n * Strict Contextual Escaping (SCE) is a mode in which AngularJS requires bindings in certain\n * contexts to result in a value that is marked as safe to use for that context. One example of\n * such a context is binding arbitrary html controlled by the user via `ng-bind-html`. We refer\n * to these contexts as privileged or SCE contexts.\n *\n * As of version 1.2, Angular ships with SCE enabled by default.\n *\n * Note: When enabled (the default), IE8 in quirks mode is not supported. In this mode, IE8 allows\n * one to execute arbitrary javascript by the use of the expression() syntax. Refer\n * to learn more about them.\n * You can ensure your document is in standards mode and not quirks mode by adding ``\n * to the top of your HTML document.\n *\n * SCE assists in writing code in way that (a) is secure by default and (b) makes auditing for\n * security vulnerabilities such as XSS, clickjacking, etc. a lot easier.\n *\n * Here's an example of a binding in a privileged context:\n *\n * ```\n * \n *
\n * ```\n *\n * Notice that `ng-bind-html` is bound to `userHtml` controlled by the user. With SCE\n * disabled, this application allows the user to render arbitrary HTML into the DIV.\n * In a more realistic example, one may be rendering user comments, blog articles, etc. via\n * bindings. (HTML is just one example of a context where rendering user controlled input creates\n * security vulnerabilities.)\n *\n * For the case of HTML, you might use a library, either on the client side, or on the server side,\n * to sanitize unsafe HTML before binding to the value and rendering it in the document.\n *\n * How would you ensure that every place that used these types of bindings was bound to a value that\n * was sanitized by your library (or returned as safe for rendering by your server?) How can you\n * ensure that you didn't accidentally delete the line that sanitized the value, or renamed some\n * properties/fields and forgot to update the binding to the sanitized value?\n *\n * To be secure by default, you want to ensure that any such bindings are disallowed unless you can\n * determine that something explicitly says it's safe to use a value for binding in that\n * context. You can then audit your code (a simple grep would do) to ensure that this is only done\n * for those values that you can easily tell are safe - because they were received from your server,\n * sanitized by your library, etc. You can organize your codebase to help with this - perhaps\n * allowing only the files in a specific directory to do this. Ensuring that the internal API\n * exposed by that code doesn't markup arbitrary values as safe then becomes a more manageable task.\n *\n * In the case of AngularJS' SCE service, one uses {@link ng.$sce#trustAs $sce.trustAs}\n * (and shorthand methods such as {@link ng.$sce#trustAsHtml $sce.trustAsHtml}, etc.) to\n * obtain values that will be accepted by SCE / privileged contexts.\n *\n *\n * ## How does it work?\n *\n * In privileged contexts, directives and code will bind to the result of {@link ng.$sce#getTrusted\n * $sce.getTrusted(context, value)} rather than to the value directly. Directives use {@link\n * ng.$sce#parse $sce.parseAs} rather than `$parse` to watch attribute bindings, which performs the\n * {@link ng.$sce#getTrusted $sce.getTrusted} behind the scenes on non-constant literals.\n *\n * As an example, {@link ng.directive:ngBindHtml ngBindHtml} uses {@link\n * ng.$sce#parseAsHtml $sce.parseAsHtml(binding expression)}. Here's the actual code (slightly\n * simplified):\n *\n * ```\n * var ngBindHtmlDirective = ['$sce', function($sce) {\n * return function(scope, element, attr) {\n * scope.$watch($sce.parseAsHtml(attr.ngBindHtml), function(value) {\n * element.html(value || '');\n * });\n * };\n * }];\n * ```\n *\n * ## Impact on loading templates\n *\n * This applies both to the {@link ng.directive:ngInclude `ng-include`} directive as well as\n * `templateUrl`'s specified by {@link guide/directive directives}.\n *\n * By default, Angular only loads templates from the same domain and protocol as the application\n * document. This is done by calling {@link ng.$sce#getTrustedResourceUrl\n * $sce.getTrustedResourceUrl} on the template URL. To load templates from other domains and/or\n * protocols, you may either either {@link ng.$sceDelegateProvider#resourceUrlWhitelist whitelist\n * them} or {@link ng.$sce#trustAsResourceUrl wrap it} into a trusted value.\n *\n * *Please note*:\n * The browser's\n * [Same Origin Policy](https://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest)\n * and [Cross-Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/)\n * policy apply in addition to this and may further restrict whether the template is successfully\n * loaded. This means that without the right CORS policy, loading templates from a different domain\n * won't work on all browsers. Also, loading templates from `file://` URL does not work on some\n * browsers.\n *\n * ## This feels like too much overhead for the developer?\n *\n * It's important to remember that SCE only applies to interpolation expressions.\n *\n * If your expressions are constant literals, they're automatically trusted and you don't need to\n * call `$sce.trustAs` on them (remember to include the `ngSanitize` module) (e.g.\n * `
implicitly trusted'\">
`) just works.\n *\n * Additionally, `a[href]` and `img[src]` automatically sanitize their URLs and do not pass them\n * through {@link ng.$sce#getTrusted $sce.getTrusted}. SCE doesn't play a role here.\n *\n * The included {@link ng.$sceDelegate $sceDelegate} comes with sane defaults to allow you to load\n * templates in `ng-include` from your application's domain without having to even know about SCE.\n * It blocks loading templates from other domains or loading templates over http from an https\n * served document. You can change these by setting your own custom {@link\n * ng.$sceDelegateProvider#resourceUrlWhitelist whitelists} and {@link\n * ng.$sceDelegateProvider#resourceUrlBlacklist blacklists} for matching such URLs.\n *\n * This significantly reduces the overhead. It is far easier to pay the small overhead and have an\n * application that's secure and can be audited to verify that with much more ease than bolting\n * security onto an application later.\n *\n * \n * ## What trusted context types are supported?\n *\n * | Context | Notes |\n * |---------------------|----------------|\n * | `$sce.HTML` | For HTML that's safe to source into the application. The {@link ng.directive:ngBindHtml ngBindHtml} directive uses this context for bindings. If an unsafe value is encountered and the {@link ngSanitize $sanitize} module is present this will sanitize the value instead of throwing an error. |\n * | `$sce.CSS` | For CSS that's safe to source into the application. Currently unused. Feel free to use it in your own directives. |\n * | `$sce.URL` | For URLs that are safe to follow as links. Currently unused (`
Note that `$sce.RESOURCE_URL` makes a stronger statement about the URL than `$sce.URL` does and therefore contexts requiring values trusted for `$sce.RESOURCE_URL` can be used anywhere that values trusted for `$sce.URL` are required. |\n * | `$sce.JS` | For JavaScript that is safe to execute in your application's context. Currently unused. Feel free to use it in your own directives. |\n *\n * ## Format of items in {@link ng.$sceDelegateProvider#resourceUrlWhitelist resourceUrlWhitelist}/{@link ng.$sceDelegateProvider#resourceUrlBlacklist Blacklist}
\n *\n * Each element in these arrays must be one of the following:\n *\n * - **'self'**\n * - The special **string**, `'self'`, can be used to match against all URLs of the **same\n * domain** as the application document using the **same protocol**.\n * - **String** (except the special value `'self'`)\n * - The string is matched against the full *normalized / absolute URL* of the resource\n * being tested (substring matches are not good enough.)\n * - There are exactly **two wildcard sequences** - `*` and `**`. All other characters\n * match themselves.\n * - `*`: matches zero or more occurrences of any character other than one of the following 6\n * characters: '`:`', '`/`', '`.`', '`?`', '`&`' and ';'. It's a useful wildcard for use\n * in a whitelist.\n * - `**`: matches zero or more occurrences of *any* character. As such, it's not\n * not appropriate to use in for a scheme, domain, etc. as it would match too much. (e.g.\n * http://**.example.com/ would match http://evil.com/?ignore=.example.com/ and that might\n * not have been the intention.) Its usage at the very end of the path is ok. (e.g.\n * http://foo.example.com/templates/**).\n * - **RegExp** (*see caveat below*)\n * - *Caveat*: While regular expressions are powerful and offer great flexibility, their syntax\n * (and all the inevitable escaping) makes them *harder to maintain*. It's easy to\n * accidentally introduce a bug when one updates a complex expression (imho, all regexes should\n * have good test coverage.). For instance, the use of `.` in the regex is correct only in a\n * small number of cases. A `.` character in the regex used when matching the scheme or a\n * subdomain could be matched against a `:` or literal `.` that was likely not intended. It\n * is highly recommended to use the string patterns and only fall back to regular expressions\n * if they as a last resort.\n * - The regular expression must be an instance of RegExp (i.e. not a string.) It is\n * matched against the **entire** *normalized / absolute URL* of the resource being tested\n * (even when the RegExp did not have the `^` and `$` codes.) In addition, any flags\n * present on the RegExp (such as multiline, global, ignoreCase) are ignored.\n * - If you are generating your JavaScript from some other templating engine (not\n * recommended, e.g. in issue [#4006](https://github.com/angular/angular.js/issues/4006)),\n * remember to escape your regular expression (and be aware that you might need more than\n * one level of escaping depending on your templating engine and the way you interpolated\n * the value.) Do make use of your platform's escaping mechanism as it might be good\n * enough before coding your own. e.g. Ruby has\n * [Regexp.escape(str)](http://www.ruby-doc.org/core-2.0.0/Regexp.html#method-c-escape)\n * and Python has [re.escape](http://docs.python.org/library/re.html#re.escape).\n * Javascript lacks a similar built in function for escaping. Take a look at Google\n * Closure library's [goog.string.regExpEscape(s)](\n * http://docs.closure-library.googlecode.com/git/closure_goog_string_string.js.source.html#line962).\n *\n * Refer {@link ng.$sceDelegateProvider $sceDelegateProvider} for an example.\n *\n * ## Show me an example using SCE.\n *\n * \n * \n *
\n *

\n * User comments
\n * By default, HTML that isn't explicitly trusted (e.g. Alice's comment) is sanitized when\n * $sanitize is available. If $sanitize isn't available, this results in an error instead of an\n * exploit.\n *
\n *
\n * {{userComment.name}}:\n * \n *
\n *
\n *
\n *
\n *
\n *\n * \n * var mySceApp = angular.module('mySceApp', ['ngSanitize']);\n *\n * mySceApp.controller(\"myAppController\", function myAppController($http, $templateCache, $sce) {\n * var self = this;\n * $http.get(\"test_data.json\", {cache: $templateCache}).success(function(userComments) {\n * self.userComments = userComments;\n * });\n * self.explicitlyTrustedHtml = $sce.trustAsHtml(\n * 'Hover over this text.');\n * });\n * \n *\n * \n * [\n * { \"name\": \"Alice\",\n * \"htmlComment\":\n * \"Is anyone reading this?\"\n * },\n * { \"name\": \"Bob\",\n * \"htmlComment\": \"Yes! Am I the only other one?\"\n * }\n * ]\n * \n *\n * \n * describe('SCE doc demo', function() {\n * it('should sanitize untrusted values', function() {\n * expect(element.all(by.css('.htmlComment')).first().getInnerHtml())\n * .toBe('Is anyone reading this?');\n * });\n *\n * it('should NOT sanitize explicitly trusted values', function() {\n * expect(element(by.id('explicitlyTrustedHtml')).getInnerHtml()).toBe(\n * 'Hover over this text.');\n * });\n * });\n * \n *
\n *\n *\n *\n * ## Can I disable SCE completely?\n *\n * Yes, you can. However, this is strongly discouraged. SCE gives you a lot of security benefits\n * for little coding overhead. It will be much harder to take an SCE disabled application and\n * either secure it on your own or enable SCE at a later stage. It might make sense to disable SCE\n * for cases where you have a lot of existing code that was written before SCE was introduced and\n * you're migrating them a module at a time.\n *\n * That said, here's how you can completely disable SCE:\n *\n * ```\n * angular.module('myAppWithSceDisabledmyApp', []).config(function($sceProvider) {\n * // Completely disable SCE. For demonstration purposes only!\n * // Do not use in new projects.\n * $sceProvider.enabled(false);\n * });\n * ```\n *\n */\n/* jshint maxlen: 100 */\n\nfunction $SceProvider() {\n var enabled = true;\n\n /**\n * @ngdoc method\n * @name $sceProvider#enabled\n * @kind function\n *\n * @param {boolean=} value If provided, then enables/disables SCE.\n * @return {boolean} true if SCE is enabled, false otherwise.\n *\n * @description\n * Enables/disables SCE and returns the current value.\n */\n this.enabled = function (value) {\n if (arguments.length) {\n enabled = !!value;\n }\n return enabled;\n };\n\n\n /* Design notes on the default implementation for SCE.\n *\n * The API contract for the SCE delegate\n * -------------------------------------\n * The SCE delegate object must provide the following 3 methods:\n *\n * - trustAs(contextEnum, value)\n * This method is used to tell the SCE service that the provided value is OK to use in the\n * contexts specified by contextEnum. It must return an object that will be accepted by\n * getTrusted() for a compatible contextEnum and return this value.\n *\n * - valueOf(value)\n * For values that were not produced by trustAs(), return them as is. For values that were\n * produced by trustAs(), return the corresponding input value to trustAs. Basically, if\n * trustAs is wrapping the given values into some type, this operation unwraps it when given\n * such a value.\n *\n * - getTrusted(contextEnum, value)\n * This function should return the a value that is safe to use in the context specified by\n * contextEnum or throw and exception otherwise.\n *\n * NOTE: This contract deliberately does NOT state that values returned by trustAs() must be\n * opaque or wrapped in some holder object. That happens to be an implementation detail. For\n * instance, an implementation could maintain a registry of all trusted objects by context. In\n * such a case, trustAs() would return the same object that was passed in. getTrusted() would\n * return the same object passed in if it was found in the registry under a compatible context or\n * throw an exception otherwise. An implementation might only wrap values some of the time based\n * on some criteria. getTrusted() might return a value and not throw an exception for special\n * constants or objects even if not wrapped. All such implementations fulfill this contract.\n *\n *\n * A note on the inheritance model for SCE contexts\n * ------------------------------------------------\n * I've used inheritance and made RESOURCE_URL wrapped types a subtype of URL wrapped types. This\n * is purely an implementation details.\n *\n * The contract is simply this:\n *\n * getTrusted($sce.RESOURCE_URL, value) succeeding implies that getTrusted($sce.URL, value)\n * will also succeed.\n *\n * Inheritance happens to capture this in a natural way. In some future, we\n * may not use inheritance anymore. That is OK because no code outside of\n * sce.js and sceSpecs.js would need to be aware of this detail.\n */\n\n this.$get = ['$parse', '$sniffer', '$sceDelegate', function(\n $parse, $sniffer, $sceDelegate) {\n // Prereq: Ensure that we're not running in IE8 quirks mode. In that mode, IE allows\n // the \"expression(javascript expression)\" syntax which is insecure.\n if (enabled && $sniffer.msie && $sniffer.msieDocumentMode < 8) {\n throw $sceMinErr('iequirks',\n 'Strict Contextual Escaping does not support Internet Explorer version < 9 in quirks ' +\n 'mode. You can fix this by adding the text to the top of your HTML ' +\n 'document. See http://docs.angularjs.org/api/ng.$sce for more information.');\n }\n\n var sce = shallowCopy(SCE_CONTEXTS);\n\n /**\n * @ngdoc method\n * @name $sce#isEnabled\n * @kind function\n *\n * @return {Boolean} true if SCE is enabled, false otherwise. If you want to set the value, you\n * have to do it at module config time on {@link ng.$sceProvider $sceProvider}.\n *\n * @description\n * Returns a boolean indicating if SCE is enabled.\n */\n sce.isEnabled = function () {\n return enabled;\n };\n sce.trustAs = $sceDelegate.trustAs;\n sce.getTrusted = $sceDelegate.getTrusted;\n sce.valueOf = $sceDelegate.valueOf;\n\n if (!enabled) {\n sce.trustAs = sce.getTrusted = function(type, value) { return value; };\n sce.valueOf = identity;\n }\n\n /**\n * @ngdoc method\n * @name $sce#parseAs\n *\n * @description\n * Converts Angular {@link guide/expression expression} into a function. This is like {@link\n * ng.$parse $parse} and is identical when the expression is a literal constant. Otherwise, it\n * wraps the expression in a call to {@link ng.$sce#getTrusted $sce.getTrusted(*type*,\n * *result*)}\n *\n * @param {string} type The kind of SCE context in which this result will be used.\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n */\n sce.parseAs = function sceParseAs(type, expr) {\n var parsed = $parse(expr);\n if (parsed.literal && parsed.constant) {\n return parsed;\n } else {\n return function sceParseAsTrusted(self, locals) {\n return sce.getTrusted(type, parsed(self, locals));\n };\n }\n };\n\n /**\n * @ngdoc method\n * @name $sce#trustAs\n *\n * @description\n * Delegates to {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}. As such,\n * returns an object that is trusted by angular for use in specified strict contextual\n * escaping contexts (such as ng-bind-html, ng-include, any src attribute\n * interpolation, any dom event binding attribute interpolation such as for onclick, etc.)\n * that uses the provided value. See * {@link ng.$sce $sce} for enabling strict contextual\n * escaping.\n *\n * @param {string} type The kind of context in which this value is safe for use. e.g. url,\n * resource_url, html, js and css.\n * @param {*} value The value that that should be considered trusted/safe.\n * @returns {*} A value that can be used to stand in for the provided `value` in places\n * where Angular expects a $sce.trustAs() return value.\n */\n\n /**\n * @ngdoc method\n * @name $sce#trustAsHtml\n *\n * @description\n * Shorthand method. `$sce.trustAsHtml(value)` →\n * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.HTML, value)`}\n *\n * @param {*} value The value to trustAs.\n * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedHtml\n * $sce.getTrustedHtml(value)} to obtain the original value. (privileged directives\n * only accept expressions that are either literal constants or are the\n * return value of {@link ng.$sce#trustAs $sce.trustAs}.)\n */\n\n /**\n * @ngdoc method\n * @name $sce#trustAsUrl\n *\n * @description\n * Shorthand method. `$sce.trustAsUrl(value)` →\n * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.URL, value)`}\n *\n * @param {*} value The value to trustAs.\n * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedUrl\n * $sce.getTrustedUrl(value)} to obtain the original value. (privileged directives\n * only accept expressions that are either literal constants or are the\n * return value of {@link ng.$sce#trustAs $sce.trustAs}.)\n */\n\n /**\n * @ngdoc method\n * @name $sce#trustAsResourceUrl\n *\n * @description\n * Shorthand method. `$sce.trustAsResourceUrl(value)` →\n * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.RESOURCE_URL, value)`}\n *\n * @param {*} value The value to trustAs.\n * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedResourceUrl\n * $sce.getTrustedResourceUrl(value)} to obtain the original value. (privileged directives\n * only accept expressions that are either literal constants or are the return\n * value of {@link ng.$sce#trustAs $sce.trustAs}.)\n */\n\n /**\n * @ngdoc method\n * @name $sce#trustAsJs\n *\n * @description\n * Shorthand method. `$sce.trustAsJs(value)` →\n * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.JS, value)`}\n *\n * @param {*} value The value to trustAs.\n * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedJs\n * $sce.getTrustedJs(value)} to obtain the original value. (privileged directives\n * only accept expressions that are either literal constants or are the\n * return value of {@link ng.$sce#trustAs $sce.trustAs}.)\n */\n\n /**\n * @ngdoc method\n * @name $sce#getTrusted\n *\n * @description\n * Delegates to {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted`}. As such,\n * takes the result of a {@link ng.$sce#trustAs `$sce.trustAs`}() call and returns the\n * originally supplied value if the queried context type is a supertype of the created type.\n * If this condition isn't satisfied, throws an exception.\n *\n * @param {string} type The kind of context in which this value is to be used.\n * @param {*} maybeTrusted The result of a prior {@link ng.$sce#trustAs `$sce.trustAs`}\n * call.\n * @returns {*} The value the was originally provided to\n * {@link ng.$sce#trustAs `$sce.trustAs`} if valid in this context.\n * Otherwise, throws an exception.\n */\n\n /**\n * @ngdoc method\n * @name $sce#getTrustedHtml\n *\n * @description\n * Shorthand method. `$sce.getTrustedHtml(value)` →\n * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.HTML, value)`}\n *\n * @param {*} value The value to pass to `$sce.getTrusted`.\n * @returns {*} The return value of `$sce.getTrusted($sce.HTML, value)`\n */\n\n /**\n * @ngdoc method\n * @name $sce#getTrustedCss\n *\n * @description\n * Shorthand method. `$sce.getTrustedCss(value)` →\n * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.CSS, value)`}\n *\n * @param {*} value The value to pass to `$sce.getTrusted`.\n * @returns {*} The return value of `$sce.getTrusted($sce.CSS, value)`\n */\n\n /**\n * @ngdoc method\n * @name $sce#getTrustedUrl\n *\n * @description\n * Shorthand method. `$sce.getTrustedUrl(value)` →\n * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.URL, value)`}\n *\n * @param {*} value The value to pass to `$sce.getTrusted`.\n * @returns {*} The return value of `$sce.getTrusted($sce.URL, value)`\n */\n\n /**\n * @ngdoc method\n * @name $sce#getTrustedResourceUrl\n *\n * @description\n * Shorthand method. `$sce.getTrustedResourceUrl(value)` →\n * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.RESOURCE_URL, value)`}\n *\n * @param {*} value The value to pass to `$sceDelegate.getTrusted`.\n * @returns {*} The return value of `$sce.getTrusted($sce.RESOURCE_URL, value)`\n */\n\n /**\n * @ngdoc method\n * @name $sce#getTrustedJs\n *\n * @description\n * Shorthand method. `$sce.getTrustedJs(value)` →\n * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.JS, value)`}\n *\n * @param {*} value The value to pass to `$sce.getTrusted`.\n * @returns {*} The return value of `$sce.getTrusted($sce.JS, value)`\n */\n\n /**\n * @ngdoc method\n * @name $sce#parseAsHtml\n *\n * @description\n * Shorthand method. `$sce.parseAsHtml(expression string)` →\n * {@link ng.$sce#parse `$sce.parseAs($sce.HTML, value)`}\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n */\n\n /**\n * @ngdoc method\n * @name $sce#parseAsCss\n *\n * @description\n * Shorthand method. `$sce.parseAsCss(value)` →\n * {@link ng.$sce#parse `$sce.parseAs($sce.CSS, value)`}\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n */\n\n /**\n * @ngdoc method\n * @name $sce#parseAsUrl\n *\n * @description\n * Shorthand method. `$sce.parseAsUrl(value)` →\n * {@link ng.$sce#parse `$sce.parseAs($sce.URL, value)`}\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n */\n\n /**\n * @ngdoc method\n * @name $sce#parseAsResourceUrl\n *\n * @description\n * Shorthand method. `$sce.parseAsResourceUrl(value)` →\n * {@link ng.$sce#parse `$sce.parseAs($sce.RESOURCE_URL, value)`}\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n */\n\n /**\n * @ngdoc method\n * @name $sce#parseAsJs\n *\n * @description\n * Shorthand method. `$sce.parseAsJs(value)` →\n * {@link ng.$sce#parse `$sce.parseAs($sce.JS, value)`}\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n */\n\n // Shorthand delegations.\n var parse = sce.parseAs,\n getTrusted = sce.getTrusted,\n trustAs = sce.trustAs;\n\n forEach(SCE_CONTEXTS, function (enumValue, name) {\n var lName = lowercase(name);\n sce[camelCase(\"parse_as_\" + lName)] = function (expr) {\n return parse(enumValue, expr);\n };\n sce[camelCase(\"get_trusted_\" + lName)] = function (value) {\n return getTrusted(enumValue, value);\n };\n sce[camelCase(\"trust_as_\" + lName)] = function (value) {\n return trustAs(enumValue, value);\n };\n });\n\n return sce;\n }];\n}\n\n/**\n * !!! This is an undocumented \"private\" service !!!\n *\n * @name $sniffer\n * @requires $window\n * @requires $document\n *\n * @property {boolean} history Does the browser support html5 history api ?\n * @property {boolean} hashchange Does the browser support hashchange event ?\n * @property {boolean} transitions Does the browser support CSS transition events ?\n * @property {boolean} animations Does the browser support CSS animation events ?\n *\n * @description\n * This is very simple implementation of testing browser's features.\n */\nfunction $SnifferProvider() {\n this.$get = ['$window', '$document', function($window, $document) {\n var eventSupport = {},\n android =\n int((/android (\\d+)/.exec(lowercase(($window.navigator || {}).userAgent)) || [])[1]),\n boxee = /Boxee/i.test(($window.navigator || {}).userAgent),\n document = $document[0] || {},\n documentMode = document.documentMode,\n vendorPrefix,\n vendorRegex = /^(Moz|webkit|O|ms)(?=[A-Z])/,\n bodyStyle = document.body && document.body.style,\n transitions = false,\n animations = false,\n match;\n\n if (bodyStyle) {\n for(var prop in bodyStyle) {\n if(match = vendorRegex.exec(prop)) {\n vendorPrefix = match[0];\n vendorPrefix = vendorPrefix.substr(0, 1).toUpperCase() + vendorPrefix.substr(1);\n break;\n }\n }\n\n if(!vendorPrefix) {\n vendorPrefix = ('WebkitOpacity' in bodyStyle) && 'webkit';\n }\n\n transitions = !!(('transition' in bodyStyle) || (vendorPrefix + 'Transition' in bodyStyle));\n animations = !!(('animation' in bodyStyle) || (vendorPrefix + 'Animation' in bodyStyle));\n\n if (android && (!transitions||!animations)) {\n transitions = isString(document.body.style.webkitTransition);\n animations = isString(document.body.style.webkitAnimation);\n }\n }\n\n\n return {\n // Android has history.pushState, but it does not update location correctly\n // so let's not use the history API at all.\n // http://code.google.com/p/android/issues/detail?id=17471\n // https://github.com/angular/angular.js/issues/904\n\n // older webkit browser (533.9) on Boxee box has exactly the same problem as Android has\n // so let's not use the history API also\n // We are purposefully using `!(android < 4)` to cover the case when `android` is undefined\n // jshint -W018\n history: !!($window.history && $window.history.pushState && !(android < 4) && !boxee),\n // jshint +W018\n hashchange: 'onhashchange' in $window &&\n // IE8 compatible mode lies\n (!documentMode || documentMode > 7),\n hasEvent: function(event) {\n // IE9 implements 'input' event it's so fubared that we rather pretend that it doesn't have\n // it. In particular the event is not fired when backspace or delete key are pressed or\n // when cut operation is performed.\n if (event == 'input' && msie == 9) return false;\n\n if (isUndefined(eventSupport[event])) {\n var divElm = document.createElement('div');\n eventSupport[event] = 'on' + event in divElm;\n }\n\n return eventSupport[event];\n },\n csp: csp(),\n vendorPrefix: vendorPrefix,\n transitions : transitions,\n animations : animations,\n android: android,\n msie : msie,\n msieDocumentMode: documentMode\n };\n }];\n}\n\nfunction $TimeoutProvider() {\n this.$get = ['$rootScope', '$browser', '$q', '$exceptionHandler',\n function($rootScope, $browser, $q, $exceptionHandler) {\n var deferreds = {};\n\n\n /**\n * @ngdoc service\n * @name $timeout\n *\n * @description\n * Angular's wrapper for `window.setTimeout`. The `fn` function is wrapped into a try/catch\n * block and delegates any exceptions to\n * {@link ng.$exceptionHandler $exceptionHandler} service.\n *\n * The return value of registering a timeout function is a promise, which will be resolved when\n * the timeout is reached and the timeout function is executed.\n *\n * To cancel a timeout request, call `$timeout.cancel(promise)`.\n *\n * In tests you can use {@link ngMock.$timeout `$timeout.flush()`} to\n * synchronously flush the queue of deferred functions.\n *\n * @param {function()} fn A function, whose execution should be delayed.\n * @param {number=} [delay=0] Delay in milliseconds.\n * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise\n * will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.\n * @returns {Promise} Promise that will be resolved when the timeout is reached. The value this\n * promise will be resolved with is the return value of the `fn` function.\n *\n */\n function timeout(fn, delay, invokeApply) {\n var deferred = $q.defer(),\n promise = deferred.promise,\n skipApply = (isDefined(invokeApply) && !invokeApply),\n timeoutId;\n\n timeoutId = $browser.defer(function() {\n try {\n deferred.resolve(fn());\n } catch(e) {\n deferred.reject(e);\n $exceptionHandler(e);\n }\n finally {\n delete deferreds[promise.$$timeoutId];\n }\n\n if (!skipApply) $rootScope.$apply();\n }, delay);\n\n promise.$$timeoutId = timeoutId;\n deferreds[timeoutId] = deferred;\n\n return promise;\n }\n\n\n /**\n * @ngdoc method\n * @name $timeout#cancel\n *\n * @description\n * Cancels a task associated with the `promise`. As a result of this, the promise will be\n * resolved with a rejection.\n *\n * @param {Promise=} promise Promise returned by the `$timeout` function.\n * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully\n * canceled.\n */\n timeout.cancel = function(promise) {\n if (promise && promise.$$timeoutId in deferreds) {\n deferreds[promise.$$timeoutId].reject('canceled');\n delete deferreds[promise.$$timeoutId];\n return $browser.defer.cancel(promise.$$timeoutId);\n }\n return false;\n };\n\n return timeout;\n }];\n}\n\n// NOTE: The usage of window and document instead of $window and $document here is\n// deliberate. This service depends on the specific behavior of anchor nodes created by the\n// browser (resolving and parsing URLs) that is unlikely to be provided by mock objects and\n// cause us to break tests. In addition, when the browser resolves a URL for XHR, it\n// doesn't know about mocked locations and resolves URLs to the real document - which is\n// exactly the behavior needed here. There is little value is mocking these out for this\n// service.\nvar urlParsingNode = document.createElement(\"a\");\nvar originUrl = urlResolve(window.location.href, true);\n\n\n/**\n *\n * Implementation Notes for non-IE browsers\n * ----------------------------------------\n * Assigning a URL to the href property of an anchor DOM node, even one attached to the DOM,\n * results both in the normalizing and parsing of the URL. Normalizing means that a relative\n * URL will be resolved into an absolute URL in the context of the application document.\n * Parsing means that the anchor node's host, hostname, protocol, port, pathname and related\n * properties are all populated to reflect the normalized URL. This approach has wide\n * compatibility - Safari 1+, Mozilla 1+, Opera 7+,e etc. See\n * http://www.aptana.com/reference/html/api/HTMLAnchorElement.html\n *\n * Implementation Notes for IE\n * ---------------------------\n * IE >= 8 and <= 10 normalizes the URL when assigned to the anchor node similar to the other\n * browsers. However, the parsed components will not be set if the URL assigned did not specify\n * them. (e.g. if you assign a.href = \"foo\", then a.protocol, a.host, etc. will be empty.) We\n * work around that by performing the parsing in a 2nd step by taking a previously normalized\n * URL (e.g. by assigning to a.href) and assigning it a.href again. This correctly populates the\n * properties such as protocol, hostname, port, etc.\n *\n * IE7 does not normalize the URL when assigned to an anchor node. (Apparently, it does, if one\n * uses the inner HTML approach to assign the URL as part of an HTML snippet -\n * http://stackoverflow.com/a/472729) However, setting img[src] does normalize the URL.\n * Unfortunately, setting img[src] to something like \"javascript:foo\" on IE throws an exception.\n * Since the primary usage for normalizing URLs is to sanitize such URLs, we can't use that\n * method and IE < 8 is unsupported.\n *\n * References:\n * http://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement\n * http://www.aptana.com/reference/html/api/HTMLAnchorElement.html\n * http://url.spec.whatwg.org/#urlutils\n * https://github.com/angular/angular.js/pull/2902\n * http://james.padolsey.com/javascript/parsing-urls-with-the-dom/\n *\n * @kind function\n * @param {string} url The URL to be parsed.\n * @description Normalizes and parses a URL.\n * @returns {object} Returns the normalized URL as a dictionary.\n *\n * | member name | Description |\n * |---------------|----------------|\n * | href | A normalized version of the provided URL if it was not an absolute URL |\n * | protocol | The protocol including the trailing colon |\n * | host | The host and port (if the port is non-default) of the normalizedUrl |\n * | search | The search params, minus the question mark |\n * | hash | The hash string, minus the hash symbol\n * | hostname | The hostname\n * | port | The port, without \":\"\n * | pathname | The pathname, beginning with \"/\"\n *\n */\nfunction urlResolve(url, base) {\n var href = url;\n\n if (msie) {\n // Normalize before parse. Refer Implementation Notes on why this is\n // done in two steps on IE.\n urlParsingNode.setAttribute(\"href\", href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/')\n ? urlParsingNode.pathname\n : '/' + urlParsingNode.pathname\n };\n}\n\n/**\n * Parse a request URL and determine whether this is a same-origin request as the application document.\n *\n * @param {string|object} requestUrl The url of the request as a string that will be resolved\n * or a parsed URL object.\n * @returns {boolean} Whether the request is for the same origin as the application document.\n */\nfunction urlIsSameOrigin(requestUrl) {\n var parsed = (isString(requestUrl)) ? urlResolve(requestUrl) : requestUrl;\n return (parsed.protocol === originUrl.protocol &&\n parsed.host === originUrl.host);\n}\n\n/**\n * @ngdoc service\n * @name $window\n *\n * @description\n * A reference to the browser's `window` object. While `window`\n * is globally available in JavaScript, it causes testability problems, because\n * it is a global variable. In angular we always refer to it through the\n * `$window` service, so it may be overridden, removed or mocked for testing.\n *\n * Expressions, like the one defined for the `ngClick` directive in the example\n * below, are evaluated with respect to the current scope. Therefore, there is\n * no risk of inadvertently coding in a dependency on a global value in such an\n * expression.\n *\n * @example\n \n \n \n
\n \n \n
\n
\n \n it('should display the greeting in the input box', function() {\n element(by.model('greeting')).sendKeys('Hello, E2E Tests');\n // If we click the button it will block the test runner\n // element(':button').click();\n });\n \n
\n */\nfunction $WindowProvider(){\n this.$get = valueFn(window);\n}\n\n/* global currencyFilter: true,\n dateFilter: true,\n filterFilter: true,\n jsonFilter: true,\n limitToFilter: true,\n lowercaseFilter: true,\n numberFilter: true,\n orderByFilter: true,\n uppercaseFilter: true,\n */\n\n/**\n * @ngdoc provider\n * @name $filterProvider\n * @description\n *\n * Filters are just functions which transform input to an output. However filters need to be\n * Dependency Injected. To achieve this a filter definition consists of a factory function which is\n * annotated with dependencies and is responsible for creating a filter function.\n *\n * ```js\n * // Filter registration\n * function MyModule($provide, $filterProvider) {\n * // create a service to demonstrate injection (not always needed)\n * $provide.value('greet', function(name){\n * return 'Hello ' + name + '!';\n * });\n *\n * // register a filter factory which uses the\n * // greet service to demonstrate DI.\n * $filterProvider.register('greet', function(greet){\n * // return the filter function which uses the greet service\n * // to generate salutation\n * return function(text) {\n * // filters need to be forgiving so check input validity\n * return text && greet(text) || text;\n * };\n * });\n * }\n * ```\n *\n * The filter function is registered with the `$injector` under the filter name suffix with\n * `Filter`.\n *\n * ```js\n * it('should be the same instance', inject(\n * function($filterProvider) {\n * $filterProvider.register('reverse', function(){\n * return ...;\n * });\n * },\n * function($filter, reverseFilter) {\n * expect($filter('reverse')).toBe(reverseFilter);\n * });\n * ```\n *\n *\n * For more information about how angular filters work, and how to create your own filters, see\n * {@link guide/filter Filters} in the Angular Developer Guide.\n */\n\n/**\n * @ngdoc service\n * @name $filter\n * @kind function\n * @description\n * Filters are used for formatting data displayed to the user.\n *\n * The general syntax in templates is as follows:\n *\n * {{ expression [| filter_name[:parameter_value] ... ] }}\n *\n * @param {String} name Name of the filter function to retrieve\n * @return {Function} the filter function\n * @example\n \n \n
\n

{{ originalText }}

\n

{{ filteredText }}

\n
\n
\n\n \n angular.module('filterExample', [])\n .controller('MainCtrl', function($scope, $filter) {\n $scope.originalText = 'hello';\n $scope.filteredText = $filter('uppercase')($scope.originalText);\n });\n \n
\n */\n$FilterProvider.$inject = ['$provide'];\nfunction $FilterProvider($provide) {\n var suffix = 'Filter';\n\n /**\n * @ngdoc method\n * @name $filterProvider#register\n * @param {string|Object} name Name of the filter function, or an object map of filters where\n * the keys are the filter names and the values are the filter factories.\n * @returns {Object} Registered filter instance, or if a map of filters was provided then a map\n * of the registered filter instances.\n */\n function register(name, factory) {\n if(isObject(name)) {\n var filters = {};\n forEach(name, function(filter, key) {\n filters[key] = register(key, filter);\n });\n return filters;\n } else {\n return $provide.factory(name + suffix, factory);\n }\n }\n this.register = register;\n\n this.$get = ['$injector', function($injector) {\n return function(name) {\n return $injector.get(name + suffix);\n };\n }];\n\n ////////////////////////////////////////\n\n /* global\n currencyFilter: false,\n dateFilter: false,\n filterFilter: false,\n jsonFilter: false,\n limitToFilter: false,\n lowercaseFilter: false,\n numberFilter: false,\n orderByFilter: false,\n uppercaseFilter: false,\n */\n\n register('currency', currencyFilter);\n register('date', dateFilter);\n register('filter', filterFilter);\n register('json', jsonFilter);\n register('limitTo', limitToFilter);\n register('lowercase', lowercaseFilter);\n register('number', numberFilter);\n register('orderBy', orderByFilter);\n register('uppercase', uppercaseFilter);\n}\n\n/**\n * @ngdoc filter\n * @name filter\n * @kind function\n *\n * @description\n * Selects a subset of items from `array` and returns it as a new array.\n *\n * @param {Array} array The source array.\n * @param {string|Object|function()} expression The predicate to be used for selecting items from\n * `array`.\n *\n * Can be one of:\n *\n * - `string`: The string is evaluated as an expression and the resulting value is used for substring match against\n * the contents of the `array`. All strings or objects with string properties in `array` that contain this string\n * will be returned. The predicate can be negated by prefixing the string with `!`.\n *\n * - `Object`: A pattern object can be used to filter specific properties on objects contained\n * by `array`. For example `{name:\"M\", phone:\"1\"}` predicate will return an array of items\n * which have property `name` containing \"M\" and property `phone` containing \"1\". A special\n * property name `$` can be used (as in `{$:\"text\"}`) to accept a match against any\n * property of the object. That's equivalent to the simple substring match with a `string`\n * as described above. The predicate can be negated by prefixing the string with `!`.\n * For Example `{name: \"!M\"}` predicate will return an array of items which have property `name`\n * not containing \"M\".\n *\n * - `function(value)`: A predicate function can be used to write arbitrary filters. The function is\n * called for each element of `array`. The final result is an array of those elements that\n * the predicate returned true for.\n *\n * @param {function(actual, expected)|true|undefined} comparator Comparator which is used in\n * determining if the expected value (from the filter expression) and actual value (from\n * the object in the array) should be considered a match.\n *\n * Can be one of:\n *\n * - `function(actual, expected)`:\n * The function will be given the object value and the predicate value to compare and\n * should return true if the item should be included in filtered result.\n *\n * - `true`: A shorthand for `function(actual, expected) { return angular.equals(expected, actual)}`.\n * this is essentially strict comparison of expected and actual.\n *\n * - `false|undefined`: A short hand for a function which will look for a substring match in case\n * insensitive way.\n *\n * @example\n \n \n
\n\n Search: \n \n \n \n \n \n \n
NamePhone
{{friend.name}}{{friend.phone}}
\n
\n Any:
\n Name only
\n Phone only
\n Equality
\n \n \n \n \n \n \n
NamePhone
{{friendObj.name}}{{friendObj.phone}}
\n
\n \n var expectFriendNames = function(expectedNames, key) {\n element.all(by.repeater(key + ' in friends').column(key + '.name')).then(function(arr) {\n arr.forEach(function(wd, i) {\n expect(wd.getText()).toMatch(expectedNames[i]);\n });\n });\n };\n\n it('should search across all fields when filtering with a string', function() {\n var searchText = element(by.model('searchText'));\n searchText.clear();\n searchText.sendKeys('m');\n expectFriendNames(['Mary', 'Mike', 'Adam'], 'friend');\n\n searchText.clear();\n searchText.sendKeys('76');\n expectFriendNames(['John', 'Julie'], 'friend');\n });\n\n it('should search in specific fields when filtering with a predicate object', function() {\n var searchAny = element(by.model('search.$'));\n searchAny.clear();\n searchAny.sendKeys('i');\n expectFriendNames(['Mary', 'Mike', 'Julie', 'Juliette'], 'friendObj');\n });\n it('should use a equal comparison when comparator is true', function() {\n var searchName = element(by.model('search.name'));\n var strict = element(by.model('strict'));\n searchName.clear();\n searchName.sendKeys('Julie');\n strict.click();\n expectFriendNames(['Julie'], 'friendObj');\n });\n \n
\n */\nfunction filterFilter() {\n return function(array, expression, comparator) {\n if (!isArray(array)) return array;\n\n var comparatorType = typeof(comparator),\n predicates = [];\n\n predicates.check = function(value) {\n for (var j = 0; j < predicates.length; j++) {\n if(!predicates[j](value)) {\n return false;\n }\n }\n return true;\n };\n\n if (comparatorType !== 'function') {\n if (comparatorType === 'boolean' && comparator) {\n comparator = function(obj, text) {\n return angular.equals(obj, text);\n };\n } else {\n comparator = function(obj, text) {\n if (obj && text && typeof obj === 'object' && typeof text === 'object') {\n for (var objKey in obj) {\n if (objKey.charAt(0) !== '$' && hasOwnProperty.call(obj, objKey) &&\n comparator(obj[objKey], text[objKey])) {\n return true;\n }\n }\n return false;\n }\n text = (''+text).toLowerCase();\n return (''+obj).toLowerCase().indexOf(text) > -1;\n };\n }\n }\n\n var search = function(obj, text){\n if (typeof text === 'string' && text.charAt(0) === '!') {\n return !search(obj, text.substr(1));\n }\n switch (typeof obj) {\n case 'boolean':\n case 'number':\n case 'string':\n return comparator(obj, text);\n case 'object':\n switch (typeof text) {\n case 'object':\n return comparator(obj, text);\n default:\n for ( var objKey in obj) {\n if (objKey.charAt(0) !== '$' && search(obj[objKey], text)) {\n return true;\n }\n }\n break;\n }\n return false;\n case 'array':\n for ( var i = 0; i < obj.length; i++) {\n if (search(obj[i], text)) {\n return true;\n }\n }\n return false;\n default:\n return false;\n }\n };\n switch (typeof expression) {\n case 'boolean':\n case 'number':\n case 'string':\n // Set up expression object and fall through\n expression = {$:expression};\n // jshint -W086\n case 'object':\n // jshint +W086\n for (var key in expression) {\n (function(path) {\n if (typeof expression[path] === 'undefined') return;\n predicates.push(function(value) {\n return search(path == '$' ? value : (value && value[path]), expression[path]);\n });\n })(key);\n }\n break;\n case 'function':\n predicates.push(expression);\n break;\n default:\n return array;\n }\n var filtered = [];\n for ( var j = 0; j < array.length; j++) {\n var value = array[j];\n if (predicates.check(value)) {\n filtered.push(value);\n }\n }\n return filtered;\n };\n}\n\n/**\n * @ngdoc filter\n * @name currency\n * @kind function\n *\n * @description\n * Formats a number as a currency (ie $1,234.56). When no currency symbol is provided, default\n * symbol for current locale is used.\n *\n * @param {number} amount Input to filter.\n * @param {string=} symbol Currency symbol or identifier to be displayed.\n * @returns {string} Formatted number.\n *\n *\n * @example\n \n \n \n
\n
\n default currency symbol ($): {{amount | currency}}
\n custom currency identifier (USD$): {{amount | currency:\"USD$\"}}\n
\n
\n \n it('should init with 1234.56', function() {\n expect(element(by.id('currency-default')).getText()).toBe('$1,234.56');\n expect(element(by.binding('amount | currency:\"USD$\"')).getText()).toBe('USD$1,234.56');\n });\n it('should update', function() {\n if (browser.params.browser == 'safari') {\n // Safari does not understand the minus key. See\n // https://github.com/angular/protractor/issues/481\n return;\n }\n element(by.model('amount')).clear();\n element(by.model('amount')).sendKeys('-1234');\n expect(element(by.id('currency-default')).getText()).toBe('($1,234.00)');\n expect(element(by.binding('amount | currency:\"USD$\"')).getText()).toBe('(USD$1,234.00)');\n });\n \n
\n */\ncurrencyFilter.$inject = ['$locale'];\nfunction currencyFilter($locale) {\n var formats = $locale.NUMBER_FORMATS;\n return function(amount, currencySymbol){\n if (isUndefined(currencySymbol)) currencySymbol = formats.CURRENCY_SYM;\n return formatNumber(amount, formats.PATTERNS[1], formats.GROUP_SEP, formats.DECIMAL_SEP, 2).\n replace(/\\u00A4/g, currencySymbol);\n };\n}\n\n/**\n * @ngdoc filter\n * @name number\n * @kind function\n *\n * @description\n * Formats a number as text.\n *\n * If the input is not a number an empty string is returned.\n *\n * @param {number|string} number Number to format.\n * @param {(number|string)=} fractionSize Number of decimal places to round the number to.\n * If this is not provided then the fraction size is computed from the current locale's number\n * formatting pattern. In the case of the default locale, it will be 3.\n * @returns {string} Number rounded to decimalPlaces and places a “,” after each third digit.\n *\n * @example\n \n \n \n
\n Enter number:
\n Default formatting: {{val | number}}
\n No fractions: {{val | number:0}}
\n Negative number: {{-val | number:4}}\n
\n
\n \n it('should format numbers', function() {\n expect(element(by.id('number-default')).getText()).toBe('1,234.568');\n expect(element(by.binding('val | number:0')).getText()).toBe('1,235');\n expect(element(by.binding('-val | number:4')).getText()).toBe('-1,234.5679');\n });\n\n it('should update', function() {\n element(by.model('val')).clear();\n element(by.model('val')).sendKeys('3374.333');\n expect(element(by.id('number-default')).getText()).toBe('3,374.333');\n expect(element(by.binding('val | number:0')).getText()).toBe('3,374');\n expect(element(by.binding('-val | number:4')).getText()).toBe('-3,374.3330');\n });\n \n
\n */\n\n\nnumberFilter.$inject = ['$locale'];\nfunction numberFilter($locale) {\n var formats = $locale.NUMBER_FORMATS;\n return function(number, fractionSize) {\n return formatNumber(number, formats.PATTERNS[0], formats.GROUP_SEP, formats.DECIMAL_SEP,\n fractionSize);\n };\n}\n\nvar DECIMAL_SEP = '.';\nfunction formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {\n if (number == null || !isFinite(number) || isObject(number)) return '';\n\n var isNegative = number < 0;\n number = Math.abs(number);\n var numStr = number + '',\n formatedText = '',\n parts = [];\n\n var hasExponent = false;\n if (numStr.indexOf('e') !== -1) {\n var match = numStr.match(/([\\d\\.]+)e(-?)(\\d+)/);\n if (match && match[2] == '-' && match[3] > fractionSize + 1) {\n numStr = '0';\n number = 0;\n } else {\n formatedText = numStr;\n hasExponent = true;\n }\n }\n\n if (!hasExponent) {\n var fractionLen = (numStr.split(DECIMAL_SEP)[1] || '').length;\n\n // determine fractionSize if it is not specified\n if (isUndefined(fractionSize)) {\n fractionSize = Math.min(Math.max(pattern.minFrac, fractionLen), pattern.maxFrac);\n }\n\n // safely round numbers in JS without hitting imprecisions of floating-point arithmetics\n // inspired by:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round\n number = +(Math.round(+(number.toString() + 'e' + fractionSize)).toString() + 'e' + -fractionSize);\n\n if (number === 0) {\n isNegative = false;\n }\n\n var fraction = ('' + number).split(DECIMAL_SEP);\n var whole = fraction[0];\n fraction = fraction[1] || '';\n\n var i, pos = 0,\n lgroup = pattern.lgSize,\n group = pattern.gSize;\n\n if (whole.length >= (lgroup + group)) {\n pos = whole.length - lgroup;\n for (i = 0; i < pos; i++) {\n if ((pos - i)%group === 0 && i !== 0) {\n formatedText += groupSep;\n }\n formatedText += whole.charAt(i);\n }\n }\n\n for (i = pos; i < whole.length; i++) {\n if ((whole.length - i)%lgroup === 0 && i !== 0) {\n formatedText += groupSep;\n }\n formatedText += whole.charAt(i);\n }\n\n // format fraction part.\n while(fraction.length < fractionSize) {\n fraction += '0';\n }\n\n if (fractionSize && fractionSize !== \"0\") formatedText += decimalSep + fraction.substr(0, fractionSize);\n } else {\n\n if (fractionSize > 0 && number > -1 && number < 1) {\n formatedText = number.toFixed(fractionSize);\n }\n }\n\n parts.push(isNegative ? pattern.negPre : pattern.posPre);\n parts.push(formatedText);\n parts.push(isNegative ? pattern.negSuf : pattern.posSuf);\n return parts.join('');\n}\n\nfunction padNumber(num, digits, trim) {\n var neg = '';\n if (num < 0) {\n neg = '-';\n num = -num;\n }\n num = '' + num;\n while(num.length < digits) num = '0' + num;\n if (trim)\n num = num.substr(num.length - digits);\n return neg + num;\n}\n\n\nfunction dateGetter(name, size, offset, trim) {\n offset = offset || 0;\n return function(date) {\n var value = date['get' + name]();\n if (offset > 0 || value > -offset)\n value += offset;\n if (value === 0 && offset == -12 ) value = 12;\n return padNumber(value, size, trim);\n };\n}\n\nfunction dateStrGetter(name, shortForm) {\n return function(date, formats) {\n var value = date['get' + name]();\n var get = uppercase(shortForm ? ('SHORT' + name) : name);\n\n return formats[get][value];\n };\n}\n\nfunction timeZoneGetter(date) {\n var zone = -1 * date.getTimezoneOffset();\n var paddedZone = (zone >= 0) ? \"+\" : \"\";\n\n paddedZone += padNumber(Math[zone > 0 ? 'floor' : 'ceil'](zone / 60), 2) +\n padNumber(Math.abs(zone % 60), 2);\n\n return paddedZone;\n}\n\nfunction ampmGetter(date, formats) {\n return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1];\n}\n\nvar DATE_FORMATS = {\n yyyy: dateGetter('FullYear', 4),\n yy: dateGetter('FullYear', 2, 0, true),\n y: dateGetter('FullYear', 1),\n MMMM: dateStrGetter('Month'),\n MMM: dateStrGetter('Month', true),\n MM: dateGetter('Month', 2, 1),\n M: dateGetter('Month', 1, 1),\n dd: dateGetter('Date', 2),\n d: dateGetter('Date', 1),\n HH: dateGetter('Hours', 2),\n H: dateGetter('Hours', 1),\n hh: dateGetter('Hours', 2, -12),\n h: dateGetter('Hours', 1, -12),\n mm: dateGetter('Minutes', 2),\n m: dateGetter('Minutes', 1),\n ss: dateGetter('Seconds', 2),\n s: dateGetter('Seconds', 1),\n // while ISO 8601 requires fractions to be prefixed with `.` or `,`\n // we can be just safely rely on using `sss` since we currently don't support single or two digit fractions\n sss: dateGetter('Milliseconds', 3),\n EEEE: dateStrGetter('Day'),\n EEE: dateStrGetter('Day', true),\n a: ampmGetter,\n Z: timeZoneGetter\n};\n\nvar DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,\n NUMBER_STRING = /^\\-?\\d+$/;\n\n/**\n * @ngdoc filter\n * @name date\n * @kind function\n *\n * @description\n * Formats `date` to a string based on the requested `format`.\n *\n * `format` string can be composed of the following elements:\n *\n * * `'yyyy'`: 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010)\n * * `'yy'`: 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)\n * * `'y'`: 1 digit representation of year, e.g. (AD 1 => 1, AD 199 => 199)\n * * `'MMMM'`: Month in year (January-December)\n * * `'MMM'`: Month in year (Jan-Dec)\n * * `'MM'`: Month in year, padded (01-12)\n * * `'M'`: Month in year (1-12)\n * * `'dd'`: Day in month, padded (01-31)\n * * `'d'`: Day in month (1-31)\n * * `'EEEE'`: Day in Week,(Sunday-Saturday)\n * * `'EEE'`: Day in Week, (Sun-Sat)\n * * `'HH'`: Hour in day, padded (00-23)\n * * `'H'`: Hour in day (0-23)\n * * `'hh'`: Hour in am/pm, padded (01-12)\n * * `'h'`: Hour in am/pm, (1-12)\n * * `'mm'`: Minute in hour, padded (00-59)\n * * `'m'`: Minute in hour (0-59)\n * * `'ss'`: Second in minute, padded (00-59)\n * * `'s'`: Second in minute (0-59)\n * * `'.sss' or ',sss'`: Millisecond in second, padded (000-999)\n * * `'a'`: am/pm marker\n * * `'Z'`: 4 digit (+sign) representation of the timezone offset (-1200-+1200)\n *\n * `format` string can also be one of the following predefined\n * {@link guide/i18n localizable formats}:\n *\n * * `'medium'`: equivalent to `'MMM d, y h:mm:ss a'` for en_US locale\n * (e.g. Sep 3, 2010 12:05:08 pm)\n * * `'short'`: equivalent to `'M/d/yy h:mm a'` for en_US locale (e.g. 9/3/10 12:05 pm)\n * * `'fullDate'`: equivalent to `'EEEE, MMMM d,y'` for en_US locale\n * (e.g. Friday, September 3, 2010)\n * * `'longDate'`: equivalent to `'MMMM d, y'` for en_US locale (e.g. September 3, 2010)\n * * `'mediumDate'`: equivalent to `'MMM d, y'` for en_US locale (e.g. Sep 3, 2010)\n * * `'shortDate'`: equivalent to `'M/d/yy'` for en_US locale (e.g. 9/3/10)\n * * `'mediumTime'`: equivalent to `'h:mm:ss a'` for en_US locale (e.g. 12:05:08 pm)\n * * `'shortTime'`: equivalent to `'h:mm a'` for en_US locale (e.g. 12:05 pm)\n *\n * `format` string can contain literal values. These need to be escaped by surrounding with single quotes (e.g.\n * `\"h 'in the morning'\"`). In order to output a single quote, escape it - i.e., two single quotes in a sequence\n * (e.g. `\"h 'o''clock'\"`).\n *\n * @param {(Date|number|string)} date Date to format either as Date object, milliseconds (string or\n * number) or various ISO 8601 datetime string formats (e.g. yyyy-MM-ddTHH:mm:ss.sssZ and its\n * shorter versions like yyyy-MM-ddTHH:mmZ, yyyy-MM-dd or yyyyMMddTHHmmssZ). If no timezone is\n * specified in the string input, the time is considered to be in the local timezone.\n * @param {string=} format Formatting rules (see Description). If not specified,\n * `mediumDate` is used.\n * @returns {string} Formatted string or the input if input is not recognized as date/millis.\n *\n * @example\n \n \n {{1288323623006 | date:'medium'}}:\n {{1288323623006 | date:'medium'}}
\n {{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}:\n {{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}
\n {{1288323623006 | date:'MM/dd/yyyy @ h:mma'}}:\n {{'1288323623006' | date:'MM/dd/yyyy @ h:mma'}}
\n {{1288323623006 | date:\"MM/dd/yyyy 'at' h:mma\"}}:\n {{'1288323623006' | date:\"MM/dd/yyyy 'at' h:mma\"}}
\n
\n \n it('should format date', function() {\n expect(element(by.binding(\"1288323623006 | date:'medium'\")).getText()).\n toMatch(/Oct 2\\d, 2010 \\d{1,2}:\\d{2}:\\d{2} (AM|PM)/);\n expect(element(by.binding(\"1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'\")).getText()).\n toMatch(/2010\\-10\\-2\\d \\d{2}:\\d{2}:\\d{2} (\\-|\\+)?\\d{4}/);\n expect(element(by.binding(\"'1288323623006' | date:'MM/dd/yyyy @ h:mma'\")).getText()).\n toMatch(/10\\/2\\d\\/2010 @ \\d{1,2}:\\d{2}(AM|PM)/);\n expect(element(by.binding(\"'1288323623006' | date:\\\"MM/dd/yyyy 'at' h:mma\\\"\")).getText()).\n toMatch(/10\\/2\\d\\/2010 at \\d{1,2}:\\d{2}(AM|PM)/);\n });\n \n
\n */\ndateFilter.$inject = ['$locale'];\nfunction dateFilter($locale) {\n\n\n var R_ISO8601_STR = /^(\\d{4})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\n // 1 2 3 4 5 6 7 8 9 10 11\n function jsonStringToDate(string) {\n var match;\n if (match = string.match(R_ISO8601_STR)) {\n var date = new Date(0),\n tzHour = 0,\n tzMin = 0,\n dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear,\n timeSetter = match[8] ? date.setUTCHours : date.setHours;\n\n if (match[9]) {\n tzHour = int(match[9] + match[10]);\n tzMin = int(match[9] + match[11]);\n }\n dateSetter.call(date, int(match[1]), int(match[2]) - 1, int(match[3]));\n var h = int(match[4]||0) - tzHour;\n var m = int(match[5]||0) - tzMin;\n var s = int(match[6]||0);\n var ms = Math.round(parseFloat('0.' + (match[7]||0)) * 1000);\n timeSetter.call(date, h, m, s, ms);\n return date;\n }\n return string;\n }\n\n\n return function(date, format) {\n var text = '',\n parts = [],\n fn, match;\n\n format = format || 'mediumDate';\n format = $locale.DATETIME_FORMATS[format] || format;\n if (isString(date)) {\n date = NUMBER_STRING.test(date) ? int(date) : jsonStringToDate(date);\n }\n\n if (isNumber(date)) {\n date = new Date(date);\n }\n\n if (!isDate(date)) {\n return date;\n }\n\n while(format) {\n match = DATE_FORMATS_SPLIT.exec(format);\n if (match) {\n parts = concat(parts, match, 1);\n format = parts.pop();\n } else {\n parts.push(format);\n format = null;\n }\n }\n\n forEach(parts, function(value){\n fn = DATE_FORMATS[value];\n text += fn ? fn(date, $locale.DATETIME_FORMATS)\n : value.replace(/(^'|'$)/g, '').replace(/''/g, \"'\");\n });\n\n return text;\n };\n}\n\n\n/**\n * @ngdoc filter\n * @name json\n * @kind function\n *\n * @description\n * Allows you to convert a JavaScript object into JSON string.\n *\n * This filter is mostly useful for debugging. When using the double curly {{value}} notation\n * the binding is automatically converted to JSON.\n *\n * @param {*} object Any JavaScript object (including arrays and primitive types) to filter.\n * @returns {string} JSON string.\n *\n *\n * @example\n \n \n
{{ {'name':'value'} | json }}
\n
\n \n it('should jsonify filtered objects', function() {\n expect(element(by.binding(\"{'name':'value'}\")).getText()).toMatch(/\\{\\n \"name\": ?\"value\"\\n}/);\n });\n \n
\n *\n */\nfunction jsonFilter() {\n return function(object) {\n return toJson(object, true);\n };\n}\n\n\n/**\n * @ngdoc filter\n * @name lowercase\n * @kind function\n * @description\n * Converts string to lowercase.\n * @see angular.lowercase\n */\nvar lowercaseFilter = valueFn(lowercase);\n\n\n/**\n * @ngdoc filter\n * @name uppercase\n * @kind function\n * @description\n * Converts string to uppercase.\n * @see angular.uppercase\n */\nvar uppercaseFilter = valueFn(uppercase);\n\n/**\n * @ngdoc filter\n * @name limitTo\n * @kind function\n *\n * @description\n * Creates a new array or string containing only a specified number of elements. The elements\n * are taken from either the beginning or the end of the source array or string, as specified by\n * the value and sign (positive or negative) of `limit`.\n *\n * @param {Array|string} input Source array or string to be limited.\n * @param {string|number} limit The length of the returned array or string. If the `limit` number\n * is positive, `limit` number of items from the beginning of the source array/string are copied.\n * If the number is negative, `limit` number of items from the end of the source array/string\n * are copied. The `limit` will be trimmed if it exceeds `array.length`\n * @returns {Array|string} A new sub-array or substring of length `limit` or less if input array\n * had less than `limit` elements.\n *\n * @example\n \n \n \n
\n Limit {{numbers}} to: \n

Output numbers: {{ numbers | limitTo:numLimit }}

\n Limit {{letters}} to: \n

Output letters: {{ letters | limitTo:letterLimit }}

\n
\n
\n \n var numLimitInput = element(by.model('numLimit'));\n var letterLimitInput = element(by.model('letterLimit'));\n var limitedNumbers = element(by.binding('numbers | limitTo:numLimit'));\n var limitedLetters = element(by.binding('letters | limitTo:letterLimit'));\n\n it('should limit the number array to first three items', function() {\n expect(numLimitInput.getAttribute('value')).toBe('3');\n expect(letterLimitInput.getAttribute('value')).toBe('3');\n expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3]');\n expect(limitedLetters.getText()).toEqual('Output letters: abc');\n });\n\n // There is a bug in safari and protractor that doesn't like the minus key\n // it('should update the output when -3 is entered', function() {\n // numLimitInput.clear();\n // numLimitInput.sendKeys('-3');\n // letterLimitInput.clear();\n // letterLimitInput.sendKeys('-3');\n // expect(limitedNumbers.getText()).toEqual('Output numbers: [7,8,9]');\n // expect(limitedLetters.getText()).toEqual('Output letters: ghi');\n // });\n\n it('should not exceed the maximum size of input array', function() {\n numLimitInput.clear();\n numLimitInput.sendKeys('100');\n letterLimitInput.clear();\n letterLimitInput.sendKeys('100');\n expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3,4,5,6,7,8,9]');\n expect(limitedLetters.getText()).toEqual('Output letters: abcdefghi');\n });\n \n
\n */\nfunction limitToFilter(){\n return function(input, limit) {\n if (!isArray(input) && !isString(input)) return input;\n\n if (Math.abs(Number(limit)) === Infinity) {\n limit = Number(limit);\n } else {\n limit = int(limit);\n }\n\n if (isString(input)) {\n //NaN check on limit\n if (limit) {\n return limit >= 0 ? input.slice(0, limit) : input.slice(limit, input.length);\n } else {\n return \"\";\n }\n }\n\n var out = [],\n i, n;\n\n // if abs(limit) exceeds maximum length, trim it\n if (limit > input.length)\n limit = input.length;\n else if (limit < -input.length)\n limit = -input.length;\n\n if (limit > 0) {\n i = 0;\n n = limit;\n } else {\n i = input.length + limit;\n n = input.length;\n }\n\n for (; i=} expression A predicate to be\n * used by the comparator to determine the order of elements.\n *\n * Can be one of:\n *\n * - `function`: Getter function. The result of this function will be sorted using the\n * `<`, `=`, `>` operator.\n * - `string`: An Angular expression. The result of this expression is used to compare elements\n * (for example `name` to sort by a property called `name` or `name.substr(0, 3)` to sort by\n * 3 first characters of a property called `name`). The result of a constant expression\n * is interpreted as a property name to be used in comparisons (for example `\"special name\"`\n * to sort object by the value of their `special name` property). An expression can be\n * optionally prefixed with `+` or `-` to control ascending or descending sort order\n * (for example, `+name` or `-name`). If no property is provided, (e.g. `'+'`) then the array\n * element itself is used to compare where sorting.\n * - `Array`: An array of function or string predicates. The first predicate in the array\n * is used for sorting, but when two items are equivalent, the next predicate is used.\n *\n * If the predicate is missing or empty then it defaults to `'+'`.\n *\n * @param {boolean=} reverse Reverse the order of the array.\n * @returns {Array} Sorted copy of the source array.\n *\n * @example\n \n \n \n
\n
Sorting predicate = {{predicate}}; reverse = {{reverse}}
\n
\n [ unsorted ]\n \n \n \n \n \n \n \n \n \n \n \n
Name\n (^)Phone NumberAge
{{friend.name}}{{friend.phone}}{{friend.age}}
\n
\n
\n
\n *\n * It's also possible to call the orderBy filter manually, by injecting `$filter`, retrieving the\n * filter routine with `$filter('orderBy')`, and calling the returned filter routine with the\n * desired parameters.\n *\n * Example:\n *\n * @example\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n
Name\n (^)Phone NumberAge
{{friend.name}}{{friend.phone}}{{friend.age}}
\n
\n
\n\n \n angular.module('orderByExample', [])\n .controller('ExampleController', ['$scope', '$filter', function($scope, $filter) {\n var orderBy = $filter('orderBy');\n $scope.friends = [\n { name: 'John', phone: '555-1212', age: 10 },\n { name: 'Mary', phone: '555-9876', age: 19 },\n { name: 'Mike', phone: '555-4321', age: 21 },\n { name: 'Adam', phone: '555-5678', age: 35 },\n { name: 'Julie', phone: '555-8765', age: 29 }\n ];\n $scope.order = function(predicate, reverse) {\n $scope.friends = orderBy($scope.friends, predicate, reverse);\n };\n $scope.order('-age',false);\n }]);\n \n
\n */\norderByFilter.$inject = ['$parse'];\nfunction orderByFilter($parse){\n return function(array, sortPredicate, reverseOrder) {\n if (!(isArrayLike(array))) return array;\n sortPredicate = isArray(sortPredicate) ? sortPredicate: [sortPredicate];\n if (sortPredicate.length === 0) { sortPredicate = ['+']; }\n sortPredicate = map(sortPredicate, function(predicate){\n var descending = false, get = predicate || identity;\n if (isString(predicate)) {\n if ((predicate.charAt(0) == '+' || predicate.charAt(0) == '-')) {\n descending = predicate.charAt(0) == '-';\n predicate = predicate.substring(1);\n }\n if ( predicate === '' ) {\n // Effectively no predicate was passed so we compare identity\n return reverseComparator(function(a,b) {\n return compare(a, b);\n }, descending);\n }\n get = $parse(predicate);\n if (get.constant) {\n var key = get();\n return reverseComparator(function(a,b) {\n return compare(a[key], b[key]);\n }, descending);\n }\n }\n return reverseComparator(function(a,b){\n return compare(get(a),get(b));\n }, descending);\n });\n return slice.call(array).sort(reverseComparator(comparator, reverseOrder));\n\n function comparator(o1, o2){\n for ( var i = 0; i < sortPredicate.length; i++) {\n var comp = sortPredicate[i](o1, o2);\n if (comp !== 0) return comp;\n }\n return 0;\n }\n function reverseComparator(comp, descending) {\n return toBoolean(descending)\n ? function(a,b){return comp(b,a);}\n : comp;\n }\n function compare(v1, v2){\n var t1 = typeof v1;\n var t2 = typeof v2;\n if (t1 == t2) {\n if (isDate(v1) && isDate(v2)) {\n v1 = v1.valueOf();\n v2 = v2.valueOf();\n }\n if (t1 == \"string\") {\n v1 = v1.toLowerCase();\n v2 = v2.toLowerCase();\n }\n if (v1 === v2) return 0;\n return v1 < v2 ? -1 : 1;\n } else {\n return t1 < t2 ? -1 : 1;\n }\n }\n };\n}\n\nfunction ngDirective(directive) {\n if (isFunction(directive)) {\n directive = {\n link: directive\n };\n }\n directive.restrict = directive.restrict || 'AC';\n return valueFn(directive);\n}\n\n/**\n * @ngdoc directive\n * @name a\n * @restrict E\n *\n * @description\n * Modifies the default behavior of the html A tag so that the default action is prevented when\n * the href attribute is empty.\n *\n * This change permits the easy creation of action links with the `ngClick` directive\n * without changing the location or causing page reloads, e.g.:\n * `Add Item`\n */\nvar htmlAnchorDirective = valueFn({\n restrict: 'E',\n compile: function(element, attr) {\n\n if (msie <= 8) {\n\n // turn link into a stylable link in IE\n // but only if it doesn't have name attribute, in which case it's an anchor\n if (!attr.href && !attr.name) {\n attr.$set('href', '');\n }\n\n // add a comment node to anchors to workaround IE bug that causes element content to be reset\n // to new attribute content if attribute is updated with value containing @ and element also\n // contains value with @\n // see issue #1949\n element.append(document.createComment('IE fix'));\n }\n\n if (!attr.href && !attr.xlinkHref && !attr.name) {\n return function(scope, element) {\n // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute.\n var href = toString.call(element.prop('href')) === '[object SVGAnimatedString]' ?\n 'xlink:href' : 'href';\n element.on('click', function(event){\n // if we have no href url, then don't navigate anywhere.\n if (!element.attr(href)) {\n event.preventDefault();\n }\n });\n };\n }\n }\n});\n\n/**\n * @ngdoc directive\n * @name ngHref\n * @restrict A\n * @priority 99\n *\n * @description\n * Using Angular markup like `{{hash}}` in an href attribute will\n * make the link go to the wrong URL if the user clicks it before\n * Angular has a chance to replace the `{{hash}}` markup with its\n * value. Until Angular replaces the markup the link will be broken\n * and will most likely return a 404 error. The `ngHref` directive\n * solves this problem.\n *\n * The wrong way to write it:\n * ```html\n * \n * ```\n *\n * The correct way to write it:\n * ```html\n * \n * ```\n *\n * @element A\n * @param {template} ngHref any string which can contain `{{}}` markup.\n *\n * @example\n * This example shows various combinations of `href`, `ng-href` and `ng-click` attributes\n * in links and their different behaviors:\n \n \n
\n
link 1 (link, don't reload)
\n link 2 (link, don't reload)
\n link 3 (link, reload!)
\n anchor (link, don't reload)
\n anchor (no link)
\n link (link, change location)\n
\n \n it('should execute ng-click but not reload when href without value', function() {\n element(by.id('link-1')).click();\n expect(element(by.model('value')).getAttribute('value')).toEqual('1');\n expect(element(by.id('link-1')).getAttribute('href')).toBe('');\n });\n\n it('should execute ng-click but not reload when href empty string', function() {\n element(by.id('link-2')).click();\n expect(element(by.model('value')).getAttribute('value')).toEqual('2');\n expect(element(by.id('link-2')).getAttribute('href')).toBe('');\n });\n\n it('should execute ng-click and change url when ng-href specified', function() {\n expect(element(by.id('link-3')).getAttribute('href')).toMatch(/\\/123$/);\n\n element(by.id('link-3')).click();\n\n // At this point, we navigate away from an Angular page, so we need\n // to use browser.driver to get the base webdriver.\n\n browser.wait(function() {\n return browser.driver.getCurrentUrl().then(function(url) {\n return url.match(/\\/123$/);\n });\n }, 5000, 'page should navigate to /123');\n });\n\n xit('should execute ng-click but not reload when href empty string and name specified', function() {\n element(by.id('link-4')).click();\n expect(element(by.model('value')).getAttribute('value')).toEqual('4');\n expect(element(by.id('link-4')).getAttribute('href')).toBe('');\n });\n\n it('should execute ng-click but not reload when no href but name specified', function() {\n element(by.id('link-5')).click();\n expect(element(by.model('value')).getAttribute('value')).toEqual('5');\n expect(element(by.id('link-5')).getAttribute('href')).toBe(null);\n });\n\n it('should only change url when only ng-href', function() {\n element(by.model('value')).clear();\n element(by.model('value')).sendKeys('6');\n expect(element(by.id('link-6')).getAttribute('href')).toMatch(/\\/6$/);\n\n element(by.id('link-6')).click();\n\n // At this point, we navigate away from an Angular page, so we need\n // to use browser.driver to get the base webdriver.\n browser.wait(function() {\n return browser.driver.getCurrentUrl().then(function(url) {\n return url.match(/\\/6$/);\n });\n }, 5000, 'page should navigate to /6');\n });\n \n \n */\n\n/**\n * @ngdoc directive\n * @name ngSrc\n * @restrict A\n * @priority 99\n *\n * @description\n * Using Angular markup like `{{hash}}` in a `src` attribute doesn't\n * work right: The browser will fetch from the URL with the literal\n * text `{{hash}}` until Angular replaces the expression inside\n * `{{hash}}`. The `ngSrc` directive solves this problem.\n *\n * The buggy way to write it:\n * ```html\n * \n * ```\n *\n * The correct way to write it:\n * ```html\n * \n * ```\n *\n * @element IMG\n * @param {template} ngSrc any string which can contain `{{}}` markup.\n */\n\n/**\n * @ngdoc directive\n * @name ngSrcset\n * @restrict A\n * @priority 99\n *\n * @description\n * Using Angular markup like `{{hash}}` in a `srcset` attribute doesn't\n * work right: The browser will fetch from the URL with the literal\n * text `{{hash}}` until Angular replaces the expression inside\n * `{{hash}}`. The `ngSrcset` directive solves this problem.\n *\n * The buggy way to write it:\n * ```html\n * \n * ```\n *\n * The correct way to write it:\n * ```html\n * \n * ```\n *\n * @element IMG\n * @param {template} ngSrcset any string which can contain `{{}}` markup.\n */\n\n/**\n * @ngdoc directive\n * @name ngDisabled\n * @restrict A\n * @priority 100\n *\n * @description\n *\n * We shouldn't do this, because it will make the button enabled on Chrome/Firefox but not on IE8 and older IEs:\n * ```html\n *
\n * \n *
\n * ```\n *\n * The HTML specification does not require browsers to preserve the values of boolean attributes\n * such as disabled. (Their presence means true and their absence means false.)\n * If we put an Angular interpolation expression into such an attribute then the\n * binding information would be lost when the browser removes the attribute.\n * The `ngDisabled` directive solves this problem for the `disabled` attribute.\n * This complementary directive is not removed by the browser and so provides\n * a permanent reliable place to store the binding information.\n *\n * @example\n \n \n Click me to toggle:
\n \n
\n \n it('should toggle button', function() {\n expect(element(by.css('button')).getAttribute('disabled')).toBeFalsy();\n element(by.model('checked')).click();\n expect(element(by.css('button')).getAttribute('disabled')).toBeTruthy();\n });\n \n
\n *\n * @element INPUT\n * @param {expression} ngDisabled If the {@link guide/expression expression} is truthy,\n * then special attribute \"disabled\" will be set on the element\n */\n\n\n/**\n * @ngdoc directive\n * @name ngChecked\n * @restrict A\n * @priority 100\n *\n * @description\n * The HTML specification does not require browsers to preserve the values of boolean attributes\n * such as checked. (Their presence means true and their absence means false.)\n * If we put an Angular interpolation expression into such an attribute then the\n * binding information would be lost when the browser removes the attribute.\n * The `ngChecked` directive solves this problem for the `checked` attribute.\n * This complementary directive is not removed by the browser and so provides\n * a permanent reliable place to store the binding information.\n * @example\n \n \n Check me to check both:
\n \n
\n \n it('should check both checkBoxes', function() {\n expect(element(by.id('checkSlave')).getAttribute('checked')).toBeFalsy();\n element(by.model('master')).click();\n expect(element(by.id('checkSlave')).getAttribute('checked')).toBeTruthy();\n });\n \n
\n *\n * @element INPUT\n * @param {expression} ngChecked If the {@link guide/expression expression} is truthy,\n * then special attribute \"checked\" will be set on the element\n */\n\n\n/**\n * @ngdoc directive\n * @name ngReadonly\n * @restrict A\n * @priority 100\n *\n * @description\n * The HTML specification does not require browsers to preserve the values of boolean attributes\n * such as readonly. (Their presence means true and their absence means false.)\n * If we put an Angular interpolation expression into such an attribute then the\n * binding information would be lost when the browser removes the attribute.\n * The `ngReadonly` directive solves this problem for the `readonly` attribute.\n * This complementary directive is not removed by the browser and so provides\n * a permanent reliable place to store the binding information.\n * @example\n \n \n Check me to make text readonly:
\n \n
\n \n it('should toggle readonly attr', function() {\n expect(element(by.css('[type=\"text\"]')).getAttribute('readonly')).toBeFalsy();\n element(by.model('checked')).click();\n expect(element(by.css('[type=\"text\"]')).getAttribute('readonly')).toBeTruthy();\n });\n \n
\n *\n * @element INPUT\n * @param {expression} ngReadonly If the {@link guide/expression expression} is truthy,\n * then special attribute \"readonly\" will be set on the element\n */\n\n\n/**\n * @ngdoc directive\n * @name ngSelected\n * @restrict A\n * @priority 100\n *\n * @description\n * The HTML specification does not require browsers to preserve the values of boolean attributes\n * such as selected. (Their presence means true and their absence means false.)\n * If we put an Angular interpolation expression into such an attribute then the\n * binding information would be lost when the browser removes the attribute.\n * The `ngSelected` directive solves this problem for the `selected` attribute.\n * This complementary directive is not removed by the browser and so provides\n * a permanent reliable place to store the binding information.\n *\n * @example\n \n \n Check me to select:
\n \n
\n \n it('should select Greetings!', function() {\n expect(element(by.id('greet')).getAttribute('selected')).toBeFalsy();\n element(by.model('selected')).click();\n expect(element(by.id('greet')).getAttribute('selected')).toBeTruthy();\n });\n \n
\n *\n * @element OPTION\n * @param {expression} ngSelected If the {@link guide/expression expression} is truthy,\n * then special attribute \"selected\" will be set on the element\n */\n\n/**\n * @ngdoc directive\n * @name ngOpen\n * @restrict A\n * @priority 100\n *\n * @description\n * The HTML specification does not require browsers to preserve the values of boolean attributes\n * such as open. (Their presence means true and their absence means false.)\n * If we put an Angular interpolation expression into such an attribute then the\n * binding information would be lost when the browser removes the attribute.\n * The `ngOpen` directive solves this problem for the `open` attribute.\n * This complementary directive is not removed by the browser and so provides\n * a permanent reliable place to store the binding information.\n * @example\n \n \n Check me check multiple:
\n
\n Show/Hide me\n
\n
\n \n it('should toggle open', function() {\n expect(element(by.id('details')).getAttribute('open')).toBeFalsy();\n element(by.model('open')).click();\n expect(element(by.id('details')).getAttribute('open')).toBeTruthy();\n });\n \n
\n *\n * @element DETAILS\n * @param {expression} ngOpen If the {@link guide/expression expression} is truthy,\n * then special attribute \"open\" will be set on the element\n */\n\nvar ngAttributeAliasDirectives = {};\n\n\n// boolean attrs are evaluated\nforEach(BOOLEAN_ATTR, function(propName, attrName) {\n // binding to multiple is not supported\n if (propName == \"multiple\") return;\n\n var normalized = directiveNormalize('ng-' + attrName);\n ngAttributeAliasDirectives[normalized] = function() {\n return {\n priority: 100,\n link: function(scope, element, attr) {\n scope.$watch(attr[normalized], function ngBooleanAttrWatchAction(value) {\n attr.$set(attrName, !!value);\n });\n }\n };\n };\n});\n\n\n// ng-src, ng-srcset, ng-href are interpolated\nforEach(['src', 'srcset', 'href'], function(attrName) {\n var normalized = directiveNormalize('ng-' + attrName);\n ngAttributeAliasDirectives[normalized] = function() {\n return {\n priority: 99, // it needs to run after the attributes are interpolated\n link: function(scope, element, attr) {\n var propName = attrName,\n name = attrName;\n\n if (attrName === 'href' &&\n toString.call(element.prop('href')) === '[object SVGAnimatedString]') {\n name = 'xlinkHref';\n attr.$attr[name] = 'xlink:href';\n propName = null;\n }\n\n attr.$observe(normalized, function(value) {\n if (!value) {\n if (attrName === 'href') {\n attr.$set(name, null);\n }\n return;\n }\n\n attr.$set(name, value);\n\n // on IE, if \"ng:src\" directive declaration is used and \"src\" attribute doesn't exist\n // then calling element.setAttribute('src', 'foo') doesn't do anything, so we need\n // to set the property as well to achieve the desired effect.\n // we use attr[attrName] value since $set can sanitize the url.\n if (msie && propName) element.prop(propName, attr[name]);\n });\n }\n };\n };\n});\n\n/* global -nullFormCtrl */\nvar nullFormCtrl = {\n $addControl: noop,\n $removeControl: noop,\n $setValidity: noop,\n $setDirty: noop,\n $setPristine: noop\n};\n\n/**\n * @ngdoc type\n * @name form.FormController\n *\n * @property {boolean} $pristine True if user has not interacted with the form yet.\n * @property {boolean} $dirty True if user has already interacted with the form.\n * @property {boolean} $valid True if all of the containing forms and controls are valid.\n * @property {boolean} $invalid True if at least one containing control or form is invalid.\n *\n * @property {Object} $error Is an object hash, containing references to all invalid controls or\n * forms, where:\n *\n * - keys are validation tokens (error names),\n * - values are arrays of controls or forms that are invalid for given error name.\n *\n *\n * Built-in validation tokens:\n *\n * - `email`\n * - `max`\n * - `maxlength`\n * - `min`\n * - `minlength`\n * - `number`\n * - `pattern`\n * - `required`\n * - `url`\n *\n * @description\n * `FormController` keeps track of all its controls and nested forms as well as the state of them,\n * such as being valid/invalid or dirty/pristine.\n *\n * Each {@link ng.directive:form form} directive creates an instance\n * of `FormController`.\n *\n */\n//asks for $scope to fool the BC controller module\nFormController.$inject = ['$element', '$attrs', '$scope', '$animate'];\nfunction FormController(element, attrs, $scope, $animate) {\n var form = this,\n parentForm = element.parent().controller('form') || nullFormCtrl,\n invalidCount = 0, // used to easily determine if we are valid\n errors = form.$error = {},\n controls = [];\n\n // init state\n form.$name = attrs.name || attrs.ngForm;\n form.$dirty = false;\n form.$pristine = true;\n form.$valid = true;\n form.$invalid = false;\n\n parentForm.$addControl(form);\n\n // Setup initial state of the control\n element.addClass(PRISTINE_CLASS);\n toggleValidCss(true);\n\n // convenience method for easy toggling of classes\n function toggleValidCss(isValid, validationErrorKey) {\n validationErrorKey = validationErrorKey ? '-' + snake_case(validationErrorKey, '-') : '';\n $animate.setClass(element,\n (isValid ? VALID_CLASS : INVALID_CLASS) + validationErrorKey,\n (isValid ? INVALID_CLASS : VALID_CLASS) + validationErrorKey);\n }\n\n /**\n * @ngdoc method\n * @name form.FormController#$addControl\n *\n * @description\n * Register a control with the form.\n *\n * Input elements using ngModelController do this automatically when they are linked.\n */\n form.$addControl = function(control) {\n // Breaking change - before, inputs whose name was \"hasOwnProperty\" were quietly ignored\n // and not added to the scope. Now we throw an error.\n assertNotHasOwnProperty(control.$name, 'input');\n controls.push(control);\n\n if (control.$name) {\n form[control.$name] = control;\n }\n };\n\n /**\n * @ngdoc method\n * @name form.FormController#$removeControl\n *\n * @description\n * Deregister a control from the form.\n *\n * Input elements using ngModelController do this automatically when they are destroyed.\n */\n form.$removeControl = function(control) {\n if (control.$name && form[control.$name] === control) {\n delete form[control.$name];\n }\n forEach(errors, function(queue, validationToken) {\n form.$setValidity(validationToken, true, control);\n });\n\n arrayRemove(controls, control);\n };\n\n /**\n * @ngdoc method\n * @name form.FormController#$setValidity\n *\n * @description\n * Sets the validity of a form control.\n *\n * This method will also propagate to parent forms.\n */\n form.$setValidity = function(validationToken, isValid, control) {\n var queue = errors[validationToken];\n\n if (isValid) {\n if (queue) {\n arrayRemove(queue, control);\n if (!queue.length) {\n invalidCount--;\n if (!invalidCount) {\n toggleValidCss(isValid);\n form.$valid = true;\n form.$invalid = false;\n }\n errors[validationToken] = false;\n toggleValidCss(true, validationToken);\n parentForm.$setValidity(validationToken, true, form);\n }\n }\n\n } else {\n if (!invalidCount) {\n toggleValidCss(isValid);\n }\n if (queue) {\n if (includes(queue, control)) return;\n } else {\n errors[validationToken] = queue = [];\n invalidCount++;\n toggleValidCss(false, validationToken);\n parentForm.$setValidity(validationToken, false, form);\n }\n queue.push(control);\n\n form.$valid = false;\n form.$invalid = true;\n }\n };\n\n /**\n * @ngdoc method\n * @name form.FormController#$setDirty\n *\n * @description\n * Sets the form to a dirty state.\n *\n * This method can be called to add the 'ng-dirty' class and set the form to a dirty\n * state (ng-dirty class). This method will also propagate to parent forms.\n */\n form.$setDirty = function() {\n $animate.removeClass(element, PRISTINE_CLASS);\n $animate.addClass(element, DIRTY_CLASS);\n form.$dirty = true;\n form.$pristine = false;\n parentForm.$setDirty();\n };\n\n /**\n * @ngdoc method\n * @name form.FormController#$setPristine\n *\n * @description\n * Sets the form to its pristine state.\n *\n * This method can be called to remove the 'ng-dirty' class and set the form to its pristine\n * state (ng-pristine class). This method will also propagate to all the controls contained\n * in this form.\n *\n * Setting a form back to a pristine state is often useful when we want to 'reuse' a form after\n * saving or resetting it.\n */\n form.$setPristine = function () {\n $animate.removeClass(element, DIRTY_CLASS);\n $animate.addClass(element, PRISTINE_CLASS);\n form.$dirty = false;\n form.$pristine = true;\n forEach(controls, function(control) {\n control.$setPristine();\n });\n };\n}\n\n\n/**\n * @ngdoc directive\n * @name ngForm\n * @restrict EAC\n *\n * @description\n * Nestable alias of {@link ng.directive:form `form`} directive. HTML\n * does not allow nesting of form elements. It is useful to nest forms, for example if the validity of a\n * sub-group of controls needs to be determined.\n *\n * Note: the purpose of `ngForm` is to group controls,\n * but not to be a replacement for the `
` tag with all of its capabilities\n * (e.g. posting to the server, ...).\n *\n * @param {string=} ngForm|name Name of the form. If specified, the form controller will be published into\n * related scope, under this name.\n *\n */\n\n /**\n * @ngdoc directive\n * @name form\n * @restrict E\n *\n * @description\n * Directive that instantiates\n * {@link form.FormController FormController}.\n *\n * If the `name` attribute is specified, the form controller is published onto the current scope under\n * this name.\n *\n * # Alias: {@link ng.directive:ngForm `ngForm`}\n *\n * In Angular forms can be nested. This means that the outer form is valid when all of the child\n * forms are valid as well. However, browsers do not allow nesting of `` elements, so\n * Angular provides the {@link ng.directive:ngForm `ngForm`} directive which behaves identically to\n * `` but can be nested. This allows you to have nested forms, which is very useful when\n * using Angular validation directives in forms that are dynamically generated using the\n * {@link ng.directive:ngRepeat `ngRepeat`} directive. Since you cannot dynamically generate the `name`\n * attribute of input elements using interpolation, you have to wrap each set of repeated inputs in an\n * `ngForm` directive and nest these in an outer `form` element.\n *\n *\n * # CSS classes\n * - `ng-valid` is set if the form is valid.\n * - `ng-invalid` is set if the form is invalid.\n * - `ng-pristine` is set if the form is pristine.\n * - `ng-dirty` is set if the form is dirty.\n *\n * Keep in mind that ngAnimate can detect each of these classes when added and removed.\n *\n *\n * # Submitting a form and preventing the default action\n *\n * Since the role of forms in client-side Angular applications is different than in classical\n * roundtrip apps, it is desirable for the browser not to translate the form submission into a full\n * page reload that sends the data to the server. Instead some javascript logic should be triggered\n * to handle the form submission in an application-specific way.\n *\n * For this reason, Angular prevents the default action (form submission to the server) unless the\n * `` element has an `action` attribute specified.\n *\n * You can use one of the following two ways to specify what javascript method should be called when\n * a form is submitted:\n *\n * - {@link ng.directive:ngSubmit ngSubmit} directive on the form element\n * - {@link ng.directive:ngClick ngClick} directive on the first\n * button or input field of type submit (input[type=submit])\n *\n * To prevent double execution of the handler, use only one of the {@link ng.directive:ngSubmit ngSubmit}\n * or {@link ng.directive:ngClick ngClick} directives.\n * This is because of the following form submission rules in the HTML specification:\n *\n * - If a form has only one input field then hitting enter in this field triggers form submit\n * (`ngSubmit`)\n * - if a form has 2+ input fields and no buttons or input[type=submit] then hitting enter\n * doesn't trigger submit\n * - if a form has one or more input fields and one or more buttons or input[type=submit] then\n * hitting enter in any of the input fields will trigger the click handler on the *first* button or\n * input[type=submit] (`ngClick`) *and* a submit handler on the enclosing form (`ngSubmit`)\n *\n *\n * ## Animation Hooks\n *\n * Animations in ngForm are triggered when any of the associated CSS classes are added and removed.\n * These classes are: `.ng-pristine`, `.ng-dirty`, `.ng-invalid` and `.ng-valid` as well as any\n * other validations that are performed within the form. Animations in ngForm are similar to how\n * they work in ngClass and animations can be hooked into using CSS transitions, keyframes as well\n * as JS animations.\n *\n * The following example shows a simple way to utilize CSS transitions to style a form element\n * that has been rendered as invalid after it has been validated:\n *\n *
\n * //be sure to include ngAnimate as a module to hook into more\n * //advanced animations\n * .my-form {\n *   transition:0.5s linear all;\n *   background: white;\n * }\n * .my-form.ng-invalid {\n *   background: red;\n *   color:white;\n * }\n * 
\n *\n * @example\n \n \n \n \n \n userType: \n Required!
\n userType = {{userType}}
\n myForm.input.$valid = {{myForm.input.$valid}}
\n myForm.input.$error = {{myForm.input.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n \n
\n \n it('should initialize to model', function() {\n var userType = element(by.binding('userType'));\n var valid = element(by.binding('myForm.input.$valid'));\n\n expect(userType.getText()).toContain('guest');\n expect(valid.getText()).toContain('true');\n });\n\n it('should be invalid if empty', function() {\n var userType = element(by.binding('userType'));\n var valid = element(by.binding('myForm.input.$valid'));\n var userInput = element(by.model('userType'));\n\n userInput.clear();\n userInput.sendKeys('');\n\n expect(userType.getText()).toEqual('userType =');\n expect(valid.getText()).toContain('false');\n });\n \n
\n *\n * @param {string=} name Name of the form. If specified, the form controller will be published into\n * related scope, under this name.\n */\nvar formDirectiveFactory = function(isNgForm) {\n return ['$timeout', function($timeout) {\n var formDirective = {\n name: 'form',\n restrict: isNgForm ? 'EAC' : 'E',\n controller: FormController,\n compile: function() {\n return {\n pre: function(scope, formElement, attr, controller) {\n if (!attr.action) {\n // we can't use jq events because if a form is destroyed during submission the default\n // action is not prevented. see #1238\n //\n // IE 9 is not affected because it doesn't fire a submit event and try to do a full\n // page reload if the form was destroyed by submission of the form via a click handler\n // on a button in the form. Looks like an IE9 specific bug.\n var preventDefaultListener = function(event) {\n event.preventDefault\n ? event.preventDefault()\n : event.returnValue = false; // IE\n };\n\n addEventListenerFn(formElement[0], 'submit', preventDefaultListener);\n\n // unregister the preventDefault listener so that we don't not leak memory but in a\n // way that will achieve the prevention of the default action.\n formElement.on('$destroy', function() {\n $timeout(function() {\n removeEventListenerFn(formElement[0], 'submit', preventDefaultListener);\n }, 0, false);\n });\n }\n\n var parentFormCtrl = formElement.parent().controller('form'),\n alias = attr.name || attr.ngForm;\n\n if (alias) {\n setter(scope, alias, controller, alias);\n }\n if (parentFormCtrl) {\n formElement.on('$destroy', function() {\n parentFormCtrl.$removeControl(controller);\n if (alias) {\n setter(scope, alias, undefined, alias);\n }\n extend(controller, nullFormCtrl); //stop propagating child destruction handlers upwards\n });\n }\n }\n };\n }\n };\n\n return formDirective;\n }];\n};\n\nvar formDirective = formDirectiveFactory();\nvar ngFormDirective = formDirectiveFactory(true);\n\n/* global VALID_CLASS: true,\n INVALID_CLASS: true,\n PRISTINE_CLASS: true,\n DIRTY_CLASS: true\n*/\n\nvar URL_REGEXP = /^(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?$/;\nvar EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;\nvar NUMBER_REGEXP = /^\\s*(\\-|\\+)?(\\d+|(\\d*(\\.\\d*)))\\s*$/;\n\nvar inputType = {\n\n /**\n * @ngdoc input\n * @name input[text]\n *\n * @description\n * Standard HTML text input with angular data binding, inherited by most of the `input` elements.\n *\n * *NOTE* Not every feature offered is available for all input types.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} required Adds `required` validation error key if the value is not entered.\n * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n * `required` when you want to data-bind to the `required` attribute.\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n * minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n * maxlength.\n * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the\n * RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for\n * patterns defined as scope expressions.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.\n * This parameter is ignored for input[type=password] controls, which will never trim the\n * input.\n *\n * @example\n \n \n \n
\n Single word: \n \n Required!\n \n Single word only!\n\n text = {{text}}
\n myForm.input.$valid = {{myForm.input.$valid}}
\n myForm.input.$error = {{myForm.input.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n
\n
\n \n var text = element(by.binding('text'));\n var valid = element(by.binding('myForm.input.$valid'));\n var input = element(by.model('text'));\n\n it('should initialize to model', function() {\n expect(text.getText()).toContain('guest');\n expect(valid.getText()).toContain('true');\n });\n\n it('should be invalid if empty', function() {\n input.clear();\n input.sendKeys('');\n\n expect(text.getText()).toEqual('text =');\n expect(valid.getText()).toContain('false');\n });\n\n it('should be invalid if multi word', function() {\n input.clear();\n input.sendKeys('hello world');\n\n expect(valid.getText()).toContain('false');\n });\n \n
\n */\n 'text': textInputType,\n\n\n /**\n * @ngdoc input\n * @name input[number]\n *\n * @description\n * Text input with number validation and transformation. Sets the `number` validation\n * error if not a valid number.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`.\n * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`.\n * @param {string=} required Sets `required` validation error key if the value is not entered.\n * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n * `required` when you want to data-bind to the `required` attribute.\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n * minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n * maxlength.\n * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the\n * RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for\n * patterns defined as scope expressions.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n *\n * @example\n \n \n \n
\n Number: \n \n Required!\n \n Not valid number!\n value = {{value}}
\n myForm.input.$valid = {{myForm.input.$valid}}
\n myForm.input.$error = {{myForm.input.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n
\n
\n \n var value = element(by.binding('value'));\n var valid = element(by.binding('myForm.input.$valid'));\n var input = element(by.model('value'));\n\n it('should initialize to model', function() {\n expect(value.getText()).toContain('12');\n expect(valid.getText()).toContain('true');\n });\n\n it('should be invalid if empty', function() {\n input.clear();\n input.sendKeys('');\n expect(value.getText()).toEqual('value =');\n expect(valid.getText()).toContain('false');\n });\n\n it('should be invalid if over max', function() {\n input.clear();\n input.sendKeys('123');\n expect(value.getText()).toEqual('value =');\n expect(valid.getText()).toContain('false');\n });\n \n
\n */\n 'number': numberInputType,\n\n\n /**\n * @ngdoc input\n * @name input[url]\n *\n * @description\n * Text input with URL validation. Sets the `url` validation error key if the content is not a\n * valid URL.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} required Sets `required` validation error key if the value is not entered.\n * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n * `required` when you want to data-bind to the `required` attribute.\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n * minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n * maxlength.\n * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the\n * RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for\n * patterns defined as scope expressions.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n *\n * @example\n \n \n \n
\n URL: \n \n Required!\n \n Not valid url!\n text = {{text}}
\n myForm.input.$valid = {{myForm.input.$valid}}
\n myForm.input.$error = {{myForm.input.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n myForm.$error.url = {{!!myForm.$error.url}}
\n
\n
\n \n var text = element(by.binding('text'));\n var valid = element(by.binding('myForm.input.$valid'));\n var input = element(by.model('text'));\n\n it('should initialize to model', function() {\n expect(text.getText()).toContain('http://google.com');\n expect(valid.getText()).toContain('true');\n });\n\n it('should be invalid if empty', function() {\n input.clear();\n input.sendKeys('');\n\n expect(text.getText()).toEqual('text =');\n expect(valid.getText()).toContain('false');\n });\n\n it('should be invalid if not url', function() {\n input.clear();\n input.sendKeys('box');\n\n expect(valid.getText()).toContain('false');\n });\n \n
\n */\n 'url': urlInputType,\n\n\n /**\n * @ngdoc input\n * @name input[email]\n *\n * @description\n * Text input with email validation. Sets the `email` validation error key if not a valid email\n * address.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} required Sets `required` validation error key if the value is not entered.\n * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n * `required` when you want to data-bind to the `required` attribute.\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n * minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n * maxlength.\n * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the\n * RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for\n * patterns defined as scope expressions.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n *\n * @example\n \n \n \n
\n Email: \n \n Required!\n \n Not valid email!\n text = {{text}}
\n myForm.input.$valid = {{myForm.input.$valid}}
\n myForm.input.$error = {{myForm.input.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n myForm.$error.email = {{!!myForm.$error.email}}
\n
\n
\n \n var text = element(by.binding('text'));\n var valid = element(by.binding('myForm.input.$valid'));\n var input = element(by.model('text'));\n\n it('should initialize to model', function() {\n expect(text.getText()).toContain('me@example.com');\n expect(valid.getText()).toContain('true');\n });\n\n it('should be invalid if empty', function() {\n input.clear();\n input.sendKeys('');\n expect(text.getText()).toEqual('text =');\n expect(valid.getText()).toContain('false');\n });\n\n it('should be invalid if not email', function() {\n input.clear();\n input.sendKeys('xxx');\n\n expect(valid.getText()).toContain('false');\n });\n \n
\n */\n 'email': emailInputType,\n\n\n /**\n * @ngdoc input\n * @name input[radio]\n *\n * @description\n * HTML radio button.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string} value The value to which the expression should be set when selected.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n * @param {string} ngValue Angular expression which sets the value to which the expression should\n * be set when selected.\n *\n * @example\n \n \n \n
\n Red
\n Green
\n Blue
\n color = {{color | json}}
\n
\n Note that `ng-value=\"specialValue\"` sets radio item's value to be the value of `$scope.specialValue`.\n
\n \n it('should change state', function() {\n var color = element(by.binding('color'));\n\n expect(color.getText()).toContain('blue');\n\n element.all(by.model('color')).get(0).click();\n\n expect(color.getText()).toContain('red');\n });\n \n
\n */\n 'radio': radioInputType,\n\n\n /**\n * @ngdoc input\n * @name input[checkbox]\n *\n * @description\n * HTML checkbox.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} ngTrueValue The value to which the expression should be set when selected.\n * @param {string=} ngFalseValue The value to which the expression should be set when not selected.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n *\n * @example\n \n \n \n
\n Value1:
\n Value2:
\n value1 = {{value1}}
\n value2 = {{value2}}
\n
\n
\n \n it('should change state', function() {\n var value1 = element(by.binding('value1'));\n var value2 = element(by.binding('value2'));\n\n expect(value1.getText()).toContain('true');\n expect(value2.getText()).toContain('YES');\n\n element(by.model('value1')).click();\n element(by.model('value2')).click();\n\n expect(value1.getText()).toContain('false');\n expect(value2.getText()).toContain('NO');\n });\n \n
\n */\n 'checkbox': checkboxInputType,\n\n 'hidden': noop,\n 'button': noop,\n 'submit': noop,\n 'reset': noop,\n 'file': noop\n};\n\n// A helper function to call $setValidity and return the value / undefined,\n// a pattern that is repeated a lot in the input validation logic.\nfunction validate(ctrl, validatorName, validity, value){\n ctrl.$setValidity(validatorName, validity);\n return validity ? value : undefined;\n}\n\nfunction testFlags(validity, flags) {\n var i, flag;\n if (flags) {\n for (i=0; i= minlength, value);\n };\n\n ctrl.$parsers.push(minLengthValidator);\n ctrl.$formatters.push(minLengthValidator);\n }\n\n // max length validator\n if (attr.ngMaxlength) {\n var maxlength = int(attr.ngMaxlength);\n var maxLengthValidator = function(value) {\n return validate(ctrl, 'maxlength', ctrl.$isEmpty(value) || value.length <= maxlength, value);\n };\n\n ctrl.$parsers.push(maxLengthValidator);\n ctrl.$formatters.push(maxLengthValidator);\n }\n}\n\nvar numberBadFlags = ['badInput'];\n\nfunction numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {\n textInputType(scope, element, attr, ctrl, $sniffer, $browser);\n\n ctrl.$parsers.push(function(value) {\n var empty = ctrl.$isEmpty(value);\n if (empty || NUMBER_REGEXP.test(value)) {\n ctrl.$setValidity('number', true);\n return value === '' ? null : (empty ? value : parseFloat(value));\n } else {\n ctrl.$setValidity('number', false);\n return undefined;\n }\n });\n\n addNativeHtml5Validators(ctrl, 'number', numberBadFlags, null, ctrl.$$validityState);\n\n ctrl.$formatters.push(function(value) {\n return ctrl.$isEmpty(value) ? '' : '' + value;\n });\n\n if (attr.min) {\n var minValidator = function(value) {\n var min = parseFloat(attr.min);\n return validate(ctrl, 'min', ctrl.$isEmpty(value) || value >= min, value);\n };\n\n ctrl.$parsers.push(minValidator);\n ctrl.$formatters.push(minValidator);\n }\n\n if (attr.max) {\n var maxValidator = function(value) {\n var max = parseFloat(attr.max);\n return validate(ctrl, 'max', ctrl.$isEmpty(value) || value <= max, value);\n };\n\n ctrl.$parsers.push(maxValidator);\n ctrl.$formatters.push(maxValidator);\n }\n\n ctrl.$formatters.push(function(value) {\n return validate(ctrl, 'number', ctrl.$isEmpty(value) || isNumber(value), value);\n });\n}\n\nfunction urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {\n textInputType(scope, element, attr, ctrl, $sniffer, $browser);\n\n var urlValidator = function(value) {\n return validate(ctrl, 'url', ctrl.$isEmpty(value) || URL_REGEXP.test(value), value);\n };\n\n ctrl.$formatters.push(urlValidator);\n ctrl.$parsers.push(urlValidator);\n}\n\nfunction emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {\n textInputType(scope, element, attr, ctrl, $sniffer, $browser);\n\n var emailValidator = function(value) {\n return validate(ctrl, 'email', ctrl.$isEmpty(value) || EMAIL_REGEXP.test(value), value);\n };\n\n ctrl.$formatters.push(emailValidator);\n ctrl.$parsers.push(emailValidator);\n}\n\nfunction radioInputType(scope, element, attr, ctrl) {\n // make the name unique, if not defined\n if (isUndefined(attr.name)) {\n element.attr('name', nextUid());\n }\n\n element.on('click', function() {\n if (element[0].checked) {\n scope.$apply(function() {\n ctrl.$setViewValue(attr.value);\n });\n }\n });\n\n ctrl.$render = function() {\n var value = attr.value;\n element[0].checked = (value == ctrl.$viewValue);\n };\n\n attr.$observe('value', ctrl.$render);\n}\n\nfunction checkboxInputType(scope, element, attr, ctrl) {\n var trueValue = attr.ngTrueValue,\n falseValue = attr.ngFalseValue;\n\n if (!isString(trueValue)) trueValue = true;\n if (!isString(falseValue)) falseValue = false;\n\n element.on('click', function() {\n scope.$apply(function() {\n ctrl.$setViewValue(element[0].checked);\n });\n });\n\n ctrl.$render = function() {\n element[0].checked = ctrl.$viewValue;\n };\n\n // Override the standard `$isEmpty` because a value of `false` means empty in a checkbox.\n ctrl.$isEmpty = function(value) {\n return value !== trueValue;\n };\n\n ctrl.$formatters.push(function(value) {\n return value === trueValue;\n });\n\n ctrl.$parsers.push(function(value) {\n return value ? trueValue : falseValue;\n });\n}\n\n\n/**\n * @ngdoc directive\n * @name textarea\n * @restrict E\n *\n * @description\n * HTML textarea element control with angular data-binding. The data-binding and validation\n * properties of this element are exactly the same as those of the\n * {@link ng.directive:input input element}.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} required Sets `required` validation error key if the value is not entered.\n * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n * `required` when you want to data-bind to the `required` attribute.\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n * minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n * maxlength.\n * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the\n * RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for\n * patterns defined as scope expressions.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.\n */\n\n\n/**\n * @ngdoc directive\n * @name input\n * @restrict E\n *\n * @description\n * HTML input element control with angular data-binding. Input control follows HTML5 input types\n * and polyfills the HTML5 validation behavior for older browsers.\n *\n * *NOTE* Not every feature offered is available for all input types.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} required Sets `required` validation error key if the value is not entered.\n * @param {boolean=} ngRequired Sets `required` attribute if set to true\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n * minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n * maxlength.\n * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the\n * RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for\n * patterns defined as scope expressions.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n * interaction with the input element.\n * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.\n * This parameter is ignored for input[type=password] controls, which will never trim the\n * input.\n *\n * @example\n \n \n \n
\n
\n User name: \n \n Required!
\n Last name: \n \n Too short!\n \n Too long!
\n
\n
\n user = {{user}}
\n myForm.userName.$valid = {{myForm.userName.$valid}}
\n myForm.userName.$error = {{myForm.userName.$error}}
\n myForm.lastName.$valid = {{myForm.lastName.$valid}}
\n myForm.lastName.$error = {{myForm.lastName.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n myForm.$error.minlength = {{!!myForm.$error.minlength}}
\n myForm.$error.maxlength = {{!!myForm.$error.maxlength}}
\n
\n
\n \n var user = element(by.binding('{{user}}'));\n var userNameValid = element(by.binding('myForm.userName.$valid'));\n var lastNameValid = element(by.binding('myForm.lastName.$valid'));\n var lastNameError = element(by.binding('myForm.lastName.$error'));\n var formValid = element(by.binding('myForm.$valid'));\n var userNameInput = element(by.model('user.name'));\n var userLastInput = element(by.model('user.last'));\n\n it('should initialize to model', function() {\n expect(user.getText()).toContain('{\"name\":\"guest\",\"last\":\"visitor\"}');\n expect(userNameValid.getText()).toContain('true');\n expect(formValid.getText()).toContain('true');\n });\n\n it('should be invalid if empty when required', function() {\n userNameInput.clear();\n userNameInput.sendKeys('');\n\n expect(user.getText()).toContain('{\"last\":\"visitor\"}');\n expect(userNameValid.getText()).toContain('false');\n expect(formValid.getText()).toContain('false');\n });\n\n it('should be valid if empty when min length is set', function() {\n userLastInput.clear();\n userLastInput.sendKeys('');\n\n expect(user.getText()).toContain('{\"name\":\"guest\",\"last\":\"\"}');\n expect(lastNameValid.getText()).toContain('true');\n expect(formValid.getText()).toContain('true');\n });\n\n it('should be invalid if less than required min length', function() {\n userLastInput.clear();\n userLastInput.sendKeys('xx');\n\n expect(user.getText()).toContain('{\"name\":\"guest\"}');\n expect(lastNameValid.getText()).toContain('false');\n expect(lastNameError.getText()).toContain('minlength');\n expect(formValid.getText()).toContain('false');\n });\n\n it('should be invalid if longer than max length', function() {\n userLastInput.clear();\n userLastInput.sendKeys('some ridiculously long name');\n\n expect(user.getText()).toContain('{\"name\":\"guest\"}');\n expect(lastNameValid.getText()).toContain('false');\n expect(lastNameError.getText()).toContain('maxlength');\n expect(formValid.getText()).toContain('false');\n });\n \n
\n */\nvar inputDirective = ['$browser', '$sniffer', function($browser, $sniffer) {\n return {\n restrict: 'E',\n require: '?ngModel',\n link: function(scope, element, attr, ctrl) {\n if (ctrl) {\n (inputType[lowercase(attr.type)] || inputType.text)(scope, element, attr, ctrl, $sniffer,\n $browser);\n }\n }\n };\n}];\n\nvar VALID_CLASS = 'ng-valid',\n INVALID_CLASS = 'ng-invalid',\n PRISTINE_CLASS = 'ng-pristine',\n DIRTY_CLASS = 'ng-dirty';\n\n/**\n * @ngdoc type\n * @name ngModel.NgModelController\n *\n * @property {string} $viewValue Actual string value in the view.\n * @property {*} $modelValue The value in the model, that the control is bound to.\n * @property {Array.} $parsers Array of functions to execute, as a pipeline, whenever\n the control reads value from the DOM. Each function is called, in turn, passing the value\n through to the next. The last return value is used to populate the model.\n Used to sanitize / convert the value as well as validation. For validation,\n the parsers should update the validity state using\n {@link ngModel.NgModelController#$setValidity $setValidity()},\n and return `undefined` for invalid values.\n\n *\n * @property {Array.} $formatters Array of functions to execute, as a pipeline, whenever\n the model value changes. Each function is called, in turn, passing the value through to the\n next. Used to format / convert values for display in the control and validation.\n * ```js\n * function formatter(value) {\n * if (value) {\n * return value.toUpperCase();\n * }\n * }\n * ngModel.$formatters.push(formatter);\n * ```\n *\n * @property {Array.} $viewChangeListeners Array of functions to execute whenever the\n * view value has changed. It is called with no arguments, and its return value is ignored.\n * This can be used in place of additional $watches against the model value.\n *\n * @property {Object} $error An object hash with all errors as keys.\n *\n * @property {boolean} $pristine True if user has not interacted with the control yet.\n * @property {boolean} $dirty True if user has already interacted with the control.\n * @property {boolean} $valid True if there is no error.\n * @property {boolean} $invalid True if at least one error on the control.\n *\n * @description\n *\n * `NgModelController` provides API for the `ng-model` directive. The controller contains\n * services for data-binding, validation, CSS updates, and value formatting and parsing. It\n * purposefully does not contain any logic which deals with DOM rendering or listening to\n * DOM events. Such DOM related logic should be provided by other directives which make use of\n * `NgModelController` for data-binding.\n *\n * ## Custom Control Example\n * This example shows how to use `NgModelController` with a custom control to achieve\n * data-binding. Notice how different directives (`contenteditable`, `ng-model`, and `required`)\n * collaborate together to achieve the desired result.\n *\n * Note that `contenteditable` is an HTML5 attribute, which tells the browser to let the element\n * contents be edited in place by the user. This will not work on older browsers.\n *\n * We are using the {@link ng.service:$sce $sce} service here and include the {@link ngSanitize $sanitize}\n * module to automatically remove \"bad\" content like inline event listener (e.g. ``).\n * However, as we are using `$sce` the model can still decide to provide unsafe content if it marks\n * that content using the `$sce` service.\n *\n * \n \n [contenteditable] {\n border: 1px solid black;\n background-color: white;\n min-height: 20px;\n }\n\n .ng-invalid {\n border: 1px solid red;\n }\n\n \n \n angular.module('customControl', ['ngSanitize']).\n directive('contenteditable', ['$sce', function($sce) {\n return {\n restrict: 'A', // only activate on element attribute\n require: '?ngModel', // get a hold of NgModelController\n link: function(scope, element, attrs, ngModel) {\n if(!ngModel) return; // do nothing if no ng-model\n\n // Specify how UI should be updated\n ngModel.$render = function() {\n element.html($sce.getTrustedHtml(ngModel.$viewValue || ''));\n };\n\n // Listen for change events to enable binding\n element.on('blur keyup change', function() {\n scope.$evalAsync(read);\n });\n read(); // initialize\n\n // Write data to the model\n function read() {\n var html = element.html();\n // When we clear the content editable the browser leaves a
behind\n // If strip-br attribute is provided then we strip this out\n if( attrs.stripBr && html == '
' ) {\n html = '';\n }\n ngModel.$setViewValue(html);\n }\n }\n };\n }]);\n
\n \n
\n
Change me!
\n Required!\n
\n \n
\n
\n \n it('should data-bind and become invalid', function() {\n if (browser.params.browser == 'safari' || browser.params.browser == 'firefox') {\n // SafariDriver can't handle contenteditable\n // and Firefox driver can't clear contenteditables very well\n return;\n }\n var contentEditable = element(by.css('[contenteditable]'));\n var content = 'Change me!';\n\n expect(contentEditable.getText()).toEqual(content);\n\n contentEditable.clear();\n contentEditable.sendKeys(protractor.Key.BACK_SPACE);\n expect(contentEditable.getText()).toEqual('');\n expect(contentEditable.getAttribute('class')).toMatch(/ng-invalid-required/);\n });\n \n *
\n *\n *\n */\nvar NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$parse', '$animate',\n function($scope, $exceptionHandler, $attr, $element, $parse, $animate) {\n this.$viewValue = Number.NaN;\n this.$modelValue = Number.NaN;\n this.$parsers = [];\n this.$formatters = [];\n this.$viewChangeListeners = [];\n this.$pristine = true;\n this.$dirty = false;\n this.$valid = true;\n this.$invalid = false;\n this.$name = $attr.name;\n\n var ngModelGet = $parse($attr.ngModel),\n ngModelSet = ngModelGet.assign;\n\n if (!ngModelSet) {\n throw minErr('ngModel')('nonassign', \"Expression '{0}' is non-assignable. Element: {1}\",\n $attr.ngModel, startingTag($element));\n }\n\n /**\n * @ngdoc method\n * @name ngModel.NgModelController#$render\n *\n * @description\n * Called when the view needs to be updated. It is expected that the user of the ng-model\n * directive will implement this method.\n */\n this.$render = noop;\n\n /**\n * @ngdoc method\n * @name ngModel.NgModelController#$isEmpty\n *\n * @description\n * This is called when we need to determine if the value of the input is empty.\n *\n * For instance, the required directive does this to work out if the input has data or not.\n * The default `$isEmpty` function checks whether the value is `undefined`, `''`, `null` or `NaN`.\n *\n * You can override this for input directives whose concept of being empty is different to the\n * default. The `checkboxInputType` directive does this because in its case a value of `false`\n * implies empty.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is empty.\n */\n this.$isEmpty = function(value) {\n return isUndefined(value) || value === '' || value === null || value !== value;\n };\n\n var parentForm = $element.inheritedData('$formController') || nullFormCtrl,\n invalidCount = 0, // used to easily determine if we are valid\n $error = this.$error = {}; // keep invalid keys here\n\n\n // Setup initial state of the control\n $element.addClass(PRISTINE_CLASS);\n toggleValidCss(true);\n\n // convenience method for easy toggling of classes\n function toggleValidCss(isValid, validationErrorKey) {\n validationErrorKey = validationErrorKey ? '-' + snake_case(validationErrorKey, '-') : '';\n $animate.removeClass($element, (isValid ? INVALID_CLASS : VALID_CLASS) + validationErrorKey);\n $animate.addClass($element, (isValid ? VALID_CLASS : INVALID_CLASS) + validationErrorKey);\n }\n\n /**\n * @ngdoc method\n * @name ngModel.NgModelController#$setValidity\n *\n * @description\n * Change the validity state, and notifies the form when the control changes validity. (i.e. it\n * does not notify form if given validator is already marked as invalid).\n *\n * This method should be called by validators - i.e. the parser or formatter functions.\n *\n * @param {string} validationErrorKey Name of the validator. the `validationErrorKey` will assign\n * to `$error[validationErrorKey]=!isValid` so that it is available for data-binding.\n * The `validationErrorKey` should be in camelCase and will get converted into dash-case\n * for class name. Example: `myError` will result in `ng-valid-my-error` and `ng-invalid-my-error`\n * class and can be bound to as `{{someForm.someControl.$error.myError}}` .\n * @param {boolean} isValid Whether the current state is valid (true) or invalid (false).\n */\n this.$setValidity = function(validationErrorKey, isValid) {\n // Purposeful use of ! here to cast isValid to boolean in case it is undefined\n // jshint -W018\n if ($error[validationErrorKey] === !isValid) return;\n // jshint +W018\n\n if (isValid) {\n if ($error[validationErrorKey]) invalidCount--;\n if (!invalidCount) {\n toggleValidCss(true);\n this.$valid = true;\n this.$invalid = false;\n }\n } else {\n toggleValidCss(false);\n this.$invalid = true;\n this.$valid = false;\n invalidCount++;\n }\n\n $error[validationErrorKey] = !isValid;\n toggleValidCss(isValid, validationErrorKey);\n\n parentForm.$setValidity(validationErrorKey, isValid, this);\n };\n\n /**\n * @ngdoc method\n * @name ngModel.NgModelController#$setPristine\n *\n * @description\n * Sets the control to its pristine state.\n *\n * This method can be called to remove the 'ng-dirty' class and set the control to its pristine\n * state (ng-pristine class).\n */\n this.$setPristine = function () {\n this.$dirty = false;\n this.$pristine = true;\n $animate.removeClass($element, DIRTY_CLASS);\n $animate.addClass($element, PRISTINE_CLASS);\n };\n\n /**\n * @ngdoc method\n * @name ngModel.NgModelController#$setViewValue\n *\n * @description\n * Update the view value.\n *\n * This method should be called when the view value changes, typically from within a DOM event handler.\n * For example {@link ng.directive:input input} and\n * {@link ng.directive:select select} directives call it.\n *\n * It will update the $viewValue, then pass this value through each of the functions in `$parsers`,\n * which includes any validators. The value that comes out of this `$parsers` pipeline, be applied to\n * `$modelValue` and the **expression** specified in the `ng-model` attribute.\n *\n * Lastly, all the registered change listeners, in the `$viewChangeListeners` list, are called.\n *\n * Note that calling this function does not trigger a `$digest`.\n *\n * @param {string} value Value from the view.\n */\n this.$setViewValue = function(value) {\n this.$viewValue = value;\n\n // change to dirty\n if (this.$pristine) {\n this.$dirty = true;\n this.$pristine = false;\n $animate.removeClass($element, PRISTINE_CLASS);\n $animate.addClass($element, DIRTY_CLASS);\n parentForm.$setDirty();\n }\n\n forEach(this.$parsers, function(fn) {\n value = fn(value);\n });\n\n if (this.$modelValue !== value) {\n this.$modelValue = value;\n ngModelSet($scope, value);\n forEach(this.$viewChangeListeners, function(listener) {\n try {\n listener();\n } catch(e) {\n $exceptionHandler(e);\n }\n });\n }\n };\n\n // model -> value\n var ctrl = this;\n\n $scope.$watch(function ngModelWatch() {\n var value = ngModelGet($scope);\n\n // if scope model value and ngModel value are out of sync\n if (ctrl.$modelValue !== value) {\n\n var formatters = ctrl.$formatters,\n idx = formatters.length;\n\n ctrl.$modelValue = value;\n while(idx--) {\n value = formatters[idx](value);\n }\n\n if (ctrl.$viewValue !== value) {\n ctrl.$viewValue = value;\n ctrl.$render();\n }\n }\n\n return value;\n });\n}];\n\n\n/**\n * @ngdoc directive\n * @name ngModel\n *\n * @element input\n *\n * @description\n * The `ngModel` directive binds an `input`,`select`, `textarea` (or custom form control) to a\n * property on the scope using {@link ngModel.NgModelController NgModelController},\n * which is created and exposed by this directive.\n *\n * `ngModel` is responsible for:\n *\n * - Binding the view into the model, which other directives such as `input`, `textarea` or `select`\n * require.\n * - Providing validation behavior (i.e. required, number, email, url).\n * - Keeping the state of the control (valid/invalid, dirty/pristine, validation errors).\n * - Setting related css classes on the element (`ng-valid`, `ng-invalid`, `ng-dirty`, `ng-pristine`) including animations.\n * - Registering the control with its parent {@link ng.directive:form form}.\n *\n * Note: `ngModel` will try to bind to the property given by evaluating the expression on the\n * current scope. If the property doesn't already exist on this scope, it will be created\n * implicitly and added to the scope.\n *\n * For best practices on using `ngModel`, see:\n *\n * - [Understanding Scopes](https://github.com/angular/angular.js/wiki/Understanding-Scopes)\n *\n * For basic examples, how to use `ngModel`, see:\n *\n * - {@link ng.directive:input input}\n * - {@link input[text] text}\n * - {@link input[checkbox] checkbox}\n * - {@link input[radio] radio}\n * - {@link input[number] number}\n * - {@link input[email] email}\n * - {@link input[url] url}\n * - {@link ng.directive:select select}\n * - {@link ng.directive:textarea textarea}\n *\n * # CSS classes\n * The following CSS classes are added and removed on the associated input/select/textarea element\n * depending on the validity of the model.\n *\n * - `ng-valid` is set if the model is valid.\n * - `ng-invalid` is set if the model is invalid.\n * - `ng-pristine` is set if the model is pristine.\n * - `ng-dirty` is set if the model is dirty.\n *\n * Keep in mind that ngAnimate can detect each of these classes when added and removed.\n *\n * ## Animation Hooks\n *\n * Animations within models are triggered when any of the associated CSS classes are added and removed\n * on the input element which is attached to the model. These classes are: `.ng-pristine`, `.ng-dirty`,\n * `.ng-invalid` and `.ng-valid` as well as any other validations that are performed on the model itself.\n * The animations that are triggered within ngModel are similar to how they work in ngClass and\n * animations can be hooked into using CSS transitions, keyframes as well as JS animations.\n *\n * The following example shows a simple way to utilize CSS transitions to style an input element\n * that has been rendered as invalid after it has been validated:\n *\n *
\n * //be sure to include ngAnimate as a module to hook into more\n * //advanced animations\n * .my-input {\n *   transition:0.5s linear all;\n *   background: white;\n * }\n * .my-input.ng-invalid {\n *   background: red;\n *   color:white;\n * }\n * 
\n *\n * @example\n * \n \n \n \n Update input to see transitions when valid/invalid.\n Integer is a valid value.\n
\n \n
\n
\n *
\n */\nvar ngModelDirective = function() {\n return {\n require: ['ngModel', '^?form'],\n controller: NgModelController,\n link: function(scope, element, attr, ctrls) {\n // notify others, especially parent forms\n\n var modelCtrl = ctrls[0],\n formCtrl = ctrls[1] || nullFormCtrl;\n\n formCtrl.$addControl(modelCtrl);\n\n scope.$on('$destroy', function() {\n formCtrl.$removeControl(modelCtrl);\n });\n }\n };\n};\n\n\n/**\n * @ngdoc directive\n * @name ngChange\n *\n * @description\n * Evaluate the given expression when the user changes the input.\n * The expression is evaluated immediately, unlike the JavaScript onchange event\n * which only triggers at the end of a change (usually, when the user leaves the\n * form element or presses the return key).\n * The expression is not evaluated when the value change is coming from the model.\n *\n * Note, this directive requires `ngModel` to be present.\n *\n * @element input\n * @param {expression} ngChange {@link guide/expression Expression} to evaluate upon change\n * in input value.\n *\n * @example\n * \n * \n * \n *
\n * \n * \n *
\n * debug = {{confirmed}}
\n * counter = {{counter}}
\n *
\n *
\n * \n * var counter = element(by.binding('counter'));\n * var debug = element(by.binding('confirmed'));\n *\n * it('should evaluate the expression if changing from view', function() {\n * expect(counter.getText()).toContain('0');\n *\n * element(by.id('ng-change-example1')).click();\n *\n * expect(counter.getText()).toContain('1');\n * expect(debug.getText()).toContain('true');\n * });\n *\n * it('should not evaluate the expression if changing from model', function() {\n * element(by.id('ng-change-example2')).click();\n\n * expect(counter.getText()).toContain('0');\n * expect(debug.getText()).toContain('true');\n * });\n * \n *
\n */\nvar ngChangeDirective = valueFn({\n require: 'ngModel',\n link: function(scope, element, attr, ctrl) {\n ctrl.$viewChangeListeners.push(function() {\n scope.$eval(attr.ngChange);\n });\n }\n});\n\n\nvar requiredDirective = function() {\n return {\n require: '?ngModel',\n link: function(scope, elm, attr, ctrl) {\n if (!ctrl) return;\n attr.required = true; // force truthy in case we are on non input element\n\n var validator = function(value) {\n if (attr.required && ctrl.$isEmpty(value)) {\n ctrl.$setValidity('required', false);\n return;\n } else {\n ctrl.$setValidity('required', true);\n return value;\n }\n };\n\n ctrl.$formatters.push(validator);\n ctrl.$parsers.unshift(validator);\n\n attr.$observe('required', function() {\n validator(ctrl.$viewValue);\n });\n }\n };\n};\n\n\n/**\n * @ngdoc directive\n * @name ngList\n *\n * @description\n * Text input that converts between a delimited string and an array of strings. The delimiter\n * can be a fixed string (by default a comma) or a regular expression.\n *\n * @element input\n * @param {string=} ngList optional delimiter that should be used to split the value. If\n * specified in form `/something/` then the value will be converted into a regular expression.\n *\n * @example\n \n \n \n
\n List: \n \n Required!\n
\n names = {{names}}
\n myForm.namesInput.$valid = {{myForm.namesInput.$valid}}
\n myForm.namesInput.$error = {{myForm.namesInput.$error}}
\n myForm.$valid = {{myForm.$valid}}
\n myForm.$error.required = {{!!myForm.$error.required}}
\n
\n
\n \n var listInput = element(by.model('names'));\n var names = element(by.binding('{{names}}'));\n var valid = element(by.binding('myForm.namesInput.$valid'));\n var error = element(by.css('span.error'));\n\n it('should initialize to model', function() {\n expect(names.getText()).toContain('[\"igor\",\"misko\",\"vojta\"]');\n expect(valid.getText()).toContain('true');\n expect(error.getCssValue('display')).toBe('none');\n });\n\n it('should be invalid if empty', function() {\n listInput.clear();\n listInput.sendKeys('');\n\n expect(names.getText()).toContain('');\n expect(valid.getText()).toContain('false');\n expect(error.getCssValue('display')).not.toBe('none'); });\n \n
\n */\nvar ngListDirective = function() {\n return {\n require: 'ngModel',\n link: function(scope, element, attr, ctrl) {\n var match = /\\/(.*)\\//.exec(attr.ngList),\n separator = match && new RegExp(match[1]) || attr.ngList || ',';\n\n var parse = function(viewValue) {\n // If the viewValue is invalid (say required but empty) it will be `undefined`\n if (isUndefined(viewValue)) return;\n\n var list = [];\n\n if (viewValue) {\n forEach(viewValue.split(separator), function(value) {\n if (value) list.push(trim(value));\n });\n }\n\n return list;\n };\n\n ctrl.$parsers.push(parse);\n ctrl.$formatters.push(function(value) {\n if (isArray(value)) {\n return value.join(', ');\n }\n\n return undefined;\n });\n\n // Override the standard $isEmpty because an empty array means the input is empty.\n ctrl.$isEmpty = function(value) {\n return !value || !value.length;\n };\n }\n };\n};\n\n\nvar CONSTANT_VALUE_REGEXP = /^(true|false|\\d+)$/;\n/**\n * @ngdoc directive\n * @name ngValue\n *\n * @description\n * Binds the given expression to the value of `input[select]` or `input[radio]`, so\n * that when the element is selected, the `ngModel` of that element is set to the\n * bound value.\n *\n * `ngValue` is useful when dynamically generating lists of radio buttons using `ng-repeat`, as\n * shown below.\n *\n * @element input\n * @param {string=} ngValue angular expression, whose value will be bound to the `value` attribute\n * of the `input` element\n *\n * @example\n \n \n \n
\n

Which is your favorite?

\n \n
You chose {{my.favorite}}
\n
\n
\n \n var favorite = element(by.binding('my.favorite'));\n\n it('should initialize to model', function() {\n expect(favorite.getText()).toContain('unicorns');\n });\n it('should bind the values to the inputs', function() {\n element.all(by.model('my.favorite')).get(0).click();\n expect(favorite.getText()).toContain('pizza');\n });\n \n
\n */\nvar ngValueDirective = function() {\n return {\n priority: 100,\n compile: function(tpl, tplAttr) {\n if (CONSTANT_VALUE_REGEXP.test(tplAttr.ngValue)) {\n return function ngValueConstantLink(scope, elm, attr) {\n attr.$set('value', scope.$eval(attr.ngValue));\n };\n } else {\n return function ngValueLink(scope, elm, attr) {\n scope.$watch(attr.ngValue, function valueWatchAction(value) {\n attr.$set('value', value);\n });\n };\n }\n }\n };\n};\n\n/**\n * @ngdoc directive\n * @name ngBind\n * @restrict AC\n *\n * @description\n * The `ngBind` attribute tells Angular to replace the text content of the specified HTML element\n * with the value of a given expression, and to update the text content when the value of that\n * expression changes.\n *\n * Typically, you don't use `ngBind` directly, but instead you use the double curly markup like\n * `{{ expression }}` which is similar but less verbose.\n *\n * It is preferable to use `ngBind` instead of `{{ expression }}` if a template is momentarily\n * displayed by the browser in its raw state before Angular compiles it. Since `ngBind` is an\n * element attribute, it makes the bindings invisible to the user while the page is loading.\n *\n * An alternative solution to this problem would be using the\n * {@link ng.directive:ngCloak ngCloak} directive.\n *\n *\n * @element ANY\n * @param {expression} ngBind {@link guide/expression Expression} to evaluate.\n *\n * @example\n * Enter a name in the Live Preview text box; the greeting below the text box changes instantly.\n \n \n \n
\n Enter name:
\n Hello !\n
\n
\n \n it('should check ng-bind', function() {\n var nameInput = element(by.model('name'));\n\n expect(element(by.binding('name')).getText()).toBe('Whirled');\n nameInput.clear();\n nameInput.sendKeys('world');\n expect(element(by.binding('name')).getText()).toBe('world');\n });\n \n
\n */\nvar ngBindDirective = ngDirective({\n compile: function(templateElement) {\n templateElement.addClass('ng-binding');\n return function (scope, element, attr) {\n element.data('$binding', attr.ngBind);\n scope.$watch(attr.ngBind, function ngBindWatchAction(value) {\n // We are purposefully using == here rather than === because we want to\n // catch when value is \"null or undefined\"\n // jshint -W041\n element.text(value == undefined ? '' : value);\n });\n };\n }\n});\n\n\n/**\n * @ngdoc directive\n * @name ngBindTemplate\n *\n * @description\n * The `ngBindTemplate` directive specifies that the element\n * text content should be replaced with the interpolation of the template\n * in the `ngBindTemplate` attribute.\n * Unlike `ngBind`, the `ngBindTemplate` can contain multiple `{{` `}}`\n * expressions. This directive is needed since some HTML elements\n * (such as TITLE and OPTION) cannot contain SPAN elements.\n *\n * @element ANY\n * @param {string} ngBindTemplate template of form\n * {{ expression }} to eval.\n *\n * @example\n * Try it here: enter text in text box and watch the greeting change.\n \n \n \n
\n Salutation:
\n Name:
\n
\n       
\n
\n \n it('should check ng-bind', function() {\n var salutationElem = element(by.binding('salutation'));\n var salutationInput = element(by.model('salutation'));\n var nameInput = element(by.model('name'));\n\n expect(salutationElem.getText()).toBe('Hello World!');\n\n salutationInput.clear();\n salutationInput.sendKeys('Greetings');\n nameInput.clear();\n nameInput.sendKeys('user');\n\n expect(salutationElem.getText()).toBe('Greetings user!');\n });\n \n
\n */\nvar ngBindTemplateDirective = ['$interpolate', function($interpolate) {\n return function(scope, element, attr) {\n // TODO: move this to scenario runner\n var interpolateFn = $interpolate(element.attr(attr.$attr.ngBindTemplate));\n element.addClass('ng-binding').data('$binding', interpolateFn);\n attr.$observe('ngBindTemplate', function(value) {\n element.text(value);\n });\n };\n}];\n\n\n/**\n * @ngdoc directive\n * @name ngBindHtml\n *\n * @description\n * Creates a binding that will innerHTML the result of evaluating the `expression` into the current\n * element in a secure way. By default, the innerHTML-ed content will be sanitized using the {@link\n * ngSanitize.$sanitize $sanitize} service. To utilize this functionality, ensure that `$sanitize`\n * is available, for example, by including {@link ngSanitize} in your module's dependencies (not in\n * core Angular). In order to use {@link ngSanitize} in your module's dependencies, you need to\n * include \"angular-sanitize.js\" in your application.\n *\n * You may also bypass sanitization for values you know are safe. To do so, bind to\n * an explicitly trusted value via {@link ng.$sce#trustAsHtml $sce.trustAsHtml}. See the example\n * under {@link ng.$sce#Example Strict Contextual Escaping (SCE)}.\n *\n * Note: If a `$sanitize` service is unavailable and the bound value isn't explicitly trusted, you\n * will have an exception (instead of an exploit.)\n *\n * @element ANY\n * @param {expression} ngBindHtml {@link guide/expression Expression} to evaluate.\n *\n * @example\n\n \n \n
\n

\n
\n
\n\n \n angular.module('bindHtmlExample', ['ngSanitize'])\n .controller('ExampleController', ['$scope', function($scope) {\n $scope.myHTML =\n 'I am an HTMLstring with ' +\n 'links! and other stuff';\n }]);\n \n\n \n it('should check ng-bind-html', function() {\n expect(element(by.binding('myHTML')).getText()).toBe(\n 'I am an HTMLstring with links! and other stuff');\n });\n \n
\n */\nvar ngBindHtmlDirective = ['$sce', '$parse', function($sce, $parse) {\n return {\n compile: function (tElement) {\n tElement.addClass('ng-binding');\n\n return function (scope, element, attr) {\n element.data('$binding', attr.ngBindHtml);\n\n var parsed = $parse(attr.ngBindHtml);\n\n function getStringValue() {\n return (parsed(scope) || '').toString();\n }\n\n scope.$watch(getStringValue, function ngBindHtmlWatchAction(value) {\n element.html($sce.getTrustedHtml(parsed(scope)) || '');\n });\n };\n }\n };\n}];\n\nfunction classDirective(name, selector) {\n name = 'ngClass' + name;\n return ['$animate', function($animate) {\n return {\n restrict: 'AC',\n link: function(scope, element, attr) {\n var oldVal;\n\n scope.$watch(attr[name], ngClassWatchAction, true);\n\n attr.$observe('class', function(value) {\n ngClassWatchAction(scope.$eval(attr[name]));\n });\n\n\n if (name !== 'ngClass') {\n scope.$watch('$index', function($index, old$index) {\n // jshint bitwise: false\n var mod = $index & 1;\n if (mod !== (old$index & 1)) {\n var classes = arrayClasses(scope.$eval(attr[name]));\n mod === selector ?\n addClasses(classes) :\n removeClasses(classes);\n }\n });\n }\n\n function addClasses(classes) {\n var newClasses = digestClassCounts(classes, 1);\n attr.$addClass(newClasses);\n }\n\n function removeClasses(classes) {\n var newClasses = digestClassCounts(classes, -1);\n attr.$removeClass(newClasses);\n }\n\n function digestClassCounts (classes, count) {\n var classCounts = element.data('$classCounts') || {};\n var classesToUpdate = [];\n forEach(classes, function (className) {\n if (count > 0 || classCounts[className]) {\n classCounts[className] = (classCounts[className] || 0) + count;\n if (classCounts[className] === +(count > 0)) {\n classesToUpdate.push(className);\n }\n }\n });\n element.data('$classCounts', classCounts);\n return classesToUpdate.join(' ');\n }\n\n function updateClasses (oldClasses, newClasses) {\n var toAdd = arrayDifference(newClasses, oldClasses);\n var toRemove = arrayDifference(oldClasses, newClasses);\n toRemove = digestClassCounts(toRemove, -1);\n toAdd = digestClassCounts(toAdd, 1);\n\n if (toAdd.length === 0) {\n $animate.removeClass(element, toRemove);\n } else if (toRemove.length === 0) {\n $animate.addClass(element, toAdd);\n } else {\n $animate.setClass(element, toAdd, toRemove);\n }\n }\n\n function ngClassWatchAction(newVal) {\n if (selector === true || scope.$index % 2 === selector) {\n var newClasses = arrayClasses(newVal || []);\n if (!oldVal) {\n addClasses(newClasses);\n } else if (!equals(newVal,oldVal)) {\n var oldClasses = arrayClasses(oldVal);\n updateClasses(oldClasses, newClasses);\n }\n }\n oldVal = shallowCopy(newVal);\n }\n }\n };\n\n function arrayDifference(tokens1, tokens2) {\n var values = [];\n\n outer:\n for(var i = 0; i < tokens1.length; i++) {\n var token = tokens1[i];\n for(var j = 0; j < tokens2.length; j++) {\n if(token == tokens2[j]) continue outer;\n }\n values.push(token);\n }\n return values;\n }\n\n function arrayClasses (classVal) {\n if (isArray(classVal)) {\n return classVal;\n } else if (isString(classVal)) {\n return classVal.split(' ');\n } else if (isObject(classVal)) {\n var classes = [], i = 0;\n forEach(classVal, function(v, k) {\n if (v) {\n classes = classes.concat(k.split(' '));\n }\n });\n return classes;\n }\n return classVal;\n }\n }];\n}\n\n/**\n * @ngdoc directive\n * @name ngClass\n * @restrict AC\n *\n * @description\n * The `ngClass` directive allows you to dynamically set CSS classes on an HTML element by databinding\n * an expression that represents all classes to be added.\n *\n * The directive operates in three different ways, depending on which of three types the expression\n * evaluates to:\n *\n * 1. If the expression evaluates to a string, the string should be one or more space-delimited class\n * names.\n *\n * 2. If the expression evaluates to an array, each element of the array should be a string that is\n * one or more space-delimited class names.\n *\n * 3. If the expression evaluates to an object, then for each key-value pair of the\n * object with a truthy value the corresponding key is used as a class name.\n *\n * The directive won't add duplicate classes if a particular class was already set.\n *\n * When the expression changes, the previously added classes are removed and only then the\n * new classes are added.\n *\n * @animations\n * add - happens just before the class is applied to the element\n * remove - happens just before the class is removed from the element\n *\n * @element ANY\n * @param {expression} ngClass {@link guide/expression Expression} to eval. The result\n * of the evaluation can be a string representing space delimited class\n * names, an array, or a map of class names to boolean values. In the case of a map, the\n * names of the properties whose values are truthy will be added as css classes to the\n * element.\n *\n * @example Example that demonstrates basic bindings via ngClass directive.\n \n \n

Map Syntax Example

\n deleted (apply \"strike\" class)
\n important (apply \"bold\" class)
\n error (apply \"red\" class)\n
\n

Using String Syntax

\n \n
\n

Using Array Syntax

\n
\n
\n
\n
\n \n .strike {\n text-decoration: line-through;\n }\n .bold {\n font-weight: bold;\n }\n .red {\n color: red;\n }\n \n \n var ps = element.all(by.css('p'));\n\n it('should let you toggle the class', function() {\n\n expect(ps.first().getAttribute('class')).not.toMatch(/bold/);\n expect(ps.first().getAttribute('class')).not.toMatch(/red/);\n\n element(by.model('important')).click();\n expect(ps.first().getAttribute('class')).toMatch(/bold/);\n\n element(by.model('error')).click();\n expect(ps.first().getAttribute('class')).toMatch(/red/);\n });\n\n it('should let you toggle string example', function() {\n expect(ps.get(1).getAttribute('class')).toBe('');\n element(by.model('style')).clear();\n element(by.model('style')).sendKeys('red');\n expect(ps.get(1).getAttribute('class')).toBe('red');\n });\n\n it('array example should have 3 classes', function() {\n expect(ps.last().getAttribute('class')).toBe('');\n element(by.model('style1')).sendKeys('bold');\n element(by.model('style2')).sendKeys('strike');\n element(by.model('style3')).sendKeys('red');\n expect(ps.last().getAttribute('class')).toBe('bold strike red');\n });\n \n
\n\n ## Animations\n\n The example below demonstrates how to perform animations using ngClass.\n\n \n \n \n \n
\n Sample Text\n
\n \n .base-class {\n -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n }\n\n .base-class.my-class {\n color: red;\n font-size:3em;\n }\n \n \n it('should check ng-class', function() {\n expect(element(by.css('.base-class')).getAttribute('class')).not.\n toMatch(/my-class/);\n\n element(by.id('setbtn')).click();\n\n expect(element(by.css('.base-class')).getAttribute('class')).\n toMatch(/my-class/);\n\n element(by.id('clearbtn')).click();\n\n expect(element(by.css('.base-class')).getAttribute('class')).not.\n toMatch(/my-class/);\n });\n \n
\n\n\n ## ngClass and pre-existing CSS3 Transitions/Animations\n The ngClass directive still supports CSS3 Transitions/Animations even if they do not follow the ngAnimate CSS naming structure.\n Upon animation ngAnimate will apply supplementary CSS classes to track the start and end of an animation, but this will not hinder\n any pre-existing CSS transitions already on the element. To get an idea of what happens during a class-based animation, be sure\n to view the step by step details of {@link ngAnimate.$animate#addclass $animate.addClass} and\n {@link ngAnimate.$animate#removeclass $animate.removeClass}.\n */\nvar ngClassDirective = classDirective('', true);\n\n/**\n * @ngdoc directive\n * @name ngClassOdd\n * @restrict AC\n *\n * @description\n * The `ngClassOdd` and `ngClassEven` directives work exactly as\n * {@link ng.directive:ngClass ngClass}, except they work in\n * conjunction with `ngRepeat` and take effect only on odd (even) rows.\n *\n * This directive can be applied only within the scope of an\n * {@link ng.directive:ngRepeat ngRepeat}.\n *\n * @element ANY\n * @param {expression} ngClassOdd {@link guide/expression Expression} to eval. The result\n * of the evaluation can be a string representing space delimited class names or an array.\n *\n * @example\n \n \n
    \n
  1. \n \n {{name}}\n \n
  2. \n
\n
\n \n .odd {\n color: red;\n }\n .even {\n color: blue;\n }\n \n \n it('should check ng-class-odd and ng-class-even', function() {\n expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')).\n toMatch(/odd/);\n expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')).\n toMatch(/even/);\n });\n \n
\n */\nvar ngClassOddDirective = classDirective('Odd', 0);\n\n/**\n * @ngdoc directive\n * @name ngClassEven\n * @restrict AC\n *\n * @description\n * The `ngClassOdd` and `ngClassEven` directives work exactly as\n * {@link ng.directive:ngClass ngClass}, except they work in\n * conjunction with `ngRepeat` and take effect only on odd (even) rows.\n *\n * This directive can be applied only within the scope of an\n * {@link ng.directive:ngRepeat ngRepeat}.\n *\n * @element ANY\n * @param {expression} ngClassEven {@link guide/expression Expression} to eval. The\n * result of the evaluation can be a string representing space delimited class names or an array.\n *\n * @example\n \n \n
    \n
  1. \n \n {{name}}      \n \n
  2. \n
\n
\n \n .odd {\n color: red;\n }\n .even {\n color: blue;\n }\n \n \n it('should check ng-class-odd and ng-class-even', function() {\n expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')).\n toMatch(/odd/);\n expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')).\n toMatch(/even/);\n });\n \n
\n */\nvar ngClassEvenDirective = classDirective('Even', 1);\n\n/**\n * @ngdoc directive\n * @name ngCloak\n * @restrict AC\n *\n * @description\n * The `ngCloak` directive is used to prevent the Angular html template from being briefly\n * displayed by the browser in its raw (uncompiled) form while your application is loading. Use this\n * directive to avoid the undesirable flicker effect caused by the html template display.\n *\n * The directive can be applied to the `` element, but the preferred usage is to apply\n * multiple `ngCloak` directives to small portions of the page to permit progressive rendering\n * of the browser view.\n *\n * `ngCloak` works in cooperation with the following css rule embedded within `angular.js` and\n * `angular.min.js`.\n * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).\n *\n * ```css\n * [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n * display: none !important;\n * }\n * ```\n *\n * When this css rule is loaded by the browser, all html elements (including their children) that\n * are tagged with the `ngCloak` directive are hidden. When Angular encounters this directive\n * during the compilation of the template it deletes the `ngCloak` element attribute, making\n * the compiled element visible.\n *\n * For the best result, the `angular.js` script must be loaded in the head section of the html\n * document; alternatively, the css rule above must be included in the external stylesheet of the\n * application.\n *\n * Legacy browsers, like IE7, do not provide attribute selector support (added in CSS 2.1) so they\n * cannot match the `[ng\\:cloak]` selector. To work around this limitation, you must add the css\n * class `ng-cloak` in addition to the `ngCloak` directive as shown in the example below.\n *\n * @element ANY\n *\n * @example\n \n \n
{{ 'hello' }}
\n
{{ 'hello IE7' }}
\n
\n \n it('should remove the template directive and css class', function() {\n expect($('#template1').getAttribute('ng-cloak')).\n toBeNull();\n expect($('#template2').getAttribute('ng-cloak')).\n toBeNull();\n });\n \n
\n *\n */\nvar ngCloakDirective = ngDirective({\n compile: function(element, attr) {\n attr.$set('ngCloak', undefined);\n element.removeClass('ng-cloak');\n }\n});\n\n/**\n * @ngdoc directive\n * @name ngController\n *\n * @description\n * The `ngController` directive attaches a controller class to the view. This is a key aspect of how angular\n * supports the principles behind the Model-View-Controller design pattern.\n *\n * MVC components in angular:\n *\n * * Model — Models are the properties of a scope; scopes are attached to the DOM where scope properties\n * are accessed through bindings.\n * * View — The template (HTML with data bindings) that is rendered into the View.\n * * Controller — The `ngController` directive specifies a Controller class; the class contains business\n * logic behind the application to decorate the scope with functions and values\n *\n * Note that you can also attach controllers to the DOM by declaring it in a route definition\n * via the {@link ngRoute.$route $route} service. A common mistake is to declare the controller\n * again using `ng-controller` in the template itself. This will cause the controller to be attached\n * and executed twice.\n *\n * @element ANY\n * @scope\n * @priority 500\n * @param {expression} ngController Name of a globally accessible constructor function or an\n * {@link guide/expression expression} that on the current scope evaluates to a\n * constructor function. The controller instance can be published into a scope property\n * by specifying `as propertyName`.\n *\n * @example\n * Here is a simple form for editing user contact information. Adding, removing, clearing, and\n * greeting are methods declared on the controller (see source tab). These methods can\n * easily be called from the angular markup. Any changes to the data are automatically reflected\n * in the View without the need for a manual update.\n *\n * Two different declaration styles are included below:\n *\n * * one binds methods and properties directly onto the controller using `this`:\n * `ng-controller=\"SettingsController1 as settings\"`\n * * one injects `$scope` into the controller:\n * `ng-controller=\"SettingsController2\"`\n *\n * The second option is more common in the Angular community, and is generally used in boilerplates\n * and in this guide. However, there are advantages to binding properties directly to the controller\n * and avoiding scope.\n *\n * * Using `controller as` makes it obvious which controller you are accessing in the template when\n * multiple controllers apply to an element.\n * * If you are writing your controllers as classes you have easier access to the properties and\n * methods, which will appear on the scope, from inside the controller code.\n * * Since there is always a `.` in the bindings, you don't have to worry about prototypal\n * inheritance masking primitives.\n *\n * This example demonstrates the `controller as` syntax.\n *\n * \n * \n *
\n * Name: \n * [ greet ]
\n * Contact:\n *
    \n *
  • \n * \n * \n * [ clear\n * | X ]\n *
  • \n *
  • [ add ]
  • \n *
\n *
\n *
\n * \n * angular.module('controllerAsExample', [])\n * .controller('SettingsController1', SettingsController1);\n *\n * function SettingsController1() {\n * this.name = \"John Smith\";\n * this.contacts = [\n * {type: 'phone', value: '408 555 1212'},\n * {type: 'email', value: 'john.smith@example.org'} ];\n * }\n *\n * SettingsController1.prototype.greet = function() {\n * alert(this.name);\n * };\n *\n * SettingsController1.prototype.addContact = function() {\n * this.contacts.push({type: 'email', value: 'yourname@example.org'});\n * };\n *\n * SettingsController1.prototype.removeContact = function(contactToRemove) {\n * var index = this.contacts.indexOf(contactToRemove);\n * this.contacts.splice(index, 1);\n * };\n *\n * SettingsController1.prototype.clearContact = function(contact) {\n * contact.type = 'phone';\n * contact.value = '';\n * };\n * \n * \n * it('should check controller as', function() {\n * var container = element(by.id('ctrl-as-exmpl'));\n * expect(container.element(by.model('settings.name'))\n * .getAttribute('value')).toBe('John Smith');\n *\n * var firstRepeat =\n * container.element(by.repeater('contact in settings.contacts').row(0));\n * var secondRepeat =\n * container.element(by.repeater('contact in settings.contacts').row(1));\n *\n * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))\n * .toBe('408 555 1212');\n *\n * expect(secondRepeat.element(by.model('contact.value')).getAttribute('value'))\n * .toBe('john.smith@example.org');\n *\n * firstRepeat.element(by.linkText('clear')).click();\n *\n * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))\n * .toBe('');\n *\n * container.element(by.linkText('add')).click();\n *\n * expect(container.element(by.repeater('contact in settings.contacts').row(2))\n * .element(by.model('contact.value'))\n * .getAttribute('value'))\n * .toBe('yourname@example.org');\n * });\n * \n *
\n *\n * This example demonstrates the \"attach to `$scope`\" style of controller.\n *\n * \n * \n *
\n * Name: \n * [ greet ]
\n * Contact:\n *
    \n *
  • \n * \n * \n * [ clear\n * | X ]\n *
  • \n *
  • [ add ]
  • \n *
\n *
\n *
\n * \n * angular.module('controllerExample', [])\n * .controller('SettingsController2', ['$scope', SettingsController2]);\n *\n * function SettingsController2($scope) {\n * $scope.name = \"John Smith\";\n * $scope.contacts = [\n * {type:'phone', value:'408 555 1212'},\n * {type:'email', value:'john.smith@example.org'} ];\n *\n * $scope.greet = function() {\n * alert($scope.name);\n * };\n *\n * $scope.addContact = function() {\n * $scope.contacts.push({type:'email', value:'yourname@example.org'});\n * };\n *\n * $scope.removeContact = function(contactToRemove) {\n * var index = $scope.contacts.indexOf(contactToRemove);\n * $scope.contacts.splice(index, 1);\n * };\n *\n * $scope.clearContact = function(contact) {\n * contact.type = 'phone';\n * contact.value = '';\n * };\n * }\n * \n * \n * it('should check controller', function() {\n * var container = element(by.id('ctrl-exmpl'));\n *\n * expect(container.element(by.model('name'))\n * .getAttribute('value')).toBe('John Smith');\n *\n * var firstRepeat =\n * container.element(by.repeater('contact in contacts').row(0));\n * var secondRepeat =\n * container.element(by.repeater('contact in contacts').row(1));\n *\n * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))\n * .toBe('408 555 1212');\n * expect(secondRepeat.element(by.model('contact.value')).getAttribute('value'))\n * .toBe('john.smith@example.org');\n *\n * firstRepeat.element(by.linkText('clear')).click();\n *\n * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))\n * .toBe('');\n *\n * container.element(by.linkText('add')).click();\n *\n * expect(container.element(by.repeater('contact in contacts').row(2))\n * .element(by.model('contact.value'))\n * .getAttribute('value'))\n * .toBe('yourname@example.org');\n * });\n * \n *
\n\n */\nvar ngControllerDirective = [function() {\n return {\n scope: true,\n controller: '@',\n priority: 500\n };\n}];\n\n/**\n * @ngdoc directive\n * @name ngCsp\n *\n * @element html\n * @description\n * Enables [CSP (Content Security Policy)](https://developer.mozilla.org/en/Security/CSP) support.\n *\n * This is necessary when developing things like Google Chrome Extensions.\n *\n * CSP forbids apps to use `eval` or `Function(string)` generated functions (among other things).\n * For Angular to be CSP compatible there are only two things that we need to do differently:\n *\n * - don't use `Function` constructor to generate optimized value getters\n * - don't inject custom stylesheet into the document\n *\n * AngularJS uses `Function(string)` generated functions as a speed optimization. Applying the `ngCsp`\n * directive will cause Angular to use CSP compatibility mode. When this mode is on AngularJS will\n * evaluate all expressions up to 30% slower than in non-CSP mode, but no security violations will\n * be raised.\n *\n * CSP forbids JavaScript to inline stylesheet rules. In non CSP mode Angular automatically\n * includes some CSS rules (e.g. {@link ng.directive:ngCloak ngCloak}).\n * To make those directives work in CSP mode, include the `angular-csp.css` manually.\n *\n * Angular tries to autodetect if CSP is active and automatically turn on the CSP-safe mode. This\n * autodetection however triggers a CSP error to be logged in the console:\n *\n * ```\n * Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of\n * script in the following Content Security Policy directive: \"default-src 'self'\". Note that\n * 'script-src' was not explicitly set, so 'default-src' is used as a fallback.\n * ```\n *\n * This error is harmless but annoying. To prevent the error from showing up, put the `ngCsp`\n * directive on the root element of the application or on the `angular.js` script tag, whichever\n * appears first in the html document.\n *\n * *Note: This directive is only available in the `ng-csp` and `data-ng-csp` attribute form.*\n *\n * @example\n * This example shows how to apply the `ngCsp` directive to the `html` tag.\n ```html\n \n \n ...\n ...\n \n ```\n */\n\n// ngCsp is not implemented as a proper directive any more, because we need it be processed while we\n// bootstrap the system (before $parse is instantiated), for this reason we just have\n// the csp.isActive() fn that looks for ng-csp attribute anywhere in the current doc\n\n/**\n * @ngdoc directive\n * @name ngClick\n *\n * @description\n * The ngClick directive allows you to specify custom behavior when\n * an element is clicked.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngClick {@link guide/expression Expression} to evaluate upon\n * click. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n \n count: {{count}}\n \n \n \n it('should check ng-click', function() {\n expect(element(by.binding('count')).getText()).toMatch('0');\n element(by.css('button')).click();\n expect(element(by.binding('count')).getText()).toMatch('1');\n });\n \n \n */\n/*\n * A collection of directives that allows creation of custom event handlers that are defined as\n * angular expressions and are compiled and executed within the current scope.\n */\nvar ngEventDirectives = {};\n\n// For events that might fire synchronously during DOM manipulation\n// we need to execute their event handlers asynchronously using $evalAsync,\n// so that they are not executed in an inconsistent state.\nvar forceAsyncEvents = {\n 'blur': true,\n 'focus': true\n};\nforEach(\n 'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste'.split(' '),\n function(eventName) {\n var directiveName = directiveNormalize('ng-' + eventName);\n ngEventDirectives[directiveName] = ['$parse', '$rootScope', function($parse, $rootScope) {\n return {\n compile: function($element, attr) {\n // We expose the powerful $event object on the scope that provides access to the Window,\n // etc. that isn't protected by the fast paths in $parse. We explicitly request better\n // checks at the cost of speed since event handler expressions are not executed as\n // frequently as regular change detection.\n var fn = $parse(attr[directiveName], /* expensiveChecks */ true);\n return function ngEventHandler(scope, element) {\n element.on(eventName, function(event) {\n var callback = function() {\n fn(scope, {$event:event});\n };\n if (forceAsyncEvents[eventName] && $rootScope.$$phase) {\n scope.$evalAsync(callback);\n } else {\n scope.$apply(callback);\n }\n });\n };\n }\n };\n }];\n }\n);\n\n/**\n * @ngdoc directive\n * @name ngDblclick\n *\n * @description\n * The `ngDblclick` directive allows you to specify custom behavior on a dblclick event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngDblclick {@link guide/expression Expression} to evaluate upon\n * a dblclick. (The Event object is available as `$event`)\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngMousedown\n *\n * @description\n * The ngMousedown directive allows you to specify custom behavior on mousedown event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMousedown {@link guide/expression Expression} to evaluate upon\n * mousedown. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngMouseup\n *\n * @description\n * Specify custom behavior on mouseup event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMouseup {@link guide/expression Expression} to evaluate upon\n * mouseup. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n/**\n * @ngdoc directive\n * @name ngMouseover\n *\n * @description\n * Specify custom behavior on mouseover event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMouseover {@link guide/expression Expression} to evaluate upon\n * mouseover. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngMouseenter\n *\n * @description\n * Specify custom behavior on mouseenter event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMouseenter {@link guide/expression Expression} to evaluate upon\n * mouseenter. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngMouseleave\n *\n * @description\n * Specify custom behavior on mouseleave event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMouseleave {@link guide/expression Expression} to evaluate upon\n * mouseleave. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngMousemove\n *\n * @description\n * Specify custom behavior on mousemove event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMousemove {@link guide/expression Expression} to evaluate upon\n * mousemove. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngKeydown\n *\n * @description\n * Specify custom behavior on keydown event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngKeydown {@link guide/expression Expression} to evaluate upon\n * keydown. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)\n *\n * @example\n \n \n \n key down count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngKeyup\n *\n * @description\n * Specify custom behavior on keyup event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngKeyup {@link guide/expression Expression} to evaluate upon\n * keyup. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)\n *\n * @example\n \n \n

Typing in the input box below updates the key count

\n key up count: {{count}}\n\n

Typing in the input box below updates the keycode

\n \n

event keyCode: {{ event.keyCode }}

\n

event altKey: {{ event.altKey }}

\n
\n
\n */\n\n\n/**\n * @ngdoc directive\n * @name ngKeypress\n *\n * @description\n * Specify custom behavior on keypress event.\n *\n * @element ANY\n * @param {expression} ngKeypress {@link guide/expression Expression} to evaluate upon\n * keypress. ({@link guide/expression#-event- Event object is available as `$event`}\n * and can be interrogated for keyCode, altKey, etc.)\n *\n * @example\n \n \n \n key press count: {{count}}\n \n \n */\n\n\n/**\n * @ngdoc directive\n * @name ngSubmit\n *\n * @description\n * Enables binding angular expressions to onsubmit events.\n *\n * Additionally it prevents the default action (which for form means sending the request to the\n * server and reloading the current page), but only if the form does not contain `action`,\n * `data-action`, or `x-action` attributes.\n *\n *
\n * **Warning:** Be careful not to cause \"double-submission\" by using both the `ngClick` and\n * `ngSubmit` handlers together. See the\n * {@link form#submitting-a-form-and-preventing-the-default-action `form` directive documentation}\n * for a detailed discussion of when `ngSubmit` may be triggered.\n *
\n *\n * @element form\n * @priority 0\n * @param {expression} ngSubmit {@link guide/expression Expression} to eval.\n * ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n
\n Enter text and hit enter:\n \n \n
list={{list}}
\n
\n
\n \n it('should check ng-submit', function() {\n expect(element(by.binding('list')).getText()).toBe('list=[]');\n element(by.css('#submit')).click();\n expect(element(by.binding('list')).getText()).toContain('hello');\n expect(element(by.model('text')).getAttribute('value')).toBe('');\n });\n it('should ignore empty strings', function() {\n expect(element(by.binding('list')).getText()).toBe('list=[]');\n element(by.css('#submit')).click();\n element(by.css('#submit')).click();\n expect(element(by.binding('list')).getText()).toContain('hello');\n });\n \n
\n */\n\n/**\n * @ngdoc directive\n * @name ngFocus\n *\n * @description\n * Specify custom behavior on focus event.\n *\n * Note: As the `focus` event is executed synchronously when calling `input.focus()`\n * AngularJS executes the expression using `scope.$evalAsync` if the event is fired\n * during an `$apply` to ensure a consistent state.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngFocus {@link guide/expression Expression} to evaluate upon\n * focus. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n * See {@link ng.directive:ngClick ngClick}\n */\n\n/**\n * @ngdoc directive\n * @name ngBlur\n *\n * @description\n * Specify custom behavior on blur event.\n *\n * A [blur event](https://developer.mozilla.org/en-US/docs/Web/Events/blur) fires when\n * an element has lost focus.\n *\n * Note: As the `blur` event is executed synchronously also during DOM manipulations\n * (e.g. removing a focussed input),\n * AngularJS executes the expression using `scope.$evalAsync` if the event is fired\n * during an `$apply` to ensure a consistent state.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngBlur {@link guide/expression Expression} to evaluate upon\n * blur. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n * See {@link ng.directive:ngClick ngClick}\n */\n\n/**\n * @ngdoc directive\n * @name ngCopy\n *\n * @description\n * Specify custom behavior on copy event.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngCopy {@link guide/expression Expression} to evaluate upon\n * copy. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n copied: {{copied}}\n \n \n */\n\n/**\n * @ngdoc directive\n * @name ngCut\n *\n * @description\n * Specify custom behavior on cut event.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngCut {@link guide/expression Expression} to evaluate upon\n * cut. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n cut: {{cut}}\n \n \n */\n\n/**\n * @ngdoc directive\n * @name ngPaste\n *\n * @description\n * Specify custom behavior on paste event.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngPaste {@link guide/expression Expression} to evaluate upon\n * paste. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n \n \n \n pasted: {{paste}}\n \n \n */\n\n/**\n * @ngdoc directive\n * @name ngIf\n * @restrict A\n *\n * @description\n * The `ngIf` directive removes or recreates a portion of the DOM tree based on an\n * {expression}. If the expression assigned to `ngIf` evaluates to a false\n * value then the element is removed from the DOM, otherwise a clone of the\n * element is reinserted into the DOM.\n *\n * `ngIf` differs from `ngShow` and `ngHide` in that `ngIf` completely removes and recreates the\n * element in the DOM rather than changing its visibility via the `display` css property. A common\n * case when this difference is significant is when using css selectors that rely on an element's\n * position within the DOM, such as the `:first-child` or `:last-child` pseudo-classes.\n *\n * Note that when an element is removed using `ngIf` its scope is destroyed and a new scope\n * is created when the element is restored. The scope created within `ngIf` inherits from\n * its parent scope using\n * [prototypal inheritance](https://github.com/angular/angular.js/wiki/Understanding-Scopes#javascript-prototypal-inheritance).\n * An important implication of this is if `ngModel` is used within `ngIf` to bind to\n * a javascript primitive defined in the parent scope. In this case any modifications made to the\n * variable within the child scope will override (hide) the value in the parent scope.\n *\n * Also, `ngIf` recreates elements using their compiled state. An example of this behavior\n * is if an element's class attribute is directly modified after it's compiled, using something like\n * jQuery's `.addClass()` method, and the element is later removed. When `ngIf` recreates the element\n * the added class will be lost because the original compiled state is used to regenerate the element.\n *\n * Additionally, you can provide animations via the `ngAnimate` module to animate the `enter`\n * and `leave` effects.\n *\n * @animations\n * enter - happens just after the `ngIf` contents change and a new DOM element is created and injected into the `ngIf` container\n * leave - happens just before the `ngIf` contents are removed from the DOM\n *\n * @element ANY\n * @scope\n * @priority 600\n * @param {expression} ngIf If the {@link guide/expression expression} is falsy then\n * the element is removed from the DOM tree. If it is truthy a copy of the compiled\n * element is added to the DOM tree.\n *\n * @example\n \n \n Click me:
\n Show when checked:\n \n I'm removed when the checkbox is unchecked.\n \n
\n \n .animate-if {\n background:white;\n border:1px solid black;\n padding:10px;\n }\n\n .animate-if.ng-enter, .animate-if.ng-leave {\n -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n }\n\n .animate-if.ng-enter,\n .animate-if.ng-leave.ng-leave-active {\n opacity:0;\n }\n\n .animate-if.ng-leave,\n .animate-if.ng-enter.ng-enter-active {\n opacity:1;\n }\n \n
\n */\nvar ngIfDirective = ['$animate', function($animate) {\n return {\n transclude: 'element',\n priority: 600,\n terminal: true,\n restrict: 'A',\n $$tlb: true,\n link: function ($scope, $element, $attr, ctrl, $transclude) {\n var block, childScope, previousElements;\n $scope.$watch($attr.ngIf, function ngIfWatchAction(value) {\n\n if (toBoolean(value)) {\n if (!childScope) {\n childScope = $scope.$new();\n $transclude(childScope, function (clone) {\n clone[clone.length++] = document.createComment(' end ngIf: ' + $attr.ngIf + ' ');\n // Note: We only need the first/last node of the cloned nodes.\n // However, we need to keep the reference to the jqlite wrapper as it might be changed later\n // by a directive with templateUrl when its template arrives.\n block = {\n clone: clone\n };\n $animate.enter(clone, $element.parent(), $element);\n });\n }\n } else {\n if(previousElements) {\n previousElements.remove();\n previousElements = null;\n }\n if(childScope) {\n childScope.$destroy();\n childScope = null;\n }\n if(block) {\n previousElements = getBlockElements(block.clone);\n $animate.leave(previousElements, function() {\n previousElements = null;\n });\n block = null;\n }\n }\n });\n }\n };\n}];\n\n/**\n * @ngdoc directive\n * @name ngInclude\n * @restrict ECA\n *\n * @description\n * Fetches, compiles and includes an external HTML fragment.\n *\n * By default, the template URL is restricted to the same domain and protocol as the\n * application document. This is done by calling {@link ng.$sce#getTrustedResourceUrl\n * $sce.getTrustedResourceUrl} on it. To load templates from other domains or protocols\n * you may either {@link ng.$sceDelegateProvider#resourceUrlWhitelist whitelist them} or\n * [wrap them](ng.$sce#trustAsResourceUrl) as trusted values. Refer to Angular's {@link\n * ng.$sce Strict Contextual Escaping}.\n *\n * In addition, the browser's\n * [Same Origin Policy](https://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest)\n * and [Cross-Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/)\n * policy may further restrict whether the template is successfully loaded.\n * For example, `ngInclude` won't work for cross-domain requests on all browsers and for `file://`\n * access on some browsers.\n *\n * @animations\n * enter - animation is used to bring new content into the browser.\n * leave - animation is used to animate existing content away.\n *\n * The enter and leave animation occur concurrently.\n *\n * @scope\n * @priority 400\n *\n * @param {string} ngInclude|src angular expression evaluating to URL. If the source is a string constant,\n * make sure you wrap it in **single** quotes, e.g. `src=\"'myPartialTemplate.html'\"`.\n * @param {string=} onload Expression to evaluate when a new partial is loaded.\n *\n * @param {string=} autoscroll Whether `ngInclude` should call {@link ng.$anchorScroll\n * $anchorScroll} to scroll the viewport after the content is loaded.\n *\n * - If the attribute is not set, disable scrolling.\n * - If the attribute is set without value, enable scrolling.\n * - Otherwise enable scrolling only if the expression evaluates to truthy value.\n *\n * @example\n \n \n
\n \n url of the template: {{template.url}}\n
\n
\n
\n
\n
\n
\n \n angular.module('includeExample', ['ngAnimate'])\n .controller('ExampleController', ['$scope', function($scope) {\n $scope.templates =\n [ { name: 'template1.html', url: 'template1.html'},\n { name: 'template2.html', url: 'template2.html'} ];\n $scope.template = $scope.templates[0];\n }]);\n \n \n Content of template1.html\n \n \n Content of template2.html\n \n \n .slide-animate-container {\n position:relative;\n background:white;\n border:1px solid black;\n height:40px;\n overflow:hidden;\n }\n\n .slide-animate {\n padding:10px;\n }\n\n .slide-animate.ng-enter, .slide-animate.ng-leave {\n -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n\n position:absolute;\n top:0;\n left:0;\n right:0;\n bottom:0;\n display:block;\n padding:10px;\n }\n\n .slide-animate.ng-enter {\n top:-50px;\n }\n .slide-animate.ng-enter.ng-enter-active {\n top:0;\n }\n\n .slide-animate.ng-leave {\n top:0;\n }\n .slide-animate.ng-leave.ng-leave-active {\n top:50px;\n }\n \n \n var templateSelect = element(by.model('template'));\n var includeElem = element(by.css('[ng-include]'));\n\n it('should load template1.html', function() {\n expect(includeElem.getText()).toMatch(/Content of template1.html/);\n });\n\n it('should load template2.html', function() {\n if (browser.params.browser == 'firefox') {\n // Firefox can't handle using selects\n // See https://github.com/angular/protractor/issues/480\n return;\n }\n templateSelect.click();\n templateSelect.all(by.css('option')).get(2).click();\n expect(includeElem.getText()).toMatch(/Content of template2.html/);\n });\n\n it('should change to blank', function() {\n if (browser.params.browser == 'firefox') {\n // Firefox can't handle using selects\n return;\n }\n templateSelect.click();\n templateSelect.all(by.css('option')).get(0).click();\n expect(includeElem.isPresent()).toBe(false);\n });\n \n
\n */\n\n\n/**\n * @ngdoc event\n * @name ngInclude#$includeContentRequested\n * @eventType emit on the scope ngInclude was declared in\n * @description\n * Emitted every time the ngInclude content is requested.\n */\n\n\n/**\n * @ngdoc event\n * @name ngInclude#$includeContentLoaded\n * @eventType emit on the current ngInclude scope\n * @description\n * Emitted every time the ngInclude content is reloaded.\n */\nvar ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$animate', '$sce',\n function($http, $templateCache, $anchorScroll, $animate, $sce) {\n return {\n restrict: 'ECA',\n priority: 400,\n terminal: true,\n transclude: 'element',\n controller: angular.noop,\n compile: function(element, attr) {\n var srcExp = attr.ngInclude || attr.src,\n onloadExp = attr.onload || '',\n autoScrollExp = attr.autoscroll;\n\n return function(scope, $element, $attr, ctrl, $transclude) {\n var changeCounter = 0,\n currentScope,\n previousElement,\n currentElement;\n\n var cleanupLastIncludeContent = function() {\n if(previousElement) {\n previousElement.remove();\n previousElement = null;\n }\n if(currentScope) {\n currentScope.$destroy();\n currentScope = null;\n }\n if(currentElement) {\n $animate.leave(currentElement, function() {\n previousElement = null;\n });\n previousElement = currentElement;\n currentElement = null;\n }\n };\n\n scope.$watch($sce.parseAsResourceUrl(srcExp), function ngIncludeWatchAction(src) {\n var afterAnimation = function() {\n if (isDefined(autoScrollExp) && (!autoScrollExp || scope.$eval(autoScrollExp))) {\n $anchorScroll();\n }\n };\n var thisChangeId = ++changeCounter;\n\n if (src) {\n $http.get(src, {cache: $templateCache}).success(function(response) {\n if (thisChangeId !== changeCounter) return;\n var newScope = scope.$new();\n ctrl.template = response;\n\n // Note: This will also link all children of ng-include that were contained in the original\n // html. If that content contains controllers, ... they could pollute/change the scope.\n // However, using ng-include on an element with additional content does not make sense...\n // Note: We can't remove them in the cloneAttchFn of $transclude as that\n // function is called before linking the content, which would apply child\n // directives to non existing elements.\n var clone = $transclude(newScope, function(clone) {\n cleanupLastIncludeContent();\n $animate.enter(clone, null, $element, afterAnimation);\n });\n\n currentScope = newScope;\n currentElement = clone;\n\n currentScope.$emit('$includeContentLoaded');\n scope.$eval(onloadExp);\n }).error(function() {\n if (thisChangeId === changeCounter) cleanupLastIncludeContent();\n });\n scope.$emit('$includeContentRequested');\n } else {\n cleanupLastIncludeContent();\n ctrl.template = null;\n }\n });\n };\n }\n };\n}];\n\n// This directive is called during the $transclude call of the first `ngInclude` directive.\n// It will replace and compile the content of the element with the loaded template.\n// We need this directive so that the element content is already filled when\n// the link function of another directive on the same element as ngInclude\n// is called.\nvar ngIncludeFillContentDirective = ['$compile',\n function($compile) {\n return {\n restrict: 'ECA',\n priority: -400,\n require: 'ngInclude',\n link: function(scope, $element, $attr, ctrl) {\n $element.html(ctrl.template);\n $compile($element.contents())(scope);\n }\n };\n }];\n\n/**\n * @ngdoc directive\n * @name ngInit\n * @restrict AC\n *\n * @description\n * The `ngInit` directive allows you to evaluate an expression in the\n * current scope.\n *\n *
\n * The only appropriate use of `ngInit` is for aliasing special properties of\n * {@link ng.directive:ngRepeat `ngRepeat`}, as seen in the demo below. Besides this case, you\n * should use {@link guide/controller controllers} rather than `ngInit`\n * to initialize values on a scope.\n *
\n *
\n * **Note**: If you have assignment in `ngInit` along with {@link ng.$filter `$filter`}, make\n * sure you have parenthesis for correct precedence:\n *
\n *   
\n *
\n *
\n *\n * @priority 450\n *\n * @element ANY\n * @param {expression} ngInit {@link guide/expression Expression} to eval.\n *\n * @example\n \n \n \n
\n
\n
\n list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}};\n
\n
\n
\n
\n \n it('should alias index positions', function() {\n var elements = element.all(by.css('.example-init'));\n expect(elements.get(0).getText()).toBe('list[ 0 ][ 0 ] = a;');\n expect(elements.get(1).getText()).toBe('list[ 0 ][ 1 ] = b;');\n expect(elements.get(2).getText()).toBe('list[ 1 ][ 0 ] = c;');\n expect(elements.get(3).getText()).toBe('list[ 1 ][ 1 ] = d;');\n });\n \n
\n */\nvar ngInitDirective = ngDirective({\n priority: 450,\n compile: function() {\n return {\n pre: function(scope, element, attrs) {\n scope.$eval(attrs.ngInit);\n }\n };\n }\n});\n\n/**\n * @ngdoc directive\n * @name ngNonBindable\n * @restrict AC\n * @priority 1000\n *\n * @description\n * The `ngNonBindable` directive tells Angular not to compile or bind the contents of the current\n * DOM element. This is useful if the element contains what appears to be Angular directives and\n * bindings but which should be ignored by Angular. This could be the case if you have a site that\n * displays snippets of code, for instance.\n *\n * @element ANY\n *\n * @example\n * In this example there are two locations where a simple interpolation binding (`{{}}`) is present,\n * but the one wrapped in `ngNonBindable` is left alone.\n *\n * @example\n \n \n
Normal: {{1 + 2}}
\n
Ignored: {{1 + 2}}
\n
\n \n it('should check ng-non-bindable', function() {\n expect(element(by.binding('1 + 2')).getText()).toContain('3');\n expect(element.all(by.css('div')).last().getText()).toMatch(/1 \\+ 2/);\n });\n \n
\n */\nvar ngNonBindableDirective = ngDirective({ terminal: true, priority: 1000 });\n\n/**\n * @ngdoc directive\n * @name ngPluralize\n * @restrict EA\n *\n * @description\n * `ngPluralize` is a directive that displays messages according to en-US localization rules.\n * These rules are bundled with angular.js, but can be overridden\n * (see {@link guide/i18n Angular i18n} dev guide). You configure ngPluralize directive\n * by specifying the mappings between\n * [plural categories](http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html)\n * and the strings to be displayed.\n *\n * # Plural categories and explicit number rules\n * There are two\n * [plural categories](http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html)\n * in Angular's default en-US locale: \"one\" and \"other\".\n *\n * While a plural category may match many numbers (for example, in en-US locale, \"other\" can match\n * any number that is not 1), an explicit number rule can only match one number. For example, the\n * explicit number rule for \"3\" matches the number 3. There are examples of plural categories\n * and explicit number rules throughout the rest of this documentation.\n *\n * # Configuring ngPluralize\n * You configure ngPluralize by providing 2 attributes: `count` and `when`.\n * You can also provide an optional attribute, `offset`.\n *\n * The value of the `count` attribute can be either a string or an {@link guide/expression\n * Angular expression}; these are evaluated on the current scope for its bound value.\n *\n * The `when` attribute specifies the mappings between plural categories and the actual\n * string to be displayed. The value of the attribute should be a JSON object.\n *\n * The following example shows how to configure ngPluralize:\n *\n * ```html\n * \n * \n *```\n *\n * In the example, `\"0: Nobody is viewing.\"` is an explicit number rule. If you did not\n * specify this rule, 0 would be matched to the \"other\" category and \"0 people are viewing\"\n * would be shown instead of \"Nobody is viewing\". You can specify an explicit number rule for\n * other numbers, for example 12, so that instead of showing \"12 people are viewing\", you can\n * show \"a dozen people are viewing\".\n *\n * You can use a set of closed braces (`{}`) as a placeholder for the number that you want substituted\n * into pluralized strings. In the previous example, Angular will replace `{}` with\n * `{{personCount}}`. The closed braces `{}` is a placeholder\n * for {{numberExpression}}.\n *\n * # Configuring ngPluralize with offset\n * The `offset` attribute allows further customization of pluralized text, which can result in\n * a better user experience. For example, instead of the message \"4 people are viewing this document\",\n * you might display \"John, Kate and 2 others are viewing this document\".\n * The offset attribute allows you to offset a number by any desired value.\n * Let's take a look at an example:\n *\n * ```html\n * \n * \n * ```\n *\n * Notice that we are still using two plural categories(one, other), but we added\n * three explicit number rules 0, 1 and 2.\n * When one person, perhaps John, views the document, \"John is viewing\" will be shown.\n * When three people view the document, no explicit number rule is found, so\n * an offset of 2 is taken off 3, and Angular uses 1 to decide the plural category.\n * In this case, plural category 'one' is matched and \"John, Mary and one other person are viewing\"\n * is shown.\n *\n * Note that when you specify offsets, you must provide explicit number rules for\n * numbers from 0 up to and including the offset. If you use an offset of 3, for example,\n * you must provide explicit number rules for 0, 1, 2 and 3. You must also provide plural strings for\n * plural categories \"one\" and \"other\".\n *\n * @param {string|expression} count The variable to be bound to.\n * @param {string} when The mapping between plural category to its corresponding strings.\n * @param {number=} offset Offset to deduct from the total number.\n *\n * @example\n \n \n \n
\n Person 1:
\n Person 2:
\n Number of People:
\n\n \n Without Offset:\n \n
\n\n \n With Offset(2):\n \n \n
\n
\n \n it('should show correct pluralized string', function() {\n var withoutOffset = element.all(by.css('ng-pluralize')).get(0);\n var withOffset = element.all(by.css('ng-pluralize')).get(1);\n var countInput = element(by.model('personCount'));\n\n expect(withoutOffset.getText()).toEqual('1 person is viewing.');\n expect(withOffset.getText()).toEqual('Igor is viewing.');\n\n countInput.clear();\n countInput.sendKeys('0');\n\n expect(withoutOffset.getText()).toEqual('Nobody is viewing.');\n expect(withOffset.getText()).toEqual('Nobody is viewing.');\n\n countInput.clear();\n countInput.sendKeys('2');\n\n expect(withoutOffset.getText()).toEqual('2 people are viewing.');\n expect(withOffset.getText()).toEqual('Igor and Misko are viewing.');\n\n countInput.clear();\n countInput.sendKeys('3');\n\n expect(withoutOffset.getText()).toEqual('3 people are viewing.');\n expect(withOffset.getText()).toEqual('Igor, Misko and one other person are viewing.');\n\n countInput.clear();\n countInput.sendKeys('4');\n\n expect(withoutOffset.getText()).toEqual('4 people are viewing.');\n expect(withOffset.getText()).toEqual('Igor, Misko and 2 other people are viewing.');\n });\n it('should show data-bound names', function() {\n var withOffset = element.all(by.css('ng-pluralize')).get(1);\n var personCount = element(by.model('personCount'));\n var person1 = element(by.model('person1'));\n var person2 = element(by.model('person2'));\n personCount.clear();\n personCount.sendKeys('4');\n person1.clear();\n person1.sendKeys('Di');\n person2.clear();\n person2.sendKeys('Vojta');\n expect(withOffset.getText()).toEqual('Di, Vojta and 2 other people are viewing.');\n });\n \n
\n */\nvar ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interpolate) {\n var BRACE = /{}/g;\n return {\n restrict: 'EA',\n link: function(scope, element, attr) {\n var numberExp = attr.count,\n whenExp = attr.$attr.when && element.attr(attr.$attr.when), // we have {{}} in attrs\n offset = attr.offset || 0,\n whens = scope.$eval(whenExp) || {},\n whensExpFns = {},\n startSymbol = $interpolate.startSymbol(),\n endSymbol = $interpolate.endSymbol(),\n isWhen = /^when(Minus)?(.+)$/;\n\n forEach(attr, function(expression, attributeName) {\n if (isWhen.test(attributeName)) {\n whens[lowercase(attributeName.replace('when', '').replace('Minus', '-'))] =\n element.attr(attr.$attr[attributeName]);\n }\n });\n forEach(whens, function(expression, key) {\n whensExpFns[key] =\n $interpolate(expression.replace(BRACE, startSymbol + numberExp + '-' +\n offset + endSymbol));\n });\n\n scope.$watch(function ngPluralizeWatch() {\n var value = parseFloat(scope.$eval(numberExp));\n\n if (!isNaN(value)) {\n //if explicit number rule such as 1, 2, 3... is defined, just use it. Otherwise,\n //check it against pluralization rules in $locale service\n if (!(value in whens)) value = $locale.pluralCat(value - offset);\n return whensExpFns[value](scope, element, true);\n } else {\n return '';\n }\n }, function ngPluralizeWatchAction(newVal) {\n element.text(newVal);\n });\n }\n };\n}];\n\n/**\n * @ngdoc directive\n * @name ngRepeat\n *\n * @description\n * The `ngRepeat` directive instantiates a template once per item from a collection. Each template\n * instance gets its own scope, where the given loop variable is set to the current collection item,\n * and `$index` is set to the item index or key.\n *\n * Special properties are exposed on the local scope of each template instance, including:\n *\n * | Variable | Type | Details |\n * |-----------|-----------------|-----------------------------------------------------------------------------|\n * | `$index` | {@type number} | iterator offset of the repeated element (0..length-1) |\n * | `$first` | {@type boolean} | true if the repeated element is first in the iterator. |\n * | `$middle` | {@type boolean} | true if the repeated element is between the first and last in the iterator. |\n * | `$last` | {@type boolean} | true if the repeated element is last in the iterator. |\n * | `$even` | {@type boolean} | true if the iterator position `$index` is even (otherwise false). |\n * | `$odd` | {@type boolean} | true if the iterator position `$index` is odd (otherwise false). |\n *\n * Creating aliases for these properties is possible with {@link ng.directive:ngInit `ngInit`}.\n * This may be useful when, for instance, nesting ngRepeats.\n *\n * # Special repeat start and end points\n * To repeat a series of elements instead of just one parent element, ngRepeat (as well as other ng directives) supports extending\n * the range of the repeater by defining explicit start and end points by using **ng-repeat-start** and **ng-repeat-end** respectively.\n * The **ng-repeat-start** directive works the same as **ng-repeat**, but will repeat all the HTML code (including the tag it's defined on)\n * up to and including the ending HTML tag where **ng-repeat-end** is placed.\n *\n * The example below makes use of this feature:\n * ```html\n *
\n * Header {{ item }}\n *
\n *
\n * Body {{ item }}\n *
\n *
\n * Footer {{ item }}\n *
\n * ```\n *\n * And with an input of {@type ['A','B']} for the items variable in the example above, the output will evaluate to:\n * ```html\n *
\n * Header A\n *
\n *
\n * Body A\n *
\n *
\n * Footer A\n *
\n *
\n * Header B\n *
\n *
\n * Body B\n *
\n *
\n * Footer B\n *
\n * ```\n *\n * The custom start and end points for ngRepeat also support all other HTML directive syntax flavors provided in AngularJS (such\n * as **data-ng-repeat-start**, **x-ng-repeat-start** and **ng:repeat-start**).\n *\n * @animations\n * **.enter** - when a new item is added to the list or when an item is revealed after a filter\n *\n * **.leave** - when an item is removed from the list or when an item is filtered out\n *\n * **.move** - when an adjacent item is filtered out causing a reorder or when the item contents are reordered\n *\n * @element ANY\n * @scope\n * @priority 1000\n * @param {repeat_expression} ngRepeat The expression indicating how to enumerate a collection. These\n * formats are currently supported:\n *\n * * `variable in expression` – where variable is the user defined loop variable and `expression`\n * is a scope expression giving the collection to enumerate.\n *\n * For example: `album in artist.albums`.\n *\n * * `(key, value) in expression` – where `key` and `value` can be any user defined identifiers,\n * and `expression` is the scope expression giving the collection to enumerate.\n *\n * For example: `(name, age) in {'adam':10, 'amalie':12}`.\n *\n * * `variable in expression track by tracking_expression` – You can also provide an optional tracking function\n * which can be used to associate the objects in the collection with the DOM elements. If no tracking function\n * is specified the ng-repeat associates elements by identity in the collection. It is an error to have\n * more than one tracking function to resolve to the same key. (This would mean that two distinct objects are\n * mapped to the same DOM element, which is not possible.) Filters should be applied to the expression,\n * before specifying a tracking expression.\n *\n * For example: `item in items` is equivalent to `item in items track by $id(item)`. This implies that the DOM elements\n * will be associated by item identity in the array.\n *\n * For example: `item in items track by $id(item)`. A built in `$id()` function can be used to assign a unique\n * `$$hashKey` property to each item in the array. This property is then used as a key to associated DOM elements\n * with the corresponding item in the array by identity. Moving the same object in array would move the DOM\n * element in the same way in the DOM.\n *\n * For example: `item in items track by item.id` is a typical pattern when the items come from the database. In this\n * case the object identity does not matter. Two objects are considered equivalent as long as their `id`\n * property is same.\n *\n * For example: `item in items | filter:searchText track by item.id` is a pattern that might be used to apply a filter\n * to items in conjunction with a tracking expression.\n *\n * @example\n * This example initializes the scope to a list of names and\n * then uses `ngRepeat` to display every person:\n \n \n
\n I have {{friends.length}} friends. They are:\n \n
    \n
  • \n [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old.\n
  • \n
\n
\n
\n \n .example-animate-container {\n background:white;\n border:1px solid black;\n list-style:none;\n margin:0;\n padding:0 10px;\n }\n\n .animate-repeat {\n line-height:40px;\n list-style:none;\n box-sizing:border-box;\n }\n\n .animate-repeat.ng-move,\n .animate-repeat.ng-enter,\n .animate-repeat.ng-leave {\n -webkit-transition:all linear 0.5s;\n transition:all linear 0.5s;\n }\n\n .animate-repeat.ng-leave.ng-leave-active,\n .animate-repeat.ng-move,\n .animate-repeat.ng-enter {\n opacity:0;\n max-height:0;\n }\n\n .animate-repeat.ng-leave,\n .animate-repeat.ng-move.ng-move-active,\n .animate-repeat.ng-enter.ng-enter-active {\n opacity:1;\n max-height:40px;\n }\n \n \n var friends = element.all(by.repeater('friend in friends'));\n\n it('should render initial data set', function() {\n expect(friends.count()).toBe(10);\n expect(friends.get(0).getText()).toEqual('[1] John who is 25 years old.');\n expect(friends.get(1).getText()).toEqual('[2] Jessie who is 30 years old.');\n expect(friends.last().getText()).toEqual('[10] Samantha who is 60 years old.');\n expect(element(by.binding('friends.length')).getText())\n .toMatch(\"I have 10 friends. They are:\");\n });\n\n it('should update repeater when filter predicate changes', function() {\n expect(friends.count()).toBe(10);\n\n element(by.model('q')).sendKeys('ma');\n\n expect(friends.count()).toBe(2);\n expect(friends.get(0).getText()).toEqual('[1] Mary who is 28 years old.');\n expect(friends.last().getText()).toEqual('[2] Samantha who is 60 years old.');\n });\n \n
\n */\nvar ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {\n var NG_REMOVED = '$$NG_REMOVED';\n var ngRepeatMinErr = minErr('ngRepeat');\n return {\n transclude: 'element',\n priority: 1000,\n terminal: true,\n $$tlb: true,\n link: function($scope, $element, $attr, ctrl, $transclude){\n var expression = $attr.ngRepeat;\n var match = expression.match(/^\\s*([\\s\\S]+?)\\s+in\\s+([\\s\\S]+?)(?:\\s+track\\s+by\\s+([\\s\\S]+?))?\\s*$/),\n trackByExp, trackByExpGetter, trackByIdExpFn, trackByIdArrayFn, trackByIdObjFn,\n lhs, rhs, valueIdentifier, keyIdentifier,\n hashFnLocals = {$id: hashKey};\n\n if (!match) {\n throw ngRepeatMinErr('iexp', \"Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.\",\n expression);\n }\n\n lhs = match[1];\n rhs = match[2];\n trackByExp = match[3];\n\n if (trackByExp) {\n trackByExpGetter = $parse(trackByExp);\n trackByIdExpFn = function(key, value, index) {\n // assign key, value, and $index to the locals so that they can be used in hash functions\n if (keyIdentifier) hashFnLocals[keyIdentifier] = key;\n hashFnLocals[valueIdentifier] = value;\n hashFnLocals.$index = index;\n return trackByExpGetter($scope, hashFnLocals);\n };\n } else {\n trackByIdArrayFn = function(key, value) {\n return hashKey(value);\n };\n trackByIdObjFn = function(key) {\n return key;\n };\n }\n\n match = lhs.match(/^(?:([\\$\\w]+)|\\(([\\$\\w]+)\\s*,\\s*([\\$\\w]+)\\))$/);\n if (!match) {\n throw ngRepeatMinErr('iidexp', \"'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.\",\n lhs);\n }\n valueIdentifier = match[3] || match[1];\n keyIdentifier = match[2];\n\n // Store a list of elements from previous run. This is a hash where key is the item from the\n // iterator, and the value is objects with following properties.\n // - scope: bound scope\n // - element: previous element.\n // - index: position\n var lastBlockMap = {};\n\n //watch props\n $scope.$watchCollection(rhs, function ngRepeatAction(collection){\n var index, length,\n previousNode = $element[0], // current position of the node\n nextNode,\n // Same as lastBlockMap but it has the current state. It will become the\n // lastBlockMap on the next iteration.\n nextBlockMap = {},\n arrayLength,\n childScope,\n key, value, // key/value of iteration\n trackById,\n trackByIdFn,\n collectionKeys,\n block, // last object information {scope, element, id}\n nextBlockOrder = [],\n elementsToRemove;\n\n\n if (isArrayLike(collection)) {\n collectionKeys = collection;\n trackByIdFn = trackByIdExpFn || trackByIdArrayFn;\n } else {\n trackByIdFn = trackByIdExpFn || trackByIdObjFn;\n // if object, extract keys, sort them and use to determine order of iteration over obj props\n collectionKeys = [];\n for (key in collection) {\n if (collection.hasOwnProperty(key) && key.charAt(0) != '$') {\n collectionKeys.push(key);\n }\n }\n collectionKeys.sort();\n }\n\n arrayLength = collectionKeys.length;\n\n // locate existing items\n length = nextBlockOrder.length = collectionKeys.length;\n for(index = 0; index < length; index++) {\n key = (collection === collectionKeys) ? index : collectionKeys[index];\n value = collection[key];\n trackById = trackByIdFn(key, value, index);\n assertNotHasOwnProperty(trackById, '`track by` id');\n if(lastBlockMap.hasOwnProperty(trackById)) {\n block = lastBlockMap[trackById];\n delete lastBlockMap[trackById];\n nextBlockMap[trackById] = block;\n nextBlockOrder[index] = block;\n } else if (nextBlockMap.hasOwnProperty(trackById)) {\n // restore lastBlockMap\n forEach(nextBlockOrder, function(block) {\n if (block && block.scope) lastBlockMap[block.id] = block;\n });\n // This is a duplicate and we need to throw an error\n throw ngRepeatMinErr('dupes',\n \"Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}\",\n expression, trackById, toJson(value));\n } else {\n // new never before seen block\n nextBlockOrder[index] = { id: trackById };\n nextBlockMap[trackById] = false;\n }\n }\n\n // remove existing items\n for (key in lastBlockMap) {\n // lastBlockMap is our own object so we don't need to use special hasOwnPropertyFn\n if (lastBlockMap.hasOwnProperty(key)) {\n block = lastBlockMap[key];\n elementsToRemove = getBlockElements(block.clone);\n $animate.leave(elementsToRemove);\n forEach(elementsToRemove, function(element) { element[NG_REMOVED] = true; });\n block.scope.$destroy();\n }\n }\n\n // we are not using forEach for perf reasons (trying to avoid #call)\n for (index = 0, length = collectionKeys.length; index < length; index++) {\n key = (collection === collectionKeys) ? index : collectionKeys[index];\n value = collection[key];\n block = nextBlockOrder[index];\n if (nextBlockOrder[index - 1]) previousNode = getBlockEnd(nextBlockOrder[index - 1]);\n\n if (block.scope) {\n // if we have already seen this object, then we need to reuse the\n // associated scope/element\n childScope = block.scope;\n\n nextNode = previousNode;\n do {\n nextNode = nextNode.nextSibling;\n } while(nextNode && nextNode[NG_REMOVED]);\n\n if (getBlockStart(block) != nextNode) {\n // existing item which got moved\n $animate.move(getBlockElements(block.clone), null, jqLite(previousNode));\n }\n previousNode = getBlockEnd(block);\n } else {\n // new item which we don't know about\n childScope = $scope.$new();\n }\n\n childScope[valueIdentifier] = value;\n if (keyIdentifier) childScope[keyIdentifier] = key;\n childScope.$index = index;\n childScope.$first = (index === 0);\n childScope.$last = (index === (arrayLength - 1));\n childScope.$middle = !(childScope.$first || childScope.$last);\n // jshint bitwise: false\n childScope.$odd = !(childScope.$even = (index&1) === 0);\n // jshint bitwise: true\n\n if (!block.scope) {\n $transclude(childScope, function(clone) {\n clone[clone.length++] = document.createComment(' end ngRepeat: ' + expression + ' ');\n $animate.enter(clone, null, jqLite(previousNode));\n previousNode = clone;\n block.scope = childScope;\n // Note: We only need the first/last node of the cloned nodes.\n // However, we need to keep the reference to the jqlite wrapper as it might be changed later\n // by a directive with templateUrl when its template arrives.\n block.clone = clone;\n nextBlockMap[block.id] = block;\n });\n }\n }\n lastBlockMap = nextBlockMap;\n });\n }\n };\n\n function getBlockStart(block) {\n return block.clone[0];\n }\n\n function getBlockEnd(block) {\n return block.clone[block.clone.length - 1];\n }\n}];\n\n/**\n * @ngdoc directive\n * @name ngShow\n *\n * @description\n * The `ngShow` directive shows or hides the given HTML element based on the expression\n * provided to the `ngShow` attribute. The element is shown or hidden by removing or adding\n * the `.ng-hide` CSS class onto the element. The `.ng-hide` CSS class is predefined\n * in AngularJS and sets the display style to none (using an !important flag).\n * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).\n *\n * ```html\n * \n *
\n *\n * \n *
\n * ```\n *\n * When the `ngShow` expression evaluates to false then the `.ng-hide` CSS class is added to the class attribute\n * on the element causing it to become hidden. When true, the `.ng-hide` CSS class is removed\n * from the element causing the element not to appear hidden.\n *\n *
\n * **Note:** Here is a list of values that ngShow will consider as a falsy value (case insensitive):
\n * \"f\" / \"0\" / \"false\" / \"no\" / \"n\" / \"[]\"\n *
\n *\n * ## Why is !important used?\n *\n * You may be wondering why !important is used for the `.ng-hide` CSS class. This is because the `.ng-hide` selector\n * can be easily overridden by heavier selectors. For example, something as simple\n * as changing the display style on a HTML list item would make hidden elements appear visible.\n * This also becomes a bigger issue when dealing with CSS frameworks.\n *\n * By using !important, the show and hide behavior will work as expected despite any clash between CSS selector\n * specificity (when !important isn't used with any conflicting styles). If a developer chooses to override the\n * styling to change how to hide an element then it is just a matter of using !important in their own CSS code.\n *\n * ### Overriding `.ng-hide`\n *\n * By default, the `.ng-hide` class will style the element with `display:none!important`. If you wish to change\n * the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the `.ng-hide`\n * class in CSS:\n *\n * ```css\n * .ng-hide {\n * //this is just another form of hiding an element\n * display:block!important;\n * position:absolute;\n * top:-9999px;\n * left:-9999px;\n * }\n * ```\n *\n * By default you don't need to override in CSS anything and the animations will work around the display style.\n *\n * ## A note about animations with `ngShow`\n *\n * Animations in ngShow/ngHide work with the show and hide events that are triggered when the directive expression\n * is true and false. This system works like the animation system present with ngClass except that\n * you must also include the !important flag to override the display property\n * so that you can perform an animation when the element is hidden during the time of the animation.\n *\n * ```css\n * //\n * //a working example can be found at the bottom of this page\n * //\n * .my-element.ng-hide-add, .my-element.ng-hide-remove {\n * transition:0.5s linear all;\n * }\n *\n * .my-element.ng-hide-add { ... }\n * .my-element.ng-hide-add.ng-hide-add-active { ... }\n * .my-element.ng-hide-remove { ... }\n * .my-element.ng-hide-remove.ng-hide-remove-active { ... }\n * ```\n *\n * Keep in mind that, as of AngularJS version 1.2.17 (and 1.3.0-beta.11), there is no need to change the display\n * property to block during animation states--ngAnimate will handle the style toggling automatically for you.\n *\n * @animations\n * addClass: `.ng-hide` - happens after the `ngShow` expression evaluates to a truthy value and the just before contents are set to visible\n * removeClass: `.ng-hide` - happens after the `ngShow` expression evaluates to a non truthy value and just before the contents are set to hidden\n *\n * @element ANY\n * @param {expression} ngShow If the {@link guide/expression expression} is truthy\n * then the element is shown or hidden respectively.\n *\n * @example\n \n \n Click me:
\n
\n Show:\n
\n I show up when your checkbox is checked.\n
\n
\n
\n Hide:\n
\n I hide when your checkbox is checked.\n
\n
\n
\n \n @import url(//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css);\n \n \n .animate-show {\n -webkit-transition:all linear 0.5s;\n transition:all linear 0.5s;\n line-height:20px;\n opacity:1;\n padding:10px;\n border:1px solid black;\n background:white;\n }\n\n .animate-show.ng-hide {\n line-height:0;\n opacity:0;\n padding:0 10px;\n }\n\n .check-element {\n padding:10px;\n border:1px solid black;\n background:white;\n }\n \n \n var thumbsUp = element(by.css('span.glyphicon-thumbs-up'));\n var thumbsDown = element(by.css('span.glyphicon-thumbs-down'));\n\n it('should check ng-show / ng-hide', function() {\n expect(thumbsUp.isDisplayed()).toBeFalsy();\n expect(thumbsDown.isDisplayed()).toBeTruthy();\n\n element(by.model('checked')).click();\n\n expect(thumbsUp.isDisplayed()).toBeTruthy();\n expect(thumbsDown.isDisplayed()).toBeFalsy();\n });\n \n
\n */\nvar ngShowDirective = ['$animate', function($animate) {\n return function(scope, element, attr) {\n scope.$watch(attr.ngShow, function ngShowWatchAction(value){\n $animate[toBoolean(value) ? 'removeClass' : 'addClass'](element, 'ng-hide');\n });\n };\n}];\n\n\n/**\n * @ngdoc directive\n * @name ngHide\n *\n * @description\n * The `ngHide` directive shows or hides the given HTML element based on the expression\n * provided to the `ngHide` attribute. The element is shown or hidden by removing or adding\n * the `ng-hide` CSS class onto the element. The `.ng-hide` CSS class is predefined\n * in AngularJS and sets the display style to none (using an !important flag).\n * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).\n *\n * ```html\n * \n *
\n *\n * \n *
\n * ```\n *\n * When the `.ngHide` expression evaluates to true then the `.ng-hide` CSS class is added to the class attribute\n * on the element causing it to become hidden. When false, the `.ng-hide` CSS class is removed\n * from the element causing the element not to appear hidden.\n *\n *
\n * **Note:** Here is a list of values that ngHide will consider as a falsy value (case insensitive):
\n * \"f\" / \"0\" / \"false\" / \"no\" / \"n\" / \"[]\"\n *
\n *\n * ## Why is !important used?\n *\n * You may be wondering why !important is used for the `.ng-hide` CSS class. This is because the `.ng-hide` selector\n * can be easily overridden by heavier selectors. For example, something as simple\n * as changing the display style on a HTML list item would make hidden elements appear visible.\n * This also becomes a bigger issue when dealing with CSS frameworks.\n *\n * By using !important, the show and hide behavior will work as expected despite any clash between CSS selector\n * specificity (when !important isn't used with any conflicting styles). If a developer chooses to override the\n * styling to change how to hide an element then it is just a matter of using !important in their own CSS code.\n *\n * ### Overriding `.ng-hide`\n *\n * By default, the `.ng-hide` class will style the element with `display:none!important`. If you wish to change\n * the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the `.ng-hide`\n * class in CSS:\n *\n * ```css\n * .ng-hide {\n * //this is just another form of hiding an element\n * display:block!important;\n * position:absolute;\n * top:-9999px;\n * left:-9999px;\n * }\n * ```\n *\n * By default you don't need to override in CSS anything and the animations will work around the display style.\n *\n * ## A note about animations with `ngHide`\n *\n * Animations in ngShow/ngHide work with the show and hide events that are triggered when the directive expression\n * is true and false. This system works like the animation system present with ngClass, except that the `.ng-hide`\n * CSS class is added and removed for you instead of your own CSS class.\n *\n * ```css\n * //\n * //a working example can be found at the bottom of this page\n * //\n * .my-element.ng-hide-add, .my-element.ng-hide-remove {\n * transition:0.5s linear all;\n * }\n *\n * .my-element.ng-hide-add { ... }\n * .my-element.ng-hide-add.ng-hide-add-active { ... }\n * .my-element.ng-hide-remove { ... }\n * .my-element.ng-hide-remove.ng-hide-remove-active { ... }\n * ```\n *\n * Keep in mind that, as of AngularJS version 1.2.17 (and 1.3.0-beta.11), there is no need to change the display\n * property to block during animation states--ngAnimate will handle the style toggling automatically for you.\n *\n * @animations\n * removeClass: `.ng-hide` - happens after the `ngHide` expression evaluates to a truthy value and just before the contents are set to hidden\n * addClass: `.ng-hide` - happens after the `ngHide` expression evaluates to a non truthy value and just before the contents are set to visible\n *\n * @element ANY\n * @param {expression} ngHide If the {@link guide/expression expression} is truthy then\n * the element is shown or hidden respectively.\n *\n * @example\n \n \n Click me:
\n
\n Show:\n
\n I show up when your checkbox is checked.\n
\n
\n
\n Hide:\n
\n I hide when your checkbox is checked.\n
\n
\n
\n \n @import url(//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css);\n \n \n .animate-hide {\n -webkit-transition:all linear 0.5s;\n transition:all linear 0.5s;\n line-height:20px;\n opacity:1;\n padding:10px;\n border:1px solid black;\n background:white;\n }\n\n .animate-hide.ng-hide {\n line-height:0;\n opacity:0;\n padding:0 10px;\n }\n\n .check-element {\n padding:10px;\n border:1px solid black;\n background:white;\n }\n \n \n var thumbsUp = element(by.css('span.glyphicon-thumbs-up'));\n var thumbsDown = element(by.css('span.glyphicon-thumbs-down'));\n\n it('should check ng-show / ng-hide', function() {\n expect(thumbsUp.isDisplayed()).toBeFalsy();\n expect(thumbsDown.isDisplayed()).toBeTruthy();\n\n element(by.model('checked')).click();\n\n expect(thumbsUp.isDisplayed()).toBeTruthy();\n expect(thumbsDown.isDisplayed()).toBeFalsy();\n });\n \n
\n */\nvar ngHideDirective = ['$animate', function($animate) {\n return function(scope, element, attr) {\n scope.$watch(attr.ngHide, function ngHideWatchAction(value){\n $animate[toBoolean(value) ? 'addClass' : 'removeClass'](element, 'ng-hide');\n });\n };\n}];\n\n/**\n * @ngdoc directive\n * @name ngStyle\n * @restrict AC\n *\n * @description\n * The `ngStyle` directive allows you to set CSS style on an HTML element conditionally.\n *\n * @element ANY\n * @param {expression} ngStyle\n *\n * {@link guide/expression Expression} which evals to an\n * object whose keys are CSS style names and values are corresponding values for those CSS\n * keys.\n *\n * Since some CSS style names are not valid keys for an object, they must be quoted.\n * See the 'background-color' style in the example below.\n *\n * @example\n \n \n \n \n \n
\n Sample Text\n
myStyle={{myStyle}}
\n
\n \n span {\n color: black;\n }\n \n \n var colorSpan = element(by.css('span'));\n\n it('should check ng-style', function() {\n expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');\n element(by.css('input[value=\\'set color\\']')).click();\n expect(colorSpan.getCssValue('color')).toBe('rgba(255, 0, 0, 1)');\n element(by.css('input[value=clear]')).click();\n expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');\n });\n \n
\n */\nvar ngStyleDirective = ngDirective(function(scope, element, attr) {\n scope.$watch(attr.ngStyle, function ngStyleWatchAction(newStyles, oldStyles) {\n if (oldStyles && (newStyles !== oldStyles)) {\n forEach(oldStyles, function(val, style) { element.css(style, '');});\n }\n if (newStyles) element.css(newStyles);\n }, true);\n});\n\n/**\n * @ngdoc directive\n * @name ngSwitch\n * @restrict EA\n *\n * @description\n * The `ngSwitch` directive is used to conditionally swap DOM structure on your template based on a scope expression.\n * Elements within `ngSwitch` but without `ngSwitchWhen` or `ngSwitchDefault` directives will be preserved at the location\n * as specified in the template.\n *\n * The directive itself works similar to ngInclude, however, instead of downloading template code (or loading it\n * from the template cache), `ngSwitch` simply chooses one of the nested elements and makes it visible based on which element\n * matches the value obtained from the evaluated expression. In other words, you define a container element\n * (where you place the directive), place an expression on the **`on=\"...\"` attribute**\n * (or the **`ng-switch=\"...\"` attribute**), define any inner elements inside of the directive and place\n * a when attribute per element. The when attribute is used to inform ngSwitch which element to display when the on\n * expression is evaluated. If a matching expression is not found via a when attribute then an element with the default\n * attribute is displayed.\n *\n *
\n * Be aware that the attribute values to match against cannot be expressions. They are interpreted\n * as literal string values to match against.\n * For example, **`ng-switch-when=\"someVal\"`** will match against the string `\"someVal\"` not against the\n * value of the expression `$scope.someVal`.\n *
\n\n * @animations\n * enter - happens after the ngSwitch contents change and the matched child element is placed inside the container\n * leave - happens just after the ngSwitch contents change and just before the former contents are removed from the DOM\n *\n * @usage\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n *\n * @scope\n * @priority 800\n * @param {*} ngSwitch|on expression to match against ng-switch-when.\n * On child elements add:\n *\n * * `ngSwitchWhen`: the case statement to match against. If match then this\n * case will be displayed. If the same match appears multiple times, all the\n * elements will be displayed.\n * * `ngSwitchDefault`: the default case when no other case match. If there\n * are multiple default cases, all of them will be displayed when no other\n * case match.\n *\n *\n * @example\n \n \n
\n \n selection={{selection}}\n
\n
\n
Settings Div
\n
Home Span
\n
default
\n
\n
\n
\n \n angular.module('switchExample', ['ngAnimate'])\n .controller('ExampleController', ['$scope', function($scope) {\n $scope.items = ['settings', 'home', 'other'];\n $scope.selection = $scope.items[0];\n }]);\n \n \n .animate-switch-container {\n position:relative;\n background:white;\n border:1px solid black;\n height:40px;\n overflow:hidden;\n }\n\n .animate-switch {\n padding:10px;\n }\n\n .animate-switch.ng-animate {\n -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n\n position:absolute;\n top:0;\n left:0;\n right:0;\n bottom:0;\n }\n\n .animate-switch.ng-leave.ng-leave-active,\n .animate-switch.ng-enter {\n top:-50px;\n }\n .animate-switch.ng-leave,\n .animate-switch.ng-enter.ng-enter-active {\n top:0;\n }\n \n \n var switchElem = element(by.css('[ng-switch]'));\n var select = element(by.model('selection'));\n\n it('should start in settings', function() {\n expect(switchElem.getText()).toMatch(/Settings Div/);\n });\n it('should change to home', function() {\n select.all(by.css('option')).get(1).click();\n expect(switchElem.getText()).toMatch(/Home Span/);\n });\n it('should select default', function() {\n select.all(by.css('option')).get(2).click();\n expect(switchElem.getText()).toMatch(/default/);\n });\n \n
\n */\nvar ngSwitchDirective = ['$animate', function($animate) {\n return {\n restrict: 'EA',\n require: 'ngSwitch',\n\n // asks for $scope to fool the BC controller module\n controller: ['$scope', function ngSwitchController() {\n this.cases = {};\n }],\n link: function(scope, element, attr, ngSwitchController) {\n var watchExpr = attr.ngSwitch || attr.on,\n selectedTranscludes = [],\n selectedElements = [],\n previousElements = [],\n selectedScopes = [];\n\n scope.$watch(watchExpr, function ngSwitchWatchAction(value) {\n var i, ii;\n for (i = 0, ii = previousElements.length; i < ii; ++i) {\n previousElements[i].remove();\n }\n previousElements.length = 0;\n\n for (i = 0, ii = selectedScopes.length; i < ii; ++i) {\n var selected = selectedElements[i];\n selectedScopes[i].$destroy();\n previousElements[i] = selected;\n $animate.leave(selected, function() {\n previousElements.splice(i, 1);\n });\n }\n\n selectedElements.length = 0;\n selectedScopes.length = 0;\n\n if ((selectedTranscludes = ngSwitchController.cases['!' + value] || ngSwitchController.cases['?'])) {\n scope.$eval(attr.change);\n forEach(selectedTranscludes, function(selectedTransclude) {\n var selectedScope = scope.$new();\n selectedScopes.push(selectedScope);\n selectedTransclude.transclude(selectedScope, function(caseElement) {\n var anchor = selectedTransclude.element;\n\n selectedElements.push(caseElement);\n $animate.enter(caseElement, anchor.parent(), anchor);\n });\n });\n }\n });\n }\n };\n}];\n\nvar ngSwitchWhenDirective = ngDirective({\n transclude: 'element',\n priority: 800,\n require: '^ngSwitch',\n link: function(scope, element, attrs, ctrl, $transclude) {\n ctrl.cases['!' + attrs.ngSwitchWhen] = (ctrl.cases['!' + attrs.ngSwitchWhen] || []);\n ctrl.cases['!' + attrs.ngSwitchWhen].push({ transclude: $transclude, element: element });\n }\n});\n\nvar ngSwitchDefaultDirective = ngDirective({\n transclude: 'element',\n priority: 800,\n require: '^ngSwitch',\n link: function(scope, element, attr, ctrl, $transclude) {\n ctrl.cases['?'] = (ctrl.cases['?'] || []);\n ctrl.cases['?'].push({ transclude: $transclude, element: element });\n }\n});\n\n/**\n * @ngdoc directive\n * @name ngTransclude\n * @restrict AC\n *\n * @description\n * Directive that marks the insertion point for the transcluded DOM of the nearest parent directive that uses transclusion.\n *\n * Any existing content of the element that this directive is placed on will be removed before the transcluded content is inserted.\n *\n * @element ANY\n *\n * @example\n \n \n \n
\n
\n
\n {{text}}\n
\n
\n \n it('should have transcluded', function() {\n var titleElement = element(by.model('title'));\n titleElement.clear();\n titleElement.sendKeys('TITLE');\n var textElement = element(by.model('text'));\n textElement.clear();\n textElement.sendKeys('TEXT');\n expect(element(by.binding('title')).getText()).toEqual('TITLE');\n expect(element(by.binding('text')).getText()).toEqual('TEXT');\n });\n \n
\n *\n */\nvar ngTranscludeDirective = ngDirective({\n link: function($scope, $element, $attrs, controller, $transclude) {\n if (!$transclude) {\n throw minErr('ngTransclude')('orphan',\n 'Illegal use of ngTransclude directive in the template! ' +\n 'No parent directive that requires a transclusion found. ' +\n 'Element: {0}',\n startingTag($element));\n }\n\n $transclude(function(clone) {\n $element.empty();\n $element.append(clone);\n });\n }\n});\n\n/**\n * @ngdoc directive\n * @name script\n * @restrict E\n *\n * @description\n * Load the content of a `\n\n Load inlined template\n
\n \n \n it('should load template defined inside script tag', function() {\n element(by.css('#tpl-link')).click();\n expect(element(by.css('#tpl-content')).getText()).toMatch(/Content of the template/);\n });\n \n \n */\nvar scriptDirective = ['$templateCache', function($templateCache) {\n return {\n restrict: 'E',\n terminal: true,\n compile: function(element, attr) {\n if (attr.type == 'text/ng-template') {\n var templateUrl = attr.id,\n text = element[0].text;\n\n $templateCache.put(templateUrl, text);\n }\n }\n };\n}];\n\nvar ngOptionsMinErr = minErr('ngOptions');\n/**\n * @ngdoc directive\n * @name select\n * @restrict E\n *\n * @description\n * HTML `SELECT` element with angular data-binding.\n *\n * # `ngOptions`\n *\n * The `ngOptions` attribute can be used to dynamically generate a list of ``\n * DOM element.\n * * `trackexpr`: Used when working with an array of objects. The result of this expression will be\n * used to identify the objects in the array. The `trackexpr` will most likely refer to the\n * `value` variable (e.g. `value.propertyName`).\n *\n * @example\n \n \n \n
\n
    \n
  • \n Name: \n [X]\n
  • \n
  • \n [add]\n
  • \n
\n
\n Color (null not allowed):\n
\n\n Color (null allowed):\n \n \n
\n\n Color grouped by shade:\n
\n\n\n Select bogus.
\n
\n Currently selected: {{ {selected_color:myColor} }}\n
\n
\n
\n
\n \n it('should check ng-options', function() {\n expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('red');\n element.all(by.model('myColor')).first().click();\n element.all(by.css('select[ng-model=\"myColor\"] option')).first().click();\n expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('black');\n element(by.css('.nullable select[ng-model=\"myColor\"]')).click();\n element.all(by.css('.nullable select[ng-model=\"myColor\"] option')).first().click();\n expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('null');\n });\n \n
\n */\n\nvar ngOptionsDirective = valueFn({ terminal: true });\n// jshint maxlen: false\nvar selectDirective = ['$compile', '$parse', function($compile, $parse) {\n //000011111111110000000000022222222220000000000000000000003333333333000000000000004444444444444440000000005555555555555550000000666666666666666000000000000000777777777700000000000000000008888888888\n var NG_OPTIONS_REGEXP = /^\\s*([\\s\\S]+?)(?:\\s+as\\s+([\\s\\S]+?))?(?:\\s+group\\s+by\\s+([\\s\\S]+?))?\\s+for\\s+(?:([\\$\\w][\\$\\w]*)|(?:\\(\\s*([\\$\\w][\\$\\w]*)\\s*,\\s*([\\$\\w][\\$\\w]*)\\s*\\)))\\s+in\\s+([\\s\\S]+?)(?:\\s+track\\s+by\\s+([\\s\\S]+?))?$/,\n nullModelCtrl = {$setViewValue: noop};\n// jshint maxlen: 100\n\n return {\n restrict: 'E',\n require: ['select', '?ngModel'],\n controller: ['$element', '$scope', '$attrs', function($element, $scope, $attrs) {\n var self = this,\n optionsMap = {},\n ngModelCtrl = nullModelCtrl,\n nullOption,\n unknownOption;\n\n\n self.databound = $attrs.ngModel;\n\n\n self.init = function(ngModelCtrl_, nullOption_, unknownOption_) {\n ngModelCtrl = ngModelCtrl_;\n nullOption = nullOption_;\n unknownOption = unknownOption_;\n };\n\n\n self.addOption = function(value) {\n assertNotHasOwnProperty(value, '\"option value\"');\n optionsMap[value] = true;\n\n if (ngModelCtrl.$viewValue == value) {\n $element.val(value);\n if (unknownOption.parent()) unknownOption.remove();\n }\n };\n\n\n self.removeOption = function(value) {\n if (this.hasOption(value)) {\n delete optionsMap[value];\n if (ngModelCtrl.$viewValue == value) {\n this.renderUnknownOption(value);\n }\n }\n };\n\n\n self.renderUnknownOption = function(val) {\n var unknownVal = '? ' + hashKey(val) + ' ?';\n unknownOption.val(unknownVal);\n $element.prepend(unknownOption);\n $element.val(unknownVal);\n unknownOption.prop('selected', true); // needed for IE\n };\n\n\n self.hasOption = function(value) {\n return optionsMap.hasOwnProperty(value);\n };\n\n $scope.$on('$destroy', function() {\n // disable unknown option so that we don't do work when the whole select is being destroyed\n self.renderUnknownOption = noop;\n });\n }],\n\n link: function(scope, element, attr, ctrls) {\n // if ngModel is not defined, we don't need to do anything\n if (!ctrls[1]) return;\n\n var selectCtrl = ctrls[0],\n ngModelCtrl = ctrls[1],\n multiple = attr.multiple,\n optionsExp = attr.ngOptions,\n nullOption = false, // if false, user will not be able to select it (used by ngOptions)\n emptyOption,\n // we can't just jqLite('\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\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 and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + 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 and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully does not implement inclusive descendent\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\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\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === doc ? -1 :\n\t\t\t\tb === doc ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn doc;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\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\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\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\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\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\tattrHandle: {},\n\n\tfind: {},\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( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\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 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\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[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\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 excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\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\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ 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( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && 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 ) {\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.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 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, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, diff, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\t\t\treturn false;\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\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && cache[2];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\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\n\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\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\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\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( 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// Potentially complex pseudos\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\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\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\ttext = text.replace( runescape, funescape );\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// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\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// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\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\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\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\"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\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\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\tvar i = 0;\n\t\t\tfor ( ; 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\tvar i = 1;\n\t\t\tfor ( ; 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\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --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\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++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\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ 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\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\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\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\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 toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && 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 ( elem.nodeType === 1 || checkNonElements ) {\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\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\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\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\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 ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\t\t\t\t\t\tif ( (oldCache = outerCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\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 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 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( 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( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !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\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\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 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).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 && toSelector( tokens )\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, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be \"00\" below\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (matcher = elementMatchers[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}\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\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[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\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ 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 ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[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\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is no seed and only one group\n\tif ( match.length === 1 ) {\n\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\trsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\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\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = (/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/);\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) >= 0 ) !== not;\n\t});\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t}));\n};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tlen = this.length,\n\t\t\tret = [],\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0; i < len; 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\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], false) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], true) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n});\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context ) {\n\t\tvar match, elem;\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 HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[0] === \"<\" && selector[ 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\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[1],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\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\treturn this;\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// Support: Blackberry 4.6\n\t\t\t\t\t// gEBID returns nodes no longer in the document (#6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// 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: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\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 typeof rootjQuery.ready !== \"undefined\" ?\n\t\t\t\trootjQuery.ready( selector ) :\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\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// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\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.extend({\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\ttruncate = until !== undefined;\n\n\t\twhile ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmatched.push( elem );\n\t\t\t}\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar matched = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tmatched.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn matched;\n\t}\n});\n\njQuery.fn.extend({\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; 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\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\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\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\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.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.unique(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\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\nfunction sibling( cur, dir ) {\n\twhile ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}\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 elem.contentDocument || jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.unique( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n});\nvar rnotwhite = (/\\S+/g);\n\n\n\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.match( rnotwhite ) || [], 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// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\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\tfiringLength = 0;\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\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\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};\n\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 fn = jQuery.isFunction( fns[ i ] ) && 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] ](function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\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\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 ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\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 = 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 ? 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});\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend({\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// 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.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n});\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed, false );\n\twindow.removeEventListener( \"load\", completed, false );\n\tjQuery.ready();\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 );\n\n\t\t} else {\n\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed, false );\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Kick off the DOM ready check even if the user does not\njQuery.ready.promise();\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\tjQuery.access( elems, fn, i, key[i], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlen ? fn( elems[0], key ) : emptyGet;\n};\n\n\n/**\n * Determines whether an object can have data\n */\njQuery.acceptData = function( owner ) {\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\t/* jshint -W018 */\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\nfunction Data() {\n\t// Support: Android<4,\n\t// Old WebKit does not have Object.preventExtensions/freeze method,\n\t// return new empty object instead with no [[set]] accessor\n\tObject.defineProperty( this.cache = {}, 0, {\n\t\tget: function() {\n\t\t\treturn {};\n\t\t}\n\t});\n\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\nData.accepts = jQuery.acceptData;\n\nData.prototype = {\n\tkey: function( owner ) {\n\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t// but we should not, see #8335.\n\t\t// Always return the key for a frozen object.\n\t\tif ( !Data.accepts( owner ) ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar descriptor = {},\n\t\t\t// Check if the owner object already has a cache key\n\t\t\tunlock = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !unlock ) {\n\t\t\tunlock = Data.uid++;\n\n\t\t\t// Secure it in a non-enumerable, non-writable property\n\t\t\ttry {\n\t\t\t\tdescriptor[ this.expando ] = { value: unlock };\n\t\t\t\tObject.defineProperties( owner, descriptor );\n\n\t\t\t// Support: Android<4\n\t\t\t// Fallback to a less secure definition\n\t\t\t} catch ( e ) {\n\t\t\t\tdescriptor[ this.expando ] = unlock;\n\t\t\t\tjQuery.extend( owner, descriptor );\n\t\t\t}\n\t\t}\n\n\t\t// Ensure the cache object\n\t\tif ( !this.cache[ unlock ] ) {\n\t\t\tthis.cache[ unlock ] = {};\n\t\t}\n\n\t\treturn unlock;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\t// There may be an unlock assigned to this node,\n\t\t\t// if there is no entry for this \"owner\", create one inline\n\t\t\t// and set the unlock as though an owner entry had always existed\n\t\t\tunlock = this.key( owner ),\n\t\t\tcache = this.cache[ unlock ];\n\n\t\t// Handle: [ owner, key, value ] args\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ data ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\t\t\t// Fresh assignments by object are shallow copied\n\t\t\tif ( jQuery.isEmptyObject( cache ) ) {\n\t\t\t\tjQuery.extend( this.cache[ unlock ], data );\n\t\t\t// Otherwise, copy the properties one-by-one to the cache object\n\t\t\t} else {\n\t\t\t\tfor ( prop in data ) {\n\t\t\t\t\tcache[ prop ] = data[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\t// Either a valid cache is found, or will be created.\n\t\t// New caches will be created and the unlock returned,\n\t\t// allowing direct access to the newly created\n\t\t// empty data object. A valid owner object must be provided.\n\t\tvar cache = this.cache[ this.key( owner ) ];\n\n\t\treturn key === undefined ?\n\t\t\tcache : cache[ key ];\n\t},\n\taccess: function( owner, key, value ) {\n\t\tvar stored;\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t((key && typeof key === \"string\") && value === undefined) ) {\n\n\t\t\tstored = this.get( owner, key );\n\n\t\t\treturn stored !== undefined ?\n\t\t\t\tstored : this.get( owner, jQuery.camelCase(key) );\n\t\t}\n\n\t\t// [*]When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i, name, camel,\n\t\t\tunlock = this.key( owner ),\n\t\t\tcache = this.cache[ unlock ];\n\n\t\tif ( key === undefined ) {\n\t\t\tthis.cache[ unlock ] = {};\n\n\t\t} else {\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( jQuery.isArray( key ) ) {\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = key.concat( key.map( jQuery.camelCase ) );\n\t\t\t} else {\n\t\t\t\tcamel = jQuery.camelCase( key );\n\t\t\t\t// Try the string as a key before any manipulation\n\t\t\t\tif ( key in cache ) {\n\t\t\t\t\tname = [ key, camel ];\n\t\t\t\t} else {\n\t\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\t\tname = camel;\n\t\t\t\t\tname = name in cache ?\n\t\t\t\t\t\t[ name ] : ( name.match( rnotwhite ) || [] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ name[ i ] ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\treturn !jQuery.isEmptyObject(\n\t\t\tthis.cache[ owner[ this.expando ] ] || {}\n\t\t);\n\t},\n\tdiscard: function( owner ) {\n\t\tif ( owner[ this.expando ] ) {\n\t\t\tdelete this.cache[ owner[ this.expando ] ];\n\t\t}\n\t}\n};\nvar data_priv = new Data();\n\nvar data_user = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\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\t\tname = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\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\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\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\tdata_user.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend({\n\thasData: function( elem ) {\n\t\treturn data_user.hasData( elem ) || data_priv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn data_user.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdata_user.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to data_priv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn data_priv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdata_priv.remove( elem, name );\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = data_user.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !data_priv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice(5) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\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\tdata_priv.set( elem, \"hasDataAttrs\", 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\tdata_user.set( this, key );\n\t\t\t});\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data,\n\t\t\t\tcamelKey = jQuery.camelCase( key );\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key as-is\n\t\t\t\tdata = data_user.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key camelized\n\t\t\t\tdata = data_user.get( elem, camelKey );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, camelKey, undefined );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each(function() {\n\t\t\t\t// First, attempt to store a copy or reference of any\n\t\t\t\t// data that might've been store with a camelCased key.\n\t\t\t\tvar data = data_user.get( this, camelKey );\n\n\t\t\t\t// For HTML5 data-* attribute interop, we have to\n\t\t\t\t// store property names with dashes in a camelCase form.\n\t\t\t\t// This might not apply to all properties...*\n\t\t\t\tdata_user.set( this, camelKey, value );\n\n\t\t\t\t// *... In the case of properties that might _actually_\n\t\t\t\t// have dashes, we need to also store a copy of that\n\t\t\t\t// unchanged property.\n\t\t\t\tif ( key.indexOf(\"-\") !== -1 && data !== undefined ) {\n\t\t\t\t\tdata_user.set( this, key, value );\n\t\t\t\t}\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tdata_user.remove( this, key );\n\t\t});\n\t}\n});\n\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 = data_priv.get( 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 = data_priv.access( 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 public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn data_priv.get( elem, key ) || data_priv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tdata_priv.remove( elem, [ type + \"queue\", key ] );\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\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 = data_priv.get( 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 pnum = (/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/).source;\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n\t};\n\nvar rcheckableType = (/^(?:checkbox|radio)$/i);\n\n\n\n(function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Safari<=5.1\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Safari<=5.1, Android<4.2\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<=11+\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n})();\nvar strundefined = typeof undefined;\n\n\n\nsupport.focusinBubbles = \"onfocusin\" in window;\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\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\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = data_priv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\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\tif ( !(events = elemData.events) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !(eventHandle = elemData.handle) ) {\n\t\t\teventHandle = elemData.handle = 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 !== strundefined && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\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: origType,\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\tif ( !(handlers = events[ type ]) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener 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\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\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},\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 j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = data_priv.hasData( elem ) && data_priv.get( 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 = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\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\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[2] && new RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ 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( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.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 ( origCount && !handlers.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\t\t\tdata_priv.remove( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split(\".\") : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\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// 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\t\tontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join(\".\");\n\t\tevent.namespace_re = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" ) :\n\t\t\tnull;\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 ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && 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\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = 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 ( tmp === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( data_priv.get( cur, \"events\" ) || {} )[ event.type ] && data_priv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && jQuery.acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\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( eventPath.pop(), data ) === false) &&\n\t\t\t\tjQuery.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// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && jQuery.isFunction( elem[ type ] ) && !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\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\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 ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\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 );\n\n\t\tvar i, j, ret, matched, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( data_priv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\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\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\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\tif ( (event.result = 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\thandlers: function( event, handlers ) {\n\t\tvar i, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG instance trees (#13180)\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== \"click\") ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.disabled !== true || event.type !== \"click\" ) {\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\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ 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 ( matches[ 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, handlers: 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 ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: \"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 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\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 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, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: Cordova 2.5 (WebKit) (#13255)\n\t\t// All events should have a target; Cordova deviceready doesn't\n\t\tif ( !event.target ) {\n\t\t\tevent.target = document;\n\t\t}\n\n\t\t// Support: Safari 6.0+, Chrome<28\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\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\t\tfocus: {\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && jQuery.nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\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{\n\t\t\t\ttype: 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\njQuery.removeEvent = function( elem, type, handle ) {\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle, false );\n\t}\n};\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 ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\t\t\t\t// Support: Android<4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\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\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\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && e.preventDefault ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopImmediatePropagation ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// Support: Chrome 15+\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\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\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// Support: Firefox, Chrome, Safari\n// Create \"bubbling\" focus and blur events\nif ( !support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = 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\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = data_priv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdata_priv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = data_priv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdata_priv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdata_priv.access( doc, fix, attaches );\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\" ) {\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\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\tvar elem = this[0];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n});\n\n\nvar\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /^$|\\/(?:java|ecma)script/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*\\s*$/g,\n\n\t// We have to close these tags to support XHTML (#13200)\n\twrapMap = {\n\n\t\t// Support: IE9\n\t\toption: [ 1, \"\" ],\n\n\t\tthead: [ 1, \"\", \"
\" ],\n\t\tcol: [ 2, \"\", \"
\" ],\n\t\ttr: [ 2, \"\", \"
\" ],\n\t\ttd: [ 3, \"\", \"
\" ],\n\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\n// Support: IE9\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: 1.x compatibility\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement(\"tbody\") ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute(\"type\");\n\t}\n\n\treturn elem;\n}\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdata_priv.set(\n\t\t\telems[ i ], \"globalEval\", !refElements || data_priv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( data_priv.hasData( src ) ) {\n\t\tpdataOld = data_priv.access( src );\n\t\tpdataCur = data_priv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( data_user.hasData( src ) ) {\n\t\tudataOld = data_user.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdata_user.set( dest, udataCur );\n\t}\n}\n\nfunction getAll( context, tag ) {\n\tvar ret = context.getElementsByTagName ? context.getElementsByTagName( tag || \"*\" ) :\n\t\t\tcontext.querySelectorAll ? context.querySelectorAll( tag || \"*\" ) :\n\t\t\t[];\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], ret ) :\n\t\tret;\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\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\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tbuildFragment: function( elems, context, scripts, selection ) {\n\t\tvar elem, tmp, tag, wrap, contains, j,\n\t\t\tfragment = context.createDocumentFragment(),\n\t\t\tnodes = [],\n\t\t\ti = 0,\n\t\t\tl = elems.length;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\t\t\t\t\t// Support: QtWebKit, PhantomJS\n\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement(\"div\") );\n\n\t\t\t\t\t// Deserialize a standard representation\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\ttmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, \"<$1>\" ) + wrap[ 2 ];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[ 0 ];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: QtWebKit, PhantomJS\n\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Remember the top-level container\n\t\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\t\ttmp.textContent = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Remove wrapper from fragment\n\t\tfragment.textContent = \"\";\n\n\t\ti = 0;\n\t\twhile ( (elem = nodes[ i++ ]) ) {\n\n\t\t\t// #4087 - If origin and destination elements are the same, and this is\n\t\t\t// that element, do not do anything\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn fragment;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type, key,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[ i ]) !== undefined; i++ ) {\n\t\t\tif ( jQuery.acceptData( elem ) ) {\n\t\t\t\tkey = elem[ data_priv.expando ];\n\n\t\t\t\tif ( key && (data = data_priv.cache[ key ]) ) {\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\t\t\t\t\tif ( data_priv.cache[ key ] ) {\n\t\t\t\t\t\t// Discard any remaining `private` data\n\t\t\t\t\t\tdelete data_priv.cache[ key ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Discard any remaining `user` data\n\t\t\tdelete data_user.cache[ elem[ data_user.expando ] ];\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each(function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t});\n\t},\n\n\tremove: function( selector, keepData /* Internal Use Only */ ) {\n\t\tvar elem,\n\t\t\telems = selector ? jQuery.filter( selector, this ) : this,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem ) );\n\t\t\t}\n\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( elem, \"script\" ) );\n\t\t\t\t}\n\t\t\t\telem.parentNode.removeChild( elem );\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\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\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 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 && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\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!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\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() {\n\t\tvar arg = arguments[ 0 ];\n\n\t\t// Make the changes, replacing each context element with the new content\n\t\tthis.domManip( arguments, function( elem ) {\n\t\t\targ = this.parentNode;\n\n\t\t\tjQuery.cleanData( getAll( this ) );\n\n\t\t\tif ( arg ) {\n\t\t\t\targ.replaceChild( elem, this );\n\t\t\t}\n\t\t});\n\n\t\t// Force removal if there was no new content (e.g., from empty arguments)\n\t\treturn arg && (arg.length || arg.nodeType) ? this : this.remove();\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = concat.apply( [], args );\n\n\t\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tset = this,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[ 0 ],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction ||\n\t\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\t\treturn this.each(function( index ) {\n\t\t\t\tvar self = set.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tself.domManip( args, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );\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\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\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\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\t\t// Support: QtWebKit\n\t\t\t\t\t\t\t// jQuery.merge because push.apply(_, arraylike) throws\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( this[ i ], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t\t!data_priv.access( node, \"globalEval\" ) && jQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\t\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.globalEval( node.textContent.replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\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\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: QtWebKit\n\t\t\t// .get() because push.apply(_, arraylike) throws\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\n\nvar iframe,\n\telemdisplay = {};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar style,\n\t\telem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\t// getDefaultComputedStyle might be reliably used only on attached element\n\t\tdisplay = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?\n\n\t\t\t// Use of this method is a temporary fix (more like optimization) until something better comes along,\n\t\t\t// since it was removed from specification and supported only in FF\n\t\t\tstyle.display : jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = (iframe || jQuery( \"